... Ich denke du solltest dich mal einlesen in das Thema SCL da du zu sehr versuchst deinen AWL Code möglichst 1:1 in SCL umzusetzen.
Beispiel
U E0.0
= A 0.0
versuchst du umzusetzen in
IF E 0.0 THEN
A 0.0 := TRUE;
ELSE
A0.0 := FALSE;
Dass ist nicht der Sinn der Sache. Man muss in SCL etwas umdenken. ...
Sorry, DeltaMikeAir, aber der TE hat doch versucht, eine (zwar zweizeilige) Zuweisung in AWL zu ersetzen durch eine IF-Abfrage in SCL. Das war schon viel zu viel des Umdenkens! Völlig unnötig.
Wie fast immer gilt: weniger (umdenken) ist oft mehr (Geradlinigkeit).
Die AWL-Zuweisung
U E0.0
= A0.0
lässt sich problemlos als SCL-Zuweisung mit
A0.0 := E0.0
formulieren.
Das "Umdenken" ist nur insoweit nötig, als in AWL die ZielVariable A0.0 zuletzt genannt wird und in SCL zuerst.
Wenn es in einer Aufgabenstellung lapidar heisst "wenn Bedingung A erfüllt ist, dann soll die Variable X den Wert Y annehmen", dann sollte man nicht an "IF-THEN" denken, sondern an "IF-THEN-ELSE" und den Aufgabensteller sofort nageln, was denn in dem Falle passieren soll, wenn die Bedingung A nicht erfüllt ist!
Viele denken, die Antwort darauf sei bereits implizit in der Aufgabenstellung enthalten und sagen dann etwas verwirrt "ist doch klar!".
Aber genau das (nämlich klar) ist es eben nicht und genau daraus resultieren regelmässig die Missverständnisse!
Den ELSE-Zweig darf man nur weglassen, wenn im ELSE-Fall tatsächlich absolut gar nichts passieren soll!!!
Aber das ist oft nicht so gemeint. Also, wenn der ELSE-Fall - aus welchen Gründen auch immer - verschwiegen wird: unbedingt nachhaken und klären!
Wenn sich dabei herausstellt, im Fall A soll X true sein und im Fach Nicht-A soll X false sein, dann spricht das für eine simple WertZuweisung anstelle einer kaum zu rechtfertigenden IF-THEN-ELSE-Konstruktion.
Leider lernt man in ProgrammierKursen etc. die VergleichsOperatoren meistens nur im Zusammenhang mit IF-Abfragen kennen, manchmal auch in Case-Selektionen. Darum kommen viele gar nicht erst auf die Idee, sie einfach in Zuweisungen zu benutzen. Und schwupps wird etwas in einer IF-Abfrage verpackt, was nicht unvermeidlich
dort hingehört.
Will man R (Rücksetzen) oder S (Setzen) aus AWL in SCL umsetzen, so hat man aber den Fall, dass man sinnvoll eine IF-Abfrage (nämlich eine ohne den ELSE-Zweig!) programmieren kann (aber nicht muss).
Z.B. lässt sich eine Hysterese so programmieren
IF Temp > 22 THEN Heizung := false
IF Temp < 20 THEN Heizung := true
Wenn Temp also im Bereich 20 ... 22 liegt, soll tatsächlich nichts (neues) passieren, sondern der bisherige Zustand (bewusst) beibehalten werden.
Dies kann natürlich auch in SCL ohne IF und ohne CASE programmiert werden, aber es ist dann für viele (Elektriker ausgenommen, die einen Blick für "SelbstHaltung" haben) nicht so gut lesbar.
Gruss, Heinileini