【问题标题】:CANOpen protocol overheadCANOpen 协议开销
【发布时间】:2020-03-05 19:13:30
【问题描述】:

谁能帮助我了解 CANOpen 协议在 CAN 总线上增加了多少开销。换句话说,如果一个节点正在生成一个 8 字节的应用数据的 CANOpen PDO 消息,那么 CANOpen 协议本身会增加多少头/开销?我不是在谈论 CAN 总线本身的开销,即 CRC、DLC、RTR、EOF 和其他位。使用 CANOpen 与直接使用 CAN 相比,总线上的额外负载是多少。谢谢。

【问题讨论】:

    标签: can-bus canopen


    【解决方案1】:

    没有“CANopen 协议”本身,它是整个应用层的名称。简而言之,CANopen 使用的实际协议归结为:

    • NMT 帧,网络管理。控制节点和整个网络的状态。
    • SDO 帧、服务数据对象。单个节点的配置。
    • PDO 帧,处理数据对象。实际的数据框。

    还有其他各种特殊用途的,如EMGY、LSS等,但以上是主要的。

    换句话说,如果一个节点正在生成一个 8 字节的应用数据的 CANOpen PDO 消息,那么 CANOpen 协议本身会增加多少头/开销?

    PDO 的开销为零。您在 8 字节 PDO 帧中获得 8 字节有效负载。

    SDO 和各种 NMT 有一些开销,通常是 1 个字节。

    【讨论】:

    • 谢谢。哦,因为PDO被映射了,它们不包含任何地址信息?像索引、子索引等......那么,如果传感器发送双(8 字节)位置数据,那么 PDO 帧中是否包含所有没有任何寻址信息的内容?
    • @seanbzd 您不使用 PDO 读取/写入对象字典地址,这就是 SDO 的用途。所有 PDO 都有通信设置和可选的映射设置。这些设置位于对象字典中的固定地址,例如 TPDO1 在 0x1800 具有通信设置,在 0x1A00 具有映射设置。在通信设置中,您设置 COBID,其他对此 PDO 感兴趣的节点必须相应地设置其 RPDO 之一的 COBID。并从那里调整映射参数。
    • @seanbzd 但是,您也可以使用 SDO 读取/写入数据,方法是访问节点声明为实际数据存储地址的任何对象字典地址。但是这样的访问会带来开销,并且只能在预操作模式下进行。
    • 非常感谢。
    • @Lundin SDO 也可以在操作模式下使用,一些系统甚至使用 SDO 在操作期间连续读取过程数据(尽管由于开销而效率极低)但可能需要关闭一些具有有限数量的 PDO 或所有 PDO 的现成节点是固定的,并且不包含所需的数据。
    猜你喜欢
    • 2010-12-07
    • 2021-07-22
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2016-10-22
    相关资源
    最近更新 更多