Senden von Signalen
Grundsätzlich wird zwischen Broadcast-Signalen ohne Empfängerangabe und nicht Broadcast-Signalen, bei denen explizit ein Kanal als Empänger angegeben ist, unterschieden. Die Signale sind durch eine eindeutige Nummer identifiziert, wobei das Senden von Signalen mit gleichen Signalnummern erlaubt ist.
Bei nicht Broadcast-Signalen wird explizit ein oder mehrere NC-Kanäle als Empfänger angegeben. Werden bei einem Signal mehrere Empfänger angegeben, so wirkt dies wie das mehrfache Senden der gleichen Signale an die einzelnen Kanäle.
Beipiel:
#SIGNAL [ID4711 CH1 CH2 CH3]
wirkt wie
#SIGNAL [ID4711 CH1]
#SIGNAL [ID4711 CH2]
#SIGNAL [ID4711 CH3]
Diese Signale sind nur für ein WAIT des adressierten Empfängers gültig und werden ohne Angabe des Verbrauchszählers (COUNT) bei einem WAIT des Empfängerkanals verbraucht. Wird ein Verbrauchszähler angegeben, so kann die Gültigkeitsdauer entsprechend erhöht werden.
Im Unterschied dazu können Broadcast-Signale durch ein WAIT eines beliebigen Kanals empfangen werden. Wird bei Broadcast-Signalen kein Verbrauchszähler (COUNT) angegeben, so werden diese durch ein WAIT nicht verbraucht. D.h. sie bleiben bis zum expliziten Löschen (s. #SIGNAL REMOVE) bestehen. Wird ein Verbrauchszähler angegeben, so sind, wie bei nicht Broadcast-Signalen, genau soviele WAIT-Anforderungen bis zum Verbrauchen des Signals möglich.
#SIGNAL [<Modus>] [ID<sgn_nr> [COUNT<expr>] { P[<idx>]=<param>} {CH<chan_nr>} ] (non-modal)
<Modus> Synchronisationsart
Gültige Modi | Bedeutung |
---|---|
--- | 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<sgn_nr>Signalnummer, muß systemweit eindeutig sein. Positive Ganzzahl.
COUNT<expr> Verbrauchszähler, definiert wie oft ein Signal mit #WAIT abgerufen werden kann. Positive Ganzzahl.
P[<idx>] = <param> Signalparameter. Die Parameter werden entsprechend dem angegebenen Index ins Parameterarray des Signals eingetragen.
Index | Bedeutung |
<idx> | Bereich für die maximal mögliche Parameteranzahl: |
CH<chan_nr> Kanalnummer:
Gültige Werte | Bedeutung |
---|---|
1...Max. Anzahl Kanäle (2) | Nummer des Kanals für den das Signal bestimmt ist. |
--- | Wird keine Kanalnummer angegeben, so wird ein (Broadcast) Signal an alle verfügbaren Signal-empfänger des Systems gesendet. |
(1) siehe [6]-6.45
(2) siehe [6]-2.4
Programmierbeispiel
(Signal 812, Synchronisation auf DEC-Ebene, Broadcast)
N500 #SIGNAL [ID812]
(Signal 4711, Synchronisation auf DEC-Ebene, an Kanal 2)
N100 #SIGNAL [ ID4711 CH2 ]
(Signal 4711, Synchronisation auf DEC-Ebene,
fuer 10 #WAIT-Abfragen, Broadcast)
N100 #SIGNAL [ ID4711 COUNT10 ]
(Signal 815, Synchronisation auf Interpolator-Ebene,
zweimal an Kanal 2 und einmal an 3)
N200 #SIGNAL SYN [ ID815 CH2 CH2 CH3 ]
(Signal 911, Synchronisation auf Decoder-Ebene, an Kanal 3)
(1.Signalparameter V.A.MESS.X, 2.Signalparameter P200,
3.Signalparameter 944)
N260 P200 = 924
N300 #SIGNAL [ IDP100 CH3 P[0]=V.A.MESS.X P[1]=P200 P[2]=944 ]