问题标签 [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 回答
84 浏览

canopen - CANOpen SDO 确认帧的大小

我正在编写自己的 CANOpen 堆栈,我想使用 C 实现 SDO 服务器。CiA CANOpen 应用层文档指定 SDO 请求和确认帧如下所示:

在此处输入图像描述

并提供了一些解释如下:

在此处输入图像描述

根据我对这张图片的解码,我推测我应该在 SDO 确认帧中发送 8 个字节,但是这 7 个字节将只包含 0。

这个对吗?

PS:如果图片不清楚,请见谅。

0 投票
0 回答
128 浏览

git - 尝试添加 CANopenNode 库但出现错误

https://github.com/Alphatronics/mbed-os-example-canopen试图为 stm32f429zi nucleo 添加这个库,但无法这样做。尝试手动安装和使用 mbed studio 安装。

使用“mbed import mbed-os-example-canopen”手动安装时得到了这个:错误:无法克隆存储库(https://github.com/ARMmbed/mbed-os-example-canopen

我也使用了 git clone 并得到了这个:remote: Repository not found。致命:未找到存储库“https://github.com/ARMmbed/mbed-os-example-canopen/”(也尝试更改存储库,但没有成功。)

最后,使用 mbed studio 在尝试导入库时出现此错误:处理库https://github.com/Alphatronics/CANopenNode/时发生错误。提交 a8e50277052bfb3194358eda21b663a065265d7d 不存在

如果这是一个简单的问题,我很抱歉,但我无法解决它。

0 投票
1 回答
443 浏览

can-bus - 在 SDO 块传输中可以使用的最大大小是多少?如何使用?

我正在尝试构建基于 CANOpen 原则的嵌入式系统。我构建了大部分对象字典。我主要与 SDO 沟通(主要是加急传输)。我以前曾经使用过一次 CANOpen 作为主机(所以我的限制很清楚),但是我现在在从机端。

最近我被要求通过相同的协议更新我设备的软件。为了做到这一点,我倾向于 SDO 块传输,但我不知道它是如何完成的;通过 SDO 块传输可以传输的最大大小是多少?

在 SDO 块传输中,如CiA301标准中所定义。

但是考虑块和序列:

相比之下,在同一个初始化中,我们设置了一个 m 值(由索引和子索引组成)。

哪一个(或没有)是真的?我在这里很困惑。

0 投票
0 回答
39 浏览

simulation - 通过 CANOpen 将从硬件 ECU 连接到 Codesys 主软件

我想测试一下,我的从属 ECU(B&R X20IF1043-1)是否在 CANBus(CANOpen)上正确配置。幸运的是,我有 Master (Topcon Opus A3) 的 Codesys-Project,但是,我没有主硬件。我可以在主项目中插入 .eds 文件,看看 .eds 是否配置正确。

但是,我想知道,是否有办法将从属设备(B&R X20IF1043-1)的硬件连接到 Codesys 主项目(可能使用 PCAN USB)?如果我在 Codesys 中模拟主项目,那么我可以看到来自从站的输入吗?

感谢你的回复!

B&R X20IF1043-1PCAN-USB的链接。

0 投票
1 回答
119 浏览

automation - 配置 .eds 文件以映射 CANopen 客户端 PLC 的通道

为了将 PLC 用作客户端(以前称为“从站”),必须配置 PDO 通道,因为制造商的默认值通常不合适。就我而言,我需要 PDO,因此发送 INT 值而不是默认的 UNSIGNED8(参见图片)。

在此处输入图像描述

因此我的问题是:您会推荐什么样的工作流程来映射 CANopen 客户端 PDO 通道?

0 投票
1 回答
96 浏览

automation - CANopen 中的 PDO 链接

在 CANopen 网络中,所有设备(客户端,正式的“从站”)都与中央控制器(主站)通信。因此,没有从站侦听过程数据对象 (PDO) 并因此侦听另一个从站的 CAN 标识符。使用 PDO Linking,PDO 可以在没有主站的情况下直接交换。因此,必须相应地调整 CAN 标识符。

即使互联网上有很多关于 PDO 链接的资料,我也没有找到任何具体的例子(例如 2 个客户端设备的示意图链接)。您能否推荐任何 PDO 链接资源(书籍、文章、网站……)?

资料来源:倍福信息系统

0 投票
1 回答
73 浏览

communication - CANopen 透明模式背后的理念是什么?

有很多文献可用于理解 CANopen Master/Client 的概念,但是我找不到任何描述 CANopen 透明模式原理的资料。我能找到的唯一来源是这本Siemens Manual

有人可以全面解释这个概念吗?谢谢!

0 投票
2 回答
88 浏览

c - 启用操作后 CANOPEN SYNC 超时

我是 CANOPEN 的新手。我编写了一个通过 PDO1 读取实际位置的程序(默认是状态字 + 实际位置)。

如果我删除“代码 2”(伺服处于 Switch_on_disable 状态),我可以在每次同步发送时读取位置。但如果我使用“代码 2”,驱动程序会出现错误“同步帧超时”。我不知道驱动程序有问题或我的代码有问题。我的代码有问题吗?谢谢你!

0 投票
0 回答
72 浏览

canopen - CANOpen SDO Block 上传段序号

抱歉,如果问题很愚蠢或答案在这里,我找不到它,我也无法从文档(DS301)中理解这一点。我现在正在实现一个 CANOpen 节点 SDO 服务器,并且有一个问题。传输分段数据时,每个分段都有一个编号(从 1 到 127),最终客户端以它收到的最后一个分段的编号进行回答。然后服务器重新传输客户端丢弃的所有段。这里我有一个问题,CANOpen 节点以序列号 1 开始新的传输并重新传输段。我们的合作伙伴从客户端收到的最后一个序列号开始重传。我附上了一个屏幕作为例子。能否请您写下为什么 CANOpen 节点以 1 开头。谢谢!

0 投票
1 回答
597 浏览

pdo - 使用python canopen包在两个节点之间进行CANopen协议通信

我有两个 USB 转 CAN 设备(can0 和 can1),它们都连接到安装了 socketcan 的 Linux 机器。我已经阅读了 CANopen 协议的基础知识,我还没有看到任何可以使用 Python CANopen 库在两个 CANopen 设备之间建立通信的示例。

我在文档中读到每个设备都必须有一个 .eds 文件,所以我从 christiansandberg github 的 Python CANopen 库中获取了一个示例 .eds 文件,并尝试建立通信并使它们使用 PDO 相互通信,但我不能能够做到这一点。

我们有一个电池并想与它通信,电池工作在可以打开的协议上,他们为电池提供了 .eds 文件。我猜一个带有 CANopen Python 库的 usb2can 设备可以完成这项工作。但是我只是不知道如何在usb2can设备和电池之间建立通信。这对于构建数据包的任何见解都会有所帮助。