(*Range des Analogeinganges berechnen *)
AnalValRange := iAnalValUpperLimit - iAnalValLowerLimit ; (*z.B. Range = 32761 - 0 = 32761*)
(* Range der möglichen Temperatur berechnen *)
TempRange := rTempUpperLimit - rTempLowerLimit; (* z.B. Range= 35,4 - 25,0 = 10,4 *)
(* Multiplikationsfaktor aus Analogeingangswert berechnen *)
MulFactor := INT_TO_REAL(iAnalVal) / INT_TO_REAL(AnalValRange); (* Ergebnis z.B. 0,6845 *)
(* Additionswert für Temperaturbestimmung ausrechnen *)
AddVal := TempRange * MulFactor; (* Ergenis z.B. 6,845*)
(* Addieren des Additionswertes zum unteren Temperaturlimit mit Unterscheidung nach verschiedenen Temperatureinheiten
--> Das Ergebnis wird in °C ausgegeben! *)
IF bSensor_0C_1K_2R_3Re_4F = 0 THEN (*0=Celsius*)
ActualTemp := (rTempLowerLimit +AddVal);
ELSIF bSensor_0C_1K_2R_3Re_4F = 1 THEN (*1=Kelvin*)
ActualTemp := (rTempLowerLimit +AddVal)-273.15;
ELSIF bSensor_0C_1K_2R_3Re_4F = 2 THEN (*2=Rankine*)
ActualTemp := ((rTempLowerLimit +AddVal) - 491.67)/1.8;
ELSIF bSensor_0C_1K_2R_3Re_4F = 3 THEN (*3=Réaumur*)
ActualTemp := (rTempLowerLimit +AddVal)/0.8;
ELSIF bSensor_0C_1K_2R_3Re_4F = 4 THEN (*4=Fahrenheit*)
ActualTemp := ((rTempLowerLimit +AddVal) -32)/0.8;
END_IF;
(* Multiplizieren mit AnzeigeFaktor und Runden der Zahl durch Umwandlung in Integer mit Umrechnung in verschiedene Temperatureinheiten*)
IF bDisplay_0C_1K_2R_3Re_4F = 0 THEN
iActualVal := REAL_TO_INT(ActualTemp * rAnzeigefaktor);
ELSIF bDisplay_0C_1K_2R_3Re_4F = 1 THEN (*1=Kelvin*)
iActualVal := REAL_TO_INT((ActualTemp +273.15) * rAnzeigefaktor);
ELSIF bDisplay_0C_1K_2R_3Re_4F = 2 THEN (*2=Rankine*)
iActualVal := REAL_TO_INT(((ActualTemp +273.15)*1.8)* rAnzeigefaktor);
ELSIF bDisplay_0C_1K_2R_3Re_4F = 3 THEN (*3=Réaumur*)
iActualVal := REAL_TO_INT((ActualTemp *0.8)* rAnzeigefaktor);
ELSIF bDisplay_0C_1K_2R_3Re_4F = 4 THEN (*4=Fahrenheit*)
iActualVal := REAL_TO_INT(((ActualTemp *1.8)+32)* rAnzeigefaktor);
END_IF;
(* Ergebnis z.B. 31,845 * 100,0 = 3185 *)
(* ENDE *)