cb04e7ed2aebc2ad68e0ecc43f0a2cad.png

两个西门子PLC1200之间的TCP通讯④--TCP测试

上几期大概说了下TCP需要用到的指令块,TCON连接指令,TSEND发送指令,TRCV接收指令这3个指令构成了TCP的基础

这期将介绍正式测试TCP这个程序,发现一些实际调试出现的问题

1.0 先建立链接,首先作为客户端的PLC2,指令TCON的REQ必须为1,被动连接使能要开启,也可以直接写1

88d4568a672d775777e261cb00d8c24f.png

2.0 作为服务器端的PLC1,他的TCON指令,REQ触发上升沿(前提是客户端已开启接收连接),正常的话DONE会置位一个周期,这里我们可以锁存下状态,因为如果REQ上升沿触发后,DONE没反应说明连接有问题的,如果断线或者伙伴网络断开,会自动重连不用重新设置连接,DONE也会刷新的,除非断电或者STOP状态,或者TDISCON,会删除链接,这时候才需要重新REQ一下

e59c975ac514abd23346e3e4cb02c6d4.png

21fbcd08816beb7f7841faccffa3d7eb.png

3.0 如上如果连接好了,下面就开始发送一对了,PLC1这边做发送端,PLC2做接收端,如下图,就是PLC1的发送指令TSEND,刚开始测试我们可以像下面这样,REQ做一个上升沿的脉冲,记得做一个发送完成的状态锁存M300.0,一个错误的状态锁存MW302

c1b4d05284988987048346b5f70a9b24.png

d7203a4e98f220f67ba3fa982fdc7ec6.png

4.0 下面说下PLC2,这边是做一个接收指令TRCV,如下图,EN_R可以直接为1,开启接收,注意锁存NOR置位说明接收完成,这时候要锁存下接收长度RCVD_LEN,跟上面一样别忘了锁存错误状态下的代码

eab02ae785fbca72799e6e036693ee71.png

7732937c2de762d3c0549c9e70e36da1.png

5.0 正常来说如上所述,当发送端上升沿后,PLC2这头的接收端就会收到数据。如下图就是一个正常的接收,我们LEN设置了3就接收3个字节,

注意:1.0 接收和发送的长度一致,LEN不能大于DATA设置的指针数据长度(这里是BYTE 10)

2.0 有时候会报错ID冲突或再用啥的,可以整体切换ID,但是好像需要PLC重启重连组态参数里面也需要修改

3.0 注意发送接收数据块不要优化地址

4.0 调试时注意每个环节的状态,比如发送如果DONE了就说明发送没问题,到接收那找原因

70c12b7e9555e9a1a4e1d8ce113f2244.png
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐