西门子以太网数据传输接头 西门子以太网数据传输接头
湖南洪武自动化设备有限公司是西门子一级代理商,是西门子自动化与驱动集团认证的西门子数控系统、伺服驱动的第三方合作伙伴。
公司代理全系列西门子数控系统,伺服驱动电机,变频器,直流调速装置,软启动器、触摸屏,可编程控制器等产品的销售,同时提供零部件维修、电柜设计、PLC编程调试及普通机床和加工中心的数控改造等服务。产品广泛适用于车、铣、磨、刨、钻等金属切削机床和各类机床设备及钢铁、重工、机械 造船、电子、电机、制药 纺织、印刷、轻工、包装、媒体等领域,同时配备完善的售xx服务及过程.为各行业用户提供 的 服务,为用户带更多效益是我们的目标
反复研读手册,手册会提到通信的地方,必然会提及数据一致性这个概念,那么数据一致性的真正意义是什么?什么时候需要注意呢?又如何注意呢?手册常常提到通信PLC可以保证具有一定的数据一致性长度,例如TCP的一致性是8K,为什么?为什么会有这样的限制?300PLC的S7通信常常会提到240字节的数据一致性,而S7 PDU也是240个字节,它们之间又有什么关联呢?
我们来思考一下,想象当时我的思考过程。**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数据。
西门子以太网数据传输接头 西门子以太网数据传输接头