# 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. Ein auf Decoder-/Interpolator-Ebene synchronisiertes 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. Beim Warten auf Signale können auch Parameter durch den Signalsender mit übertragen werden. Die Parameter können dabei auch von unterschiedlichen Kanälen stammen. Sie werden den angegebenen Parametern bzw. Variablen (<param>) zugewiesen.

<idx>: Bereich für die maximal mögliche Parameteranzahl: 0 .. 11 (max. Anzahl Signalparameter (1))

Nach vollständiger Quittierung der Wartebedingung (Empfang aller notwendigen Signale) wird geprüft, ob alle programmierten Parameter geschrieben worden sind. Ist dies nicht der Fall, so wird mit einer Fehlermeldung angehalten.

## Achtung

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. 1...max. Anzahl Kanäle (2) 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

(Wartemarke 4711, Synchronisation auf DEC-Ebene, SIGNAL 4711 von
beliebigem Kanal)

N200 #WAIT [ID4711]

(Wartemarke 815, Synchronisation auf Interpolator-Ebene,
SIGNAL 815 von Kanal 2 und 3)

N100 #WAIT SYN [ID815 CH2 CH3]

(Wartemarke 911, Synchronisation auf Decoder-Ebene, von Kanal 3)

(1.Signalparameter V.P.SIGNAL, 2.Signalparameter P200)

N250 P100 = 911

N300 #WAIT [IDP100 P[0]=V.P.SIGNAL P[1]=P200 CH3]

(Nachfolgende Berechnung findet erst nach Eintreffen)
(des Signals statt)

N350 P20 = 10 * P200

## Programmierbeispiel

Warten auf Signale mit Übernahme von Parametern (in Kanal 3):

%channel1

N10 #SIGNAL [ID 110014 P[0] = 1234 CH3]

N20 M30

%channel2

N10 #SIGNAL [ID 110014 P[1] = 200 CH3]

N20 M30

%channel3

N10 P1 = 1 (Speichert Wert von Kanal 1

N20 P2 = 1 (Speichert Wert von Kanal 2

N30 XP1 YP2

N40 #WAIT [ID 110014 P[0] = P1 P[1] = P2 CH1 CH2]

N50 XP1 YP2

N60 M30