Grundlagen zum "Positioning interface"

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.

Grundlagen zum "Positioning interface" 1:
Predefined PDO Assignment

Parametersatz

Für die Konfiguration stehen dem Anwender im CoE zwei Objekte zur Verfügung, die "POS Settings" (Index 8020) und die "POS Features" (Index 8021).

Grundlagen zum "Positioning interface" 2:
Settings-Objekte im CoE

POS Settings

Velocity min.:

EP7047-1032 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 EP7047-1032 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.

"Speed range" (Index 8012:05)

Velocity min./max. sind auf die konfigurierte "Speed range" (Index 8012:05) normiert. Das bedeutet, dass bei einer „Speed range“ von beispielsweise 4000 Vollschritten/Sekunde für eine Geschwindigkeitsausgabe von 100% (d.h. 4000 Vollschritte/Sekunde) in „Velocity max.“ eine 10000 und bei 50% (d.h. 2000 Vollschritte/Sekunde) eine 5000 eingetragen werden muss

Acceleration pos.:

Beschleunigungszeit in positiver Drehrichtung.

Die 5 Parameter der Beschleunigung beziehen sich ebenfalls auf die eingestellte "Speed range" und werden in ms angegeben. Mit der Einstellung von 1000 beschleunigt EP7047-1032 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 diese 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.

POS Features

Start type:

Der "Start type" bestimmt die Art der Berechnung für die Ermittlung der Zielposition (siehe unten).

Time information:

Durch dieser Parameter wird die Bedeutung der angezeigten "Actual drive time" konfiguriert. Zur Zeit 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).

Informations- und Diagnosedaten

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.

Grundlagen zum "Positioning interface" 3:
Diagnose-Objekte im CoE

POS Info data

Status word:

Das "Status word" spiegelt die im Index A020 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).

POS Diag data:

Command rejected:

Eine dynamische Änderung der Zielposition wird nicht zu jedem Zeitpunkt von EP7047-1032 ü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:

Wird der aktuelle Fahrauftrag durch einen internen Fehler oder durch ein "Emergency stop" vorzeitig abgebrochen wird.

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, so wird "Target overrun" gesetzt.

Zustände der internen Statemachine

Zustände der internen Statemachine

Der State (drive controller) (Index 9020: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.

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

0x0020

es wurde ein "Emergency stop" ausgelöst

STOP

0x0021

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. auftreteten, wenn die Treiberstufe keine Steuerspannung hat)

Zustände der internen Statemachine

Standard Ablauf eines Fahrauftrags

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 internen Status von EP7047-1032 und ggf. dynamische Änderung der Zielposition.

Error handling:

Im Falle eines Fehlers die nötigen Informationen aus dem CoE beziehen und auswerten.

Grundlagen zum "Positioning interface" 4:
Ablauf-Diagramm eines Fahrauftrages

Starttypen

Das "Positioning interface" bietet verschiedene Arten der Positionierung. Die folgende Tabelle enthält alle unterstützten Kommandos, diese sind in 4 Gruppen aufgeteilt.

Name

Kommando

Gruppe

Beschreibung

ABSOLUTE

0x0001

Standard

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

Standard Ext.

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

modulo Positionierung auf kürzestem Weg zur Moduloposition (positiv oder negativ), berechnet durch den konfigurierten "Modulo factor" (Index 8020:0E)

MODULO_SHORT_EXT

0x0115

modulo Positionierung auf kürzestem Weg zur Moduloposition, das "Modulo tolerance window" (Index 8020:0F) wird ignoriert

MODULO_PLUS

0x0205

modulo Positionierung in positiver Drehrichtung auf die berechnete Moduloposition

MODULO_PLUS_EXT

0x0215

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

Calibration

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 des Flags "Kalibriert"

SET_CALIBRATION_AUTO

0x6E01

automatisches Setzen des Flags "Kalibriert" bei der ersten steigenden Flanke von "Enable"

CLEAR_CALIBRATION

0x6F00

manuelles Löschen der Kalibrierung

Unterstützte " Start types " des "Positioning interface "

ABSOLUTE:

Die absolute Positionierung stellt den einfachsten Fall einer Positionierung dar. Es wird eine Position B vorgegeben, welche vom Startpunkt A aus angefahren wird.

Grundlagen zum "Positioning interface" 5:
Absolute Positionierung

RELATIVE:

Bei der relativen Positionierung gibt der Anwender ein Positionsdelta S vor, welches zur aktuellen Position A addiert wird und die Zielposition B ergibt.

Grundlagen zum "Positioning interface" 6:
Relative Positionierung

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.

Grundlagen zum "Positioning interface" 7:
Endlos 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 Stall-Situation 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.

Grundlagen zum "Positioning interface" 8:
Additive Positionierung

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 vergegeben 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 abgewiesen und das Bit "Command rejected" gesetzt. Dies ist z.B. im Stillstand (da hier eine Standard Positionierung erwartet wird) 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 0x8020:09) in Richtung 1 (Index 0x8021:13) auf die Nocke. Anschließend im 2. Schritt mit der Geschwindigkeit 2 (Index 0x8020:0A) in Richtung 2 (Index 0x8021:14) von der Nocke herunter. Nachdem das "In-Target timeout" (Index 0x8020:0C) abgelaufen ist wird die Kalibrierposition (Index 0x8020:08) als aktuelle Position ü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 interruptgesteuert und werden "nur" gepollt. Durch die internen Laufzeiten kann sich deshalb eine systembedingte Positionsdifferenz ergeben.

Grundlagen zum "Positioning interface" 9:
Kalibrierung mit Nocke

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 übernommen.

Grundlagen zum "Positioning interface" 10:
Kalibrierung mit Nocke und C-Spur

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 0x8021: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, birgt die Modulo-Positionierung einige Tücken, da die gewünschte Zielposition unterschiedlich interpretiert werden kann.

Die Modulo-Positionierung bezieht sich grundsätzlich auf den im CoE einstellbaren "Modulo factor" (Index 0x8020:0E). In den folgenden Beispielen wird von einer rotatorischen Achse mit einem "Modulo factor" von umgerechnet 360 Grad ausgegangen.

Das "Modulo tolerance window" (Index 0x8020: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.

Grundlagen zum "Positioning interface" 11:
Wirkung des Modulo-Toleranzfensters - Modulo-Zielposition 0° in positiver Richtung

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. 9, links unten), 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°, 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 0x8020: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, 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 0x8020: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-Toleranzfensster ignorieren.

Die folgende Tabelle zeigt einige Positionierungsbeispiele:

Modulo-Starttyp

Absolute Anfangsposition

Modulo-Zielposition

Relativer Verfahrweg

absolute Endposition

Modulo Endposition

MODULO_PLUS

90°

270°

360°

MODULO_PLUS

90°

360°

630°

720°

MODULO_PLUS

90°

720°

990°

1080°

MODULO_MINUS

90°

-90°

MODULO_MINUS

90°

360°

-450°

-360°

MODULO_MINUS

90°

720°

-810°

-720°

MODULO_SHORT

90°

-90°

Beispiele zur Modulo-Positionierung bei weniger als einer Umdrehung

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 liegt, sind gekennzeichnet.

Modulo-
Starttyp

Absolute
Anfangs-
position

Modulo-
Ziel
position

Rela-
tiver Ver-
fahrweg

absolute End-
position

Modulo End-
position

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 zur Modulo-Positionierung bei ganzen Umdrehungen

Beispiele von zwei Fahraufträgen mit dynamischer Änderung der Zielposition

Ohne Überfahren der Zielposition

Zeitpunkt

POS Outputs

POS Inputs

Beschreibung

t1:

Execute = 1
Target position = 200000
Velocity = 2000
Start type = 0x0001
Acceleration = 1000
Deceleration = 1000

Busy = 1
Accelerate = 1

- Vorgabe der ersten Parameter
- Beginn der Beschleunigungsphase

t2:

 

Accelerate = 0

- Ende der Beschleunigungsphase

t3:

Target position = 100000
Velocity = 1500
Start type = 0x1001
Acceleration = 2000
Deceleration = 2000

 

- Änderung der Parameter
- Aktivierung durch neuen Starttypen

t4:

 

Decelerate = 1

- Beginn der Verzögerungsphase

t5:

Execute = 0

Busy = 0
In-Target = 1
Decelerate = 0

- Ende der Verzögerungsphase
- Motor ist auf neuer Zielposition

t6 - t9:

 

 

- Absolute Fahrt zurück auf die Startposition 0

Grundlagen zum "Positioning interface" 12:
Scope-Aufnahme eines Fahrauftrages mit dynamischer Änderung der Zielposition, ohne Überfahren der Zielposition
(Die Achsen-Skalierung bezieht sich nur auf die Positionen, nicht auf die Geschwindigkeit und die Status-Bits)

Mit Überfahren der Zielposition

Zeitpunkt

POS Outputs

POS Inputs

Beschreibung

t1:

Execute = 1
Target position = 200000
Velocity = 5000
Start type = 0x0001
Acceleration = 3000
Deceleration = 5000

Busy = 1
Accelerate = 1

- Vorgabe der 1. Parameter
- Beginn der 1. Beschleunigungsphase

t2:

 

Accelerate = 0

- Ende der 1. Beschleunigungsphase

t3:

Target position = 100000
Velocity = 1500
Start type = 0x1001
Acceleration = 1000
Deceleration = 2000

Warning = 1
Decelerate = 1

- Änderung der Parameter
- Aktivierung durch neuen Starttypen
- Warnung vor dem Überfahren der Zielposition
- Beginn der 1. Verzögerungsphase

t4:

 

Accelerate = 1
Decelerate = 0

- Ende der 1. Verzögerungsphase
- Beginn der 2. Beschleunigungsphase in Gegenrichtung

t5:

 

Accelerate = 0
Decelerate = 1

- Ende der 2. Beschleunigungsphase
- Beginn der 2. Verzögerungsphase

t6:

Execute = 0

Busy = 0
In-Target = 1
Decelerate = 0

- Ende der 2.Verzögerungsphase
- Motor ist auf neuer Zielposition

t7 - t10:

 

 

- Absolute Fahrt zurück auf die Startposition 0

Grundlagen zum "Positioning interface" 13:
Scope-Aufnahme eines Fahrauftrages mit dynamischer Änderung der Zielposition, mit Überfahren der endgültigen Zielposition
(Die Achsen-Skalierung bezieht sich nur auf die Positionen, nicht auf die Geschwindigkeit und die Status-Bits)