FUNCTION FC 201 : VOID
TITLE =INT_to_S5 Time
//Einheit = 1->ms
//Einheit = 2->sek
//Einheit = 3->min
AUTHOR : Ne
FAMILY : WinCC
NAME : Int_S5T
VERSION : 0.1
VAR_INPUT
Einheit : BYTE ; //1=ms 2=s 3=min
END_VAR
VAR_OUTPUT
S5_Time : S5TIME ;
END_VAR
VAR_IN_OUT
IN : INT ;
END_VAR
BEGIN
NETWORK
TITLE =In- Wert muß im positiven Bereich liegen
//ist dies nicht der Fall, wandle in Pos. Zahl
L #IN;
L 0;
<I ;
SPBN noer;
TAK ;
NEGI ;
T #IN;
BEA ;
NETWORK
TITLE =Umrechnung wählen
//Soll der Integerwert Millisekunden, Sekunden oder Minuten entsprechen?
noer: L #Einheit;
L B#16#1;
==I ;
SPB ms; //springe zur Wandlung in ms
TAK ;
L B#16#2;
==I ;
SPB sek; //springe zur Wandlung in Sekunden
TAK ;
L B#16#3;
==I ;
SPB min; //springe zur Wandlung in Minuten
SPA sek; //bei allen anderen Eingaben in Sekunden wandeln
NETWORK
TITLE =IN- Wert in Millisekunden
ms: L #IN;
L 9990;
>I ;
SPB ms1;
TAK ;
L 10;
/I ;
ITB ;
T #S5_Time; //Zeitbasis 10 ms
BEA ;
ms1: L #IN;
L 100;
/I ;
ITB ;
OW W#16#1000; //Zeitbasis 100ms
T #S5_Time;
BEA ;
NETWORK
TITLE =In- Wert in Sekunden
sek: L #IN;
L 999;
>I ;
SPB sek1;
TAK ;
ITB ;
OW W#16#2000;
T #S5_Time; //Zeitbasis 1s
BEA ;
sek1: L #IN;
L 9990;
>I ;
SPB err1;
TAK ;
L 10;
/I ;
ITB ;
OW W#16#3000;
T #S5_Time; //Zeitbasis 10s
BEA ;
NETWORK
TITLE =In- Wert in Minuten
min: L #IN;
L 166;
>I ;
SPB err2;
TAK ;
L 6;
*I ;
ITB ;
OW W#16#3000;
T #S5_Time; //Zeitbasis 10s
BEA ;
NETWORK
TITLE =Eingabewerte zu groß
err1: L 9990; //größtmöglicher Eingabewert
T #IN; //für S5_Time in sek
BEA ;
err2: L 166; //größtmöglicher Eingabewert
T #IN; //für S5_Time in min
END_FUNCTION