tt99166 发表于 2024-11-6 20:22:07

【Codesys】实现获取当前时间:天、秒、毫秒(源码)。

获取当前系统时间的各种数值,方便记录当前时间发生时间。
//获取当前时间,天、秒、毫秒
FUNCTION_BLOCK FB_GetTime
VAR_INPUT
END_VAR
VAR_OUTPUT
   GetTimeMs:STRING;
   GetTimeS:STRING;
   GetTimeDay:STRING;
END_VAR
VAR
   stUTC_Timestamp : SysTime;
   stLocal_TimeStamp : SysTime;
   stdNow : SysTimeDate;
   Result : RTS_IEC_RESULT;
   dtNow : DATE_AND_TIME;
   todNow : TIME_OF_DAY;
   datToday: DATE;
   str1,Str2:STRING;

   udiUtcTime             : UDINT;
   udiUtcTimeLocal   : UDINT;
   udiResult             : UDINT;
   DTTime                : DATE_AND_TIME;
   strTime                :STRING;
END_VAR
运行代码
(*-------------精确到毫秒-----------------*)
Result := SysTimeRtcHighResGet(stUTC_Timestamp); // ULINT#1528273494913
Result := SysTimeRtcConvertHighResToLocal(stUTC_Timestamp, stdNow);
Result := SysTimeRtcConvertDateToHighRes(stdNow, stLocal_TimeStamp); // ULINT#1528280694913
dtNow := TO_DT(stLocal_TimeStamp / 1000 (* ms *)); // DT#2018-6-6-10:24:54
todNow := TO_TOD(stLocal_TimeStamp MOD TO_ULINT(T#1D)); // TOD#10:24:54.913
datToday := TO_DATE(dtNow); // D#2018-6-6
str1:= TO_STRING(datToday);
str1:=REPLACE(STR1:=str1,STR2:='',L:=2,P:=1);
GetTimeDay:=str1;
str2:= TO_STRING(todNow);
str2:=REPLACE(STR1:=str2,STR2:='-',L:=4,P:=1);
GetTimeMs:=CONCAT(str1,str2);
(*-------------精确到秒-----------------*)
(* Fetch the UTC time. *)//获取UTC时间
udiUtcTime := SysTimeRtcGet(udiResult);
(* Convert the UTC time to local time. *) //将UTC时间转化为本地时间
udiResult := SysTimeRtcConvertUtcToLocal(udiUtcTime, udiUtcTimeLocal);
(* Convert the seconds from the local time in a Date and Time format.*)
//转换本地时间格式年月日时分秒
DTTime := UDINT_TO_DT(udiUtcTimeLocal);
strTime:=TO_STRING(DTTime);
GetTimeS:=REPLACE(STR1:=strTime,STR2:='',L:=3,P:=1);
页: [1]
查看完整版本: 【Codesys】实现获取当前时间:天、秒、毫秒(源码)。