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