问题标签 [canopen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
898 浏览

plc - 通过 CAN/CANopen 从 PC 连接到 PLC

首先,我不得不说我对 Linux 和 CAN/CANopen 都不是很有经验,所以如果这里有什么不清楚或遗漏任何关键的东西,请告诉我。

我有一个项目需要通过 CAN/CANopen 将 PC 连接到 PLC。我有一个 CAN-USB 转换器 (canusb.com) 和 Festo 的 PLC。

我已经编译了 CANopen 堆栈(CanFestival),但我该从哪里开始呢?它看起来非常复杂,我真的完全不明白。

(我的第一个目标是通过 CAN 适配器与 PLC 建立联系,并以某种方式验证它们是否能够通话。主要目标是能够通过设置一些寄存器来打开和关闭 PLC 上的一些阀门。 )

0 投票
1 回答
940 浏览

protocols - CAN 通讯问题

我开始走这条路,因为我正在审查 uCLinux 中的CAN驱动程序。总的来说,我是 CAN 新手,所以我对此进行了一些研究,但偶然发现了一个我还没有找到答案的问题。

如果 CAN 是串行接口,而CANopen没有“总线主控器”,那么 CAN 协议如何处理总线上不可避免的数据冲突?如果没有人控制您何时可以发送,那么只要有足够的设备和时间,就必须发送碰撞。

这是一个非常基本的问题,所以我可能找到了答案,只是不明白......如果有人能提供一个很好的答案/例子。

0 投票
1 回答
398 浏览

canopen - CANopen 对象字典是否可动态检索?

我有一个设备(电动机控制器),它有一些关于其 CANOpen 实现的不错的文档。但是,有些条目丢失或我认为文档有误。

是否有 SDO 或其他方式让符合 CANopen 的设备吐出包括所有信息的对象字典?

0 投票
2 回答
12596 浏览

network-protocols - 什么是 PDO 映射?

在阅读了几个 CiA 规范后,我仍然难以理解 CANopen 中的 PDO 映射、过程映像和过程数据交换。

我知道SDO用于预操作状态下的配置设置,并且具有协议开销(因为它可以传输超过 8 个字节的数据)。

在运行状态下,PDO 非常适合过程数据的输入和输出。PDO 最多只能传输 8 个字节的数据。

有一个 11 位的 COB-ID,它有一个功能代码和一个节点号。由于节点号使用 7 位,我们最多可以有 127 个节点(对于 CANopen 2.0A 网络)。

但是有四个 TPDO 和四个 RPDO,这让我很困惑。为什么需要多个 TPDO 和 RPDO?在我阅读设备配置文件的某个地方,可能会使用从 6000h 到 6FFFh 的条目来描述设备参数和设备功能,并且在此范围内最多可以描述 8 个不同的设备。但是网络中可以有 127 个节点,那么这 8 个设备是什么?

0 投票
1 回答
799 浏览

.net - CANopen API COBID

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

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

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

0 投票
1 回答
488 浏览

network-protocols - 使用 Anybus Compactcom 通过 CANopen 进行 PDO 映射和循环数据传输

我最近通过更换 Anybus Compactcom 并进行一些小的固件更新,将我的设备从 ModbusRTU 切换到CANopen 。该设备现在似乎可以作为 CANopen 节点正常运行,但我在映射 PDO 以进行循环数据传输时遇到了一些麻烦。

主机应用程序由 117 个 Anybus ADI 组成,每个 ADI 都是一个 UINT16。根据 Anybus 文档,ADI 对应于 CANopen 节点的对象字典中从 2001h 到 5fffh (ADI 1-3fff) 的对象。

当我尝试使用我的主模拟器直接从 CANopen 节点读取对象时,我每次都得到预期值,但在映射我的 PDO 后,当我尝试循环数据读取时,我只得到第一个 ADI(然后全为零)。

在我的 EDS 文件中,我像这样映射每个 ADI:

在我的主配置程序中,我将需要的 ADI 映射到 PDO 并将配置下载到主控。当我开始数据传输时,我得到的只是第一个 ADI——即使我没有映射它。只要映射了任何对象,我就从第一个 ADI 获取数据,然后再全为零。

我知道这是一个复杂的设置,这可能不足以得到一个好的答案,但我是 CANopen 新手,所以任何有 CANopen 经验的人(尤其是使用 Anybus-CC)请给我一些建议或让我知道您还需要了解有关设置的其他信息。

0 投票
1 回答
666 浏览

modbus - 用于 CANopen 和 Modbus 的 EDS

我正在开发的设备必须同时支持 CANopen 和 Modbus(RTU 和 TCP)通信。是否有任何格式的电子数据表(例如 EDS 或 XDD)可用于定义两者?

我尝试使用一些工具(Vector CANeds 和 ODVA EZ-EDS)来生成一个与两者兼容的简单 EDS 文件,甚至在文本编辑器中手动编辑文件,但每个工具的输出看起来相似,但是与对方根本不相容。

理想情况下,我想使用 CiA XDD 格式,因为这对于从我的桌面主应用程序“反序列化”来说相对简单。然而,这似乎完全是面向 CANopen 的。

任何人都可以提供的任何信息、提示、提示或指针将不胜感激。

0 投票
1 回答
1993 浏览

network-protocols - CANopen PDO 数据映射

我试图通过仅将 unsigned32 数据的前两个字节映射到 PDO 来执行 CANopen PDO 映射。是否可以这样做以及如何做?

我得到了错误代码 0604 0041(这意味着 PDO 无法映射)用于执行上述映射。

0 投票
1 回答
1613 浏览

can-bus - 缺少主心跳不会导致节点在 CANopen 系统中做出反应

我对CANopen中的心跳协议有一个奇怪的发现。也许其他人已经看到了这样的东西,也许它应该像这样工作......无论如何,这就是它的内容:

在 CANopen 中有两种基于超时的生命保护机制:第一种是节点保护,我不再赘述,因为它被认为是老生常谈了。

另一种叫做心跳。这很简单:网络上的任何参与者都会发送一条常规消息,说明其节点 ID 和状态。频率由对象 0x1017sub0 定义,称为 heartbeat-producer-time。如果设置为零,则不发送心跳。

然后任何其他参与者都可以定义它想要在网络上找到的节点数量以及两个连续心跳消息之间可能存在的最长时间。此信息作为 32 位条目存储在对象 0x1016sub1..n 中,用于该特定节点想要监听的任意数量的节点。

这些条目由节点 ID(第 22 到 16 位)和提到的心跳之间可能经过的最大时间组成,称为心跳消费者时间(在第 15..0 位中)。同样,如果该条目为零,则将被忽略。

正如您可能已经收集到的,网络主机(节点 ID 1)和从机(节点 ID 2 到 127)之间没有区别。

到目前为止的理论,现在解决我的问题:

我将网络中的一个从节点配置为主节点的心跳消费者,因此对象 0x1016sub1 中有一个条目,如下所示:0x000107D0。这意味着至少两秒钟后预计会收到来自 master 的心跳消息。

我观察到这在两个示例中有效。如果我发送主心跳一段时间然后停止,节点要么返回到预操作模式,要么发送适当的紧急消息。

如果我不发送任何主心跳消息,我希望在我启动节点(将其发送到操作模式)之后,节点最多需要两秒钟才能返回到预操作模式或发送适当的紧急消息或什至两者兼而有之。但是在我尝试的两个示例中,什么也没发生。如果我从不发送任何心跳,则节点永远不会期待一个并且只是继续运行。

这两个例子彼此非常不同。我不确定他们是否使用相同的 CANopen-stack 库。

有解释吗?

0 投票
1 回答
885 浏览

embedded - CANopen SDO 正常下载

在此处输入图像描述

在像上面那样启动一个 SDO 正常(分段)下载协议之后,客户端是否可以在下载协议仍在进行中的任何时候从服务器接收到任何心跳消息或与我们的下载协议无关的CAN消息?