gpt4 book ai didi

can-bus - CANOpen 中的对象字典是什么?

转载 作者:行者123 更新时间:2023-12-05 02:14:45 43 4
gpt4 key购买 nike

I will use CANOpen in linux. In kernel, linux has socketcan and i have some questions for further implementation.

1-) 对象字典长什么样,是头文件还是EDS文件?

2-) 我需要为 pdo 和 sdo 配置使用对象字典吗?

3-) 我应该实现我的自定义 canopen 库,它只实现了一些必需的协议(protocol),还是使用像 canfestival 这样的库,它实现了几乎所有的协议(protocol)和对象字典?

最佳答案

1) 对象字典定义了一组对象,其中数据可以存储在 CANopen 节点上。通过给定对象索引和子索引,可以使用 SDO 协议(protocol)从 CAN 总线读取和写入对象字典中的对象。它们也可以从 CANopen 节点上的本地应用程序读取和写入。可以说对象字典构成了从其他 CANopen 节点访问 CANopen 节点的 API。

EDS 文件包含特定 CANopen 节点模型中存在的所有对象的列表,包括数据类型、默认值、最小值和最大值以及一些属性。这有助于工具与 CANopen 节点通信。

2) 使用 SDO 协议(protocol)写入 CANopen 节点的对象字典,通过 CAN 总线完成配置。

3) 如果您开发商业产品,您可能希望使用商业 CANopen 堆栈来支持完整协议(protocol)。 (一个例子是我们维护的 Kvaser CANopen Stack,但还有很多其他的可供选择)

如果您的项目许可政策允许,您可以使用开源 CANopen 协议(protocol)栈之一。我想到了 CANFestival 和 CANopenNode,但还有其他的。

但是如果您只需要最少的功能,您也可以根据规范编写最低限度的代码。 NMT 状态机、只读 SDO 加速传输、包含少量强制对象和硬编码 PDO 的对象字典甚至可能为您提供符合标准的简约节点。

以下对象在 CiA 301 中是强制性的

  • 0x1000 设备类型(只读)
  • 0x1001 错误寄存器(只读)
  • 0x1017 生产者心跳时间(Const)
  • 0x1018 身份对象(只读)
  • 此外,您还需要通信参数和映射参数每个 PDO,但这些可以是常量。

如果您想更进一步,您可以将网络上的所有其他节点预先配置为自动启动,然后只需发送和接收其他节点被编程识别的固定 PDO。这不符合标准,但如果您快速破解以在实验室中使用,可能会奏效。

我曾经为原型(prototype)做过一次,只是一个固定的 PDO 和心跳,然后切换到最终产品的商业堆栈。

关于can-bus - CANOpen 中的对象字典是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53132996/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com