Bewegungssteuerung

Task-Konzept

Die Steuerung führt die Benutzeranwendung aus, in der Funktionsbausteine der Bewegungssteuerung in einer Task getrennt von der Echtzeit-Bewegungstask aufgerufen werden, in der Bewegungsprofile berechnet werden und die Sercos-Kommunikation stattfindet. Diese beiden Tasks können unterschiedliche Zykluszeiten haben. Die Zykluszeit der Anwendungstask beträgt üblicherweise 10 ms, aber kürzere Zykluszeiten bis zu 1 ms sind möglich. Die Echtzeittask arbeitet mit Zykluszeiten von 1 ms, 2 ms oder 4 ms, je nach Sercos-Zykluszeit und Maschinenkonfiguration (Steuerungstyp, Anzahl der Achsen usw.).

Diese Trennung bietet eine Reihe von Vorteilen im Hinblick auf eine verbesserte Leistung. Die Benutzeranwendung kann so langsam wie nötig ausgeführt werden, z. B. um Operationen mit dem Dateisystem oder die Netzwerkkommunikation zu ermöglichen. Ereignisbehandlung, Entscheidungsfindung und Befehlsverarbeitung der Anwendung (typischerweise weniger zeitkritisch) können in dieser möglicherweise langsameren Task durchgeführt werden. Änderungen am Bewegungsprofil können jedoch mit maximaler Geschwindigkeit durchgeführt werden, indem die Funktionsbausteine vorzeitig ausgeführt und gepuffert werden.

Dieser bewährte Ansatz wird auch von PacDrive-Systemen von Schneider Electric verwendet.

Programmierer, die mit Systemen wie SoftMotion (die die Benutzeranwendung im Echtzeitprozess ausführt) und der standardmäßigen PLCopen-Programmierung vertraut sind, müssen eine Reihe gängiger Verfahren überdenken, um dieses Potenzial voll auszuschöpfen. Ein typischer Ansatz der PLCopen-Programmierung besteht darin, zu warten, bis ein Funktionsbaustein „abgeschlossen“ ist (z. B. Ausgänge Done, inVelocity, EndOfProfile, InGear), und die entsprechenden Signale zur Ausführung des nächsten Funktionsbausteins zu verwenden.

Um die erwartete Bewegung ohne plötzliche Sprünge zu erreichen (insbesondere bei Geschwindigkeits- und/oder Beschleunigungswerten ungleich null am Ende eines Fahrauftrags), müssen Funktionsbausteine vorzeitig mit MC_Buffer_Mode auf Buffered ausgeführt werden. Auf diese Weise wird das Bewegungsprofil eines Funktionsbausteins im gleichen Echtzeitzyklus aktiv, in dem ein vorhergehender Funktionsbaustein beendet wird.

Wenn Sie den Start (Execute) des nachfolgenden Funktionsbausteins z. B. über das EndOfProfile-Signal des vorhergehenden Funktionsbausteins auslösen, anstatt ihn zu puffern, ergeben sich ein oder mehrere Verzögerungszyklen, in denen kein Funktionsbaustein aktiv ist und die Achse im Stillstand bleibt, bis der nächste Anwendungstaskzyklus den nachfolgenden Funktionsbaustein startet.

Axis_Ref

Gemäß der Definition von PLCopen wird ein Axis_Ref als Eingang für Funktionsbausteine der Bewegungssteuerung verwendet, um die Achse anzugeben, die als Master- oder Unterachse für diesen Funktionsbaustein verwendet werden soll.

Der Modicon M262 Motion Controller stellt drei Implementierungstypen für Axis_Ref bereit:

  • Antriebsachse

    Eine Antriebsachse, die z. B. vom LXM32S-Antrieb oder vom generischen Sercos-Antriebsgeräteobjekt bereitgestellt wird. Der Zugriff darauf kann beispielsweise über DRV_X.Axis erfolgen. Eine Antriebsachse kann als Masterachse oder als Unterachse für jeden Funktionsbaustein mit dem entsprechenden Eingang verwendet werden. Die Positions-, Geschwindigkeits- und/oder Beschleunigungswerte einer Antriebsachse sind üblicherweise Zielwerte. Die einzige Ausnahme sind Situationen, in denen der Modicon M262 Motion Controller die Bewegung der Achse nicht steuert (z. B. während einer Referenzpunktfahrt, während eines eigenständigen Stopps durch den Antrieb oder wenn die Endstufe des Antriebs deaktiviert ist). Unter solchen Bedingungen ist die Position der Achse die Rückführposition und die Geschwindigkeit/Beschleunigung wird basierend auf der Rückführposition berechnet. Eine untergeordnete Achse kann immer noch einer Masterachse folgen, auch wenn die Masterachse zurzeit nicht vom Modicon M262 Motion Controller gesteuert wird.

  • Virtuelle Achse

    Eine virtuelle Achse stellt beispielsweise eine Welle einer virtuellen Maschine oder eine andere Zwischenachse für komplexe Beziehungen zwischen Master- und Unterachsen dar. Eine virtuelle Achse kann durch Deklarieren einer VAR vom Typ FB_ControlledAxis an einer beliebigen Stelle in der Anwendung erstellt werden. Eine virtuelle Achse kann als Masterachse oder als Unterachse für jeden Funktionsbaustein mit dem entsprechenden Eingang verwendet werden.

    Der Modicon M262 Motion Controller begrenzt die Anzahl der virtuellen Achsen nicht. Beachten Sie jedoch, dass eine virtuelle Achse eine Auswirkung auf die Leistung des Modicon M262 Motion Controller hat, die mit der einer Antriebsachse vergleichbar ist.

  • Gebereingangsachse

    Eine Gebereingangsachse wird vom integrierten Gebereingang des Modicon M262 Motion Controller bereitgestellt. Eine Gebereingangsachse kann nur als Masterachse, nicht als Unterachse verwendet werden. Die vom Geber bereitgestellten Rückgabewerte werden als Position der Masterachse verwendet.

Wenn eine Masterachse nicht mehr verfügbar ist (z. B. Geber getrennt oder nicht betriebsbereit), wechselt jede Unterachse nach diesem Master in den PLCopen-Betriebszustand ErrorStop. Wenn Sie in einer solchen Situation einen synchronen Stopp der untergeordneten Achsen wünschen, implementieren Sie eine virtuelle Zwischenachse zwischen den Achsen.

Wenn die Masterachse nicht mehr verfügbar ist, wechselt die virtuelle Zwischenachse in den PLCopen-Betriebszustand ErrorStop. Die der Zwischenachse folgenden Achsen verbleiben im PLCopen-Betriebszustand SynchronizedMotion und folgen der virtuellen Zwischenachse während ihrer Verzögerungsrampe.

Achskonfiguration

Der Modicon M262 Motion Controller unterstützt beide über PLCopen definierten Achstypen:

  • Modulo-Achse

  • Lineare/Endliche Achse (mit oder ohne Bewegungsbegrenzungen)

Eine Achse wird durch Aufruf der entsprechenden Methode von Axis_Ref konfiguriert.

Das Modulo einer als Modulo-Achse definierten Achse wird unabhängig vom Auftrag oder Achszustand beobachtet (z. B. auch bei deaktivierter Achse).

Es besteht nicht unbedingt ein Zusammenhang zwischen dem Modulo der Achse und der Kurvenanwendungsperiode (weder in der X- noch in der Y-Richtung), selbst wenn die Kurve im absoluten Modus gestartet wird. Nähere Informationen finden Sie in der Beschreibung des Funktionsbausteins.

Die Sollposition und die Position befinden sich auf derselben Seite des Modulo-Sprungs. Das bedeutet, dass beispielsweise bei einer Achse, die mit Modulo 360 vorwärts fährt, die Position den Wert -2 (anstelle von 358) haben kann, wenn die Referenzposition 1 ist.

Absolute Position, Referenzierung und absolute Bewegungen

Nach Aus- und Wiedereinschalten stellt eine Antriebsachse oder eine Geberachse in der Regel ihre absolute Position aus der gespeicherten Geberposition wieder her. Dies geschieht durch Multiplikation der Geberposition mit der Skalierung des Antriebs und Zuordnung des Werts zur Modulo-Position, wenn eine Modulo-Achse verwendet wird. Die Steuerung kann jedoch nicht überprüfen, ob diese wiederhergestellte absolute Position korrekt ist. Die Position ist möglicherweise nicht korrekt, wenn z. B. die mechanische Position geändert wurde (z. B. Motor, Geber und/oder Getriebe ausgetauscht wurden oder beim Ausschalten manuelle Bewegungen durchgeführt wurden). Darüber hinaus muss der Bewegungsbereich der Achse mechanisch begrenzt werden, um innerhalb von weniger als einem Geberüberlauf zu liegen. Außerdem muss das Übersetzungsverhältnis eines mechanischen Getriebes und/oder der Skalierungsfaktor für den Antrieb so gewählt werden, dass die Geberposition der Geberperiode in ein ganzzahliges Vielfaches der Anwendungsperiode aufgelöst werden kann.

Um Bedingungen mit absoluten falschen Positionen zu vermeiden, stellt der Modicon M262 Motion Controller die absolute Position wieder her, berücksichtigt aber nicht automatisch die zu referenzierende(n) Achse(n). Eine Achse wird erst als referenziert betrachtet, nachdem der Funktionsbaustein MC_Home oder der Funktionsbaustein MC_SetPosition (mit Relative = FALSE) ausgeführt wurde oder das Flag isHomed von der Steuerungsanwendung auf TRUE gesetzt wurde.

 WARNUNG
UNBEABSICHTIGTER GERÄTEBETRIEB
  • Vergewissern Sie sich, dass die Achse nach jedem Aus- und Wiedereinschalten und nach jedem manuellen Eingriff richtig referenziert wurde, bevor Sie andere Bewegungen ausführen.
  • Vergewissern Sie sich, dass die Achse korrekt referenziert wurde, bevor Sie irgendwelche absoluten Bewegungen durchführen.
  • Setzen Sie das Flag isHomed in der Steuerungsanwendung erst dann auf TRUE, wenn Sie durch geeignete Mittel positiv sichergestellt und bestätigt haben, dass die wiederhergestellte absolute Position korrekt ist.
  • Sie müssen alle relevanten Dokumentationen sämtlicher Software und Geräte, die in Ihrer Anwendung/Ihrem Prozess verwendet werden, vollständig lesen und verstehen.
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben.

Bewegungsbereichs- und Positionsberechnung mit Gleitkommazahlen

Der Modicon M262 Motion Controller verwendet Gleitkommazahlen für absolute Achsenpositionen. Gleitkommazahlen ist es eigen, dass die Auflösung (absolut) abnimmt, je weiter die Zahlen von Null entfernt sind. Die Position eines Antriebs hingegen wird durch Ganzzahlen (Encoder-Inkremente) dargestellt, so dass die Auflösung immer gleich ist, unabhängig davon, wie weit die Zahl von Null entfernt ist. Im Laufe der Zeit für dies zu einer verminderten Regelgenauigkeit und letztlich zu einem Stillstand der Achse infolge eines erkannten Fehlers, auch wenn die Gleitkommaauflösung noch ausreichend ist.

 WARNUNG
UNBEABSICHTIGTER GERÄTEBETRIEB
  • Verwenden Sie den Achsentyp Modulo für eine Achse, die sich nur in eine Richtung bewegt und ihre Position kontinuierlich erhöht, wie beispielsweise eine Förderachse.
  • Verwenden Sie den Achsentyp Linear/Endlich nur für Achsen mit physikalisch begrenzten Bewegungsbereichen, z. B. über Endschalter.
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben.