EXPLAINER / SVG ANIMATION

CAN बस आर्बिट्रेशन कैसे काम करता है

एक-एक कदम एनिमेशन: एक साथ भेजने वाले नोड ID बिट दर बिट प्राथमिकता तय करते हैं।

चलाएँ · रोकें · कदम · दोहराएँ ऑटोमोटिव इलेक्ट्रॉनिक्स SVG
INTERACTIVE SIMULATION / CanArbitration

तीन मानक फ़्रेमों के वास्तविक 11-बिट ID बिटस्ट्रीम bit10 से दिखाए गए हैं। रेसेसिव 1 भेजकर डॉमिनेंट 0 पढ़ने वाला नोड तुरंत हटता है; सबसे छोटा ID जीतता है। यहाँ केवल ID फ़ील्ड है।

नोड bit 10bit 9bit 8bit 7bit 6bit 5bit 4bit 3bit 2bit 1bit 0 स्थिति
0x120 0 0 1 0 0 1 0 0 0 0 0 —
0x180 0 0 1 1 0 0 0 0 0 0 0 —
0x3A0 0 1 1 1 0 1 0 0 0 0 0 —

डॉमिनेंट 0 / रेसेसिव 1

यह कैसे काम करता है

नीचे का मुख्य लेख अभी केवल चीनी में पूरा उपलब्ध है; इंटरफ़ेस, शीर्षक, विवरण और FAQ चुनी हुई भाषा में हैं।

为什么需要仲裁

CAN 是多主总线:任何节点都可以在总线空闲时开始发送。如果两个节点同时开口,总线并不会”撞车丢包”——物理层把总线实现为”线与”:

  • 显性位(dominant, 0):任一节点拉低,总线即为低。
  • 隐性位(recessive, 1):所有节点都释放,总线才为高。

因此发送隐性位却读回显性位的节点,立刻知道自己输了,于是停止发送、转为接收。没有任何位被破坏,胜者无需重发——这就是 CAN 的非破坏性仲裁。

关键结论

  1. 仲裁在仲裁场(标准帧为 11 位 ID + RTR,扩展帧还涉及 SRR/IDE)进行,进入数据场后只剩一个发送者。
  2. ID 数值越小,优先级越高:ID 从最高位开始发送,越早出现显性 0 的一方获胜。
  3. 输掉的节点自动转为接收,并在总线空闲后重试,报文不会丢。
  4. 标准帧(11 位 ID)与扩展帧(29 位 ID)可以共存:标准帧的 IDE 位为显性,因此同 ID 前缀时标准帧优先。
  5. 数据帧的 RTR 为显性 0、远程帧为隐性 1,所以 ID 相同时数据帧优先。

动手验证

动画里的位流是由三个标准帧 ID 的真实二进制生成的,从左到右是 bit10 → bit0:

  • 0x120 = 00100100000,0x180 = 00110000000,0x3A0 = 01110100000。
  • 第 1 位(bit10)三者都是 0,不分胜负。
  • 第 2 位(bit9):0x3A0 发隐性 1,另两个节点发显性 0,总线读到 0,0x3A0 退出。
  • 第 4 位(bit7):0x180 发 1、0x120 发 0,0x180 退出,0x120 赢得仲裁。

理解了仲裁,再看 CAN 位定时计算器:每个位时间的采样点位于 SYNC_SEG + TSEG1 结束处,节点只有在采样点读到总线电平才能判断自己是否输掉仲裁,因此位定时参数要与网络传播延迟匹配。

APPLY IT / TOOLS

इस विषय के उपकरण