【问题标题】:CAN CSMA-CD and ArbitrationCAN CSMA-CD 和仲裁
【发布时间】: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


【解决方案1】:

如果设备没有ID,CSMA-CD 将无济于事,因为每个节点都需要ID 才能参与CSMA-CD 风格的CAN bus protocol。然后,如果它不能访问总线,它就不能请求ID。如您所见,这是一个鸡蛋问题。

您可以为总线上的每个节点分配一个唯一的ID,然后每个节点都可以请求一个新的ID,但我想这就像双重工作......

也许了解arbitration mechanism in CAN protocol 会很有用。简而言之:较低的ID 意味着较高的优先级。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 2015-11-18
    相关资源
    最近更新 更多