故事作者:赵欣

最近创作

看看TA的故事

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

已锁定

赵欣

官方工程师

  • 帖子

    387
  • 精华

    52
  • 被关注

    149

论坛等级:奇侠

注册时间:2006-07-07

黄金 黄金 如何晋级?

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

6286

4

2020-03-03 10:57:00

star star star

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

 

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

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

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

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

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

 

        2007年的那个夏季,北京的天气随着强烈的阳光,总是让人觉得有些烦躁。而多日思考的那些问题,依旧没有任何进展,让我更加沮丧。如何能找到一个适当的切入点?心里一片乱麻!

 

        借助外部的工具,例如,交换机和Wireshark已经没有办法证明什么,因为你只能看到网线上的数据,而不知CPU内部是如何处理这些通信数据的。即使翻遍手册,感觉仍无计可施。

 

        于是我还像以往那样,再次重复一遍问题。又思考了一番,s7-300作为PUT/GET服务器,400PLC的GET进行数据接收,此时对于300PLC来说是通过CCP的,因为数据的发送是按照CPU的周期进行的,且AP没有任何相关的S7通信程序。这一切都说明此时300PLC的数据发送发生在CCP。

 

        那么PUT呢?也就是300PLC从400PLC中接收数据呢?如何证明发生在CCP呢?如果数据进入到300PLC中,发生在CCP,意味着什么呢?CCP似乎和PII和PIQ的机制一样,也就意味着数据只在每个周期的开始或者结束才刷新数据,还意味着此数据在300整个循环周期中,始终未变;反之,如果发生在时间片,那么数据在一个周期内可能会存在变化?是吗?想到此,宛如闷热的空气中注入清爽的凉气,让我一下子茅塞顿开。这就是一个切入点!

 

        总是想着如何借助外力去证明这一点,然而我却忽然意识到,判断数据是否在CPU一个周期内变化,通过程序本身就可以解决。打破固有思维,有时也带着一些幸运。

 

        这就有了最令我为之骄傲的程序,虽然简单,也看似无用,但对于理解CCP和时间片概念,以及后续的协议通信理解,乃至整个PLC通信知识体系的建立都起到了至关重要的作用。再次看一下:

 

L MW10

T MW12

A M100.0

JCN jmp

L MW0

Next: T MW2

CALL “WAIT”

WT:=10000

L MW2

LOOP next

jmp: NOP 0

L LW 10

L LW 12

==I

JC jj

SET

M100.1

jj: NOP 0

 

        这个程序是和前面的延时程序结合在一起的,原因就是为了看清动作。程序非常简单,首先把MW10中的数据传递给MW12,延时程序前面介绍过了,这里不再赘述。接着判断MW10和MW12是否相等,如果相等,就跳到程序最后;如果不等,则使能M100.1为1。这时,如果大家不理解时间片和CCP的概念时,就会误以为MW10和MW12是永远相等的,M100.1永远不会被置位,因为程序如此。然而当300CPU和400CPU同时运行这个程序,使用PG去修改MW10的数值时,你所看到的试验结果,会让你为之震惊!

 

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

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

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

 

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

请填写推广理由:

本版热门话题

西家技术派

共有64条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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