技术论坛

 拨云见日S7 PUT/GET 通讯数据长度

返回主题列表
作者 主题

总坛主
西门子官方工程师西门子官方工程师

经验值:15483
发帖数:1551
精华帖:115
楼主    2021-01-26 09:01:32
主题:拨云见日S7 PUT/GET 通讯数据长度 精华帖 

     用过西门子PLC 做过通讯的各位,想必对西门子PLC之间的S7 单边通讯PUT/GET并不陌生,但是PUT/GET 通讯的数据长度到底能有多大呢?嗯,看看帮助,下面是帮助中关于PGT/GET 数据长度的图表.. 小编弱弱问一句,懂了没?有没有一种雾里看花水中望月的感觉?我估计就这个表,你去问10个人,得到的答案绝对不一样。有时候真想吐槽,德国的钢铁直男们写出来的帮助,真是不解风情,难懂!


     今天,趁着疫情居家有空,小编拿出自己压箱底儿的硬货,彻底给大家拨云见日!

     要真正理解PGT/GET 数据长度,首先要搞明白一个概念“PDU”:协议数据单元。如下图,以太网数据帧的长度就那么多,掐头去尾能放数据的就叫PDU,每个通讯层级都有自己可用的PDU长度,随着通讯层级上升可用PDU长度就会减小,S7 通讯是七层应用层协议,到了S7 这一层的PDU 能用的长度和PLC 的类型是有关系的。


     如下表,不同的CPU,S7 的PDU长度不同。而实际通讯协商过程中,通讯双方最终协商出的PDU 一定是以最小的一方为准。这样,知道了本地CPU 和远程CPU的类型就可以知道最终通讯使用的PDU 长度。

     S7通讯的PDU中除了数据外,还会包含协议层的信息,因此实际数据长度会小于PDU。理解了PDU的概念,再回到帮助中PUT/GET 数据长度就容易搞明白了。 “Data block size”就是表示本地可能的CPU和协商出来的通讯PDU,“240 (S7-300)”表示本地CPU S7-300,协商后的PDU 是240字节,比较特殊的是S7-300 CP模块,无论通讯对象和角色,虽然PDU 是240字节,但是PUT/GET 长度最大160字节。

     例如“240 (S7-400)”,本地使用S7-400 CPU,能够协商出240字节的PDU,通讯对象只可能是S7-300/S7-1200,而数据长度也和PUT/GET 定义的数据区“SD_i”、“RD_i”、 “ADDR_i”有关系,每增加一个数据区,总的数据长度就会有所减少。同理,这个长度也适用于本地S7-1500。

再例如“480 (S7-400)”,本地使用S7-400 CPU,能够协商出480的PDU,通讯对象只可能是S7-400/S7-1500,而数据长度也和PUT/GET 定义的数据区“SD_i”、“RD_i”、 “ADDR_i”有关系,每增加一个数据区,总的数据长度就会有所减少。

     小编通过给PUT/GET 在线帮助加了一些注释,结合上面说的概念,想必这下终于能一目了然了!



您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。