Warten auf Signale (#WAIT)
Entsprechend dem Versenden von Signalen kann durch den #WAIT-Befehl auf ein entsprechendes #SIGNAL gewartet werden. Ein Broadcast-WAIT wartet dabei nur auf ein Broadcast-SIGNAL mit gleicher Signalnummer. Jedes #WAIT verbraucht jeweils ein eigenes #SIGNAL.
Syntax: |
#WAIT [<Modus>] [ ID=.. { P[<idx>] = <param> } { CH=.. } [ AHEAD ] ] |
<Modus> | Synchronisationsart. Zulässige Kennungen: ---: Synchronisation auf Decoder-Ebene (Grundeinstellung). Diese Synchronisation ist z.B. erforderlich, wenn auf Parameter oder Variablen synchronisiert werden soll. SYN: Synchronisation auf Interpolator-Ebene. Diese Synchronisation ist bei Echtzeitanforderungen notwendig, z.B. Synchronisation zweier Bearbeitungseinheiten einer Mehrständermaschine |
ID=.. | Nummer des Signals, auf das gewartet wird. Positive Ganzzahl. |
P[<idx>] = <param> | Signalparameter als Realzahl. (Achtung: In der Gleichung wird der linke Wert dem rechten Wert zugewiesen). Beim Lesen des Signalparameters wird überprüft, ob der übertragene Signalparameter an Index <idx> in die „Zielvariable “ (<param>) übernommen wurde. Ist dies nicht der Fall, so wird der Fehler ID 21549 ausgegeben. <idx>: Bereich für die maximal mögliche Parameteranzahl: 0 .. 11 (max. Anzahl Signalparameter (1)) |
Hinweis | |
Signalparameter können nur auf Decoder-Ebene ausgewertet werden, d.h. z.B. ein #WAIT SYN [... P[0] = ... ] ist nicht erlaubt. |
CH=.. | Nummer des Kanals, von dem ein Signal erwartet wird. Wird keine Kanalnummer angegeben, so wird auf ein Broadcast-Signal eines beliebigen Teilnehmers gewartet. |
AHEAD | Kennung für die Ausführung eines „fliegenden“ WAIT. Dient der Minimierung von Wartezeiten aufgrund der Pufferwirkung des Look-Ahead (bis zu 70 Sätze im Voraus). Bei Synchronisation auf Interpolator-Ebene sofortige Ausgabe von WAIT, damit bei der nachfolgenden Prüfung auf Quittierung (SIGNAL) fliegend, d.h. ohne anzuhalten sofort in den nächsten Bewegungssatz gewechselt werden kann. |
(1) siehe [6]-6.45
(2) siehe [6]-2.4
Programmierbeispiel
Warten auf Signale
beliebigem Kanal)
SIGNAL 815 von Kanal 2 und 3)
(des Signals statt)
Programmierbeispiel
Warten auf Signale mit Übernahme von Parametern (in Kanal 3):