Na ja, aber damit wartet der an der Stelle ja nicht darauf, dass A true wird, sondern läuft im Programm einfach weiter, wenn das nicht der Fall ist.
Was ich suche ist eine Möglichkeit im strukturierten Text, die so funktioniert wie eine Transition bei der AS Sprache.
Also,der soll an der Stelle "If A=true" so lange warten, bis das eintritt.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Du kannst ja nicht einfach das "Programm anhalten". Die willst nur in einem bestimmten Zustand bleiben, oder? So wie ich das sehe, würde dir eine state-machine helfen. Die einzelnen Zustände werden in einer CASE-Abfrage abgebildet, die "Transitionen" sind dann die Zuweisungen des jeweiligen Zustands. Z.B. so:
CASE Zustand OF
0: // Initialisierung
IF a THEN // "Transition" erfüllt
Zustand:= 10;
END_IF
10: // das soll passieren, wenn a high war
b:= TRUE;
( weitere Anweisungen )
IF NOT a THEN
Zustand:= 20;
END_IF
20: // nächster Zustand
Viel Erfolg!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
na ja, in der AS Sprache "hält" das Programm ja auch an den Transitions an, bis die Bedingung erfüllt ist.
Genau das ließe sich doch eigentlich auch in einen ST Befehl packen.
Wie gesagt, bei der Jetter Sps heißt der Befehl "When" und macht genau das, was die Transition macht.
state machine gefällt mir irgendwie nicht so.
Aber danke für die Mühe!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich habe inzwischen ein komplexeres Programm in der Ablaufsprache AS programmiert, muss aber sagen, dass die Fehlersuche zu einem elenden Geklicke ausarten kann und sehr unübersichtlich wird.
Daher stelle ich das jetzt alles auf ST um und benutze nun doch den CASE Befehl, mit dem ich mich inzwischen gut angefreundet habe.
Trotzdem trauere ich dem WHEN Befehl meiner alten Jetter Steuerung noch etwas hinterher.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo.
Ich habe vorher mit Jetter gearbeitet. Dort gab es den Befehl "when", der auf ein Ereignis gewartet hat.
When A=true then b:=2 then...
Ich brauche so was oft bei meinen Maschinen, bei denen ich auf ein Eingangssignal warten muss bevor das Programm weiterlaufen soll.
Wie mache ich das am besten in Codesys?
So?
S1: IF g.BMedS3 = FALSE THEN JMP S1;
END_IF
Oder so? wobei dann a:=a irgendeine völlig sinnlose Aktion wäre.
While g.BMedS3 = FALSE do a:=a; END_WHILE
Danke.
Originally created by: jl
So geht's:
IF A THEN
b := 2;
END_IF
oder
IF NOT A THEN
b := 2;
END_IF
Must aber beachten dass b auf 2 bleibt wenn A = FALSE.
Oder so:
IF A THEN
b := 2;
ELSE
B := ?;
END_IF
Na ja, aber damit wartet der an der Stelle ja nicht darauf, dass A true wird, sondern läuft im Programm einfach weiter, wenn das nicht der Fall ist.
Was ich suche ist eine Möglichkeit im strukturierten Text, die so funktioniert wie eine Transition bei der AS Sprache.
Also,der soll an der Stelle "If A=true" so lange warten, bis das eintritt.
Hallo rtist!
Du kannst ja nicht einfach das "Programm anhalten". Die willst nur in einem bestimmten Zustand bleiben, oder? So wie ich das sehe, würde dir eine state-machine helfen. Die einzelnen Zustände werden in einer CASE-Abfrage abgebildet, die "Transitionen" sind dann die Zuweisungen des jeweiligen Zustands. Z.B. so:
CASE Zustand OF
0: // Initialisierung
IF a THEN // "Transition" erfüllt
Zustand:= 10;
END_IF
10: // das soll passieren, wenn a high war
b:= TRUE;
( weitere Anweisungen )
IF NOT a THEN
Zustand:= 20;
END_IF
20: // nächster Zustand
Viel Erfolg!
na ja, in der AS Sprache "hält" das Programm ja auch an den Transitions an, bis die Bedingung erfüllt ist.
Genau das ließe sich doch eigentlich auch in einen ST Befehl packen.
Wie gesagt, bei der Jetter Sps heißt der Befehl "When" und macht genau das, was die Transition macht.
state machine gefällt mir irgendwie nicht so.
Aber danke für die Mühe!
Ich verstehe nicht genau was du willst.
Es gibt normale Ifs, Elses, Else_Ifs etc.
Dann gibts noch for,while,repeat loops
Das hier ist ganz gut:
http://www.plcacademy.com/structured-text-tutorial/ m
Nachtrag.
Ich habe inzwischen ein komplexeres Programm in der Ablaufsprache AS programmiert, muss aber sagen, dass die Fehlersuche zu einem elenden Geklicke ausarten kann und sehr unübersichtlich wird.
Daher stelle ich das jetzt alles auf ST um und benutze nun doch den CASE Befehl, mit dem ich mich inzwischen gut angefreundet habe.
Trotzdem trauere ich dem WHEN Befehl meiner alten Jetter Steuerung noch etwas hinterher.