恭喜,你发布的帖子
发布于 2024-03-09 21:14:09
7楼
通常最有效的RTU从站:接收消息,起始判断以3.5字符空闲间隔加本站号;结束判断以3.5字符间隔,甚至可以以收到的消息数据结构来判断。
从站应答消息,起始时刻,以设定的最短延迟或应答数据准备完成,以先到者为准,很多变频器默认为2毫秒。
所以,设定50ms的应答延迟肯定是有点高了,作为plc来说,准备这么点应答数据,就是以最高通讯波特率来算,也超不过1个字符时长。之前研究过官方RTU库,感觉在很多方面都设计的通讯效率不高,而且在稍有干扰的情况下,程序自身的处理会无效地加大通讯延迟。但作为485来说,通常并没有很高的通讯速度需求,官方库足够用了
再讲一些看法吧。
1、楼主的50ms,仔细看他的问题描述,存在很多笔误的。
2、主站库设置的时间比如50ms,是指超时时间,也就是在这个时间内没有收到从站应答,认为从站不会再应答,设置Done=1。
3、主站发送完modbus帧后,立即进入接收,没有加入延迟。3.5字符的间隔判断,是从站作出的判断。
4、官方主站库的通讯处理,是在主扫描中进行的,因此,轮询速度受扫描周期的影响。如果要最快地轮询,可以写完全由中断驱动的程序,采用115200bps速度,一次简单的通讯,可以在10ms以内完成应该是有可能的。
请填写推广理由:
分享
只看
楼主