首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是CANOpen中的对象字典?

问什么是CANOpen中的对象字典?
EN

Stack Overflow用户
提问于 2018-11-03 15:57:00
回答 2查看 5K关注 1票数 3

我将在linux中使用CANOpen。在内核中,linux有套接字,我还有一些问题需要进一步实现。

1)对象字典是一个头文件还是EDS文件?

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

(3)我应该实现我的自定义canopen库,它只实现了一些协议,还是使用了一个库,比如实现几乎所有协议和对象字典的canfestival?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-03 10:19:40

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

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

2)在CAN总线上进行配置,使用SDO协议向CANopen节点的对象字典写入。

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

如果您的项目许可策略允许,您可以使用开源CANopen堆栈之一。CANFestival和CANopenNode出现在我的脑海中,但也有其他的。

但是,如果您只需要最少的功能,您也可以从规范中编写最小的代码。NMT状态机、只读取SDO快速传输、包含少数强制对象的对象字典和硬编码的SDO甚至可以为您提供一个标准兼容的极简节点。

以下对象在CiA 301中是必需的

  • 0x1000设备类型(只读)
  • 0x1001错误寄存器(只读)
  • 0x1017制片心跳时间(Const)
  • 0x1018标识对象(只读)
  • 此外,您还需要每个PDO的通信参数和映射参数,但允许这些参数是常量。

如果您想更进一步,您可能可以预先配置网络上的所有其他节点自动启动,然后发送和接收固定的PDO,其他节点被编程来识别。这是不符合标准的,但如果您在实验室中快速进行黑客攻击,可能会起作用。

我做了一次原型,只是一个固定的PDO和心跳,然后切换到一个商业堆栈的最终产品。

票数 5
EN

Stack Overflow用户

发布于 2018-11-20 07:56:47

我在使用佳节的经验:

1)它是一个头文件和一个源文件

(2)是的,您应该为每个节点定义sdo和pdo规范及其变量和回调,这是通过对象口授自动完成的。

3)有些驱动程序类似于串行、tcp、.但是如果您有一个特定的协议,您可以编写您自己的驱动程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53132996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档