西门子代理商6SL3225-0BE34-5UA0
  • 西门子代理商6SL3225-0BE34-5UA0
  • 西门子代理商6SL3225-0BE34-5UA0
  • 西门子代理商6SL3225-0BE34-5UA0

产品描述

产品规格472x 200x 237包装说明全新原装颜色深灰 产品别名G120C变频器 用途工业自动化控制

西门子代理商6SL3225-0BE34-5UA0                    西门子代理商6SL3225-0BE34-5UA0


通过前面所描述的原理,理解了时间片和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呢?此外,又牵扯到数据一致性的概念,它对于通信的意义到底在哪里?如何定义数据一致性的长度?或者说数据一致性的长度是依据什么来设定的?再次记到笔记本中,用于提醒自己还有这些问题要继续探索。



http://shtxjd.cn.b2b168.com

产品推荐