
【传播知识 手有余香🌹】转发此文到朋友圈 赠送 于振南老师 知识视频合集哦!
你有没有想过一个问题:RS485总线上挂了多个从机,它们同时发送数据会怎样?信号冲突,数据全乱。就像一群人同时说话,谁也听不清。所以,RS485组网必须有一个规则:同一时刻,只能有一个设备发。 这个规则,就是"主从模式"。那个"一主多从"的架构,RS485总线上:
- 1个主机:负责发起所有通信
- N个从机:只回复,不主动发
主机不发话,从机永远沉默。这是"一问一答"的通信模式。

那个"地址"的区分, 每个从机有唯一的地址 (1-247)。主机发送的数据帧里,第一个字节就是目标从机的地址。所有从机都收到这个帧,但只有地址匹配的从机才回复。不匹配的,忽略。那个"冲突"的避免, 为什么从机不会同时回复?因为主机一次只问一个从机 。问1号,1号答;问2号,2号答。**主机不问,从机不答。**这就从根本上避免了冲突。
那个"超时"的容错, 如果从机没回复,主机等一段时间(超时),然后重试。超时时间要合理------太短,从机来不及回复;太长,效率低。一般设几十到几百毫秒。那个"广播"的例外, 地址0是广播地址 。主机发广播帧,所有从机都接收,但都不回复 。适合"同步所有从机"的场景(如同时复位、同时开始采集)。广播只发不收。
那个"轮询"的策略, 主机怎么知道什么时候问哪个从机?轮询:按地址顺序,一个个问。
- 问1号 → 等回复 → 问2号 → 等回复 → 问3号......
轮询周期要设计好,确保每个从机的数据都能及时采集。周期太长,数据不及时;周期太短,总线负载高。

那个"事件触发"的优化, 轮询效率低------很多从机可能没新数据。优化方案:事件触发 。从机有数据更新时,主动发"请求发送"信号。但RS485是半双工,从机不能主动发。所以需要硬件中断线------从机拉一根线告诉主机"我有数据"。
这是RS485的进阶用法。
这个故事给我们的启示, 为什么RS485组网要"一问一答"?因为总线是共享资源 。多个设备共享同一条线,必须有时序规则。主机是"裁判",决定谁可以说话。从机是"运动员",只等裁判点名。没有规则,一片混乱。写在最后, 下次你用RS485组网,别只连上就完事。想想那个"一问一答"的规则。想想从机地址怎么分配。想想轮询周期怎么设。规则,是通信的基石。
(本文灵感源于于振南《新概念ARM32单片机》教程中对RS485组网的深刻讲解,感谢作者将总线型网络的通信协议讲得如此通透。)
如果您觉得这个故事对您有启发,欢迎点赞、转发,让更多工程师看到这个藏在"一问一答"背后的通信哲学。关注我,一起探索嵌入式世界里那些"规则决定秩序"的硬核真相。
