W
weißnix_
Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
-> Hier kostenlos registrieren
Ich habe für eine unserer Maschinen eine neue Steuerung gebaut. Die Maschine ist ein Rundläufer mit 12 Arbeitsstationen. Weil es sich so schön rechnete hab ich primär für die Drehzahlregelung und unterschwellig für Positionierungen im Einrichtmodus einen Drehgeber mit 3600 Inc/U eingesetzt. Ausgewertet wird über Zählerkarte mit Vierfachauswertung (14400 Counts/U).
Nun habe ich den Einrichtmodus nachgerüstet und bin prompt in eine Anfängerfalle getappt. 3600 lässt sich zwar schön durch 360° und durch 12 Stationen teilen aber ist keine Zweierpotenz. Der 32-bit Counter der Zählerkarte schon
.
Nun zum Problem.
Im Einrichtmodus wollte ich für schrittweisen Betrieb die Maschine jeweils um eine Arbeitsstation vorwärts und rückwärts positionieren. Der Einrichter kann beliebig einen Referenzpunkt setzen. Dies setze ich einfach um durch Nullsetzen des Counters in der Zählerkarte. Vorwärts positionieren: Kein Problem. Rückwärts eine Positionsverschiebung um ca. 1/2 Arbeitsstation. Zwei Becher Kaffe später kam ich drauf: 4294967296 (2^32) ist kein ganzzahliges vielfaches von 3600.
Rotorposition= count mod 14400
Werkzeugposition = Rotorposition mod 1200
Meine Lösung:
Ich setze für den Referenzpunkt den Counter auf 1440000, also auf 0+100 Rotorumdrehungen. Im Einrichtmodus ist es so unwahrscheinlich, das ein Überlauf stattfindet. Im Betriebsmodus ist es ohne Belang, weil dort nicht positioniert wird.
Das ganze funktioniert.
Nun die Frage:
Gibt es noch eine elegantere Lösung? Irgendwie scheint mir das unbeholfen. Ich rechne den Counter Modulo runter auf die Position der Arbeitsstation. Ich habe keine NC-Unterstützung in der SPS.
Zumindest kenne ich jetzt den Grund für die gängige Staffelung der Drehgeberauflösungen in Zweierpotenzvielfachen.
Nun habe ich den Einrichtmodus nachgerüstet und bin prompt in eine Anfängerfalle getappt. 3600 lässt sich zwar schön durch 360° und durch 12 Stationen teilen aber ist keine Zweierpotenz. Der 32-bit Counter der Zählerkarte schon
Nun zum Problem.
Im Einrichtmodus wollte ich für schrittweisen Betrieb die Maschine jeweils um eine Arbeitsstation vorwärts und rückwärts positionieren. Der Einrichter kann beliebig einen Referenzpunkt setzen. Dies setze ich einfach um durch Nullsetzen des Counters in der Zählerkarte. Vorwärts positionieren: Kein Problem. Rückwärts eine Positionsverschiebung um ca. 1/2 Arbeitsstation. Zwei Becher Kaffe später kam ich drauf: 4294967296 (2^32) ist kein ganzzahliges vielfaches von 3600.
Rotorposition= count mod 14400
Werkzeugposition = Rotorposition mod 1200
Meine Lösung:
Ich setze für den Referenzpunkt den Counter auf 1440000, also auf 0+100 Rotorumdrehungen. Im Einrichtmodus ist es so unwahrscheinlich, das ein Überlauf stattfindet. Im Betriebsmodus ist es ohne Belang, weil dort nicht positioniert wird.
Das ganze funktioniert.
Nun die Frage:
Gibt es noch eine elegantere Lösung? Irgendwie scheint mir das unbeholfen. Ich rechne den Counter Modulo runter auf die Position der Arbeitsstation. Ich habe keine NC-Unterstützung in der SPS.
Zumindest kenne ich jetzt den Grund für die gängige Staffelung der Drehgeberauflösungen in Zweierpotenzvielfachen.