最近西门子发布了Smart 200的新固件版本V2.5,最大特色是可以支持IO智能设备通讯了。自从上年V2.4版本支持作为PN控制器后,就一直期待IO Device功能了。之前经常有客户问到,西门子PLC之间通讯用什么通讯协议会比较好,通讯速度快,通常我都会推荐S7通讯。因为S7通讯是西门子自家的协议,通讯质量有保证,而且程序方面有专门的集成程序块,也可以做单边通讯,编程简单,大大缩短了编程的时间。但是也有客户反应S7通讯传输速度慢,有延迟,问有没有其他方法。除了S7通讯,应该就是IO Device通讯了,走的是RT实时通讯,但是之前Smart没有这个功能,也只能回复客户只有S7,没其他办法了。
现在V2.5版本出来了,就赶紧找了个PLC试了一下,看到底IO Device通讯和S7通讯对比到底快多少。
(此处省略配置步骤,手册已经很详细了,直接分享一下结果)
————————————————————————————————————
1、 PN控制器端程序
程序中配置了两种通讯方式,分别是PN通讯和S7通讯,传输字节都是2个字节
PN IO映射关系:控制器IB128~IB129、QB128~QB129
智能设备QB128~QB129、IB128~IB129
程序如图1
图1 PN控制
S7存储器映射关系:控制器VB0~VB1、VB2~VB3
智能设备VB0~VB1、VB2~VB3
程序如图2
图2 S7通讯(单边通讯)
2、 PN智能设备端程序
简单做了个逻辑判断,收到信号后置位
图3
3、 结果
结果如图4。从结果可以看出来,采用PN通讯,信号处理所用时间(VD104)为4~7ms,采用S7通讯,信号处理所用时间(VD112)为22~26ms,采用PN通讯,信号处理所用时间快了大概3倍左右
图4 结果
感受:
PN通讯优点:速度快,实时性好
缺点:配置起来比S7通讯相对麻烦,1个PLC只能连接一个控制器
S7通讯优点:可做单边通讯,配置起来比PN方便
缺点:传输速度比PN慢
————————————————————————————————————
20200121更新
PN通讯最大传输字节数为128 Byte,我将PN通讯和S7通讯字节数调高到128个字节再进行测试,测试10组数据,分别如下:
(以下时间为信号处理时间)
PN通讯(ms):5 5 6 4 5 7 9 6 8 5
S7通讯(ms):28 21 52 36 26 64 51 58 62 50
数据量加大后,PN通讯的时间4~9ms,S7通讯时间21~64ms,它们之间的差距更大了,而且S7通讯的时间感觉不稳定,跳动比较大。
————————————————————————————————————
20200122更新
今日测试了一下MODBUS TCP通讯,传输100个字节(因为MODBUS TCP一次最多120字节,所以就不能弄到128个字节了),发现了一个很奇怪的现象。先上测试结果,测试10组数据分别如下:
PN通讯(ms):12 7 11 12 11 12 10 10 10 9
S7通讯(ms):47 23 53 26 30 27 25 54 26 44
MODBUS TCP通讯(ms):17 16 16 17 15 16 18 17 14 14
在之前的基础上,加上MODBUS TCP通讯之后,PN通讯的周期不知道为何变长了,有可能是PLC的通讯负荷变大了,导致时间变长。但是很奇怪的是,MODBUS TCP的通讯周期居然比S7通讯还要短。。。。作为西门子自己的协议,那岂不是S7通讯在通讯速度上没啥优势?为避免偶然性,我重复测试了30多次,依然是这个结果。
想了一下,可能有两种原因:
1、S7的报文结构比MODBUS TCP复杂(这个有待考究)
2、我测试的方式有问题,下面是我测试MODBUS TCP的程序
图5 MODBUS TCP轮询1
图6 MODBUS TCP轮询2
图7 MODBUS TCP轮询3(V1800.0是读取服务器的置位信号)
图8 Server端的程序,收到客户端的数据后置位一个标志位供客户端读取