本文介绍使用TwinCAT2软件内部的指令来修改、获取系统时间。
1.添加TcUtilities.lib库文件。
在Resources——Library Manager中添加TcUtilities.lib库文件。如下图所示:
2. 添加完成之后,就可以看到 NT_GetTime读取系统时间和NT_SetLocalTime设置系统时间两个FB。
3.在主程序中声明函数:
GetTime:NT_GetTime;
SetLocalTime:NT_SetLocalTime;
LocalTime:TIMESTRUCT;
startSetLocalTime:BOOL;
SystemTime:TIMESTRUCT;
startGetTime:BOOL;
SystemTimeString:STRING;(*系统时间转换成字符串格式*)
4.编程如下:
SetLocalTime(
NETID:= ,
TIMESTR:=LocalTime ,
START:=startSetLocalTime ,
TMOUT:=T#3S ,
BUSY=> ,
ERR=> ,
ERRID=> );
GetTime(
NETID:= ,
START:=startGetTime ,
TMOUT:=T#3S ,
BUSY=> ,
ERR=> ,
ERRID=> ,
TIMESTR=>SystemTime );
SystemTimeString:=SYSTEMTIME_TO_STRING(SystemTime);
4.各参数的定义如下:
- NETID:输入数据,字符串类型,表示控制器的AmsNetID。如果是在本地运行,该参数可为空;
- START:输入数据,布尔类型,上升沿信号启动函数执行;
- TMOUT:输入数据,TIME类型,读取超时的时间设置值;
- BUSY:输出数据,布尔类型,1=正在读取;
- ERR:输出数据,布尔类型,1=读取时间发生错误。0=无错误;
- TIMESTR:输出数据,时间结构体(TIMESTRUCT),存放读取到的时间信息;
注意:wDayOfWeek:周几,取值范围: 0 ~ 6 (周日 = 0,周一 = 1以此类推);
5.编译下载程序,如下图所示:
6.系统时间处理,为了便于查看可以将系统时间转换成字符串类型。
SystemTimeString:=SYSTEMTIME_TO_STRING(SystemTime);
格式:YYYY-MM-DD-hh: mm: ss。YYYY:年MM:月DD:日hh:小时MM:分钟ss:秒xxx:毫秒。