Hallo Verona,
darf's auch SCL sein? Alles ohne Gewähr.
Code:
(************************************************************************************************************************)
FUNCTION "DATUM_TO_JAHRESTAG" : INT
TITLE = 'Jahrestag aus Datum'
(************************************************************************************************************************)
KNOW_HOW_PROTECT
VERSION : '1.0'
AUTHOR : Onkel Dagobert ;-)
NAME : DATE
FAMILY : Entenhausen
(************************************************************************************************************************)
VAR_INPUT
TAG, MONAT : INT;
SCHALTJAHR : BOOL;
END_VAR
VAR_TEMP
a : INT;
END_VAR
BEGIN
//______________________________________________________________________________
// Jahrestag aus Datum berechnen
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
a := 2;
IF SCHALTJAHR THEN
a := 1;
END_IF;
DATUM_TO_JAHRESTAG:=REAL_TO_INT(TRUNC(275*MONAT/9)-a*TRUNC((monat+9)/12)+tag-30);
END_FUNCTION;
Code:
(************************************************************************************************************************)
FUNCTION "SCHALTJAHR" : BOOL
TITLE = 'Schaltjahr'
// Funktion getestet
(************************************************************************************************************************)
KNOW_HOW_PROTECT
VERSION : '1.0'
AUTHOR : Onkel Dagobert ;-)
NAME : DATE
FAMILY : Entenhausen
(************************************************************************************************************************)
VAR_INPUT
JAHR : INT; // vierstellige Jahreszahl
END_VAR
BEGIN
SCHALTJAHR := false;
IF (JAHR MOD 400 = 0) OR
(JAHR MOD 4 = 0) AND
(JAHR MOD 100 <> 0)THEN
SCHALTJAHR := true;
END_IF;
END_FUNCTION;
Code:
(************************************************************************************************************************)
FUNCTION "JAHRESZAHL_VIERSTELLIG" : VOID
TITLE = 'Datum mit vierstelliger Jahreszahl aus Systemdatum ermitteln'
(************************************************************************************************************************)
KNOW_HOW_PROTECT
VERSION : '1.0'
AUTHOR : Onkel Dagobert ;-)
NAME : DATE
FAMILY : Entenhausen
(************************************************************************************************************************)
VAR_OUTPUT
TAG, MONAT, JAHR : INT;
END_VAR
VAR
TEMP_DT : DT;
CDT AT TEMP_DT : ARRAY[0..7] OF BYTE;
TEMP_INT : INT;
END_VAR
//______________________________________________________________________________
// Datum mit vierstelliger Jahreszahl aus Systemdatum ermitteln
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
BEGIN
TEMP_INT := READ_CLK(CDT:=TEMP_DT);
TAG := WORD_TO_INT(BYTE_TO_WORD(CDT[2]));
MONAT := WORD_TO_INT(BYTE_TO_WORD(CDT[1]));
TEMP_INT := WORD_TO_INT(BYTE_TO_WORD(CDT[0]));
IF TEMP_INT >= 90
THEN JAHR := TEMP_INT + 1900;
ELSE JAHR := TEMP_INT + 2000;
END_IF;
END_FUNCTION;
Gruss, Onkel
Bookmarks