FUNCTION FC 2 : VOID
TITLE =
VERSION : 0.1
VAR_TEMP
CPU_Time : DATE_AND_TIME ; //Gelesene CPU Uhr
error : INT ;
Ein_Stunde : BYTE ;
Ein_Minute : BYTE ;
Aus_Stunde : BYTE ;
Aus_Minute : BYTE ;
END_VAR
BEGIN
NETWORK
TITLE =
//0 Jahr BYTE Jahr
//1 Monat BYTE Monat
//2 Tag BYTE Tag
//3 Stunde BYTE Stunde
//4 Minute BYTE Minute
//5 Sekunde BYTE Sekunde
//6 MS1 BYTE Die zwei höherwertigen Stellen von ms
//7 MS2_WT BYTE Niederwertigste Stelle von ms | Wochentag =1 So.
//
L B#16#8; // Ein Stunde / 8
T #Ein_Stunde; // in Temp. eintragen
L B#16#30; // Ein Minute / 30
T #Ein_Minute; // in Temp. eintragen
L B#16#21; // Aus Stunde / 21
T #Aus_Stunde; // in Temp. eintragen
L B#16#45; // Aus Minute / 45
T #Aus_Minute; // in Temp. eintragen
CALL SFC 1 (// Lesen des System-Datums und Uhrzeit
RET_VAL := #error,
CDT := #CPU_Time);
L #error; // Fehler beim lesen der Zeit ?
L 0; // Ist der Inhalt von #error ="0"
<>I ; // dann ist alles OK.
BEB ;
L LW 3; // Stunde:Minute
L LW 12; // Ausschaltzeit Stunde:Minute
<I ;
U( ;
TAK ; // Tausche Inhalt von AKKU 1 mit AKKU 2
L LW 10; // Einschaltzeit Stunde:Minute
>=I ;
) ;
SPB set; // =1, Sprung zu "set"
//- rückseten -------------------------------------------------------
SET ; // Merker
R M 100.0; // rücksetzen
SPA nix;
//- Aktiv setzen ----------------------------------------------------
set: SET ;
S M 100.0; // Merker ist =1 von 8:30-22:45 Uhr
nix: NOP 0;
END_FUNCTION