【发布时间】:2020-03-04 20:32:53
【问题描述】:
我有一个疑问。我正在研究使用 CSMA-CD 和仲裁机制传输消息的 CAN 协议。我计划实现单个服务器节点和多个客户端节点。
- 给服务器
ID of 0 (11-bit Identifier)。 - 当节点通电时,它应该获得一个 ID 以在网络中进行通信,因此它向服务器请求一个 ID。 Node使用
Remote Frame向服务器请求ID,涉及ID = 0 (Server ID), DLC = 2
我的疑问是,CAN 总线上有多个节点,因此每个节点都向服务器请求一个 ID。并且所有节点都使用ID = 0 (Server ID), DLC = 2 as Remote Frame。现在假设 2 个或更多节点同时向服务器发送消息仲裁机制不起作用,因为两个节点都控制了 CAN BUS。那么 CSMA-CD 是否会阻止这种情况并在给定时间只允许单个节点进行通信?
【问题讨论】:
-
“使用 CSMA-CD 的 CAN 协议”是什么意思? CAN 正在使用 CSMA-CA,或者它不是 CAN,而是一些自定义的废话。
-
总的来说,您误解了 CAN 在基础层面上的工作原理。它不是节点驱动的,而是消息驱动的。 CAN 总线更高层协议(例如 CANopen)使用节点 ID,将其用作消息标识符的偏移量。所以如果某种类型的消息是用 id 0x100 发送的,那么 id 为 1 的节点会发送 0x101。不过,在您研究 CAN 本身的基础知识之前,不要担心节点 ID。
标签: can-bus