Modulo-Positionierung
Die Modulo-Positionierung kann bei geschlossenen Linearachsen ebenso wie bei rotatorischen Achsen angewendet werden. TwinCAT unterscheidet nicht zwischen diesen Typen. Auch eine Modulo-Achse hat eine fortlaufende absolute Position im Bereich ±∞. Die Modulo-Position der Achse ist einfach eine zusätzliche Information zur absoluten Achsposition und die Modulo-Positionierung stellt die gewünschte Zielposition auf eine andere Art dar. Im Gegensatz zur absoluten Positionierung, bei der der Benutzer das Ziel eindeutig vorgibt, wird bei der Modulo Positionierung die absolute Zielposition aus folgenden Parametern gebildet:
- Modulo-Zielposition
- Modulo Factor
- Tolerance Window
- Direction, siehe MC_Direction
- (Additional Turns, siehe Additional Turns in der CA)
Modulo Factor
Die Modulo-Positionierung bezieht sich grundsätzlich auf eine einstellbaren Modulo Factor, welcher im TwinCAT Engineering eingestellt wird. Hierbei ist die Achse und ihre Verwendung zu beachten, zum Beispiel:
- Wird eine PTP-Achse verwendet, gilt der Modulo Factor des Achs-Encoders, Details in den Hinweisen der Modulo Positionierung einer PTP Achse.
- Wird z.B. eine Mover auf einem XTS-System in einer CA-Gruppe verwendet, gilt die Rail Length, welche in der CA-Gruppe eingestellt ist.
- Wird ein XPlanar Mover genutzt so kann dessen „C-Achse“ Modulo positioniert werden. Hier wird der Modulo Factor als „C coordinated modulus“ in den Init Parametern des XPlanar Mover eingestellt.
Modulo Tolerance Window
Das Modulo Tolerance Window definiert ein Positionsfenster um die aktuelle Modulo-Sollposition der Achse herum. Die Fensterbreite entspricht dem doppelten angegebenen Wert (Sollposition ± Toleranzwert) und wird im TwinCAT Engineering vorgegeben:
- Bei einer PTP-Achse oder einer Achse in einer CA-Gruppe erfolgt die Definition des Tolerance Window im Achs-Encoder
- Bei der C-Achse eines XPlanar Movers wird das Tolerance Window in den Init Parametern des XPlanar Mover definiert.
Die Positionierung einer Achse bezieht sich immer auf deren aktuelle Ist-Position. Liegen Ist-Position und Zielposition sehr nah beieinander, kann es passieren, dass unbeabsichtigte Umdrehungen gefahren werden. Z.B. wenn die Ist-Position minimal größer ist als die Zielposition und Direction = mcDirectionPositive
gewählt wurde. Dies kann insbesondere dann auftreten, wenn die Ist-Position ungenau bestimmt wird ( z.B. aufgrund einer fehlerhaften Positionierung durch einen Stall der Achse, oder durch die endliche Auflösung des Encoders). Um dies zu vermeiden, kann ein Toleranzfenster für die Modulo Positionierung festgelegt werden. Falls die Entfernung zwischen Start- und Zielposition kleiner oder gleich dem Toleranzfenster ist, so wird die Zielposition auf kürzestem Weg (wie bei Direction = mcDirectionShortestWay
), also auch entgegen der angegebenen Direction
, angefahren.
Beispiele
- Modulo Factor = 100
- Tolerance Window = 1
Parameter Direction | Absolute Startposition | Zielposition | Parameter Additional Turns | Relativer Pfad | Absolute Endposition | Modulo Endposition |
---|---|---|---|---|---|---|
mcDirectionPositive | 110 | 10 | 0 | 0 | 110 | 10 |
mcDirectionPositive | 110.9 | 10 | 0 | -0.9 | 110 | 10 |
mcDirectionPositive | 112 | 10 | 0 | 98 | 110 | 10 |
mcDirectionPositive | 95 | 10 | 0 | 15 | 110 | 10 |
mcDirectionPositive | 110 | 110 | 0 | ERROR: INVALID TARGET POSITION | ||
|
|
|
|
|
|
|
mcDirectionPositive | 110 | 10 | 3 | 300 | 410 | 10 |
mcDirectionPositive | 110.9 | 10 | 3 | 299.1 | 410 | 10 |
mcDirectionPositive | 112 | 10 | 3 | 398 | 410 | 10 |
mcDirectionPositive | 95 | 10 | 3 | 315 | 410 | 10 |
mcDirectionPositive | 110 | 110 | 3 | ERROR: INVALID TARGET POSITION | ||
|
|
|
|
|
|
|
mcDirectionNegative | 110 | 10 | 0 | 0 | 110 | 10 |
mcDirectionNegative | 109.9 | 10 | 0 | 0.1 | 110 | 10 |
mcDirectionNegative | 108 | 10 | 0 | -98 | 10 | 10 |
mcDirectionNegative | 95 | 10 | 0 | -85 | 10 | 10 |
mcDirectionNegative | 110 | 110 | 0 | ERROR: INVALID TARGET POSITION | ||
|
|
|
|
|
|
|
mcDirectionNegative | 410 | 10 | 3 | -300 | 110 | 10 |
mcDirectionNegative | 409.9 | 10 | 3 | -299.9 | 110 | 10 |
mcDirectionNegative | 408 | 10 | 3 | -398 | 10 | 10 |
mcDirectionNegative | 495 | 10 | 3 | -385 | 10 | 10 |
mcDirectionNegative | 410 | 110 | 3 | ERROR: INVALID TARGET POSITION | ||
|
|
|
|
|
|
|
mcDirectionShortestWay | 440 | 50 | 0 | 10 | 450 | 50 |
mcDirectionShortestWay | 440 | 10 | 0 | -30 | 410 | 10 |
|
|
|
|
|
|
|
mcDirectionShortestWay | 440 | 50 | 1 | ERROR: INVALID ADDITIONAL TURN COUNT |
Weitere Beispiele
Weitere Beispiele ohne den Parameter Additional Turns sind in den Hinweisen zur Modulo Positionierung einer PTP Achse zu finden.