IF Schleifen Bedingungen

xibbitt

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus,

ich sitze grade an einem Problem, konnte über die Forensuche allerdings nichts finden, da ich mir nicht mal sicher bin, ob es überhaupt möglich ist, die Sache in meinem Sinne zu umgehen und wie ich das Problem am Besten erklären kann.
Ich automatisiere Testabläufe und dort kommt es immer wieder vor, dass es erst in den nächsten Schritt gehen kann, wenn Temperatur oder Drucksensoren ALLE über einem bestimmten Wert liegen.
Da es eine enorme Schreibarbeit ist, dies alles immer wieder aufzurufen, wollte ich mal fragen, ob es nicht einen sehr simplen weg gibt, dies zu realisieren.
Bsp:
ich habe 7 Temperatursensoren mit ellenlangen Namen, die alle >= 85 Grad sein müssen,
meine IF Zeile sieht dann ungefähr so aus:
IF T1 > 85 AND T2 >85 AND T3 >85 .... THEN

Meine Frage wäre jetzt, ob es eine Möglichkeit gibt, diese irgendwie zusammenzufassen, da es ja überall die selbe Bedingung ist, bspw.:
IF (T1,T2,T3..) > 85 THEN (so frisst die Wago das nicht, das ist mir klar, es soll nur das Problem verdeutlichen).

Hat jemand eine Idee?
Vielen Dank für eure Hilfe und eine schöne Vorweihnachtszeit an Alle :)
 
Hi,
nimm eine CASE Anweisung und eine Aktion in der Deine Prüfung ist. Also in etwa so:

Code:
CASE iState OF
    
    1:    // Do something
        NextStep();
    2:    // Do something
        NextStep();
    
    3:    // Do something
        NextStep();
    
ELSE
    // ...
END_CASE

und in Deiner Aktion die Prüfung:

Code:
IF T1 > 85 AND T2 >85 AND T3 >85 .... THEN
    iState := iState + 1;
END_IF
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey mach es doch mit eine FOR-Anweisung.
Code:
VAR
Temp:       ARRAY[0..7] OF DINT;
TempOK:    BOOL := FALSE;
AllTemp:     BOOL := FALSE;
i:               INT := 0;
END_VAR


TempOK := FALSE;

FOR i := 0 TO 7 BY 1 DO
     IF Temp[i] < 85 THEN
          TempOK := TRUE;
     END_IF;
END_FOR;

IF TempOK = FALSE THEN
     AllTemp := TRUE;
ELSE
     AllTemp := FALSE;
END_IF;
 
Zurück
Oben