AS-Elemente in ST

Die folgenden →AS-Elemente werden in ST unterstützt, um damit AS-Netzwerke zu erstellen:

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:

images/download/attachments/409863194/SFCSequence-version-1-modificationdate-1531293845395-api-v2.png

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