codesys 获取系统时间
- 添加获取时间库 添加库输入caa dtutil搜索库,选中双击添加
2.定义功能块,读取时间
PROGRAM PLC_PRG
VAR
//定义读取当前时间功能块
ReadCurrentTime:dtu.GetDateAndTime;
//系统当前时间,注意此时的时间为世界时间并非本地时间
dtTime:DT;
//更新时间变化
RTC_BLOCK:RTC;
dtTime2:DT;
END_VAR
ReadCurrentTime(
xExecute:= TRUE,
xDone=> ,
xBusy=> ,
xError=> ,
eError=> ,
dtDateAndTime=>dtTime ,
ePeriode=> );
RTC_BLOCK(EN:= ReadCurrentTime.xDone, PDT:= dtTime, Q=> , CDT=> dtTime2);
3.运行 Codesys SoftMotion Win 下载运行,效果如下:
4.注意此时读到的时间为世界时间需要转换为北京时间
PROGRAM PLC_PRG
VAR
//定义读取当前时间功能块
ReadCurrentTime:dtu.GetDateAndTime;
//系统当前时间,注意此时的时间为世界时间并非本地时间
dtTime:DT;
//更新时间变化
RTC_BLOCK:RTC;
dtTime2:DT;
//时间总秒数
w_TotalSeconds :LINT;
//本地时间总秒数
l_TotalSeconds:LINT;
sysCurrentTime:DT;
END_VAR
ReadCurrentTime(
xExecute:= TRUE,
xDone=> ,
xBusy=> ,
xError=> ,
eError=> ,
dtDateAndTime=>dtTime ,
ePeriode=> );
RTC_BLOCK(EN:= ReadCurrentTime.xDone, PDT:= dtTime, Q=> , CDT=> dtTime2);
//获取时间时间总秒数
w_TotalSeconds:=DT_TO_LINT(dtTime2);
//应为北京时间和世界时间相差8小时
l_TotalSeconds:=w_TotalSeconds + 8 * 60 * 60;
//转换成时间格式
sysCurrentTime:=LINT_TO_DT(l_TotalSeconds);
5.从新下载运行即可得到本地时间
源码下载