IF-Anwesiung mit Überprüfung mehrerer Bedingungen?

e-pappy
2006-02-20
2006-02-28
  • e-pappy - 2006-02-20

    Hallo!

    Ich programmiere normalerweise im CFC, aber nun wollte ich auf die schnelle eine Überprüfung im Strukturierten Text schreiben.

    Dabei soll folgendes überprüft werden:

    Wenn temp < 180 und sig1 <> 0 und sig2 <> 100 dann var1 = 'A'

    Allerdings habe ich jetzt das Problem, dass wenn temp unter 180 ist, das 'A' bereits in die Variable var1 geschrieben wird. Die Schleife prüft also nicht, ob sig1 und sig2 ebenfalls gültig sind!

    Ich hoffe, ihr versteht was ich meine. Es sollen alle Bedingungen geprüft werden, bevor die THEN-Anweisung ausgeführt wird!

     
  • Anonymous - 2006-02-20

    Originally created by: Gast

    moin moin e-pappy,

    wenn ich dich richtig verstanden habe müsste dein programm wie folgt aussehen:

    IF temp < 180 AND sig1 <> 0 AND sig2 <> 100 THEN

    var1 := 'A';

    else

    var1 := 'B';

    END_IF

    viel glück

    franklin

     
  • e-pappy - 2006-02-20

    Aber passiert folgendes:

    Die Bedingungen werden der Reihe nach überprüft! Wenn demnach also temp < 180 ist, wird der Rest gar nicht mehr erst überprüft, sondern var1 wird 'A'

    Die Anweisung überprüft also nicht die kompletten Bedingungen. var1 darf aber nur 'A' werden, wenn alle Bedingungen zutreffen. Und genau das funktioniert nicht!

    Sobald eine der Bedingungen zutrifft wird die THEN-Anweisung durchgeführt und das soll eben nicht sein!

     
  • Codewarrior - 2006-02-20

    Hallo e-pappy,

    ich habe mir den Thread mehrmals durchgelesen, weil ich nicht verstehe wo Dein Problem ist. !?

    Die Lösung von Franklin funzt doch einwandfrei !!

    Wie kommst du darauf, das var1 "A" zugewiesen wird, wenn die temp < 180 ist ? Die THEN anweisung wird nur ausgeführt wenn alle Bedingungen TRUE ergeben da sie ja mit AND verknüft sind. Wenn nur eine Bedingung FALSE ist, wird die ELSE Anweisung ausgeführt.

    Gruß Codewarrior

     
  • Anonymous - 2006-02-28

    Originally created by: -AB-

    Die Lösung von Franklin funktioniert.

    Sollte sie es bei widererwachten nicht funktionieren, dann setz einfach mal eine Klammer um die ganze Bedingung.

    IF (temp < 180 AND sig1 <> 0 AND sig2 <> 100) THEN

    var1 := 'A';
    

    ELSE

    var1 := 'B';
    

    END_IF

     

Log in to post a comment.