Allgemeine Regeln für MC-Funktionsbausteine

Für alle MC-Funktionsbausteine gelten die nachfolgend beschriebenen Regeln. Diese stellen eine definierte Abarbeitung durch das SPS-Programm sicher.

Ausschließlichkeit der Ausgänge

Die Ausgänge „Busy“, „Done“, „Error“ und „CommandAborted“ schließen sich gegenseitig aus, d. h. an einem Funktionsbaustein kann zur gleichen Zeit nur einer dieser Ausgänge TRUE sein. Sobald der Eingang „Execute“ TRUE wird, muss einer der Ausgänge TRUE werden. Zur gleichen Zeit kann dabei jedoch nur einer der Ausgänge „Active“, „Done“, „Error“ und „CommandAborted“ TRUE sein.

Eine Ausnahme ist das Bewegungskommando MC_Stop. Dieses setzt den Ausgang „Done“ auf TRUE, sobald die Achse gestoppt ist. Dennoch bleiben auch die Ausgänge „Busy“ und „Active“ TRUE, da die Achse verriegelt wird. Erst nachdem der Eingang „Execute“ auf FALSE gesetzt wird, wird die Achse entriegelt und die Ausgänge „Busy“ sowie „Active“ werden auf FALSE gesetzt.

Ausgangszustand

Wenn der Funktionsbaustein nicht aktiv ist, werden die Ausgänge „Done“, „InGear“, „InVelocity“, „Error“, „ErrorID“ und „CommandAborted“ mit einer fallenden Flanke am Eingang „Execute“ zurückgesetzt. Die fallende Flanke am Eingang „Execute“ beeinflusst jedoch nicht die Kommandoausführung.

Wenn der Eingang „Execute“ bereits während der Kommandoausführung zurückgesetzt wird, ist sichergestellt, dass einer der Ausgänge am Ende des Kommandos für einen SPS-Zyklus gesetzt wird. Erst danach werden die Ausgänge zurückgesetzt.

Wenn der Eingang „Execute“ während der Ausführung eines Kommandos mehrfach getriggert wird, gibt der Funktionsbaustein keinerlei Rückmeldung, führt aber auch kein weiteres Kommando aus.

Eingangsparameter

Die Eingangsparameter werden mit steigender Flanke übernommen. Um die Parameter zu ändern, muss das Kommando neu getriggert werden, nachdem es beendet wurde oder es muss während der Kommandoausführung eine zweite Instanz des Funktionsbausteins mit neuen Parametern getriggert werden.

Wenn ein Eingangsparameter nicht an den Funktionsbaustein übergeben wird, bleibt der zuletzt an diesen Baustein übergebene Wert gültig. Beim ersten Aufruf ist ein sinnvoller Default-Wert gültig.

Position und Distanz

Der Eingang „Position“ bezeichnet einen definierten Wert innerhalb eines Koordinatensystems. Der Eingang „Distance“ ist dagegen ein relatives Maß, also der Abstand zweier Positionen. Sowohl „Position“, als auch „Distance“ werden in technischen Einheiten, z. B. mm oder °, entsprechend der Skalierung der Achse angegeben.

Dynamikparameter

Die Dynamikparameter für Move-Funktionen werden in technischen Einheiten mit der Zeitbasis Sekunde angegeben. Ist eine Achse beispielsweise in Millimetern skaliert, haben die Parameter folgende Einheiten:

Velocity

mm/s

Acceleration

mm/s2

Deceleration

mm/s2

Jerk

mm/s3

Fehlerbehandlung

Alle Funktionsbausteine haben zwei Fehlerausgänge, um Fehler während der Kommandoausführung anzuzeigen. Der Ausgang „Error“ zeigt den Fehler an und der Ausgang „ErrorID“ gibt eine ergänzende Fehlernummer aus. Die Ausgänge „Done“, „InVelocity“, „InGear“ und „InSync“ bezeichnen eine erfolgreiche Kommandoausführung und werden nicht gesetzt, wenn der Ausgang „Error“ TRUE ist.

Am Ausgang der Funktionsbausteine werden Fehler unterschiedlichen Typs signalisiert. Der Fehlertyp wird nicht explizit angegeben, sondern hängt von der Fehlernummer ab, die systemweit eindeutig vergeben ist.

Fehlertypen

Verhalten des Done-Ausgangs

Der Ausgang „Done“ (oder auch alternativ „InVelocity“, „InGear“, „InSync“ etc.) wird gesetzt, wenn ein Kommando erfolgreich ausgeführt wurde. Wenn mit mehreren Funktionsbausteinen an einer Achse gearbeitet wird und das laufende Kommando durch einen weiteren Baustein unterbrochen wird, wird der Ausgang „Done“ des ersten Bausteins nicht gesetzt.

Verhalten des CommandAborted-Ausgangs

Der Ausgang „CommandAborted“ wird gesetzt, wenn ein Kommando durch einen anderen Baustein unterbrochen wird.

Verhalten des Busy-Ausgangs

Der Ausgang „Busy“ zeigt an, dass der Funktionsbaustein aktiv ist. Der Baustein kann nur dann mit einer steigenden Flanke am Eingang „Execute“ getriggert werden, wenn der Ausgang „Busy“ FALSE ist. „Busy“ wird sofort mit der steigenden Flanke am Eingang „Execute“ gesetzt und erst zurückgesetzt, wenn das Kommando erfolgreich oder auch nicht erfolgreich beendet wurde. Solange der Ausgang „Busy“ TRUE ist, muss der Funktionsbaustein zyklisch aufgerufen werden, um das Kommando ausführen zu können.

Verhalten des Active-Ausgangs

Wenn die Bewegung einer Achse durch mehrere Funktionsbausteine gesteuert wird, so zeigt der Ausgang „Active“ eines Bausteins an, dass das Kommando durch die Achse ausgeführt wird. Der Zustand Busy = TRUE und Active = FALSE bedeutet, dass das Kommando noch nicht oder nicht mehr ausgeführt wird.

Enable-Eingang und Valid-Ausgang

Im Gegensatz zum Eingang „Execute“ führt der Eingang „Enable“ dazu, dass eine Aktion permanent und wiederholt ausgeführt wird, solange „Enable“ TRUE ist. Der Funktionsbaustein MC_ReadStatus aktualisiert beispielsweise zyklisch den Zustand einer Achse, solange „Enable“ TRUE ist. Ein Funktionsbaustein mit einem Eingang „Enable“ zeigt durch den Ausgang „Valid“ an, dass die an den Ausgängen angezeigten Daten gültig sind. Solange der Ausgang „Valid“ TRUE ist, können die Daten jedoch ständig aktualisiert werden.

BufferMode

Einige Funktionsbausteine haben einen Eingang „BufferMode“, über den der Kommandofluss mit mehreren Funktionsbausteinen geregelt wird. Der BufferMode kann beispielsweise festlegen, dass ein Kommando ein anderes unterbricht (ungepufferter Betrieb) oder dass das nachfolgende Kommando erst im Anschluss an das vorherige Kommando ausgeführt wird (gepufferter Betrieb). Im gepufferten Betrieb kann über den BufferMode ebenfalls festgelegt werden, wie die Bewegung am Übergang von einem Kommando zum nächsten aussehen soll. Man spricht hier von einem „Blending“, das die Geschwindigkeit am Übergangspunkt festlegt.

Um den BufferMode zu verwenden, ist immer ein zweiter Funktionsbaustein nötigt. Es ist nicht möglich, einen Move-Baustein mit neuen Parametern zu triggern, während er noch aktiv ist.

Im ungepufferten Betrieb führt ein nachfolgendes Kommando zu einem Abbruch eines laufenden Kommandos. Das vorherige Kommando setzt dann den Ausgang „CommandAborted“. Im gepufferten Betrieb wartet ein nachfolgendes Kommando, bis ein laufendes Kommando beendet wurde. Hier ist zu beachten, dass eine Endlosbewegung kein gepuffertes Folgekommando zulässt. Gepufferte Kommandos führen immer sofort zum Abbruch einer Endlosbewegung wie im ungepufferten Betrieb.

Es wird nur ein Kommando gepuffert, während ein anderes ausgeführt wird. Wird mehr als ein Kommando während eines laufenden Kommandos getriggert, so wird das zuletzt gestartete und zu puffernde Kommando mit einem Fehler abgewiesen (Fehler 0x4292 Buffer Full). Falls jedoch das letzte Kommando ungepuffert gestartet wird, so wird es in jedem Fall aktiv und unterbricht das laufende und ein bereits gepuffertes Kommando.

BufferModes

Siehe auch: Grafische Darstellung der BufferModes

Optionale Blending-Position

Das Blending bei den verschiedenen BufferModes wird jeweils an der Zielposition des gerade laufenden Kommandos durchgeführt. Im Falle des Bewegungskommandos MC_MoveVelocity ist keine Zielposition definiert und in anderen Fällen kann es sinnvoll sein, die Blending-Position zu ändern. Dazu kann über den Eingang „Options“ des Funktionsbausteins (siehe Options-Eingang) eine Blending‑Position festgelegt werden, die dann für das neue Kommando verwendet wird. Die optionale Blending‑Position muss vor der Zielposition des vorherigen Kommandos liegen, anderenfalls wird das neue Kommando mit einer Fehlermeldung abgewiesen (0x4296). Wenn die optionale Blending‑Position bereits überfahren worden ist, wird das neue Kommando instantan umgesetzt. Das Kommando verhält sich also wie ein Aborting-Kommando.

Options-Eingang

Viele Funktionsbausteine haben einen Eingang „Options“, der in einer Datenstruktur zusätzliche selten benötigte Optionen enthält. Um die Grundfunktion des Funktionsbausteins auszuführen, werden die Optionen oft nicht benötigt, sodass der Eingang offen bleiben kann. Nur wenn in der Dokumentation ausdrücklich auf bestimmte Optionen hingewiesen wird, muss die Options-Datenstruktur vom Anwender belegt werden.

Slaveachsen

Bewegungskommandos können auf gekoppelte Slaveachsen angewendet werden, wenn diese Option in den Parametern der Achse explizit aktiviert worden ist. Ein Bewegungskommando wie MC_MoveAbsolute führt dann automatisch zum Abkoppeln der Achse und das Kommando wird anschließend ausgeführt. In diesem Fall ist ausschließlich der BufferMode „Aborting“ möglich.