问题标签 [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.
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 不存在
如果这是一个简单的问题,我很抱歉,但我无法解决它。
can-bus - 在 SDO 块传输中可以使用的最大大小是多少?如何使用?
我正在尝试构建基于 CANOpen 原则的嵌入式系统。我构建了大部分对象字典。我主要与 SDO 沟通(主要是加急传输)。我以前曾经使用过一次 CANOpen 作为主机(所以我的限制很清楚),但是我现在在从机端。
最近我被要求通过相同的协议更新我设备的软件。为了做到这一点,我倾向于 SDO 块传输,但我不知道它是如何完成的;通过 SDO 块传输可以传输的最大大小是多少?
在 SDO 块传输中,如CiA301标准中所定义。
但是考虑块和序列:
相比之下,在同一个初始化中,我们设置了一个 m 值(由索引和子索引组成)。
哪一个(或没有)是真的?我在这里很困惑。
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 中模拟主项目,那么我可以看到来自从站的输入吗?
感谢你的回复!
automation - CANopen 中的 PDO 链接
在 CANopen 网络中,所有设备(客户端,正式的“从站”)都与中央控制器(主站)通信。因此,没有从站侦听过程数据对象 (PDO) 并因此侦听另一个从站的 CAN 标识符。使用 PDO Linking,PDO 可以在没有主站的情况下直接交换。因此,必须相应地调整 CAN 标识符。
即使互联网上有很多关于 PDO 链接的资料,我也没有找到任何具体的例子(例如 2 个客户端设备的示意图链接)。您能否推荐任何 PDO 链接资源(书籍、文章、网站……)?
资料来源:倍福信息系统
communication - CANopen 透明模式背后的理念是什么?
有很多文献可用于理解 CANopen Master/Client 的概念,但是我找不到任何描述 CANopen 透明模式原理的资料。我能找到的唯一来源是这本Siemens Manual。
有人可以全面解释这个概念吗?谢谢!
c - 启用操作后 CANOPEN SYNC 超时
我是 CANOPEN 的新手。我编写了一个通过 PDO1 读取实际位置的程序(默认是状态字 + 实际位置)。
如果我删除“代码 2”(伺服处于 Switch_on_disable 状态),我可以在每次同步发送时读取位置。但如果我使用“代码 2”,驱动程序会出现错误“同步帧超时”。我不知道驱动程序有问题或我的代码有问题。我的代码有问题吗?谢谢你!
canopen - CANOpen SDO Block 上传段序号
抱歉,如果问题很愚蠢或答案在这里,我找不到它,我也无法从文档(DS301)中理解这一点。我现在正在实现一个 CANOpen 节点 SDO 服务器,并且有一个问题。传输分段数据时,每个分段都有一个编号(从 1 到 127),最终客户端以它收到的最后一个分段的编号进行回答。然后服务器重新传输客户端丢弃的所有段。这里我有一个问题,CANOpen 节点以序列号 1 开始新的传输并重新传输段。我们的合作伙伴从客户端收到的最后一个序列号开始重传。我附上了一个屏幕作为例子。能否请您写下为什么 CANOpen 节点以 1 开头。谢谢!
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设备和电池之间建立通信。这对于构建数据包的任何见解都会有所帮助。