技术论坛

 【PLC通信原理探秘】大讲堂幕后彩蛋之黑暗

返回主题列表
作者 主题
赵欣
官方工程师
西门子官方工程师西门子官方工程师

经验值:5576
发帖数:387
精华帖:52
楼主    2020-02-27 10:34:22
主题:【PLC通信原理探秘】大讲堂幕后彩蛋之黑暗 精华帖 

专家大讲堂《PLC通信原理探秘》系列视频:https://www.ad.siemens.com.cn/service/elearning/series/288.html

 

连载之一: 【PLC通信原理探秘】大讲堂幕后彩蛋之序言

连载之二: 【PLC通信原理探秘】大讲堂幕后彩蛋之初探

连载之三: 【PLC通信原理探秘】大讲堂幕后彩蛋之失败

连载之四: 【PLC通信原理探秘】大讲堂幕后彩蛋之曙光

 

        初步的试验所得出的结论,让我看到一丝曙光,然而就像黎明前总是伴随着黑暗,接一下来的一系列问题让我有些不知所措。

 

        在使用PUT/GET编程的时候,我想每一个工程师都会读一读在线帮助或者程序手册,去了解这两个功能块如何编程,尤其故障代码的含义。而阅读手册的时候,我又顺便了解BSEND/BRECV,以及USEND/URECV,这时候我会纠结这些功能块到底有什么区别?

 

        按照手册,BSEND/BRECV通信要建立连接,而USEND/URECV是无需建立连接的,那么S7到底是什么妖魔鬼怪?一个协议可以随着心意变化,而不是固定的协议交换模式,这是第一个使我百思不得其解的地方。那么手册中所提到的S7协议,不是单一协议吧?也就是说BSEND/BRECV,USEND/URECV以及PUT/GET使用不同的S7协议,虽然它们都叫做S7协议。那么要如何测试呢?作为西门子的私有协议,如何找到答案呢?

 

        S7的PUT/GET Server侧,是不需要编写任何功能块的,而 BSEND/BRECV,以及USEND/URECV双方都是编写功能块的,那么PUT/GET Server侧不编程就可以实现通信是如何做到的呢?又是谁帮助它实现了S7的数据交换呢?

 

        因为300PLC手册中提到此通信发生在CCP,而此时400PLC作为客户端,编写的GET接收数据,是不是发生在时间片?因为手册中已经提到CPU循环周期的AP部分由若干时间片组成,而GET是编写在AP中的,那么400PLC中的GET的通信必然发生在时间片?可以肯定吗?

 

        如果300PLC侧接收数据,那么400PLC侧需要使用PUT指令来发送数据,在Wireshark中所看见的就是400PLC侧发出的S7报文,由300PLC接收,在300PLC内部是何时接收的,在哪里接收到的呢?如何证明300PLC是在CCP接收数据呢?那又如何证明400PLC使用PUT指令进行的通信发生在时间片呢?

 

        上述这些问题都是源于那个通信负荷默认20%的CPU属性这个参数,那么是针对所有该PLC的通信服务吗?根据手册,这个参数至少对于CCP产生的通信应该是无效的,尽管手册中的只言片语,通过上面的试验也可以确定CCP自成一体。那么除了AP,和CCP,CPU的整个循环周期时间就剩下PII和PIQ了。而PII和PIQ是在每一个循环周期开始刷新,用于IO数据刷新,保证数据一致性,那么20%只能作用AP吧?那它能影响哪些通信服务呢?西门子PLC推出了那么多的通信服务,例如TCP/IP,PROFINET IO等等受20%的参数控制吗?如果控制,那又如何作用呢?参数的大小调整会对通信服务产生什么样的影响呢?

 

        反复研读手册,手册会提到通信的地方,必然会提及数据一致性这个概念,那么数据一致性的真正意义是什么?什么时候需要注意呢?又如何注意呢?手册常常提到通信PLC可以保证具有一定的数据一致性长度,例如TCP的一致性是8K,为什么?为什么会有这样的限制?300PLC的S7通信常常会提到240字节的数据一致性,而S7 PDU也是240个字节,它们之间又有什么关联呢?

 

        这些统统都记到我的笔记本里,我时常想着,温习着,每天都在思考如何破解。同时我也向德国技术支持总部发邮件求助,可能由于语言和文化差异,答案往往不尽人意,仅仅是得到了一个看似一个重要的信息,PG与300CPU的数据交换是通过CCP,而与400CPU则是时间片。

 

        一波还未平息,一波又起,似乎知道了这个信息就是徒增烦恼罢了,或者聊胜于无。总之,我如何证明这一切呢?

 

----------未完待续----------

连载之六: 【PLC通信原理探秘】大讲堂幕后彩蛋之破局

连载汇总: 【PLC通信原理探秘】系列连载故事汇总


读万卷书 行万里路
www123456
至圣

经验值:12224
发帖数:2431
精华帖:86
8楼    2020-05-20 07:32:52
精华帖  主题:【故事】回复:【PLC通信原理探秘】大讲堂幕后彩蛋之黑暗
我是这样理解的,通信模型每个层面都有相应的缓冲存储区数据,shadow buffer或外设IO存储区是cpu顶层的缓存数据,stack buffer是网络传输层接口网卡的缓存数据,它们都是所说的通信资源的一部分,数据的通信也就是本方CPU>本方顶层shadow>本方底层网卡stack或io接口芯片stack>对方底层网卡stack/io接口芯片stack>对方shadow顶层>对方CPU的相应层的缓存数据传递过程。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。