MODBUS SLAVE 服务器 保障通讯稳定性的方法

现在有很多的Modbusu开源通讯库,比如 easyModus,Nmodbus4。可以基于快速搭建Modbus 通讯程序。但是问题也很多,其中一个重要的是通讯的稳定性很差。经常连接一会就会莫名的挂掉。

经过几天的研究,发现采用如下方法,通讯稳定性有了很大的提高。目前最长的通讯连接时间将近1天。当然这个还不够,还需要继续研究。把通讯一次稳定时间持续到至少1周才算合格。
废话不说,核心方法为:

通讯故障定位,再根据具体的故障原因,具体处理,增强软件的鲁棒性!

具体分类如下:

1 故障来源:System。

解决方法:自重启软件。

2 故障来源:NModbus4 或 mscorlib
故障原因:“正在中止线程 或是 ”由于线程退出,或应用程序请求,已中止 I/O 操作“

解决方法: 判断当前串口状态,如果已经关闭,则打开。
判断ModbusSlave 是否为空引用, 如果为空引用,则新实例化一个ModBus从站服务器。
如果不为空,则将当前从站赋空引用,再实例化一个ModBus从站服务器。

3 判断当前的故障原因 是否包含 ”正在中止线程"或 "线程退出"

如果包含,则重新创立新线程。线程中运行ModBus从站服务器。

故障原因1、2、3处理逻辑结构

IF 1 THEN
{
} 
ELSE
{  
    IF 2 THEN
    {
    }
    IF 3 THEN
    {
    }

}

备注:千万不要轻易新开线程!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值