专家大讲堂《PLC通信原理探秘》系列视频:https://www.ad.siemens.com.cn/service/elearning/series/288.html
连载之一: 【PLC通信原理探秘】大讲堂幕后彩蛋之序言
连载之二: 【PLC通信原理探秘】大讲堂幕后彩蛋之初探
连载之三: 【PLC通信原理探秘】大讲堂幕后彩蛋之失败
连载之四: 【PLC通信原理探秘】大讲堂幕后彩蛋之曙光
连载之五: 【PLC通信原理探秘】大讲堂幕后彩蛋之黑暗
连载之六: 【PLC通信原理探秘】大讲堂幕后彩蛋之破局
连载之七: 【PLC通信原理探秘】大讲堂幕后彩蛋之扬帆
连载之八: 【PLC通信原理探秘】大讲堂幕后彩蛋之柳暗
连载之九: 【PLC通信原理探秘】大讲堂幕后彩蛋之花明
理解时间片和CCP的概念是理解西门子PLC通信原理的钥匙,因为有了这个钥匙,才能进入到PLC通信世界,才能领略到PLC通信的精彩!
研究完时间片和CCP概念,也理解了20%参数的作用和意义。喜悦的感觉油然而生,觉得过去辛苦的付出终于有了回报。然而在PLC通信上仅仅才刚刚开始,笔记本上的众多问题知识解决了一部分,还有很多尚未解决。还要不断前行,去探索那些未知的知识。
眼前就有这样的问题,20%参数决定了发生在时间片上的通信,也就是发生在时间片上的通信会受这个参数的影响,那么调整20%的大小,对于通信的影响会是如何呢?
还有前面的试验。PG与S7-300/400设置MW10参数的例子,无论 S7-300还是S7-400,甚至S7-1500,PG写入MW10的数据是先被某数据缓冲区缓存了,然后出现时间片或CCP通信,数据才出现在PLC的循环周期中,那么这个通信缓冲区与手册中提到的work memory,code memory是否存在关联?或者说它在哪?
此外前面也谈到过数据一致性,通信的数据一致性到底是什么?按照什么来设定一致性长度的?为什么 S7-300还是S7-400,甚至S7-1500的S7通信的数据一致性的长度会不同?那么如果S7-300与S7-1500通信双方的数据一致性会不同还是相同?
有了这些问题,我不知道该从哪里研究,似乎每个问题都很大,背后隐藏的知识好像都很多。好像要捋顺的东西也很多,不如去看看现成的成果吧,那就是Wireshark抓到的那些S7报文。
从Wireshark看到的那些S7报文,其格式都是按照如下的S7数据帧的方式进行封装的。要理解这个报文的封装,应该从ISO/OSI参考模型说起。
很幸运,研究Profinet,接触过这个概念,对于Profinet为什么具有实时的快速性,其中关键的一条就是通信堆栈的时间缩短了,也就是从第7层数据层直接落到第二层数据链路层,省略了6,5,4,3层的数据封装,所以通信的实时性尤为快速。所以,Profinet IO帧不会像S7帧那样,没有IP header以及TCP header。
那么看到S7帧,就知道它是典型的IP包,从ISO/OSI的角度,在S7 data位于第7层,在进行下层封装时,会加载S7报文头,然后落到第4层,加载TCP报文头,接着落到第三层,加载IP报文头,以此类推,最后封装成帧,发送到接收方,然后再按照ISO/OSI参考模型解包,直到推送到第7层获取到S7 Data。
在WIreshark中,除了S7 data可以解释外,S7 Header是无法解析的,因为这属于西门子的私有协议,不对外公开,然而这不影响我对它的研究和理解。首先,PLC的S7通信有3种方式,分别是BSEND/BRECV,USEND/URECV,PUT/GET,从手册和3种不同的功能块进行S7通信,说明这是3种不同的S7协议,因为它们的通信行为不同。例如手册中提到 BSEND/BRECV是面向连接的,USEND/URECV是面向非连接的。那么我们就不能把所有的S7协议混为一谈,或者说手册中常提到的S7协议,是有针对性的,或者说S7协议其实是一个协议集。 而对于BSEND/BRECV对于S7-300,S7-400,S7-1500它们的数据一致性长度分别是240B,480B,960B,那么它们仍然属于相同的协议,仅是数据一致性的大小不同而已,就好像TCP/IP通信,有些PLC只能做8K的数据传输,而有些PLC可以64K,但是它们仍然是同一种协议TCP/IP,这其实取决于CPU的性能而已。
基础理论的学习,有利于去了解更深层次的概念和理论,在学习PLC高级通信过程中,这些是必不可少的,要想远航,需要这些装备,这是我能够乘风破浪的基础保障。
----------未完待续----------
连载之十一:【PLC通信原理探秘】大讲堂幕后彩蛋之搁浅
连 载 汇 总 :【PLC通信原理探秘】系列连载故事汇总