diff --git a/Times-scripts/FC_GetSetLocalTime.txt b/Times-scripts/FC_GetSetLocalTime.txt new file mode 100644 index 0000000..e7176ac --- /dev/null +++ b/Times-scripts/FC_GetSetLocalTime.txt @@ -0,0 +1,67 @@ +FUNCTION "FC_GetSetLocalTime" : Int +TITLE = 'Read / Write / Set Local Time (DTL)' +VERSION : 1.1 +// ──────────────────────────────────────────────────────────────── +// Purpose: +// - Read current local time (RD_LOC_T) +// - Write new local date/time (WR_LOC_T) +// Call examples: +// Read: xWrite := FALSE; RET_VAL := FC_GetSetLocalTime(xWrite:=FALSE, dtLocal=>CurrentTime); +// Write: xWrite := TRUE; RET_VAL := FC_GetSetLocalTime(xWrite:=TRUE, dtLocal:=NewTime); +// ──────────────────────────────────────────────────────────────── + +VAR_INPUT + xWrite : BOOL; // FALSE = read only TRUE = write new time + dtLocal : DTL; // IN: new local time when xWrite=TRUE + // OUT: current local time when xWrite=FALSE +END_VAR + +VAR_OUTPUT + xDone : BOOL; // TRUE = operation finished (no error) + xError : BOOL; // TRUE = failed + wStatus : WORD; // Detailed status / error code +END_VAR + +VAR_TEMP + ret : Int; +END_VAR + +BEGIN + +xDone := FALSE; +xError := FALSE; +wStatus := 16#0000; +ret := 0; + +IF xWrite THEN + // ─── WRITE new local time ───────────────────────────────────── + WR_LOC_T( + LOCTIME := dtLocal, // Desired local date/time + RET_VAL => ret, + STATUS => wStatus + ); + + IF ret = 0 THEN + xDone := TRUE; + ELSE + xError := TRUE; + END_IF; + +ELSE + // ─── READ current local time ────────────────────────────────── + RD_LOC_T( + RET_VAL => ret, + STATUS => wStatus, + LOCTIME => dtLocal // Current local time returned here + ); + + IF ret = 0 THEN + xDone := TRUE; + ELSE + xError := TRUE; + END_IF; +END_IF; + +"FC_GetSetLocalTime" := ret; // Usually 0 = OK, positive = warning, negative = error + +END_FUNCTION \ No newline at end of file