FUNCTION FC200 : VOID
TITLE =Extrahiert Datum und Uhrzeit aus den Startinformationen des OB1
VERSION : 0.1
VAR_INPUT
OB1_LD12 : DWORD ; //OB1 Date/Time Teil 1 (4 Bytes)
OB1_LD16 : DWORD ; //OB1 Date/Time Teil 2 (4 Bytes)
END_VAR
VAR_OUTPUT
Jahr : INT ;
Monat : INT ;
Tag : INT ;
Stunde : INT ;
Minute : INT ;
Sekunde : INT ;
Millisekunde : INT ;
Wochentag : INT ; //1=So 2=Mo 3=Di 4=Mi 5=Do 6=Fr 7=Sa
END_VAR
BEGIN
NETWORK
TITLE =
L #OB1_LD12; // lade Teil 1 von OB1 Date/Time
SRD 24; // verschieben
BTI ; // umwandeln BCD --> INT
T #Jahr;
L #OB1_LD12; // lade Teil 1 von OB1 Date/Time
L DW#16#FF0000; // andere bits ausmaskieren
UD ;
SRD 16; // verschieben
BTI ; // umwandeln BCD --> INT
T #Monat;
L #OB1_LD12; // lade Teil 1 von OB1 Date/Time
L DW#16#FF00; // andere bits ausmaskieren
UD ;
SRD 8; // verschieben
BTI ; // umwandeln BCD --> INT
T #Tag;
L #OB1_LD12; // lade Teil 1 von OB1 Date/Time
L DW#16#FF; // andere bits ausmaskieren
UD ;
BTI ; // umwandeln BCD --> INT
T #Stunde;
L #OB1_LD16; // lade Teil 2 von OB1 Date/Time
SRD 24; // verschieben
BTI ; // umwandeln BCD --> INT
T #Minute;
L #OB1_LD16; // lade Teil 2 von OB1 Date/Time
L DW#16#FF0000; // andere bits ausmaskieren
UD ;
SRD 16; // verschieben
BTI ; // umwandeln BCD --> INT
T #Sekunde;
L #OB1_LD16; // lade Teil 2 von OB1 Date/Time
L DW#16#FFF0; // andere bits ausmaskieren
UD ;
SRD 4; // verschieben
BTI ; // umwandeln BCD --> INT
T #Millisekunde;
L #OB1_LD16; // lade Teil 2 von OB1 Date/Time
L DW#16#F; // andere bits ausmaskieren
UD ;
BTI ; // umwandeln BCD --> INT
T #Wochentag;
END_FUNCTION