Klimamensch
Level-1
- Beiträge
- 36
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo,
ich bin leider nicht so versiert im Programmieren und stehe derzeit vor folgendem Problem:
Ich habe mit CoDeSys folgendes Programm geschrieben:
IF EIN1 THEN
y1:= 100;
ELSE EIN1:= FALSE;
END_IF
Dieser Programmblock steht im Ablaufplan an letzter Stelle. DAVOR werden aber Werte für y1 berechnet, die - wenn EIN1 "aus" ist - auch für y1 verwendet werden sollen. Bei mir passiert aber folgendes: Wenn EIN1 "an" geschaltet wird, wird 100 in y1 geschrieben. Das ist auch gut so. Wenn jetzt aber "EIN1" "aus" geht, wird trotzdem nach wie vor 100 in y1 geschrieben und der Wert der zuvor in die Variable geschrieben wurde, wird überschrieben, weil ja mein Programmblock oben im Ablaufplan am Ende steht.
Ich bräuchte folgendes:
Wenn EIN1 "False" dann bitte den kompletten Programmblock ignorieren und NICHTS (auch keine 0) in die Variable schreiben. Einfach ignorieren. Entweder könnte das direkt im Programmblock passieren (ich weiß aber nicht wie) oder aber ich brauche einen weiteren logischen Operator, der wie folgt aufgebaut sein müsste:
Eingang:
EIN1
y1
y1*
Ausgang
y1**
Wenn EIN1 "TRUE", dann y1**=y1.
Wenn EIN1 "False", dann y1**=y1*.
Mir erscheint diese Logik so grundlegend, dass es in CoDeSys einen solchen Block vorgefertigt geben muss. Gibt es dafür aus den "Informatikwissenschaften" einen speziellen Ausdruck?
Es wäre schön, wenn ihr mir für beide Lösungsansätze eine Lösung geben könntet.
Vielen Dank im Voraus
ich bin leider nicht so versiert im Programmieren und stehe derzeit vor folgendem Problem:
Ich habe mit CoDeSys folgendes Programm geschrieben:
IF EIN1 THEN
y1:= 100;
ELSE EIN1:= FALSE;
END_IF
Dieser Programmblock steht im Ablaufplan an letzter Stelle. DAVOR werden aber Werte für y1 berechnet, die - wenn EIN1 "aus" ist - auch für y1 verwendet werden sollen. Bei mir passiert aber folgendes: Wenn EIN1 "an" geschaltet wird, wird 100 in y1 geschrieben. Das ist auch gut so. Wenn jetzt aber "EIN1" "aus" geht, wird trotzdem nach wie vor 100 in y1 geschrieben und der Wert der zuvor in die Variable geschrieben wurde, wird überschrieben, weil ja mein Programmblock oben im Ablaufplan am Ende steht.
Ich bräuchte folgendes:
Wenn EIN1 "False" dann bitte den kompletten Programmblock ignorieren und NICHTS (auch keine 0) in die Variable schreiben. Einfach ignorieren. Entweder könnte das direkt im Programmblock passieren (ich weiß aber nicht wie) oder aber ich brauche einen weiteren logischen Operator, der wie folgt aufgebaut sein müsste:
Eingang:
EIN1
y1
y1*
Ausgang
y1**
Wenn EIN1 "TRUE", dann y1**=y1.
Wenn EIN1 "False", dann y1**=y1*.
Mir erscheint diese Logik so grundlegend, dass es in CoDeSys einen solchen Block vorgefertigt geben muss. Gibt es dafür aus den "Informatikwissenschaften" einen speziellen Ausdruck?
Es wäre schön, wenn ihr mir für beide Lösungsansätze eine Lösung geben könntet.
Vielen Dank im Voraus