wenliang
擡頭白雲悠悠,前竟一片黯愁……
级别: 家园常客
精华主题: 0
发帖数量: 720 个
工控威望: 915 点
下载积分: 43055 分
在线时间: 553(小时)
注册时间: 2014-04-04
最后登录: 2025-03-24
查看wenliang的 主题 / 回贴
楼主  发表于: 2021-12-01 08:49
请问各位大师三菱MODBUS通讯,现在问题是PC发送一条数据给PLC,当PLC收到数据时M8123动作、而且马上回复PC已经收到指令,但是现连机讯运行时偶而会出现PC发送数据给PLC、而PLC收到后并没有回复PC,现在用串口软件来测试也是一样的情况,PC轮询指令间隔时间160MS,轮询N多条指令后就会出现PLC少回复的情况,另外也问过三菱客户了,说是把D8129超时改成1也没有用,不知道各位大师有什么高见,烦请多多指点一下,在此谢过了!!!


  
[ 此帖被wenliang在2021-12-01 09:32重新编辑 ]
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 796 个
工控威望: 1174 点
下载积分: 453 分
在线时间: 635(小时)
注册时间: 2019-09-22
最后登录: 2025-03-26
查看gxtmdb82164的 主题 / 回贴
1楼  发表于: 2021-12-02 16:46
本身modbus是应该有重试机制的,一问一答保证每次都会有回应,如果没收到就重来一次.

LZ可以试试看PC对PC发送和PLC对PLC发送,一端固定不变就是你现在的PC程序和PLC程序,另一端写一个最简单的收发程序,这样跑一段时间来看一下结果如何.

最后提醒一个点是这样的,两线串口这种半双工的通信程序,要给数据传输完成留时间,换言之并不是收到了马上就发送硬件可能还还没准备好,或者对方的buffer还没清空,这个是底层硬件和底层系统软件的机制决定的,在PLC这样的环境中,至少延迟一个周期是非常有用的方法.

或者还有一个办法,把波特率提高,我就喜欢用高波特率,信号传输的时间越短出幺蛾子的概率反而越低,反正有重试,错了再发~