S7协议之多组读取
对于很多其他的通信协议,当我们遇到数据变量比较零散,读取多个存储区或者一个存储区多个不同部分的时候,我们只能针对每个存储区或者每块区域做一个数据请求,西门子S7协议可以解决这样的问题。
西门子S7协议有一个非常强大的一个地方,可以读取很多个不同的存储区,*大支持19种,总共读取长度仍然受PDU的限制。
这里我们仍然以实验测试为例,体验多组读取带来的美妙体验。
假设我们的通信组配置如下:
通信组01:读取I区从0开始的1个字节
通信组02:读取Q区从0开始的1个字节
通信组03:读取M区从0开始的200个字节
通信组04:读取M区从500开始的50个字节
通信组05:读取M区从1000开始的60个字节
通信组06:读取DB100从0开始的20个字节
通信组07:读取DB100从20开始的20个字节
通信组08:读取DB100从40开始的20个字节
通信组09:读取DB100从60开始的20个字节
我们采用常用S7-1200PLC,通过配置软件实现配置以上9个通信组,开始通信测试,我们选择的是单组读取的方式,就是针对每个组,依次进行读取,结果如下,耗时大约200ms,这个时间应该相对来说还是比较正常的。
接着,将读取方式改成了多组读取,再进行测试发现结果如下:
通过结果发现,多组读取对于存储区较为零散的项目来说,有着非常重要的作用,可以大大提高通信效率。
通过上面一系列的分享,相信大家对西门子PLC通信有了更加深入的了解,希望大家可以多多实践。
每种通信方式都有自己的优缺点,对各种通信方式和协议了解之后,你才能够在不同的场合选择适合的通信方式,给出*的解决方案。