

用的中达优控jk3u的plc,485走modbus rtu协议读仪表参数,看报文发现plc这边发的报文是没问题的,但是仪表那边还没完全回复完plc这边又重新发了导致报文串一起了导致通信不上,求大佬支个招是plc这边问题吗?还是从站问题。


用的中达优控jk3u的plc,485走modbus rtu协议读仪表参数,看报文发现plc这边发的报文是没问题的,但是仪表那边还没完全回复完plc这边又重新发了导致报文串一起了导致通信不上,求大佬支个招是plc这边问题吗?还是从站问题。
试一下通信时序:
PLC 发送完成;
等待仪表把全部数据发送给 PLC;
再延时 15ms;
之后才可以再次下发指令。
引用 "请叫我王老湿" 的回复,发表在1楼
内容: 试一下通信时序:PLC 发送完成;等待仪表把全部数据发送给 PLC;再延时 15ms;之后才可以再次下发指令。...
1、是主站 PLC的 问题,从报文中也可以看出:PLC不等从站应答结束就重复下发查询帧;
断开 PLC,用串口调试助手单独发 Modbus 指令给仪表,收发完整、无乱码、通信正常;
2、另外,缩短 PLC 轮询间隔无效,根源是因为没有 “应答完成锁存” 逻辑;
可以考虑把 M0脉冲触发,不用常闭导通;
增加 ADPRW 忙位 / 完成位自锁互锁,通信期间锁住触发回路;应答完成后增加 10~50ms 延时(匹配仪表响应速度),再允许下一次发送。
3、实现的方式:
(1)就是使用上升沿触发 ADPRW,同时自锁一个中间继电器 M1;
M1 导通期间切断 M0 触发回路,禁止重复发包;
(2)M8029(ADPRW 完成)ON 后,启动定时器 T0(20ms);
T0 计时到,RST M1,解除互锁,允许下一次 ADPRW 发送。
手动触发 M0 ,程序会一直运行中,应使用脉冲/上升沿 触发,不用常闭导通。
主站要设置一个合适的超时时间,串口通信超时时间典型值是1000ms。主站发出命令后,要给从站一个响应时间的。
根据描述,问题可能出在PLC主站的通信超时设置上。建议从以下方面排查:
典型解决方案:在PLC通信配置中将"响应超时"参数调整为300-500ms(具体根据仪表规格调整),并适当降低轮询频率。