AS-Elemente in ST
Die folgenden →AS-Elemente werden in ST unterstützt, um damit AS-Netzwerke zu erstellen:
- Initial-Schritt in ST
- Schritte in ST
- Transitionen in ST
- Aktionen in ST
- Aktionsbestimmungszeichen für AS-Elemente
AS-Netzwerke effizient und korrekt erstellen/verwenden
- Kenntnisse über die Schrittkettenprogrammierung werden beim Erstellen von AS-Netzwerken vorausgesetzt.
- Es ist möglich, mehrere AS-Netzwerke innerhalb von →Programmen und →Funktionsbausteinen zu erstellen.
- Die Inhaltshilfe des ST-Editors bietet Vorlagen zum schnellen Erstellen der AS-Netzwerke: Drücken Sie Strg+Leerzeichen und tippen Sie das Start-Schlüsselwort in Kleinbuchstaben ein, um die jeweilige Vorlage zu erhalten. Beispiel: Mit
step
erhalten Sie die Vorlage für den Schritt. - Sie können die AS-Elemente im ST-Code beliebig reihen. logi.calsempfiehlt, die AS-Elemente in einer für Sie verständlichen Reihenfolge anzuordnen.
Siehe das folgende Beispiel: abwechselnd Schritte und Transitionen, abschließend die Aktionen
Informationen darüber, in welcher Reihenfolge ein AS-Netzwerk ausgewertet wird, finden Sie unter Auswertung des ST-Codes inklusive der AS-Netzwerke. - Laut der →IEC-Norm ist es nicht erlaubt, diese AS-Elemente mit ST-Anweisungen auf der obersten Ebenen zu kombinieren (z.B. Baustein-Aufrufe oder Zuweisungen parallel zu Schritte und Transitionen). Eine Meldung informiert Sie darüber, falls der eingegebene ST-Code mit den AS-Elementen zusammen nicht erlaubt ist.
- Unsichere, unerreichbare und/oder sich gegenseitig blockierende AS-Netzwerke werden von logi.CAD 3 nicht erkannt oder verhindert.
Unsichere AS-Netzwerke können entstehen, falls das AS-Netzwerk öfter verzweigt, als es zusammengeführt wird. Unerreichbare Verzweigungen im AS-Netzwerk können verursacht werden, falls das AS-Netzwerk in einer anderen Weise verzweigt, als es zusammengeführt wird. Bei sich gegenseitig blockierenden AS-Netzwerken wartet jedes der AS-Netzwerk auf eine nicht ausgeführte Operation des anderen AS-Netzwerks.
Vertiefende Informationen zu solchen AS-Netzwerken finden Sie in der IEC-Norm und/oder im Technical Report IEC TR 61131-8 (Programmable controllers – Part 8: Guidelines for the application and implementation of programming languages) mit den Suchbegriffen "unsafe SFC", "unreachable SFC" und "deadly embrace".
Beispiel 1 für eine Schrittkette mit AS-Elementen in ST
PROGRAM SampleSfcCounting1 VAR cntStep0 : DINT; cntStep1 : DINT; END_VAR INITIAL_STEP step0 : act0(N); END_STEP TRANSITION t0 FROM step0 TO step1 := cntStep0 MOD 10 = 0; END_TRANSITION STEP step1 : act1(N); END_STEP TRANSITION t1 FROM step1 TO step0 := cntStep1 MOD 10 = 0; END_TRANSITION ACTION act0 : cntStep0 := cntStep0 + 1; END_ACTION ACTION act1 : cntStep1 := cntStep1 + 1; END_ACTION END_PROGRAM
Die schematische Darstellung der AS-Elemente aus dem Beispiel 1:
Zum besseren Verständnis der Kommentare für ACTION ... END_ACTION
für das folgende Beispiel sind Kenntnisse über die Auswertung des ST-Codes inklusive der AS-Netzwerke erforderlich.
Beispiel 2 für eine Schrittkette mit AS-Elementen in ST
FUNCTION_BLOCK SampleSfcCounting2 VAR cnt1, cnt2, cnt3, cnt4, cnt5, cnt6 : LINT; END_VAR INITIAL_STEP Step1 : Action1(); Action2(D, T#5s); Action3(L, T#5s); Action4(P0); Action6(SD, T#15s); Action7(D, T#10s); END_STEP TRANSITION FROM Step1 TO Step2 := Action7; END_TRANSITION STEP Step2 : Action2(L, T#5s); Action3(D, T#5s); Action5(P1); END_STEP TRANSITION FROM Step2 TO Step3 := Step2.T > Time#10s - T#200ms; END_TRANSITION STEP Step3 : Action6(R); END_STEP TRANSITION FROM Step3 TO Step1 := TRUE; END_TRANSITION // runs from 0-10 ACTION Action1 : cnt1 := cnt1 + 1; END_ACTION // runs from 5-10 sec (while Step1 is active) and 10-15 sec (while Step2 is active) ACTION Action2 : cnt2 := cnt2 + 1; END_ACTION // runs from 0-5 sec and 15-20 sec ACTION Action3 : cnt3 := cnt3 + 1; END_ACTION // runs at the end of Step1 ACTION Action4 : cnt4 := cnt4 + 1; END_ACTION // runs at the start of Step2 ACTION Action5 : cnt5 := cnt5 + 1; END_ACTION // runs from 15-20 sec (while Step2 is active) ACTION Action6 : cnt6 := cnt6 + 2; END_ACTION // used to signal end of step1 after 10 sec ACTION Action7 : END_ACTION END_FUNCTION_BLOCK