当前位置: 首页 > article >正文

借助PLC-Recorder,西门子PLC S7-200SMART实现2ms周期采集的方法(带时间戳采集)

目录

1、测试条件

2、测试结论

3、PLC的发送程序

4、PLC-Recorder侧的通讯设置

5、PLC-Recorder的通道配置

6、PLC-Recorder的变量配置

7、记录数据的情况

8、再说时间戳

9、小结


高速数据采集要保证速度,也要保证时刻的准确性。在windows系统里,时间稳定性是个很难的问题。如果PLC发送的数据里带有时间信息,则可以由PLC来保证采样周期的稳定性。

从V2.12版本开始,PLC-Recorder软件可以处理发送电文里的时间戳,有网友用0.24ms的速度外发,软件也能够稳定接收并精确确定数据的时刻。

本文向大家展示一下S7-200SMART彪悍的UDP快速通讯的能力,并能实现2ms周期的稳定数据发送。

1、测试条件

下面用S7-200SMART实现带有时间戳的高速数据采集,测试条件如下:

  • 西门子 S7-200SMART  ST20,系统软件为V2.5版(最老的一款PLC,升级了系统软件,才支持UDP通讯),无其他通讯。通讯背景时间10%。PLC IP地址:192.168.0.2
  • 通过主程序循环发送。无通讯以外的其他程序。
  • 通讯协议:UDP(只有该协议,在高速模式下才支持时间戳)。
  • 编程软件和系统:STEP7-Micro/WIN SMART V2.7
  • 微型工控机(Intel® Celeron J1900 2.0GHz四核低功耗处理器) 4核 4G内存,SSD硬盘,无风扇,WIN10系统,无其他大型软件。

2、测试结论

本次测试没有采用定时中断,采用了连续循环,发送结束后,立即再次启动发方式。实测发送周期在1-2ms内波动(平均为1.8ms),PLC的扫描周期也是1-2ms,因此,这种波动是PLC扫描周期导致的。

3、PLC的发送程序

通过读取PLC的启动时间(精确到1ms)来获得时间戳,输出恰好是uint32类型(PLC里是DWORD),约49.7天后自动翻转。

 

 

 

4、PLC-Recorder侧的通讯设置

请用帕姆齐设备类型,目前,仅该类型支持时间戳功能,并选择时间戳单位为ms(PLC-Recorder V2.12.7开始支持该功能)。需要配置来源的IP地址及本机收听的端口号。并将本计算机的IP地址设置成192.168.0.100。

5、PLC-Recorder的通道配置

此处虽然配置了采集周期,但在高速模式下不再使用该周期,以收到信息的时刻为准。

6、PLC-Recorder的变量配置

从最后一个变量的起始地址和变量长度可以确定该通道的通讯电文的长度。对于TCP类型的连接,电文长度需要通过最后变量进行确定(下例子看出电文长度为200字节)。对于UDP类型的通讯,UDP是按照完整报文进行传输的,可以自动获取长度信息,因此,不需要关注最后变量。

变量配置时,不需要定义所有的变量,仅需要定义自己关注的变量即可。

起始地址为0的变量就是PLC里定义的时间戳。

7、记录数据的情况

这是用离线分析软件Ana打开的历史数据文件(连接数个文件,总分析时长:2小时,采集次数391万)。从左侧的统计数据可以看出,平均采集周期是1.8ms。从右侧的波形和标尺可以看出,点距非常均匀。

8、再说时间戳

时间戳是Uint32类型的数据,在200SMART里被称为DWORD,需要从0到4_294_967_295之间递增,并自然翻转(自动归零)。时间戳的单位必须是毫秒,双字毫秒值的最大计时间隔为 2 的 32 次方或 49.7 天。

时间戳是个时间差值,PLC-Recorder在开始记录时,会将首个时间戳与计算机的当前时间进行比较(对时),后续就用相对时间进行计算,并自动处理翻转的问题。因此,PLC不需要保证绝对时钟的准确性,只要相对稳定即可。

9、小结

采集的速度越快,需要的技术越复杂,代价也越大。PLC-Recorder的主动采集模式,基本只需要在PLC-Recorder里配置变量,不需要在PLC做什么复杂工作,这种方式很便捷,但是速度也有限(最快20ms)。高速模式,就需要在PLC里配置通讯,组织数据,然后调用通讯语句,才能够实现,因此,对于PLC工程师的要求也是有一些了。

高速模式采用标准以太网通讯协议,这也是大部分PLC都具备的能力,因此,可以被广泛使用来进行快速数据采集。
 


http://www.kler.cn/a/17711.html

相关文章:

  • 如何判定linux系统CPU的核心架构
  • 软件工程师简历(精选篇)
  • docker配置代理解决不能拉镜像问题
  • 从0开始学习Linux——文件管理
  • python魔术方法的学习
  • uniapp+vue2 设置全局变量和全局方法 (兼容h5/微信小程序)
  • C plus plus ——【继承与派生】
  • TouchGFX开发(2)----触摸屏幕组件点亮LED
  • 【Android入门到项目实战-- 8.5】—— 使用HTTP协议访问网络的实践用法
  • 命令设计模式
  • python基本数据类型---数字字符串
  • 有关教育的几段话
  • 基于zookeeper实现分布式锁
  • 【无人车】无人驾驶地面车辆避障研究(Matlab代码实现)
  • 特征向量中心度(Eigenvector Centrality)
  • Kali 安装中文输入法(超详细)
  • 中级软件设计师备考---软件工程1
  • git上传大大大文件项目好折磨人
  • k8s之审计日志
  • 微机作业题
  • 字节跳动测试岗面试挂在2面,复盘后,我总结了失败原因,决定再战一次...
  • (别再手动点APP了)UiAutomator2自动化测试框架带你玩转APP操作
  • 模拟银行账户转账业务
  • 【软件测试】测试分类
  • 《花雕学AI》28:革命性的 ChatGPT for SEO——让您的排名飙升 50%!
  • 人脸识别--传统+深度方法