星闪动力 发表于 2025-5-30 17:44

RS485怎么防止并发的情况?

从机要上传数据,怎么防止多个从机数据碰撞?

ufbycd 发表于 2025-6-1 09:35

参考10Mbps半双工以太网的做法,即CSMA/CD机制:发前先听,空闲发送,边发边收,冲突停止,随机延时再重发。

caigang13 发表于 2025-6-2 10:26

轮训召唤避免同时发

dalarang 发表于 2025-6-2 11:32

常规的做法是采用主从轮询的方式,这个方式弊端是从机比较多的情况下轮询周期过长。
2楼的方法也可行,通讯略微复杂一点,虽然无法完全避免冲突但一般情况下够用了。
根据自己的应用特点来决定。

chenjun89 发表于 2025-6-4 08:21

MODBUS都是主从轮训收发数据,不会出现冲突的。

g0d5xs 发表于 2025-6-4 13:05

指定一个主节点(如上位机)和多个从节点(如传感器、执行器)。主节点负责发起通信,从节点仅在收到主节点的请求后才能发送数据。

liu96jp 发表于 2025-6-4 14:15

定义一个令牌(Token),只有持有令牌的节点才能发送数据。令牌在节点之间依次传递,每个节点在收到令牌后,可以在规定的时间内发送数据,然后立即将令牌传递给下一个节点。

cen9ce 发表于 2025-6-4 15:20

需要实现令牌的传递和回收机制,增加了协议的复杂性。

lamanius 发表于 2025-6-4 16:29

节点在发送数据前先监听总线是否空闲。如果总线空闲,节点开始发送数据,并在发送过程中持续监听总线,检测是否有冲突发生。

b5z1giu 发表于 2025-6-4 17:37

如果检测到冲突,节点立即停止发送,并等待一个随机时间后重新尝试。适用于节点数量较多、通信量较大的网络。

suw12q 发表于 2025-6-4 18:22

RS485是半双工通信,无法同时收发,因此标准的CSMA/CD在RS485中直接应用存在困难,需结合其他机制(如超时重发)实现。

w2nme1ai7 发表于 2025-6-4 20:15

节点在发送数据后,等待接收方返回确认帧(ACK)。如果在规定时间内未收到ACK,节点认为发送失败,并等待一个随机时间后重新发送。

t1ngus4 发表于 2025-6-5 09:16

随机时间的设置需合理,避免多个节点同时重发导致再次冲突。

q1ngt12 发表于 2025-6-5 11:21

使用RTS/CTS等硬件信号控制数据发送,确保总线空闲时才发送数据。为每个节点分配唯一的地址,通过地址识别避免冲突。

tax2r6c 发表于 2025-6-5 13:52

采用具备自动收发控制、冲突检测与处理功能的专用通信控制器

latera 发表于 2025-6-7 22:34

令牌的传递和回收机制 学到了
页: [1]
查看完整版本: RS485怎么防止并发的情况?