FUNCTION FC 3 :
VOID TITLE = //Es können bis zu Dinteger nach Real und anders herum gewandelt werden. // //Ret_Val: //0 = alles OK //1 = int oder Dint ist 0 dann ist real 0.0 //2 = Real ist 0.0 dann ist Dint oder int 0 AUTHOR : LP VERSION : 0.1
VAR_INPUT real_Dint : BOOL ; //1=(von real nach Dint)
real_Int : BOOL ; //1=(von real nach int)
Dint_real : BOOL ; //1=(von Dint nach real) int_real : BOOL ; //1=(von Int nach real) zener_potenz : INT ; //Anzahl der Dezimalstellen der Real Zahl ( nur positive Zahlen) END_VAR VAR_OUTPUT Error : BOOL ; END_VAR VAR_IN_OUT Dint_in_out : DINT ; //Integer Ganzzahl 32 bit Int_in_out : INT ; //Integer Ganzzahl 16 bit real_in_out : REAL ; //Realzahl END_VAR VAR_TEMP R_Dezimal : REAL ; zener_potenz_1 : REAL ; //Anzahl der Dezimalstellen der Real Zahl ( nur positive Zahlen) Grunzpotenz : REAL ; END_VAR BEGIN NETWORK TITLE =Alarme verarbeiten NETWORK TITLE =Dezimalstellen in 10`ner Potenzen wandeln L 1.000000e+001; LN ; L #zener_potenz; DTR ; *R ; EXP ; T #R_Dezimal; NETWORK TITLE =Fehlerbehandlung NETWORK TITLE =Real nach Dint U #real_Dint; SPB r_d; NETWORK TITLE =Real nach int U #real_Int; SPB r_i; NETWORK TITLE =Dint nach real U #Dint_real; SPB d_r; NETWORK TITLE =int nach real U #int_real; SPB i_r; NETWORK TITLE =Real nach DInt berechnen r_d: L #real_in_out; L #R_Dezimal; *R ; RND ; T #Dint_in_out; BEA ; NETWORK TITLE =Real nach Int berechnen r_i: L #real_in_out; L #R_Dezimal; *R ; RND ; T #Int_in_out; BEA ; NETWORK TITLE =DInt nach real berechnen d_r: L #Dint_in_out; DTR ; L #R_Dezimal; /R ; T #real_in_out; BEA ; NETWORK TITLE =Int nach real berechnen i_r: L #Int_in_out; DTR ; L #R_Dezimal; /R ; T #real_in_out; BEA ; END_FUNCTION