Grundlagen zum "Positioning Interface"
Das "Positioning interface" bietet dem Anwender eine Möglichkeit direkt auf der Klemme Fahraufträge auszuführen.
Inhaltsverzeichnis |
---|
Predefined PDO Assignment
Eine vereinfachte Auswahl der Prozessdaten ermöglicht das "Predefined PDO Assignment". Am unteren Teil des Prozessdatenreiters wählen Sie die Funktion "Positioning interface" oder "Positioning interface compact" aus. Es werden dadurch alle benötigten PDOs automatisch aktiviert, bzw. die nicht benötigten deaktiviert.
Parametersatz
Für die Konfiguration stehen dem Anwender im CoE zwei Objekte zur Verfügung, die "POS Settings" (Index 0x8040) und die "POS Features" (Index 0x8041).
- POS Settings:
- Velocity min.:
Die Klemme benötigt aus Gründen der Performance, beim Herunterrampen auf die Zielposition einen, Sicherheitsbereich von 0,5 %. Das bedeutet, dass abhängig von der erreichten Maximalgeschwindigkeit und der konfigurierten Verzögerung der Zeitpunkt errechnet wird, an dem die Bremsrampe beginnt. Um immer sicher ins Ziel zu gelangen, werden von der ermittelten Position 0,5 % abgezogen. Ist die Bremsrampe beendet und das Ziel noch nicht erreicht, fährt die Klemme mit der Geschwindigkeit "Velocity min." bis ins Ziel hinein. Sie muss so konfiguriert werden, dass der Motor in der Lage ist abrupt und ohne einen Schrittverlust mit dieser Geschwindigkeit abzustoppen. - Velocity max.:
Die maximale Geschwindigkeit, mit der der Motor während eines Fahrauftrages fährt. - Acceleration pos.:
Beschleunigungszeit in positiver Drehrichtung.
Die 5 Parameter der Beschleunigung werden in ms angegeben. Mit der Einstellung von 1000 beschleunigt die Klemme den Motor in 1000 ms von 0 auf 100 %. Bei einer Geschwindigkeit von 50 % verringert sich die Beschleunigungszeit dementsprechend linear auf die Hälfte. - Acceleration neg.:
Beschleunigungszeit in negativer Drehrichtung. - Deceleration pos.:
Verzögerungszeit in positiver Drehrichtung. - Deceleration neg.:
Verzögerungszeit in negativer Drehrichtung. - Emergency deceleration:
Notfall-Verzögerungszeit (beide Drehrichtungen). Ist im entsprechenden PDO "Emergency stop" gesetzt, wird der Motor innerhalb dieser Zeit gestoppt. - Calibration position:
Der aktuelle Zählerstand wird nach erfolgter Kalibrierung mit diesem Wert geladen. - Calibration velocity (towards plc cam):
Geschwindigkeit, mit der der Motor, während der Kalibrierung auf die Nocke fährt. - Calibration velocity (off plc cam):
Geschwindigkeit, mit der der Motor, während der Kalibrierung von der Nocke herunter fährt. - Target window:
Zielfenster der Fahrwegsteuerung. Kommt der Motor innerhalb dieses Zielfensters zum Stillstand, wird "In-Target" gesetzt - In-Target timeout:
Steht der Motor nach Ablauf der Fahrwegsteuerung nach dieser eingestellten Zeit nicht im Zielfenster, wird "In-Target" nicht gesetzt. Dieser Zustand kann nur durch Kontrolle der negativen Flanke von "Busy" erkannt werden. - Dead time compensation:
Kompensation der internen Laufzeiten. Dieser Parameter muss bei Standardanwendungen nicht geändert werden. - Modulo factor:
Der "Modulo factor" wird zur Berechnung der Zielposition und der Drehrichtung in den Modulo-Betriebsarten herangezogen. Er bezieht sich auf das angesteuerte System. - Modulo tolerance window:
Toleranzfenster zur Ermittlung der Startbedingung der Modulo-Betriebsarten. - Position lag max.:
Max. erlaubter Schleppabstand, Erläuterungen siehe in "Einstellungen in der NC" - POS Features:
- Start type:
Der "Start type" bestimmt die Art der Berechnung für die Ermittlung der Zielposition (siehe unten). - Time information:
Durch diesen Parameter wird die Bedeutung der angezeigten "Actual drive time" konfiguriert. Zurzeit kann dieser Wert nicht verändert werden, da es keine weitere Auswahlmöglichkeit gibt. Es wird die abgelaufene Zeit des Fahrauftrages angezeigt. - Invert calibration cam search direction:
Bezogen auf eine positive Drehrichtung wird hier die Richtung der Suche nach der Kalibrier-Nocke konfiguriert (auf die Nocke fahren). - Invert sync impulse search direction:
Bezogen auf eine positive Drehrichtung wird hier die Richtung der Suche nach dem HW-Sync-Impuls konfiguriert (von der Nocke herunter fahren). - Emergency stop on position lag error:
Löst einen Nothalt bei Überschreitung des max. Schleppfehlers aus. - Enhanced diag history:
Es werden detailliertere Meldungen zum Status des Positioning Interface in der Diag History ausgegeben.
Informations- und Diagnosedaten
Über die Informations- und Diagnosedaten kann der Anwender eine genauere Aussage darüber erhalten, welcher Fehler während eines Fahrauftrages aufgetreten ist.
- POS Info data:
- Status word:
Das "Status word" spiegelt die im Index 0xA040 verwendeten Status-Bits in einem Datenwort, um diese in der PLC einfacher verarbeiten zu können. Die Positionen der Bits entsprechen der Nummer des Subindizes-1.
Bit 0: Command rejected
Bit 1: Command aborded
Bit 2: Target overrun - State (drive controller):
Hier wird der aktuelle Status der internen Statemachine eingeblendet (siehe unten). - Actual position lag:
Aktueller Schleppabstand, siehe Einstellungen in der NC - POS Diag data:
- Command rejected:
Eine dynamische Änderung der Zielposition wird nicht zu jedem Zeitpunkt von der Klemme übernommen, da dies dann nicht möglich ist. Der neue Auftrag wird in diesem Fall abgewiesen und durch setzen dieses Bits signalisiert.
Diese 3 Diagnose-Bits werden durch Setzten von "Warning" im PDO zur Steuerung synchron übertragen. - Command aborted:
Der aktuelle Fahrauftrag wird durch einen internen Fehler oder durch ein "Emergency stop" vorzeitig abgebrochen. - Target overrun:
Bei einer dynamischen Änderung der Zielposition kann es vorkommen, dass die Änderung zu einem relativ späten Zeitpunkt erfolgt. Dies kann zur Folge haben, dass ein Drehrichtungswechsel erforderlich ist und ggf. die neue Zielposition überfahren wird. Tritt dies ein, wird "Target overrun" gesetzt. - Target timeout:
Der Motor hat nach Beendigung des Fahrauftrags innerhalb der konfigurierten Zeit (0x8040:0C, 0x8050:0C), das Zielfenster (0x8040:0B, 0x8050:0B) nicht erreicht - Position lag:
Der Schleppabstand wurde überschritten. Bei „Position lag max.” = 0 ist die Schleppabstandsüberwachung deaktiviert. Wird in „Position lag max.” ein Wert eingetragen, so wird dieser Wert mit “Actual position lag” verglichen. Sobald “Actual position lag” größer ist als “Position lag max.” wird “Position lag” = 1 gesetzt und ein PDO-Warning ausgegeben. - Emergency stop:
Ein Nothalt wurde ausgelöst (automatisch oder manuell).
Zustände der internen Statemachine
Der State (drive controller) (Index 0x9040:03, 0x9050:03) gibt Auskunft über den aktuellen Zustand der internen Statemachine. Zu Diagnosezwecken kann dieser zur Laufzeit von der PLC ausgelesen werden. Der interne Zyklus arbeitet konstant mit 250 µs. Ein angeschlossener PLC-Zyklus ist großer Wahrscheinlichkeit nach langsamer (z. B. 1 ms). Daher kann es vorkommen, dass manche Zustände in der PLC überhaupt nicht sichtbar sind, da diese teilweise nur einen internen Zyklus durchlaufen werden.
Zustände der internen Statemachine
Name | ID | Beschreibung |
---|---|---|
INIT | 0x0000 | Initialisierung/Vorbereitung für den nächsten Fahrauftrag |
IDLE | 0x0001 | Warten auf den nächsten Fahrauftrag |
START | 0x0010 | das neue Kommando wird ausgewertet und die entsprechenden Berechnungen durchgeführt |
ACCEL | 0x0011 | Beschleunigungs-Phase |
CONST | 0x0012 | Konstant-Phase |
DECEL | 0x0013 | Verzögerungs-Phase |
EMCY | 0x0040 | es wurde ein "Emergency stop" ausgelöst |
STOP | 0x0041 | der Motor ist gestoppt |
CALI_START | 0x0100 | Start eines Kalibrierkommandos |
CALI_GO_CAM | 0x0110 | der Motor wird auf die Nocke gefahren |
CALI_ON_CAM | 0x0111 | die Nocke wurde erreicht |
CALI_GO_SYNC | 0x0120 | der Motor wird in Richtung des HW-Sync-Impulses gefahren |
CALI_LEAVE_CAM | 0x0121 | der Motor wird von der Nocke herunter gefahren |
CALI_STOP | 0x0130 | Ende der Kalibrier-Phase |
CALIBRATED | 0x0140 | der Motor ist kalibriert |
NOT_CALIBRATED | 0x0141 | der Motor ist nicht kalibriert |
PRE_TARGET | 0x1000 | Sollposition ist erreicht, der Positionsregler "zieht" den Motor weiter ins Ziel, "In-Target timeout" wird hier gestartet |
TARGET | 0x1001 | der Motor hat das Zielfenster innerhalb des Timeouts erreicht |
TARGET_RESTART | 0x1002 | eine dynamische Änderung der Zielposition wird hier verarbeitet |
END | 0x2000 | Ende der Positionier-Phase |
WARNING | 0x4000 | während des Fahrauftrages ist eine Warn-Zustand aufgetreten, dieser wird hier verarbeitet |
ERROR | 0x8000 | während des Fahrauftrages ist eine Fehler-Zustand aufgetreten, dieser wird hier verarbeitet |
UNDEFINED | 0xFFFF | undefinierter Zustand (kann z. B. auftreten, wenn die Treiberstufe keine Steuerspannung hat) |
Standard Ablauf eines Fahrauftrags
Im folgenden Ablaufdiagramm ist ein "normaler" Ablauf eines Fahrauftrags dargestellt.
Es wird grob zwischen diesen vier Stufen unterschieden:
Startup
Überprüfung des Systems und der Betriebsbereitschaft des Motors.
Start positioning
Schreiben aller Variablen und Berechnung der gewünschten Zielposition mit dem entsprechenden "Start type". Anschließend den Fahrauftrag starten.
Evaluate status
Überwachung des Klemmen-Status und ggf. dynamische Änderung der Zielposition.
Error handling
Im Falle eines Fehlers die nötigen Informationen aus dem CoE beziehen und auswerten.
Starttypen
Das "Positioning interface" bietet verschiedene Arten der Positionierung. Die folgende Tabelle enthält alle unterstützten Kommandos, diese sind in vier Gruppen aufgeteilt.
Unterstützte "Start types" des "Positioning interface"
Name | Kommando | Gruppe | Beschreibung |
---|---|---|---|
ABSOLUTE | 0x0001 | absolute Positionierung auf eine vorgegebene Zielposition | |
RELATIVE | 0x0002 | relative Positionierung auf eine berechnete Zielposition, ein vorgegebener Positionsunterschied wird zur aktuelle Position addiert | |
ENDLESS_PLUS | 0x0003 | endlos fahren in positiver Drehrichtung (direkte Vorgabe einer Geschwindigkeit) | |
ENDLESS_MINUS | 0x0004 | endlos fahren in negativer Drehrichtung (direkte Vorgabe einer Geschwindigkeit) | |
ADDITIVE | 0x0006 | additive Positionierung auf eine berechnete Zielposition, ein vorgegebener Positionsunterschied wird zur letzten Zielposition addiert | |
ABSOLUTE_CHANGE | 0x1001 | dynamische Änderung der Zielposition währen eines Fahrauftrages auf eine neue, absolute Position | |
RELATIVE_CHANGE | 0x1002 | dynamische Änderung der Zielposition währen eines Fahrauftrages auf eine neue, relative Position (es wird hier ebenfalls der aktuelle, sich verändernde Positionswert verwendet) | |
ADDITIVE_CHANGE | 0x1006 | dynamische Änderung der Zielposition währen eines Fahrauftrages auf eine neue, additive Position (es wird hier die letzte Zielposition verwendet) | |
MODULO_SHORT | 0x0105 | modulo Positionierung auf kürzestem Weg zur Moduloposition (positiv oder negativ), berechnet durch den konfigurierten "Modulo factor" (Index 0x8040:0E) | |
MODULO_SHORT_EXT | 0x0115 | modulo Positionierung auf kürzestem Weg zur Moduloposition, das "Modulo tolerance window" (Index 0x8040:0F) | |
MODULO_PLUS | 0x0405 | modulo Positionierung in positiver Drehrichtung auf die berechnete Moduloposition | |
MODULO_PLUS_EXT | 0x0415 | modulo Positionierung in positiver Drehrichtung auf die berechnete Moduloposition, das "Modulo tolerance window" wird ignoriert | |
MODULO_MINUS | 0x0305 | modulo Positionierung in negativer Drehrichtung auf die berechnete Moduloposition | |
MODULO_MINUS_EXT | 0x0315 | modulo Positionierung in negativer Drehrichtung auf die berechnete Moduloposition, das "Modulo tolerance window" wird ignoriert | |
MODULO_CURRENT | 0x0405 | modulo Positionierung mit der letzten Drehrichtung auf die berechnete Moduloposition | |
MODULO_CURRENT_EXT | 0x0415 | modulo Positionierung mit der letzten Drehrichtung auf die berechnete Moduloposition, das "Modulo tolerance window" wird ignoriert | |
CALI_PLC_CAM | 0x6000 | starten einer Kalibrierung mit Nocke (digitale Eingänge) | |
CALI_HW_SYNC | 0x6100 | starten einer Kalibrierung mit Nocke und HW-Sync-Impuls (C-Spur) | |
SET_CALIBRATION | 0x6E00 | manuelles Setzen der Klemme auf "Kalibriert" | |
SET_CALIBRATION_AUTO | 0x6E01 | automatisches Setzen der Klemme auf "Kalibriert" bei der ersten steigenden Flanke von "Enable" | |
CLEAR_CALIBRATION | 0x6F00 | manuelles Löschen der Kalibrierung |
ABSOLUTE:
Die absolute Positionierung stellt den einfachsten Fall einer Positionierung dar. Es wird eine Position B vorgegeben, welche vom Startpunkt A aus angefahren wird.
RELATIVE:
Bei der relativen Positionierung gibt der Anwender ein Positionsdelta S vor, welches zur aktuellen Position A addiert wird und die Zielposition B ergibt.
ENDLESS_PLUS / ENDLESS_MINUS:
Die beiden Starttypen "ENDLESS_PLUS" und "ENDLESS_MINUS" bieten im "Positioning interface" die Möglichkeit dem Motor eine direkte Geschwindigkeit vorzugeben, um endlos in positiver oder negativer Richtung, mit den vorgegebenen Beschleunigungen, zu fahren.
ADDITIVE:
Für die additive Positionierung wird, zur Berechnung der Zielposition B, das vom Anwender vorgegebene Positionsdelta S mit der beim letzten Fahrauftrag verwendeten Zielposition E addiert.
Diese Art der Positionierung ähnelt der relativen Positionierung, hat aber doch einen Unterschied. Wurde der letzte Fahrauftrag mit Erfolg abgeschlossen, ist die neue Zielposition gleich. Gab es aber einen Fehler, sei es dass der Motor in eine Stallsituation geraten ist oder ein "Emergency stop" ausgelöst wurde, ist die aktuelle Position beliebig und nicht vorausschaubar. Der Anwender hat jetzt den Vorteil, dass er die letzte Zielposition für die Berechnung der folgenden Zielposition nutzen kann.
ABSOLUTE_CHANGE / RELATIVE_CHANGE / ADDITIVE_CHANGE:
Diese drei Positionierarten sind komplett identisch zu den oben beschrieben. Der wichtige Unterschied dabei ist, dass der Anwender während eines aktiven Fahrauftrags diese Kommandos nutzt, um dynamisch eine neue Zielposition vorzugeben.
Es gelten dabei die gleichen Regeln und Voraussetzungen, wie bei den "normalen" Starttypen. "ABSOLUTE_CHANGE" und "ADDITIVE_CHANGE" sind in der Berechnung der Zielposition eindeutig d.h. bei der absoluten Positionierung wird eine absolute Position vorgegeben und bei der additiven Positionierung wird ein Positionsdelta zu der gerade aktiven Zielposition addiert.
Hinweis | |
Vorsicht bei der Verwendung der Positionierung "RELATIVE_CHANGE" Die Änderung per "RELATIVE_CHANGE" muss mit Vorsicht angewendet werden, da auch hier die aktuelle Position des Motors als Startposition verwendet wird. Durch Laufzeiten des Systems stimmt die im PDO angezeigte Position nie mit der realen Position des Motors überein! Daher wird sich bei der Berechnung des übergebenen Positionsdeltas immer eine Differenz zur gewünschten Zielposition einstellen. |
Zeitpunkt der Änderung der Zielposition Eine Änderung der Zielposition kann nicht zu jedem beliebigen Zeitpunkt erfolgen. Falls die Berechnung der Ausgabeparameter ergibt, dass die neue Zielposition nicht ohne weiteres erreicht werden kann, wird das Kommando von der Klemme abgewiesen und das Bit "Command rejected" gesetzt. Dies ist z. B. im Stillstand (da die Klemme hier eine Standard Positionierung erwartet) und in der Beschleunigungsphase (da zu diesem Zeitpunkt der Bremszeitpunkt noch nicht berechnet werden kann) der Fall. |
CALI_PLC_CAM / CALI_HW_SYNC / SET_CALIBRATION / SET_CALIBRATION_AUTO / CLEAR_CALIBRATION:
Der einfachste Fall einer Kalibrierung ist der, nur per Nocke (an einem dig. Eingang angeschlossen) zu kalibrieren.
Hierbei fährt der Motor im
1. Schritt mit der Geschwindigkeit 1 (Index 0x8040:09) in Richtung 1 (Index 0x8041:13) auf die Nocke.
Anschließend im 2. Schritt mit der Geschwindigkeit 2 (Index 0x8040:0A) in Richtung 2 (Index 0x8041:14) von der Nocke herunter.
Nachdem das "In-Target timeout" (Index 0x8040:0C) abgelaufen ist, wird die Kalibrierposition (Index 0x8040:08) als aktuelle Position von der Klemme übernommen.
Hinweis | |
Schalthysterese des Nockenschalters beachten Bei dieser einfachen Kalibrierung muss beachtet werden, dass die Positionserfassung der Nocke nur bedingt genau ist. Die digitalen Eingänge sind nicht interrupt gesteuert und werden "nur" gepollt. Durch die internen Laufzeiten kann sich deshalb eine systembedingte Positionsdifferenz ergeben. |
Für eine genauere Kalibrierung wird zusätzlich zu der Nocke ein HW-Sync-Impuls (C-Spur) verwendet. Der Ablauf dieser Kalibrierung erfolgt genau wie oben beschrieben, bis zu dem Zeitpunkt, an dem der Motor von der Nocke herunterfährt. Jetzt wird nicht sofort gestoppt, sondern erst auf den Sync-Impuls gewartet. Anschließend läuft wieder das "In-Target timeout" ab und die Kalibrierposition wird als aktuelle Position von der Klemme übernommen.
Falls eine Kalibrierung per Hardware, aufgrund der applikatorischen Umstände, nicht möglich ist, kann der Anwender das Bit "Calibrated" auch manuell bzw. automatisch setzen. Das manuelle Setzen bzw. Löschen erfolgt mit den Kommandos "SET_CALIBRATION" und "CLEAR_CALIBRATION".
Einfacher ist es aber, wenn man den Standard-Starttypen (Index 0x8041:01) auf "SET_CALIBRATION_AUTO" konfiguriert. Jetzt wird bei der ersten steigenden Flanke von "Enable" das Bit "Calibrated" automatisch gesetzt. Das Kommando ist nur für diesen Zweck konzipiert, daher ist es nicht sinnvoll es über den synchronen Datenaustausch zu benutzen.
MODULO:
Die Modulo-Position der Achse ist eine zusätzliche Information zur absoluten Achsposition und die Modulo-Positionierung stellt die gewünschte Zielposition auf eine andere Art dar. Im Gegensatz zu den Standard-Positionierarten, ist bei der Modulo-Positionierung beachten, dass die gewünschte Zielposition unterschiedlich interpretiert werden kann.
Die Modulo-Positionierung bezieht sich grundsätzlich auf den im CoE einstellbaren "Modulo factor" (Index 0x8040:0E). In den folgenden Beispielen wird von einer rotatorischen Achse mit einem "Modulo factor" von umgerechnet 360 Grad ausgegangen.
Das "Modulo tolerance window" (Index 0x8040:0F) 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.
Die Positionierung einer Achse bezieht sich immer auf deren aktuellen Istposition. Die Istposition der Achse ist im Normalfall die Position, die mit dem letzten Fahrauftrag angefahren wurde. Unter Umständen (fehlerhafte Positionierung durch einen Stall der Achse, oder eine sehr grobe Auflösung des angeschlossenen Enkoders) kann sich aber eine vom Anwender nicht erwartete Position einstellen. Wenn dieser Umstand nicht berücksichtigt wird, kann sich eine nachfolgende Positionierung unerwartet verhalten.
Beispiel:
Eine Achse wird auf 0° positioniert, wodurch die Istposition der Achse anschließend exakt 0° beträgt. Ein weiterer Modulo-Fahrauftrag auf 360° in positiver Richtung führt zu einer vollen Umdrehung und die Modulo-Position der Achse ist anschließend wieder exakt 0°.
Kommt die Achse bedingt durch die Mechanik etwas vor oder hinter der Zielposition zum Stehen, so verhält sich das nächste Fahrkommando ggf. nicht so, wie man es erwartet.
- Liegt die Istposition leicht unter 0° (siehe Abb. Wirkung des Modulo-Toleranzfensters - Modulo-Zielposition 0° in positiver Richtung A), so führt ein neues Fahrkommando auf 0° in positiver Richtung nur zu einer minimalen Bewegung. Die vorher entstandene Abweichung wird ausgeglichen und die Position ist anschließend wieder exakt 0°.
- Liegt aber die Position leicht über 0°(siehe Abb. Wirkung des Modulo-Toleranzfensters - Modulo-Zielposition 0° in positiver Richtung B), so führt dasselbe Fahrkommando zu einer vollen Umdrehung um wieder die exakte Position von 0° 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 tolerance window" (Index 0x8040:0F) 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 Istposition zwischen 359° und 1° liegt.
- Wenn jetzt die Position weniger als 1° über 0° liegt (siehe Abb. Wirkung des Modulo-Toleranzfensters - Modulo-Zielposition 0° in positiver Richtung D), wird die Achse bei einem Modulo-Start in positiver Richtung zurückpositioniert. Bei einer Zielposition von 0° wird also in beiden Fällen eine Minimalbewegung auf exakt 0° ausgeführt und bei einer Zielposition von 360° wird in beiden Fällen eine ganze Umdrehung gefahren.
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 ° 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 es muss 0° als Modulo-Zielposition beauftragt 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 (MODULO_PLUS, MODULO_MINUS, MODULO_SHORT).
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.
Hinweis | |
Nur Grundperioden kleiner 360° sind erlaubt Bei Modulo-Positionierungen mit dem Start-Typ "MODULO_SHORT" sind nur Modulo-Zielpositionen in der Grundperiode (z. B. kleiner als 360°) erlaubt, anderenfalls wird ein Fehler zurückgegeben. |
Positionierung ohne Modulo-Toleranzfenster Bei den "normalen" Modulo-Positionierarten wird immer das "Modulo tolerance window" (Index 0 Index 0x8040:0F) berücksichtigt. In manchen Situationen ist dies aber eher unerwünscht. Um diesen "Nachteil" zu eliminieren, können die vergleichbaren Starttypen "MODULO_SHORT_EXT", "MODULO_PLUS_EXT", "MODULO_MINUS_EXT" und "MODULO_CURRENT_EXT" verwendet werden, welche das Modulo-Toleranzfenster ignorieren. |
Die folgende Tabelle zeigt einige Positionierungsbeispiele.
Beispiele zur Modulo-Positionierung bei weniger als einer Umdrehung
Modulo-Starttyp | Absolute | Modulo | Relativer | absolute Endposition | Modulo |
---|---|---|---|---|---|
MODULO_PLUS | 90° | 0° | 270° | 360° | 0° |
MODULO_PLUS | 90° | 360° | 630° | 720° | 0° |
MODULO_PLUS | 90° | 720° | 990° | 1080° | 0° |
MODULO_MINUS | 90° | 0° | -90° | 0° | 0° |
MODULO_MINUS | 90° | 360° | -450° | -360° | 0° |
MODULO_MINUS | 90° | 720° | -810° | -720° | 0° |
MODULO_SHORT | 90° | 0° | -90° | 0° | 0° |
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, so wird keine Bewegung ausgeführt. Für eine ganze Umdrehung muss zur Ausgangsposition 360° addiert werden. Das beschriebene Verhalten im Beispiel 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 ist hier auf 1° eingestellt. Besondere Fälle, in denen die Ausgangsposition außerhalb dieses Fensters (TF) liegt, sind gekennzeichnet.
Beispiele zur Modulo-Positionierung bei ganzen Umdrehungen
Modulo-Starttyp | Absolute Anfangsposition | Modulo | Relativer Verfahrweg | absolute Endposition | Modulo | Anmerkung |
---|---|---|---|---|---|---|
MODULO_PLUS | 90,00° | 90,00° | 0,00° | 90,00° | 90,00° |
|
MODULO_PLUS | 90,90° | 90,00° | -0,90° | 90,00° | 90,00° |
|
MODULO_PLUS | 91,10° | 90,00° | 358,90° | 450,00° | 90,00° | außerhalb TF |
MODULO_PLUS | 89,10° | 90,00° | 0,90° | 90,00° | 90,00° |
|
MODULO_PLUS | 88,90° | 90,00° | 1,10° | 90,00° | 90,00° | außerhalb TF |
MODULO_PLUS | 90,00° | 450,00 | 360,00° | 450,00° | 90,00° |
|
MODULO_PLUS | 90,90° | 450,00° | 359,10° | 450,00° | 90,00° |
|
MODULO_PLUS | 91,10° | 450,00° | 718,90° | 810,00° | 90,00° | außerhalb TF |
MODULO_PLUS | 89,10° | 450,00° | 360,90° | 450,00° | 90,00° |
|
MODULO_PLUS | 88,90° | 450,00° | 361,10° | 450,00° | 90,00° | außerhalb TF |
MODULO_PLUS | 90,00° | 810,00 | 720,00° | 810,00° | 90,00° |
|
MODULO_PLUS | 90,90° | 810,00 | 719,10° | 810,00° | 90,00° |
|
MODULO_PLUS | 91,10° | 810,00 | 1078,90° | 1170,00° | 90,00° | außerhalb TF |
MODULO_PLUS | 89,10° | 810,00 | 720,90° | 810,00° | 90,00° |
|
MODULO_PLUS | 88,90° | 810,00 | 721,10° | 810,00° | 90,00° | außerhalb TF |
MODULO_MINUS | 90,00° | 90,00° | 0,00° | 90,00° | 90,00° |
|
MODULO_MINUS | 90,90° | 90,00° | -0,90° | 90,00° | 90,00° |
|
MODULO_MINUS | 91,10° | 90,00° | -1,10° | 90,00° | 90,00° | außerhalb TF |
MODULO_MINUS | 89,10° | 90,00° | 0,90° | 90,00° | 90,00° |
|
MODULO_MINUS | 88,90° | 90,00° | -358,90° | -270,00° | 90,00° | außerhalb TF |
MODULO_MINUS | 90,00° | 450,00° | -360,00° | -270,00° | 90,00° |
|
MODULO_MINUS | 90,90° | 450,00° | -360,90° | -270,00° | 90,00° |
|
MODULO_MINUS | 91,10° | 450,00° | -361,10° | -270,00° | 90,00° | außerhalb TF |
MODULO_MINUS | 89,10° | 450,00° | -359,10° | -270,00° | 90,00° |
|
MODULO_MINUS | 88,90° | 450,00° | -718,90° | -630,00° | 90,00° | außerhalb TF |
MODULO_MINUS | 90,00° | 810,00° | -720,00° | -630,00° | 90,00° |
|
MODULO_MINUS | 90,90° | 810,00° | -720,90° | -630,00° | 90,00° |
|
MODULO_MINUS | 91,10° | 810,00° | -721,10° | -630,00° | 90,00° | außerhalb TF |
MODULO_MINUS | 89,10° | 810,00° | -719,10° | -630,00° | 90,00° |
|
MODULO_MINUS | 88,90° | 810,00° | -1078,90° | -990,00° | 90,00° | außerhalb TF |
Beispiele von zwei Fahraufträgen mit dynamischer Änderung der Zielposition
Ohne Überfahren der Zielposition
Zeitpunkt | POS Outputs | POS Inputs | Beschreibung |
---|---|---|---|
t1: | Execute = 1 | Busy = 1 | - Vorgabe der ersten Parameter |
t2: |
| Accelerate = 0 | - Ende der Beschleunigungsphase |
t3: | Target position = 100000 |
| - Änderung der Parameter |
t4: |
| Decelerate = 1 | - Beginn der Verzögerungsphase |
t5: | Execute = 0 | Busy = 0 | - Ende der Verzögerungsphase |
t6 - t9: |
|
| - Absolute Fahrt zurück auf die Startposition 0 |
Mit Überfahren der Zielposition
Zeitpunkt | POS Outputs | POS Inputs | Beschreibung |
---|---|---|---|
t1: | Execute = 1 | Busy = 1 | - Vorgabe der 1. Parameter |
t2: |
| Accelerate = 0 | - Ende der 1. Beschleunigungsphase |
t3: | Target position = 100000 | Warning = 1 | - Änderung der Parameter |
t4: |
| Accelerate = 1 | - Ende der 1. Verzögerungsphase |
t5: |
| Accelerate = 0 | - Ende der 2. Beschleunigungsphase |
t6: | Execute = 0 | Busy = 0 | - Ende der 2.Verzögerungsphase |
t7 - t10: |
|
| - Absolute Fahrt zurück auf die Startposition 0 |