Die Modulo-Positionierung

Die Modulo-Positionierung (MC_MoveModulo) ist unabhängig vom Achstyp möglich. Sie kann also bei linearen ebenso wie bei rotatorischen Achsen angewendet werden, da TwinCAT nicht zwischen diesen Typen unterscheidet. 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, birgt die Modulo‑Positionierung einige Risiken, da die gewünschte Zielposition unterschiedlich interpretiert werden kann.

Einstellungen in den Parametern der AXIS_REF

Die Modulo-Positionierung bezieht sich grundsätzlich auf eine unter Axis-Parameter. ModuloFactor des entsprechenden AXIS_REF einzustellenden Modulo-Periode. Zusätzlich sind entsprechende Einstellungen in den Parametern des Drive (z. B. EL72xx) zu machen. In den Beispielen auf dieser Seite wird von einer rotatorischen Achse mit einer Modulo-Periode von 360° ausgegangen.

Die Modulo-Positionierung 1:

Besonderheiten beim Reset einer Achse

Die Positionierung einer Achse bezieht sich immer auf deren Sollposition. Die Sollposition der Achse ist im Normalfall die Position, die mit dem letzten Fahrauftrag angefahren wurde. Durch einen Achs-Reset (MC_Reset, Zuschalten der Reglerfreigabe mit MC_Power) kann sich eine vom Anwender nicht erwartete Sollposition einstellen, da in diesem Fall die aktuelle Istposition als Sollposition übernommen wird. Der Achs-Reset setzt durch diesen Vorgang einen eventuell aufgetretenen Schleppfehler zurück. Wenn dieser Umstand nicht berücksichtigt wird, kann sich eine nachfolgende Positionierung unerwartet verhalten.

Beispiel:

Eine Achse wird auf 90° positioniert, wodurch die Sollposition der Achse anschließend exakt 90° beträgt. Ein weiterer Modulo-Fahrauftrag auf 450° in positive Richtung führt zu einer vollen Umdrehung und die Modulo-Position der Achse ist anschließend wieder exakt 90°. Wird anschließend ein Achs‑Reset durchgeführt, kann die Sollposition zufällig etwas kleiner oder etwas größer als 90° sein. Der neue Wert ist abhängig vom Istwert der Achse zum Zeitpunkt des Reset. In beiden Fällen verhält sich das nächste Fahrkommando unterschiedlich. Liegt die Sollposition leicht unter 90°, führt ein neues Fahrkommando auf 90° in positive Richtung nur zu einer minimalen Bewegung. Die durch den Reset entstandene Abweichung wird ausgeglichen und die Sollposition ist anschließend wieder exakt 90°. Liegt aber die Sollposition nach dem Achs-Reset leicht über 90°, führt dasselbe Fahrkommando zu einer vollen Umdrehung, um wieder die exakte Sollposition von 90° zu erreichen. Diese Problematik tritt auf, wenn volle Umdrehungen um 360° oder ein Vielfaches von 360° beauftragt werden. Bei Positionierungen auf einen von der aktuellen Modulo-Position entfernten Winkel ist der Fahrauftrag eindeutig.

Die Modulo-Positionierung 2:

Modulo-Positionierung um weniger als eine Umdrehung

Die Modulo-Positionierung von einer Ausgangsposition auf eine nicht identische Zielposition ist eindeutig und birgt keine Besonderheiten. Eine Modulo-Zielposition im Bereich [0 ≤ Position < 360] führt in weniger als einer ganzen Umdrehung zum gewünschten Ziel. Ist die Zielposition mit der Ausgangsposition identisch, so wird keine Bewegung ausgeführt. Bei Zielpositionen ab 360° aufwärts werden ein oder mehr vollständige Umdrehungen ausgeführt, bevor die Achse auf die gewünschte Zielposition fährt.

Für eine Bewegung von 270° auf 0° darf demnach nicht 360°, sondern muss 0° als Modulo-Zielposition angegeben werden, da 360° außerhalb des Grundbereiches liegt und zu einer zusätzlichen Umdrehung führen würde.

Die Modulo-Positionierung unterscheidet drei Richtungsvorgaben, positive Richtung, negative Richtung und auf kürzestem Weg (MC_Direction). Bei der Positionierung auf kürzestem Weg sind Zielpositionen ab 360° nicht sinnvoll, da das Ziel immer direkt angefahren wird. Im Gegensatz zur positiven oder negativen Richtung können also nicht mehrere Umdrehungen ausgeführt werden, bevor das Ziel angefahren wird.

Die Modulo-Positionierung 3:

Bei Modulo-Positionierungen mit dem Starttyp „auf kürzestem Weg“ sind nur Modulo-Zielpositionen in der Grundperiode (z. B. kleiner als 360°) erlaubt, anderenfalls wird ein Fehler zurückgegeben.

Die folgende Tabelle zeigt einige Positionierungsbeispiele:

Richtung
(Modulo-Starttyp)

Absolute Anfangsposition

Modulo-Zielposition

Relativer Verfahrweg

Absolute Endposition

Modulo-Endposition

Positive Richtung

90,00

0,00

270,00

360,00

0,00

Positive Richtung

90,00

360,00

630,00

720,00

0,00

Positive Richtung

90,00

720,00

990,00

1080,00

0,00

 

Negative Richtung

90,00

0,00

-90,00

0,00

0,00

Negative Richtung

90,00

360,00

-450,00

-360,00

0,00

Negative Richtung

90,00

720,00

-810,00

-720,00

0,00

 

Auf kürzestem Weg

90,00

0,00

-90,00

0,00

0,00

Modulo-Positionierung um ganze Umdrehungen

Modulo-Positionierungen um ein oder mehrere ganze Umdrehungen verhalten sich grundsätzlich nicht anders als Positionierungen auf von der Ausgangsposition entfernt liegende Winkel. Wenn die beauftragte Zielposition gleich der Ausgangsposition ist, wird keine Bewegung ausgeführt. Für eine ganze Umdrehung muss zur Ausgangsposition 360° addiert werden.

Das weiter oben beschriebene Reset-Verhalten zeigt, dass Positionierungen mit ganzzahligen Umdrehungen besonders beachtet werden müssen. Die nachfolgende Tabelle zeigt Positionierbeispiele für eine Ausgangsposition von ungefähr 90°.

Richtung
(Modulo-Starttyp)

Absolute Anfangsposition

Modulo-Zielposition

Relativer Verfahrweg

Absolute Endposition

Modulo-Endposition

Positive Richtung

90,00

90,00

0,00

90,00

90,00

Positive Richtung

91,10

90,00

358,90

450,00

90,00

Positive Richtung

88,90

90,00

1,10

90,00

90,00

 

Positive Richtung

90,00

450,00

360,00

450,00

90,00

Positive Richtung

91,10

450,00

718,90

810,00

90,00

Positive Richtung

88,90

450,00

361,10

450,00

90,00

 

Positive Richtung

90,00

810,00

720,00

810,00

90,00

Positive Richtung

91,10

810,00

1078,90

1170,00

90,00

Positive Richtung

88,90

810,00

721,10

810,00

90,00

 

Negative Richtung

90,00

90,00

0,00

90,00

90,00

Negative Richtung

91,10

90,00

-1,10

90,00

90,00

Negative Richtung

88,90

90,00

-358,90

-270,00

90,00

 

Negative Richtung

90,00

450,00

-360,00

-270,00

90,00

Negative Richtung

91,10

450,00

-361,10

-270,00

90,00

Negative Richtung

88,90

450,00

-718,90

-630,00

90,00

 

Negative Richtung

90,00

810,00

-720,00

-630,00

90,00

Negative Richtung

91,10

810,00

-721,10

-630,00

90,00

Negative Richtung

88,90

810,00

-1078,90

-990,00

90,00

Modulo-Berechnungen im SPS-Programm

Alle Positionieraufträge an einer Achse werden auf der Basis der Sollposition durchgeführt. Die aktuelle Istposition wird nur zur Regelung herangezogen. Wenn in einem SPS‑Programm eine neue Zielposition ausgehend von der aktuellen Position berechnet werden soll, muss diese Berechnung mit der aktuellen Sollposition der Achse durchgeführt werden (Axis.Status.ModuloSetPos und Axis.Status.ModuloSetTurns).

Es ist nicht zu empfehlen, Auftragsberechnungen auf Basis der Modulo-Istposition durchzuführen, die im Achsstatus (ModuloActPos und ModuloActTurns) zur Verfügung steht. Wegen der mehr oder weniger großen Regelabweichung der Achse könnten sich Fehler im programmierten Ablauf, wie z. B. unerwünschte Umdrehungen, ergeben.

Anwendungsbeispiel

In einer Anlage führt eine Rotationsachse einen Arbeitsschritt aus. Die Ausgangsposition für jeden Arbeitsschritt ist 90° und mit jedem Takt soll die Achse um 360° in positive Richtung positioniert werden. Eine Rückwärtspositionierung ist aus mechanischen Gründen nicht erlaubt. Kleine Rückwärtspositionierungen im Rahmen der Lageregelung sind zulässig.

Da die Achse nur vorpositioniert werden darf, wird das Bewegungskommando MC_MoveModulo mit dem Modulo‑Starttyp „positive Richtung“ (MC_Positive_Direction) verwendet. Die Modulo-Zielposition wird mit 450° angegeben, da die Ausgangsorientierung nach einer vollen Umdrehung um 360° wieder erreicht werden soll. Eine Modulo-Zielposition von 90° würde hier keine Bewegung ausführen.

Der Ablauf startet zunächst mit einer Grundpositionierung (MC_MoveModulo), mit der die exakte Ausgangsposition sichergestellt wird. Anschließend wechselt die Schrittkette in einen Bearbeitungszyklus. Im Fehlerfall wird die Achse mit MC_Reset zurückgesetzt und anschließend, am Anfang der Schrittkette, auf ihre gültige Ausgangsposition gefahren. In diesem Fall wird 90° als Zielposition angegeben, damit diese Position schnellstmöglich angefahren wird. Steht die Achse bereits an der Ausgangsposition, so wird keine Bewegung ausgeführt.

Die Modulo-Positionierung 4:

Der Reset-Schritt kann alternativ auch am Anfang der Schrittkette ausgeführt werden, um die Achse auch zu Beginn des Ablaufs zu initialisieren.

Voraussetzungen

Entwicklungsumgebung

Einzubindende SPS-Bibliotheken

TwinCAT 3.1.4024.11

Tc3_DriveMotionControl