0

我正在尝试与 USB-to-CAN 设备通信。我正在使用 Canopen.net API,我并没有完全理解它下面的所有类,但从我读到的内容,我知道 cCob 是我需要使用的类。我设法连接到设备,创建了一个 cCob 实例(使用 CreateCOB 方法)并发送数据。

我现在面临的问题是 COBID 限制。我不知道为什么,但似乎 API 不允许我使用大的 COB-ID(32 位)。m_ErrorCode 是:“kCobAlreadyExist”(它不应该来自我所知道的)。

也许我弄错了,我应该将 SDO 类与对象字典一起使用,所以我希望有一个正确通信方式的完整基本示例。

4

1 回答 1

0

让我先简单介绍一下 COBID:它是 CAN 消息的标识符部分。它是功能代码和节点 ID 的组合。基本上,标识符有两种类型,标准的,即 11 位的大小和扩展的,即 29 位的大小。

CANopen 堆栈很少使用 29 位标识符帧格式。尽管您分配了 32 位数据类型,但标识符的最大长度为 29 位。

CANopen 描述了根据消息类型(NMT、SYNC、Heartbeat、EMCY 等)决定标识符的特定规则集。

因此,如果您使用的是 CANopen 堆栈,请参阅其文档,以便更清楚地了解如何使用 API。

于 2014-07-04T11:13:40.250 回答