问题标签 [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.
canopen - CANopen 禁止定时器的正确操作是什么?
我知道 CANopen 禁止计时器的操作是为了确保同一消息的连续传输之间的最短时间,但规范并没有明确说明如果数据在禁止时间内发生变化(并且传输正在发生变化)该怎么办州)。我应该在禁止计时器到期时缓冲数据并传输它,还是在计时器到期后丢弃它并等待更改?
我的假设是,由于没有明确定义,我可以选择我想要的任何方法,但我会感谢任何有经验的架构师/开发人员对此的投入。谢谢。
python - RuntimeError: Not connected to CAN bus 这个怎么解决
我在 python 上运行此代码以通过 CANopen 和 CANbus 进行机器控制,但我收到此错误,请帮我解决这个问题。
回溯(最近一次通话最后):
python - 使用 *.dbc 文件转换 CANopen 原始数据的工具?
我对 CANopen 很陌生,并且在黑暗中也有点拍摄......我想知道 R 或 Python 中是否有工具或包可以将从 CANopen 设备记录的原始数据转换为人类可读的值,使用 *.dbc 文件?有人有这方面的经验吗?预先感谢您的回答。
can-bus - 未使用的字节是否设置为零以响应 SDO 读取?
我发送和 SDO 请求读取 1 字节值,如下所示:
设备响应:
0x4F 表示返回值只有 8 位宽,只设置了字节 4。字节 5、6 和 7 呢?标准是否保证它们为零?
c# - 使用 XML 并向其中添加 c# 逻辑以进行配置
我正在开发软件来配置设备以通过 CANOpen 进行通信。在 CANOpen 中有一个对象字典 (OD) 的概念,它在消费者和生产者之间共享。它充当通信端点之间的合同。
为了自定义我们想要在应用程序中可视化的内容,我们正在构建一个 XML 配置文件。一个例子是可以在设备上执行的命令。例如,您需要将机器人的手臂向上移动 500 毫米。然后我希望能够将此命令定义为“移动臂 Z 轴”并指定具有特定约束(最小值、最大值等)的特定类型的参数。
我想采用的方法是使用每个设备的 xml 文件,其中可以定义所有这些步骤。然而,它确实需要我使用特定的解析规则在 xml 中编写 c# 代码,例如任何代码都应该在“{{”“}}”括号之间或使用特定元素(例如<SetVariable>
)。
这个想法是在解析语法后使用 Roslyn 脚本 api 来执行和评估代码。
我想知道您的想法,以及您是否知道处理此案的更好方法。我有一个问题是我有有限的方法来防止恶意代码潜入。然而,代码只能在本地机器上运行,而不是在云或另一台服务器上,所以你只会弄乱你自己的设备.
c - canopen对象字典中的store参数(1010)可以写入什么设备状态
我试图弄清楚,我可以通过写入1010.01
CANopen 对象字典中的存储索引来存储当前配置的状态。我尝试在运行前状态下执行此操作,但出现此错误
值得注意的是,我将 CANopen over EtherCAT 与 SOEM 库一起使用。
canopen - CANOpen 同一个对象映射到多个 TPDO
我有一个带有多个 TPDO (4) 的从设备,用于发送某些传感器数据。每个 TPDO 有大约 4 个字节的数据,我想在帧中插入一个“计数”以指示数据不是陈旧的。我的计划是为此创建一个对象条目,并将其作为第 5 个字节映射到每个 PDO。CANOpen 标准是否允许这样做,这是一个好主意吗?
PS:我没有在 1 个 TPDO 中发送所有 8 个字节,因为 1 个 TPDO 中的 4 个字节彼此有关联。
can-bus - 在 CANopen 中发送超过 8 字节数据的事件(异步数据)
我们正在开发一个典型的 CANbus 网络系统,您可以称之为控制器来组织许多设备。
设备需要配置,控制器使用常规对象字典项(当前在制造商特定范围内)写入(也可能读回)。
设备还使用超过 8 个字节的数据执行操作(命令),我们通过在设备对象字典中只写入项目并依靠 SDO 的常规分段/取消分段来解决这个问题。(不知道这是否是CANopen的做事方式,但似乎合理)。
但是,设备也会产生事件(比如某些传感器数据超过某个阈值),从而导致来自设备的异步数据超过 8 个字节。PDO 用于发送异步事件数据,但它只能包含 8 个字节。设备可以将数据写入控制器上的对象字典项,但这似乎不像 CANopen 方式。我对吗?
我们想出的最好办法是向控制器发送一个 PDO,通知控制器设备上的对象字典中有更多数据可用。
任何具有 CANopen 背景的人都可以找到解决此问题的最佳(CANopen)方法吗?
由于我经常重复 8 个字节,我们可以放心地假设这个网络没有运行 CAN-FD。
raspberry-pi - RPI/Raspbian SocketCAN 配置问题
Python 和 RPi n00b 在这里。试图让 CANopen 在我的 RPI 上工作,并认为我已经完成了 8/10 的通信方式。
目标设备是一个 RPi 3+,安装了 Raspbian Buster 和 5.4.51-v7+ linux 内核,连接到 Kvaser Leaf USB CANopen 适配器。众所周知,CANopen 适配器硬件很好,可以很好地与 Windows 软件配合使用。
相关信息: - 已安装 can-utils - 已安装 python-can 4.0.0 -
似乎已成功安装 Kvaser 驱动程序(最终使 make 完成且没有错误) - vcan 似乎工作正常 - 已使用此方便成功传输和接收测试数据包使用 can-utils 的虚拟 can 适配器
我最初可以设置罐头插座:
但是当我尝试初始化实际硬件时,它会失败并出现以下错误:
显然我错过了一些东西,但无法弄清楚是什么。我注意到其他人也有类似的问题(尽管硬件不同)。请告知解决方案和 TIA。
can-bus - CANopen 中是否有正式的归零方法
我有一个带有多个与 CANOpen 通信的子系统的系统。有一个带有屏幕的主单元(用于人机界面和其他东西)和用于次要操作的子单元(如采样按钮状态,管理电源,进行测量......)。我们为这个系统定义了一个基于 CANOpen 的通信协议。子系统定期与 TPDO 消息共享它们的条件,并根据与 RPDO 消息一起发送的主单元命令执行操作。还有一些 NMT 也在使用中。所以我被要求在这个协议中添加一个新命令,zeroize。该命令将被广播发送,它将导致所有人删除软件。这样做的正确方法是什么?也许我可以使用 RPDO?我们是否允许在 CANopen 中定义新的 NMT 命令?也许我可以使用 NMT 来做到这一点,但使用尚未使用的新命令帽?在此先感谢 Ip。