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所示: 
整个同步过程完成! 。