alex2020 发表于 2024-3-29 20:14:17

RS485多从机问题

用STC8G做从机,通过RS485通信,用STM32做主机,从机随时可能发数据,不定时发送,也会存在多从机同时发的问题,如何避免总线上的数据不会冲突,用modbus的话,主机广播询问后,从机应答,但是多个从机都要应答,他们应该怎么处理数据发送才能避免冲突?或者说不通过广播的方式,指定从机依次询问?

社区闲人 发表于 2024-3-29 20:28:05

使用超时定时器,一帧数据接收完成后再处理。就可以避免总线上的数据发生冲突。

社区闲人 发表于 2024-3-29 20:41:56

举个栗子:
主机只发送一个字节的从机的ID,
ID值的从机在2.5D后判断是本机的ID,就开始通信,其发送的第一个字节是本机的ID,然后才是数据。
其他ID的从机,就放弃。

yefeng 发表于 2024-3-29 23:29:39

你详细了解下modbus协议,他是有个从站地址的

jwd 发表于 2024-3-30 07:51:41

广播的话是不要求应答的吧

jwd 发表于 2024-3-30 07:53:17

再说modbus不是应该主机问,从机再答吗?从机还能自己主动发数据?

AI-32位8051 发表于 2024-3-30 09:40:13

ModBus从入门到实战视频回放



ModBus-STC开源原码 下载链接:



【新提醒】求STC8系列4个串口同时通信的程序,Modbus 演示程序 - 串行口,DMA支持的4组串口 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)


AI-32位8051 发表于 2024-3-30 09:45:28




【新提醒】STC-ISP 增加 MODBUS调试助手 - 串行口,DMA支持的4组串口,RS232,RS485 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区https://www.stcaimcu.com/forum.php?mod=viewthread&tid=3916&highlight=modbus&page=0&extra=#pid25944

_奶咖君_ 发表于 2024-3-30 17:54:11

如果是使用MODBUS协议,,从机是不允许主动发送的。只有主机轮到某个地址的从机,,这个地址的从机才能回复。
MODBUS的广播地址从机不回复。

_奶咖君_ 发表于 2024-3-30 17:55:55

如果是私有协议的话 ,,主机发送一个协议帧要求从机依次上报数据,从机收到这个协议帧后,根据某种算法,排队依次上传,,

简单一点的可以从机根据自己的地址,间隔一秒一个地址上报,,之类的方式。
页: [1] 2
查看完整版本: RS485多从机问题