故事作者:赵欣

最近创作

看看TA的故事

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

已锁定

赵欣

官方工程师

  • 帖子

    391
  • 精华

    54
  • 被关注

    186

论坛等级:奇侠

注册时间:2006-07-07

黄金 黄金 如何晋级?

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

6304

4

2020-04-14 13:10:13

star star star

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

 

最新更新:

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

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

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

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

连载之十七: 【PLC通信原理探秘】大讲堂幕后彩蛋之砥砺


     除了研究这些PLC通信原理和概念,日常工作还要支持Profinet,交换机等网络产品的技术支持,为了能够给我们的客户提供更加专业的指导和故障排查,理解和掌握协议也就成了我日常工作必不可少的一部分,而TCP/IP就是这必不可少一部分的重中之重,因为它太普遍了,太优秀了!


     做网络通信,TCP/IP是永远躲不过去的,不是在这里出现就在那里出现,所以一定要掌握它,理解它,因为像这样古老而至今还在普遍应用的协议几乎没有几个。于是我也要学习它,掌握它,开始的时候从网络上找到了关于TCP/IP的宝典手册,很详细,然而对于我这种初学的菜鸟,那里有太多的概念,甚至还有算法铺天盖地,我也是阵阵心惊,无从下手。只能硬着头皮去晦涩的理解和生搬硬套,还好时间可以弥补这一切。我也是在掌握CCP和时间片通信的那些概念的几年后再回过头来再温习TCP/IP通信,自然会有顿悟和一定程度的理解,这一点还是让我有些欣慰的。


     TCP/IP的整个协议细节确实有很多难以理解的地方,然而它在PLC中的应用,整个协议的工作没有变化,依然是建立连接,即三次握手,然后交换数据,在此过程中探测对方是否存在,最后可以断开连接。对于我来说在应用PLC TCP/IP通信的过程中,难点是在编程的功能块的参数理解,通信模块中相关TCP/IP参数的理解,以及通信堆栈对于数据处理的理解,这些细节的理解直接决定了如何更好地在实际应用中更好地使用TCP/IP通信。


     首先,还是先通过编写TCP/IP的通信程序,来看看数据的交换是如何的。还是使用集成PN接口S7-300和S7-400作为测试模块,在300CPU一侧编写TCON,TSEND,TDISCON,在400CPU侧编写TCON,TRECV,TDISCON。TCON和TDISCON功能块就是用来建立和断开TCP连接用的。说白了,两个功能块触发建立和断开连接就是在做协议的操作,这与通过VB或其它语言做TCP通信的道理是一样的。


     在发送侧,先尝试发送1000B的字节数据,接收端的长度设置为1000B,那么通信的数据是正常的,也就是发送什么数据就能接收到什么数据。然后再次尝试发送500B数据,接收端的长度保持不变,发现需要手动触发两次使能发送对方才能接收到数据,也就是说不能先收到500B,即接收侧DB块中的数值没有变化,第二次再次发送的时候,接收侧才能收到这1000B。那么这里就有了第一个疑问,为什么会是这样?为什么不能先收到500B,然后再收第二个500B?然后又做了一个测试,发送侧发送2000B,接收侧设置接收长度为1000B,一次触发发送后,接收侧会先收到1000B,然后收到第二个1000B,直接覆盖掉前一个1000B。


     这三种情况,都通过Wireshark做了记录,特别是第三种情况,通过报文可以看到数据在网线上的传输是按照两个报文进行的,其中有效数据的两部分分别为1460B和540B,这是因为以太网报文的最大长度是1518B,其中Data部分为1500B,除去IP和TCP的报文头的长度各自20B,那么用户数据最大是1460B。所以2000B的数据在传输过程中会在两个报文中进行传输,即1460B和540B。


                  

 

     对于第二种情况,触发第一次发送500B,网线上会看到这500B的报文,但在DB块中并没有出现,直到第二次发送500B,出现第二个500B的报文,最后DB块才会收到数据,这说明数据会在接收侧的CPU缓存,那么这里必然存在一个缓冲区,结合第一种情况发送1000B,接收1000B,以及第三种情况,发送2000B,接收1000B,显示了一个信号,就是当一个接收侧的数据区满了,接收方才从该缓存区中取出数据送至接收DB中。这里还有另一个信号,就是接收侧的缓冲区的大小,与设置接收的长度的大小一致,于是我给它起了一个名字叫Shadow Buffer,影子缓冲区,手册中并没有该概念的描述,这里的名字便于日后的其它研究中便于记忆和理解。


     这时,我又突然想到当PG给300PLC和400PLC赋值时,无论是通过时间片还是CCP,提到了数据在哪里做了存放,这两者是否有关联呢?是不是同样的概念?历经磨砺之后,总是要往前走的,再往前必然是花团锦簇,春意盎然的美景。

 

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

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

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


【PLC通信原理探秘】大讲堂幕后彩蛋之前行 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

西家技术派

共有64条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

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