恭喜,你发布的帖子
发布于 2017-09-27 21:29:49
40楼
Y版!
按照连接的说明如下:
这里有一句话特别提到,如果开始新的发送任务,REQ参数必须复位一个周期然后在置位
这个在TCP/UDP等通讯里面的确是如此,但是在Modbus tcp 里面好像不是绝对是这样的情况,直接在REQ位置进行TRUE都是可以正常读写服务器的,至少我在1200之间的Modbus tcp 测试正常通讯的是这样做的,我直接把REQ置位为 1 读写速度也非常快,并且通讯很正常,明显不是类似于TCP/UDP等通讯如果没有01010101010101这样的上升边缘动作是不会一直发送数据的,一个上升边缘就只会发送一次。但是在MB_TCP块不是这样的,它可以一直发送接收数据。
这个不知道如何理解!
链接那里的说明是针对TSEND_C和TRCV_C说的。
在MODBUS_TCP功能块中这两个指令是底层,而客户端的REQ并不是那两个指令的REQ。MB_TCP功能块会根据你设置的MODE,自动地、尽可能快地、不断的REQ那两个指令。使你的编程工作尽量简化。
你可以通过MODBUS_TCP对应背景DB来查看么。
7006的返回值,也是底层传上来的状态值,据此我才会判断通讯是出于接收等待中,对不?
其实,MB_TCP还有别的MODE,用来查询服务器的状态。不过甚少使用。
总之,使用MB_TCP客户端时,首先是会建立连接;并保持连接的,如果在模块处没有释放连接,它自己是不会主动释放连接的。而底层指令的REQ,你是控制不了的。
请填写推广理由:
分享
只看
楼主