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
- Funktionsbausteinfehler sind Fehler, die ausschließlich den Funktionsbaustein und nicht die Achse betreffen (z. B. fehlerhafte Parametrierung). Funktionsbausteinfehler müssen nicht explizit zurückgesetzt werden, sondern werden selbständig zurückgesetzt, wenn der Eingang „Execute“ zurückgesetzt wird.
- Kommunikationsfehler (z. B. kann der Funktionsbaustein die Achse nicht adressieren). Kommunikationsfehler deuten oft auf eine fehlerhafte Konfiguration oder Parametrierung hin. Ein Reset ist nicht möglich. Der Funktionsbaustein kann neu getriggert werden, nachdem die Konfiguration korrigiert wurde.
- Achsfehler (logische NC-Achse) treten üblicherweise während der Fahrt auf (z. B. Schleppabstandsfehler) und führen dazu, dass die Achse in den Fehlerzustand geht. Ein Achsfehler muss mit dem Bewegungskommando MC_Reset zurückgesetzt werden.
- Antriebsfehler (Regelgerät) bewirken evtl. einen Achsfehler, also ein Fehler der logischen NC‑Achse. In vielen Fällen können Achsfehler und Antriebsfehler gemeinsam durch das Bewegungskommando MC_Reset zurückgesetzt werden. Abhängig vom Antriebsregler kann aber auch ein separater Reset‑Mechanismus notwendig sein (z. B. Schalten einer Reset-Leitung zum Regelgerät).
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
- Aborting: Default-Modus ohne Pufferung. Das Kommando wird sofort ausgeführt und unterbricht gegebenenfalls ein laufendes Kommando.
- Buffered: Das Kommando wird ausgeführt, sobald die Achse kein anderes Kommando mehr ausführt. Die vorherige Bewegung wird bis zum Stopp ausgeführt und das nachfolgende Kommando wird aus dem Stillstand gestartet.
- BlendingLow: Das Kommando wird ausgeführt, sobald die Achse kein anderes Kommando mehr ausführt. Im Gegensatz zu Buffered stoppt die Achse an der vorherigen Zielposition nicht, sondern durchläuft diese Position mit der niedrigeren Geschwindigkeit zweier Kommandos.
- BlendingHigh Das Kommando wird ausgeführt, sobald die Achse kein anderes Kommando mehr ausführt. Im Gegensatz zu Buffered stoppt die Achse an der vorherigen Zielposition nicht, sondern durchläuft diese Position mit der höheren Geschwindigkeit zweier Kommandos.
- BlendingNext: Das Kommando wird ausgeführt, sobald die Achse kein anderes Kommando mehr ausführt. Im Gegensatz zu Buffered stoppt die Achse an der vorherigen Zielposition nicht, sondern durchläuft diese Position mit der Geschwindigkeit des zuletzt beauftragten Kommandos.
- BlendingPrevious: Das Kommando wird ausgeführt, sobald die Achse kein anderes Kommando mehr ausführt. Im Gegensatz zu Buffered stoppt die Achse an der vorherigen Zielposition nicht, sondern durchläuft diese Position mit der Geschwindigkeit des zuerst beauftragten Kommandos.
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.