问题标签 [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.
codesys - Codesys 和 CANopen 多节点 ID
如果我有带有 CANopen 管理器的 Codesys 项目,并且我将 CANopen 从节点添加到节点 ID 为 19 的 CAN,系统对我来说很清楚,但如果我添加两个具有相同出厂预设节点 ID 19 的相同传感器设备,我该如何更改两个中的任何一个的节点ID?我一点主意都没有。设备支持 LSS,但我不知道如何在有或没有它的情况下实现 nodeid 更改。我应该对其进行编码还是 canopen 管理器以某种方式更改 nodeid。欢迎任何想法。当然,我可以通过将第一个设备添加到 CAN 来更改它并更改它,然后我可以将第二个设备添加到 CAN 总线。但是我想在两者同时在 CAN 总线上时动态更改,所以它应该与未来生产线的情况相同。
python - CANopen 设备更新太慢
在 Revolution Pi 上使用 CANopen 我有来自 MLS(磁力线传感器)的数据,但是接收到的数据对于需要来说太慢了,因为更新需要即时。我需要做什么才能使数据更新更快?
CAN 设置使用:
我使用 Python-can 库创建了一个基本程序来调查它是否会更快地轮询:
打印的数据消息数据(类似于 candump 的数据)应该在一秒钟内多次发布新消息,但是我在来自传感器的消息之间等待 <1 秒到 > 10 分钟
embedded - CANOpen 网络负载高于预期
我正在使用通过 CANOpen 网络连接到 4 个从机的主计算机进行项目。
在每个时间步,计算机从每个从机接收测量信息,并向它们发送控制信息。每次采样总共收到 4 条消息,发送 4 条消息。
发送的消息是一个带有 6 个数据字节的 PDO(8 个字节包括 COB-ID) 接收的消息是一个带有 8 个数据字节的 PDO(10 个字节包括 COB-ID)
我的 CAN 网络配置为 1Mbit/s,我以 1000 Hz(1 ms 采样时间)运行我的程序。由于所描述的消息产生的总负载为 576 位/周期,因此网络中预期的总负载为 576kbit/s,即57%。
然而,我看到的是:
- 控制计算机测量约 86% 的负载(最小值为 68%,峰值为 100%)。
- 我连接到网络的 USB CAN 总线分析器记录的消息流量(按计数)约为我名义预期的一半(即,每个周期发送 4 条,接收 4 条,持续 50 秒应产生 50k 条消息,而我只看到18-25k)。此外,我每个周期都会从从属设备收到 1-2 条网络过载的错误消息。在指出之前,即使将这些消息的大小计算为流量的一部分,也无法解释负载异常。
我想知道的是我计算 CANOpen 网络负载的方法是否正确。例如,是否有任何特定于协议的握手、CRC 或任何类型的额外字节发送以使网络简单地工作?我在CANOpen 的 wiki 页面上看不到任何内容,但我知道原始CAN 总线标准中的消息有这样的附录。
python - 实现 Python CANopen
我是 CANopen 的新手,我正在努力使用它来连接微处理器和电池管理系统。我有几个问题。
制造商提供的电池管理系统等对象字典、电子数据表和设备配置文件?
我必须自己生成这些文件吗?
任何帮助将不胜感激!
can-bus - Automatic Node ID assignment for LSS Slaves without LSS Master
I am currently doing a system design with CANopen communication and I am curious about the following question.
In the system a device is programmed to have no Node-Id assigned (255) on startup. Normaly a LSS Master now has to assign a specific Node-Id to the device to work properly. However, if there is no LSS Master functionality implemented in any other bus node, does the CANopen standard allows the the unconfigured device to assign itself a predefined ID after a timeout?
In my opinion this is not possible because it can lead to undefined system states but I could not find anything in the standard documents.
embedded - CAN BUS 协议栈
有人可以向我解释什么是 CAN BUS 协议栈吗?是 CAN BUS+ 更高层,比如 7 层的 CANopen 还是其他什么,有人可以解释我如何使用 CAN 堆栈,如何将它与 CAN 总线连接,以及为什么需要它?
谢谢
plc - TwinCAT CoE:写入 SDO
我对 EtherCAT/CANopen 世界很陌生,并试图实现一个自定义从站。到目前为止,从站正在通过一致性测试,并且想要写入我的从站数据对象之一,从站连接到 CX5120,它被 XAE 发现并且还显示了从站设备。为此,我将我的 ESI 文件复制到了 TwinCAT 文件夹 (C:\TwinCAT\3.1\Config\Io\EtherCAT)。
我创建了一个小型结构化文本 PLC 程序,它使用 FB_EcCoESdoWrite 将数据写入地址 0x607A。但是当我将其设置为活动并尝试连接时,Visual Studio 告诉我该设备至少需要一个 Sync Master。此外,当将 bExecute 设置为 TRUE 时,我从函数中收到错误消息。据我了解,我必须在我的 ST 程序和从站之间链接变量,但我不认为需要链接变量,因为 afaik 函数调用应该管理传输?写入 ESC 的 SDO 的步骤是什么?有人可以告诉我我缺少什么或手头有一个小例子吗?
can-bus - CANopen 帧长什么样, 2. Transmit PDO 和 Receive PDO 是什么意思?, 3. PDO 映射如何以编程方式完成?
我无法理解 CANopen 协议。我知道 CAN 的工作原理以及 CAN 帧的外观。CAN 数据或远程帧包含开始帧、消息标识符字段、DLC、RTR、数据(有效负载)、CRC、ACk 字段等。我知道 CANopen 标准利用 CAN 总线发送 CAN 消息。但是,CANopen 的 CAN 帧看起来不同,它在消息标识符字段中包含 COB ID+节点 ID,在有效负载字段中,它包含对象字典相关信息。因此,我想问以下问题:
对象字典是如何定义的。我知道它是一个
包含 ID、子 ID、有关其包含的数据的数据类型信息、相应数据
条目的制造商信息等的表。它们是否都被硬编码为
软件堆栈中的 m*n 多维数组?我对传输 PDO 和接收 PDO 的术语感到困惑。它类似于 CAN 数据帧和 CAN 远程帧吗?
什么是 PDO 映射以及如何识别对象字典中的哪个对象 ID 映射到 PDO 映射
表中的哪个对象 ID。两者都使用相同的术语 Object ID ?
我实际上对 CANopen 很陌生,我根据我最初的理解提出了这些问题。我在 CiA 网站上找不到详细的解释。
先感谢您
克里希纳
can-bus - CANOpen 协议开销
有人可以帮助我了解 CANOpen 协议在 CAN 总线上增加了多少开销。换句话说,如果一个节点正在生成一个 8 字节的应用数据的 CANOpen PDO 消息,那么 CANOpen 协议本身会增加多少头/开销?我不是在谈论 CAN 总线本身的开销,即 CRC、DLC、RTR、EOF 和其他位。使用 CANOpen 与直接使用 CAN 相比,总线上的额外负载是多少。谢谢。
drive - 我可以通过 CoE 访问带有 twincat3 的 Lenze 9400 Highline 伺服驱动器中的设备命令吗?
我想访问和更改 Lenze 9400 Highline 驱动器上的参数,特别是设备命令。我知道我可以通过带有 Twincat3 的 CANOpenOverEthercat 来做到这一点,但我不知道具体如何。我已经在我的 Twincat 项目中将驱动器作为设备。