Hinweise zur 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 im TwinCAT System Manager

Die Modulo-Positionierung bezieht sich grundsätzlich auf eine im TwinCAT System Manager einstellbare Modulo-Periode. In den Beispielen auf dieser Seite wird von einer rotatorischen Achse mit einer Modulo-Periode von 360 Grad ausgegangen.

Hinweise zur Modulo-Positionierung 1:

Das Modulo-Toleranzfenster definiert ein Positionsfenster um die aktuelle Modulo-Sollposition der Achse herum. Die Fensterbreite entspricht dem doppelten angegebenen Wert (Sollposition ± Toleranzwert). Auf das Toleranzfenster wird im Folgenden näher eingegangen.

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.

Um das Problem zu lösen, kann ein Modulo-Toleranzfenster im TwinCAT System Manager parametriert werden. Kleine Abweichungen der Position, die innerhalb des Fensters liegen, führen damit nicht mehr zu einem unterschiedlichen Verhalten der Achse. Wird beispielsweise ein Fenster von 1° parametriert, so verhält sich die Achse im oben beschriebenen Fall gleich, solange die Sollposition zwischen 89° und 91° liegt. Wenn jetzt die Sollposition weniger als 1° über 90° liegt, wird die Achse bei einem Modulo-Start in positive Richtung zurückpositioniert. Bei einer Zielposition von 90° wird also in beiden Fällen eine Minimalbewegung auf exakt 90° ausgeführt und bei einer Zielposition von 450° wird in beiden Fällen eine ganze Umdrehung gefahren.

Wirkung des Modulo-Toleranzfensters: Modulo-Zielposition 90° in positive Richtung

Hinweise zur Modulo-Positionierung 2:

Das Modulo-Toleranzfenster kann also innerhalb des Fensters zu Bewegungen gegen die beauftragte Richtung führen. Bei einem kleinen Fenster ist das normalerweise unproblematisch, weil auch Regelabweichungen zwischen Soll- und Istposition in beide Richtungen ausgeglichen werden. Das Toleranzfenster lässt sich also auch bei Achsen verwenden, die konstruktionsbedingt nur in einer Richtung verfahren werden dürfen.

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 Grad 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.

Hinweise zur 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°. Das Modulo-Toleranzfenster (TF) ist hier auf 1° eingestellt. Besondere Fälle, in denen die Ausgangsposition außerhalb dieses Fensters liegt, sind gekennzeichnet.

Richtung
(Modulo-Starttyp)

Absolute Anfangsposition

Modulo-Zielposition

Relativer Verfahrweg

Absolute Endposition

Modulo-Endposition

Anmerkung

Positive Richtung

90,00

90,00

0,00

90,00

90,00

 

Positive Richtung

90,90

90,00

-0,90

90,00

90,00

 

Positive Richtung

91,10

90,00

358,90

450,00

90,00

außerhalb TF

Positive Richtung

89,10

90,00

0,90

90,00

90,00

 

Positive Richtung

88,90

90,00

1,10

90,00

90,00

außerhalb TF

 

Positive Richtung

90,00

450,00

360,00

450,00

90,00

 

Positive Richtung

90,90

450,00

359,10

450,00

90,00

 

Positive Richtung

91,10

450,00

718,90

810,00

90,00

außerhalb TF

Positive Richtung

89,10

450,00

360,90

450,00

90,00

 

Positive Richtung

88,90

450,00

361,10

450,00

90,00

außerhalb TF

 

Positive Richtung

90,00

810,00

720,00

810,00

90,00

 

Positive Richtung

90,90

810,00

719,10

810,00

90,00

 

Positive Richtung

91,10

810,00

1078,90

1170,00

90,00

außerhalb TF

Positive Richtung

89,10

810,00

720,90

810,00

90,00

 

Positive Richtung

88,90

810,00

721,10

810,00

90,00

außerhalb TF

 

Negative Richtung

90,00

90,00

0,00

90,00

90,00

 

Negative Richtung

90,90

90,00

-0,90

90,00

90,00

 

Negative Richtung

91,10

90,00

-1,10

90,00

90,00

außerhalb TF

Negative Richtung

89,10

90,00

0,90

90,00

90,00

 

Negative Richtung

88,90

90,00

-358,90

-270,00

90,00

außerhalb TF

 

Negative Richtung

90,00

450,00

-360,00

-270,00

90,00

 

Negative Richtung

90,90

450,00

-360,90

-270,00

90,00

 

Negative Richtung

91,10

450,00

-361,10

-270,00

90,00

außerhalb TF

Negative Richtung

89,10

450,00

-359,10

-270,00

90,00

 

Negative Richtung

88,90

450,00

-718,90

-630,00

90,00

außerhalb TF

 

Negative Richtung

90,00

810,00

-720,00

-630,00

90,00

 

Negative Richtung

90,90

810,00

-720,90

-630,00

90,00

 

Negative Richtung

91,10

810,00

-721,10

-630,00

90,00

außerhalb TF

Negative Richtung

89,10

810,00

-719,10

-630,00

90,00

 

Negative Richtung

88,90

810,00

-1078,90

-990,00

90,00

außerhalb TF

Modulo-Berechnungen im SPS-Programm

Alle Positionieraufträge an eine Achse werden in TwinCAT NC 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.NcToPlc.ModuloSetPos und Axis.NcToPlc.ModuloSetTurns).

Es ist nicht zu empfehlen, Auftragsberechnungen auf Basis der Modulo-Istposition durchzuführen, die im zyklischen Achsinterface (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.

Das Modulo-Toleranzfenster wird im System Manager auf 1,5° eingestellt. Damit werden unerwünschte Umdrehungen der Achse nach einem Achs-Reset vermieden. 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 schnellst möglich angefahren wird. Steht die Achse bereits an der Ausgangsposition, so wird keine Bewegung ausgeführt.

Hinweise zur 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

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.0.0

PC oder CX (x86 oder x64)

Tc2_MC2