回复:1200作为MODBUS TCP客户机与第三方设备进行通讯,第三方MODBUS TCP服务器通讯一会就出错了

Zaxife

  • 帖子

    2450
  • 精华

    31
  • 被关注

    78

论坛等级:至圣

注册时间:2008-07-24

普通 普通 如何晋级?

发布于 2017-09-18 17:42:13

1楼

既然1200是客户机,那么它与服务器通讯不上后,就要先尝试改变本地端口然后再跟服务器通讯,或者断开连接再重新连接通讯。
如果一直用原来的端口,妥妥的再也连不上的节奏。
你用TCP/IP抓包软件查看数据包,事务Code是不是一直在递增,不递增说明1200的问题?
Modbus协议是发送--等待接收--接收完成或服务器超时(1分钟或者服务器可设定)--再次发送 这样时序,如果不是这个节奏,服务器就会认为你是ARP攻击直接关闭你的端口。
也可以在3次读取失败后直接断开连接,延迟100ms后再尝试连接。

以上的措施都是以第三方Modbus TCP服务器是达到协议规定范围内的服务器才有效,如果是特殊的就需要跟厂商沟通咯,就比如服务器在发现寄存器数量、地址、功能码等错误后都不反馈错误码,通讯只能缓冲一帧数据,解包字节顺序错误等都有可能导致通讯失败的,然后发现失败了,1200的TCP底层有没有再次发送?我没弄个不得而知。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15112条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

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