大家知道,PLC-Recorder有一个高速采集的功能,基于TCP连接或UDP报文,速度取决于发送端的能力。对于西门子PLC,能做到1-2ms的采集速度,但是,我在前面的文章里提到了0.5ms的高速采集,哪个控制器能这么牛叉呢?就是帕姆齐传动设备公司的SOLO系列的多功能微控制器(专门配合西门子传动进行快速控制,带有多种网络接口,巴掌大小,图1所示)。
图1 智能控制器外观
这个控制器用CODESYS进行应用开发,能够方便地进行控制功能的开发和调整。传动控制我不懂,感兴趣的是它通讯能力:速度快,并且周期均匀,能用于咱们软件的高速采集测试(咱们的高速采集,开始就是为该控制器开发的)。
前一段时间,他们那边反映:他们电文发出来了,但是,我们接收有缺失。结合电文捕捉和PLC-Recorder的电文处理机制,分析出原因所在:
计算机系统里的网络不稳定,部分报文集中到达(windows系统里的接收不均匀,红框里看到接收时间间隔为0,当然也可能是其他原因导致的。见图2),多个报文同时送到PLC-Recorder时,软件来不及处理,进行了抛弃,以免影响后续电文处理,曲线上表现为数据点的缺失。
图2 电文集中到达情况
图3 部分点被抛弃
目前,PLC-Recoder已经针对带有时间戳的高速采集进行了优化(很快就会发布),将电文进行缓存,依据电文的时间戳和前面的对时,反算出接收时间,减少电文抛弃的几率。朋友那边测试结果:在报文到达不均匀的情况下,采集非常均匀、稳定。
图4 修正后的效果
在非稳定系统下的高速采集要解决接收、解析、存盘等各环节的抖动,是一门实践性强的活,需要不断优化。另外,这么神奇的控制器,我也讨要了一个,找时间要好好学习一下,也可以促使咱们的采集软件越来越强大。