modbustcp测试工具_客户现场ModbusTCP调试翻车

问题点: C#上位机运行一段时间无法向PLC写入数据

由于这个上位机代码配合PLC做modbusTCP好多年没出过问题,所以很疑惑。

然后就做了以下动作

1.打400 810 4288西门子工业客户电话,给的建议是加捕捉错误代码,并且ERROR时接通DISCONNECT一个周期重启modbusServer。 (这是原来一直没有出现问题的程序)

573f8edf334b8e1707fe2bf940b93f87.png

原程序

2.就有了以下程序

08d1017bd40b0709e3b5d29655ac5476.png

捕捉错误码 并重启SERVER

af149de6222e6f214a52f0c44e40599e.png

顺便把错误码发到上位机

5fd5e972ccd61928bf840868c8f3bf9c.png

错误码写入条件

3b9cd60446b4e23902d431e9853e4c9e.png

C#把错误码写入记事本

3.利用另外一个开放式用户通讯向C#上位机发送错误码 然后记录在记事本上。

e3b19ea8a161ebde4ee9bad2cd329ddc.png

记录到的错误码

4.在客户现场驻守了3天,打算开车回公司。结果很神奇的事情发生了,故障重现了,然后上位机连接不上了,我写的上位机有自动重连机制,正常情况重连是可以的。我以为是我的上位机有bug然后退出软件。用socket测试工具测试,结果还是连不上,然后拔掉网线,重启电脑,还是不行。这时候PLC的STATUS引脚状态是0。感觉SERVER死掉了,没有检测到。按理来说TCP物理层网络层不通的时候,PLC端应该是知道的。也考虑过物理层有问题,但是同一物理层的另外一个开放式TCP连接是OK的。最终必须重启DISCONNECT引脚,或者断电重启PLC解决。

5.答应老婆今天回去的,没想到现场翻车...客户现场实在待不住了,就写了组合键同事按下,强制重启SERVER应急解决。

6.考虑回公司写心跳,控制SERVER重启。

7.继续拨打400电话,问有没有可能固件有问题。因为以前没有做这些重启SERVER程序是没出现问题的。西门子工程师回复 固件更新不会去公布这些细节,无从得知改动。

8.我考虑C#端写心跳给PLC,PLC检测到没心跳就自动重启SERVER。我的上位机重连机制就会生效,就会产生新的连接。来解决这问题,并且尝试把通讯负载由默认的20%改为40%也试试。

欢迎大佬指导交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值