技术论坛

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

返回主题列表
作者 主题
赵欣
奇侠

经验值: 5577
发帖数: 387
精华帖: 52
楼主    2020-03-10 10:50:23
主题:【PLC通信原理探秘】大讲堂幕后彩蛋之柳暗 精华帖 

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


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

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

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

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

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

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

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


        通过前面所描述的原理,理解了时间片和CCP通信的概念,理解了通信是如何进行的,同时也提醒我对于通信编程的一些注意事项。例如,同样的程序,未必在300PLC和400PLC的运行结果就相同,等等。对于完整的CPU循环周期,仅剩下PII和PIQ了,它们对于在CPU的完整循环周期中起到的作用是什么呢?它们又何通信有什么关系呢?

 

        很遗憾,在当时并没有想这个问题,因为日常工作还需要做,有限的自由时间全部铺在了理解时间片和CCP的通信上面。不过,因为我日常也支持Profinet的相关工作,柳暗花明的故事也就出现了,这也恰恰说明通信服务的原理是相通的。

 

        我们知道Profinet的IO是周期性的,这意味着CPU和分布式IO的设备之间周期性的交换过程数据。通过Wireshark能够看见CPU和分布式IO按照Step7定义的周期时间,例如刷新时间为2ms,进行交换过程数据。这些数据就是分布式IO上面的IO数据,在具体就是CPU向分布式IO周期性2ms发送Output的数据帧,相应的分布式IO发送Input帧周期性2ms给CPU。

 

        那么分布式IO按照Step7定义的周期进行数据交换,而CPU也有自己的循环周期,那么这两个周期如何配合来实现交换数据呢?

 

        首先,设置PN的IO刷新时间为1ms。我还使用那个延时程序,延时5秒钟,在OB1中,写一个简单的程序:

 

AN Q0.0

=Q0.0

A M100.0

JCN jmp

L MW0

Next: T MW2

CALL “WAIT”

WT:=10000

L MW2

LOOP next

jmp: NOP 0

 

        结果就是IO模板上的Q0.0变化很慢,目测是和CPU的循环周期5秒钟一致。通过Wireshark,可以看见其相关的变化位的时间间隔约为5秒钟。这也是正常的,因为CPU的循环周期是5秒钟,这也意味着每隔5秒钟刷新PII和PIQ,即使外部的PN的刷新时间是1ms,那么真正的IO刷新确是按照CPU的周期完成的。

 

        由此可见PII和PIQ的数据变化是在CPU的每一个循环周期开始才去刷新,从而可以保证IO数据在一个CPU循环周期中保持不变,那么这样想象一下,PII和PIQ每个CPU的周期都要和一个缓冲区去交换IO数据,而这个缓冲区的数据在不断的与外部的IO设备上的数据进行数据交换,也就是说这个缓冲区的数据随着外部PN的刷新时间在不断的变化,这个缓冲区我就叫它—外设IO区,即外设Output区对于PIQ过程映像Output,外设Input区,对应PII过程映像Input。PII和PIQ的数据随着CPU的循环周期是一致的,而外设IO区数据是不一致的,因为它不随着CPU的周期变化而变化。        

 

        那么需要注意的是如果想周期性的能够响应外部的IO变化,那么这种情况下就必须要使CPU的循环周期能够适应PN的刷新周期。例如,PN IO的刷新周期是8ms,那么CPU的循环周期要小于8ms,这样就可以按照大约按照8ms的周期来刷新IO了。

 

        问题又来了,我的程序如果编写的很大呢,CPU运行的循环周期如果大于8ms呢?此外,又牵扯到数据一致性的概念,它对于通信的意义到底在哪里?如何定义数据一致性的长度?或者说数据一致性的长度是依据什么来设定的?再次记到笔记本中,用于提醒自己还有这些问题要继续探索。


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

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

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


读万卷书 行万里路
pkh2006
奇侠

经验值: 6138
发帖数: 879
精华帖: 11
2楼    2020-03-11 11:44:48
主题:回复:【PLC通信原理探秘】大讲堂幕后彩蛋之柳暗

质疑一下过程,虽然我对结论不质疑

延时5s的程序之所以Q0.0变化很慢,是因为Q0.0没变化

您应该每延时1s取反一次Q0.0,这样延时5s,取反5次,但是抓包发现每5s传输变化一次

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