在PCS7 V4.02/ V5.x中,总线上没有时间发送方,如何实现时间同步?

描述:
以下解决方案不是一个完整的时间同步方案,而是设置时间的方案。因此,这个解决方案不能真正解决时间同步的问题,因为还需要考虑比如报文或者C脚本执行的延迟时间。n

  1. 新建一个数据块(此例中为DB1)。其中每个元素和DB块本身都分配属性"S7_m_c"为"True"。

在PCS7 V4.02/ V5.x中,总线上没有时间发送方,如何实现时间同步?

图 1: 数据块DB1的内容n

为了实现这点,在SIMATIC Manager中选中DB1,选择“Edit > Special Object Properties > Operator Control and Monitoring”。设置"Operator Control and Monitoring",点击"OK"确认。这个数据块将通过OS编译传到上位机上,并且具有不同的日期时间接口。

在PCS7 V4.02/ V5.x中,总线上没有时间发送方,如何实现时间同步?

图 2: 设置"Operator Control and Monitoring"n

  1. 需要一个FC(此例中为FC1),可以将DB中的日期/时间转换为BCD码,将其调整为DATE_AND_TIME的数据类型。程序执行结束,调 用SFC0。由于变量的“Flag”属性,只有当WinCC中调用了C脚本,时间变量才会被设置。FC1中考虑了2000年的问题。同样可以在符号表中给 FC1分配一个符号名。

在PCS7 V4.02/ V5.x中,总线上没有时间发送方,如何实现时间同步?

图 3: 在FC1中声明变量n

以下文件中是一个压缩的STL编写的FC1代码。保存文件TimeSync.exe在本地路径中,并双击解压。n

在PCS7 V4.02/ V5.x中,总线上没有时间发送方,如何实现时间同步? TimeSync.exe ( 16 KB ) n

在STEP 7项目中导入文件TimeSync.AWL。具体做法为,在SIMATIC Manager中选中source,选择"Insert > External source"。为了在STL源中编译不出错,需要将SFC 0 "SET_CLK"添加在数据块文件夹中,和符号表中的以下条目中:

在PCS7 V4.02/ V5.x中,总线上没有时间发送方,如何实现时间同步?

图 4: 符号编辑器中的条目n

    打开STL语句,使用"File > Compile"编译。这样就会创建FC1,并且也能在块文件夹中找到。n

  1. 将FC1集成到CFC中,对应连接DB1(比如连接"DB1.Year")。再编译CFC,下载进CPU,再将变量编译到WinCC中。

在PCS7 V4.02/ V5.x中,总线上没有时间发送方,如何实现时间同步?

图 5: 在CFC中的FC1连接

  1. 最终,在WinCC中创建脚本,可以读取系统时间,并分开写至DB1中的各个元素。示例中,通过一个按钮调用C脚本。然而,也可以通过一个全局脚本来调用(time trigger x)。

在PCS7 V4.02/ V5.x中,总线上没有时间发送方,如何实现时间同步?

图 6: WinCC中的C脚本

注意:
函数SetTagMultiWait可以将若干写任务合并成一个任务(与函数SetTagWordWait类似的函数范围内)。更多关于SetTagMultiWait函数的使用信息可以参考WinCC的在线帮助。

关键词:
时间级别,时间主站,时间从站

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc332367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论