故事作者:赵欣

最近创作

看看TA的故事

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

已锁定

赵欣

官方工程师

  • 帖子

    387
  • 精华

    52
  • 被关注

    149

论坛等级:奇侠

注册时间:2006-07-07

黄金 黄金 如何晋级?

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

7620

10

2020-02-25 11:51:38

star star star

 本文作者:赵欣 西门子数字化集团 客户支持部 高级专家 

 

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

 

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

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

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

 

        我们来思考一下,想象当时我的思考过程。首先300PLC手册中提到S7 PUT/GET server交换数据发生在CCP,而300PLC并没有程序,那么CCP这个部分就承担数据交换的功能。既然CCP做了这个功能,而CCP是每个PLC循环周期必须处理的部分,那么数据的接收和发送是周期性的,周期时间就是300CPU的循环周期。而400PLC中的PUT发送是按照400CPU的循环周期进行的,那么这样一来是不是PUT就在时间片中进行的呢?先不考虑时间片,那么这个400PLC中的PUT在这里测试的意义就不大,只需要400PLC中保留GET即可,这时查看数据是否按照300CPU的循环周期进行发送到400CPU。

 

        既然按照这个思路,那么就需要设置CPU的循环周期尽量的大一些,因为这样在Wireshark中的抓包可以按照时间排序辨认清晰,能够判断是否数据的发送是按照周期进行的。于是我需要思考如何可以把CPU的周期尽可能的延长。

 

        通过查找手册,WAIT指令就可以实现这个功能,延长CPU的循环周期。然而WAIT的延时时间单位是微秒,而我需要肉眼可见的时间延时,那么就需要使用LOOP指令,循环多次调用WAIT即可。编写的程序如下:

 

A M100.0

JCN jmp

L MW0

Next: T MW2

CALL “WAIT”

WT:=10000

L MW2

LOOP next

jmp: NOP 0

 

        简单解释一下这个程序,这段程序放到OB1即可。M100.0的作用就是是否我们要调用这个延时程序,如果M100.0为1,则启用延时程序。WAIT延时的单位时间设置了10ms,如果设置MW0为100,那么最终实现的延时时间就是100x10ms=1000ms,即1秒。这里需要注意的是CPU属性页中的扫描循环监控时间需要设置超过1秒,这里设置最大值,即6秒。这样避免在启动延时程序后,CPU发生停机现象。顺便说一下,大家在专家大讲堂里面看的程序也是这个,这个程序可以作为一个模板,放到程序的任何一个地方去做测试,这段程序的用途非常广泛,除了测试PLC高级通信,也可以用于测试其它地方。例如,用于测试Profinet RTA的报警响应。这段延时程序非常非常非常有用,因为让时间慢下来,你会看到通信的具体动作。

 

        试验的结果最终验证了这些假设,在Wireshark中可以看见每隔1s钟,会出现一个S7的数据报文,在DB块的数据中,修改DBB0,DBB10,例如AA,BB,可以在报文中看见这些数据变化,更加证明了这些数据就是300PLC发送给400PLC的S7数据。

 

        这一下子,就放佛黎明破晓,让你在黑暗中瞥见一丝光明,感到欣慰!此时至少可以得出结论300PLC的S7的PUT/GET Server的数据发送是通过CCP进行的,这个结论让我为之振奋,至少开启了一扇窗,让我窥探到这个神秘世界朦胧的轮廓,让我知道基于此,我该走向何方。


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

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

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


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

请填写推广理由:

本版热门话题

西家技术派

共有64条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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