Im gleichen Programm. Solche Impliziten Konvertierungen trau ich nicht weiter als ich ne Kuh werfen kann.
tBetriebsart ist eine Realzahl
Abgefragt wird aber auf grösser 4, also Integer. Das funktioniert. Aber ich kann mich erinnern dass da nicht zwingend dann der Int nach Real gewandelt wird und nicht die Bitmaske verglichen wird. Ich mag mich da an irgendwelche komischen Sachen erinnern.
Code:
IF #iBrandManuell THEN
#tBetriebsart := 2.0;
ELSIF #iHauptalarm_Rauch_stat THEN
#tBetriebsart := 3.0;
ELSIF #iVoralarm_Rauch_bew THEN
#tBetriebsart := 4.0;
ELSIF #iSpuelprogramm THEN
#tBetriebsart := 6.0;
ELSIF #iWartung_Klappe THEN
#tBetriebsart := 7.0;
ELSIF #iST_Max AND NOT #iGegenverkehr THEN
#tBetriebsart := 8.0;
ELSIF #iGegenverkehr THEN
#tBetriebsart := 10.0;
ELSIF #iTestprogramm THEN
#tBetriebsart := 11.0;
ELSE
#tBetriebsart := 8.0;
END_IF;
IF #tBetriebsart > 4 THEN
IF #iUeberdruck_2_3_B2 THEN
#tBetriebsart := 21;
ELSIF #iUeberdruck_1_3_B3 THEN
#tBetriebsart := 22;
ELSIF #iUeberdruck_2_3_B3 THEN
#tBetriebsart := 23;
END_IF;
END_IF;