Schritte in ST
STEP name_1 : action_1(); action_2(); action_3(BZ); (* mit einem optionalen Aktionsbestimmungszeichen; 'BZ' ist hier nur ein Platzhalter. *) action_4(BZ,T#0s); (* mit einem optionalen Aktionsbestimmungszeichen und einer Zeitdauer *) ... action_n(); END_STEP
Bedeutung |
---|
ein →Schritt im →AS-Netzwerk, wobei Dem Schritt kann eine oder mehrere Aktionen zugeordnet werden: Informationen darüber, wann ein Schritt bzw. Initial-Schritt aktiv oder inaktiv ist, und die Auswirkungen davon finden Sie unter "Auswertung des ST-Codes inklusive der AS-Netzwerke". Die Verwendung des Schritts ist nur in der aktuellen POE möglich. |
STEP step1 : act1(); act2(N); act3(L,T#10s); END_STEP STEP step2 : act2(R); END_STEP
Schrittmerker und Schrittzeiten verwenden
Sie können die folgenden Eigenschaften eines Schritts in der aktuellen POE verwenden. Die Verwendung ist analog zur Verwendung einer →konstanten Variable möglich.
(Die folgenden Beschreibungen beziehen sich auf einen Schritt mit dem Namen name_1
.)
- Schrittmerker: Der aktive oder inaktive Zustand des Schritts kann durch den logischen Wert des booleschen Strukturelements
name_1.X
dargestellt werden. Falls der Schritt aktiv ist, hatX
den WertTRUE
(oder eine Entsprechung). Bei einem inaktiven Schritt hatX
den WertFALSE
(oder eine Entsprechung). Verwenden Sie z.B. den Schrittmerker, damit ein AS-Netzwerk den Zustand eines anderen AS-Netzwerks prüfen kann. - Schrittzeit: Die Zeit, die seit der Initiierung des Schritts verstrichen ist, kann durch das Strukturelement
name_1.T
vom DatentypTIME
dargestellt werden: Wird der Schritt aktiviert, wird der Wert fürname_1.T
auft#0s
zurückgesetzt. Wird der Schritt deaktiviert, bleibt der Wert fürname_1.T
erhalten, der vorlag, als der Schritt deaktiviert wurde. - Aktivierungszeitpunkt: Der Zeitpunkt, zu dem der Schritt aktiviert wurde, kann durch das Strukturelement
name_1.S
vom DatentypTIME
dargestellt werden.
ACTION act3 : IF step1.T < t#5s THEN (* Bis 5 Sekunden nach der Aktivierung des Schritts 'step1' wird die Variable 'cntStep0' hochgezählt. *) cntStep0 := cntStep0 + 1; ELSE cntStep0 := cntStep0 - 1; END_IF; END_ACTION (* Fehlerhafte Verwendung *) step1.X := BOOL#1; step1.T := t#100ms; step1.S := t#100s;