SoMachine平台下STU与M218的时钟同步
- 格式:pdf
- 大小:184.12 KB
- 文档页数:5
SoMachine平台下STU与M218的时钟同步
SoMachine软件中没有提供系统字供用户使用,那么HMI和PLC时钟同步问题就比较麻烦,不像Twido中提供现成的系统字,用户仅需要在VijeoDesigner的对话表中简单对应系统字即可。
现将M218和STU的时钟同步应用实例写成文档以供大家在遇到相关问题时参考使用。
本例是用于STU同步M218的时钟,分成几个部分:
1.读取M218的系统时间
a) 将M218的时间与当地的时间/日期同步;
双击”MyController”,弹出如下对话框,如图1:
图1
上图中选择”服务”选项页,选择”与当地的日期/时间同步”按钮,那么M218的系统时间会自动被更新到当地的日期和时间.
注意: 对于M218而言,RTC时钟靠外部电池来保持的,因此必须安装外部电池!
b) 添加SysTime时钟库
SoMachine缺省库中是不包含SysTime库,那么用户需要手动添加
SysTime库。
打开”库管理器”,选择”添加库”,弹出如下对话框,见下图2.
图2
上图2中,选择”System库”,打开选择”SysLibs”,如下图3所示:
图3
选择”SysTime库”,加入到现有程序中即可.
c) SysTimeRtcGet功能块的调用
在完成”Systime”库的添加后,那么需要在程序中调用系统时钟读取功能块用于 读取实时的系统时间和日期,这里描述下该功能块:
输入管脚 描述
pResult 当前的运行状态:
1)值为0时,表示无错误;
2) 值为1时, 表示内部错误,返回的时间值无效;
输出管脚 描述
SysTimeRtcGet 读取的当前时间值,该值为UTC时间戳类型,初始化
值为1970 00:00:00
UTC:Universal Time Coordinated,协调世界时,表示世界时间坐标。
2.转换UTC时间戳为系统时间格式
a) SysTimeRtcConvertUtcToDate功能块的调用
SysTimeRtcGet功能块读取的UTC时间对客户而言,无法与STU的地址对应起来,必须将UTC时间转换成容易解析的日期和时间,那么就需要调用功能块 SysTimeRtcConvertUtcToDate。
具体的描述如下:
输入管脚 描述
dwTimestampUtUTC时间戳,数据来自SysTimeRtcGet功能块
c
pDate 转换得到的系统时间和日期,该变量是输入输出类型变
量
输出管脚 描述
SysTimeRtcConvertUtcToDate 当前的运行状态:
1)值为0时,表示无错误;
2) 值为2时, 表示内部错误,返回的时间值无效;
b) 解析系统时间和日期
SysTimeRtcConvertUtcToDate功能块得到的时间数据可以进一步的解析,可以拆分年,月,日,小时,分钟,秒等。
如下图4功能块:
c) STU的时钟结构
对话表格中的PLC时钟格式如下表:
15 8 7 0
字1 秒 星期几
字2 小时 分钟
字3 月 天
字4 年(前两位) 年(后两位)
STU读取PLC时钟时,需要占用4个字的连续地址区,并且时间的排布方式必须按照上表的方式,否则,时间无法同步。
从结构上看,前三个字很容易处
理,仅需要将wYear,WMonth等数据一一赋值给组成STU的时钟格式组合即
可。
困难的是,年的数据组合,请按照如下方式处理,例程如下:
程序中,先将变量”SysTime_GetDateTime.wYear”(年)转换成字符串,然后调
用字符串提取指令提取字符,将年的前2个字符和后2个字符分别放到同一个
字的不同的字节中,如上例中的%MB6和%MB7。
本例中假设时钟的首地址从
%MW0开始。
注意; 字的高低字节顺序不要搞错!
d) 配置STU时钟对话表
点击I/O设备管理器中从站设备,如下图4:
图4
选择上图4中的”对话表格”,弹出如下对话框,如图5;
图5
上图中,起始地址写入%MW0,表项中选择设置终端时钟即可.对话表配置完毕。
e) 画面中添加日期和时钟控件
画面中添加日期和时间控件用于显示系统时钟,如下图6所示:
整个同步过程完成! 。