
在电气学习的路上,西门子PLC应该是我的启蒙PLC,从早期的S7-300/400PLC搭建Profibus-DP网络开始接触,到后来的S7-200Smart PLC,再到现在的S7-1200/1500 PLC博途软件,基本上西门子的每款PLC都接触并使用过。
在上位机开发的路上,西门子PLC也一直是我钟爱的一个品牌,仍然记得刚开始做的第一个上位机就是基于S7-300 PLC的S7协议。最近又将S7协议巩固了一遍,发现了一些自己之前都不知道的事,这才发现,西门子S7协议是非常强大的一个协议。
1. S7协议之布尔操作
对于布尔操作,很多协议都有,但是这里的布尔操作是指寄存器布尔,比如DB100.DBX0.0,很多时候,我们都是通过先读取DB100.DBB0的值,再通过位运算结果,写入到DB100.DBB0中,实现DB100.DBX0.0的操作,但是这种方式有弊端,第一:每次操作一个布尔值都需要与PLC进行两次数据交互,第二:安全性和稳定性无法保障,你不知道在你读取和写入之间,这个字节的值是否已经发生了改变。
这样的问题也存在于Modbus协议的寄存器位操作,如40001.05,三菱、欧姆龙的寄存器位操作,如D100.06、W12.04,给上位机开发者带来很多苦恼。
但是S7协议支持直接位操作,有专门的报文指令实现这样的功能。
2. S7协议之PDU读取
大部分人都知道S7协议一次性读取有限制,但是具体是多少?怎么计算出来的?
S7协议的一次性读取长度是根据PDU计算出来的,这个PDU的值是来自于PLC本身,不同型号的CPU,它的PDU是不一样的,大家可以通过KepServer结合PLC来测试,如果手头没有PLC,可以关注本公众号的一篇文章《手把手教你搭建西门子PLC仿真环境》。

&n

本文介绍了西门子S7协议中的布尔操作和PDU读取,揭示了S7协议的强大之处。布尔操作支持直接位操作,提高了效率和安全性。PDU读取的字节数受限于PLC的PDU值,可通过建立连接的报文获取。多组读取功能允许同时读取不同存储区,优化零散数据的通信效率。
最低0.47元/天 解锁文章
3011

被折叠的 条评论
为什么被折叠?



