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

canopen - 我可以自动配置(默认)PDO 布局吗?

如果我调用ecrt_slave_config_reg_pdo_entry创建域偏移量,我会收到以下消息:

注册 PDO 条目失败:没有这样的文件或目录

我相信我必须打电话给ecrt_slave_config_pdos,我现在不是。但是,我不明白为什么我必须调用它。就我而言,我想与之交谈的奴隶已经连接到总线。如果我进入ec cstruct -p [SLAVE_POS]终端,我会得到 PDO 布局。

为什么我可以从终端命令获取所有输入参数ecrt_slave_config_pdos,但 EtherCat 不能(或不想)配置从站本身?从站配置可以自动化吗?

0 投票
1 回答
2664 浏览

can-bus - 如何设置 PDO 映射?

我基本了解 CANopen 网络中 PDO 映射的概念。它允许以小标题广播实时数据。

它是如何制作的?如何设置我的设备以了解如何发送/接收 PDO?我需要某种软件吗?

0 投票
1 回答
1609 浏览

pdo - LPC11Cxx 的 CANopen PDO 示例代码

我使用 LPC11Cxx 演示测试并理解了 SDO rx 和 tx。但这个演示堆栈只有 SDO 函数和驱动程序API。我想为此实现 PDO。有哪些示例代码或实现步骤或功能?

我想定期从从节点向主节点发送 68(ADC 数据)字节的数据。我怎样才能做到这一点?

对于上述任务,SDO 是否优于 PDO?我需要多少个 PDO 才能发送 64 字节的数据?如何设置 PDO 映射和参数?主节点和从节点有什么区别?我如何区分代码?

0 投票
2 回答
102 浏览

canopen - 多接口卡的 CANopen 配置文件

我想构建一个基于微控制器的 CAN 节点卡,它具有 UART、SPI 和 I²C 等接口,可连接不同的外围设备和接口,例如 EIA-485 计数器或 SPI 数字 I/O 扩展器。我想为卡定义一个足够灵活的配置文件,以适应任何可能的配置,并包括可以连接到此类节点卡的任何设备。由于 CANopen 配置文件似乎相当严格,我研究了 CANopen 虚拟设备,但这似乎也不是答案。

是否有此类功能的标准,或者我在未知水域航行?

0 投票
1 回答
1107 浏览

embedded - CANopen STORE 和 RESTORE 对象有什么作用?

CiA 301 CANopen 协议规范定义了设备可以实现以保存和恢复参数的两个对象:

对象 1010h -Store Parameters

当设备实现该对象时,CANopen 主站将值“save”写入对象的其中一个子条目,以将相应的参数集写入非易失性存储器。

对象 1011h -Restore Default Parameters

当设备实现该对象时,CANopen 主站将值“load”写入对象的其中一个子条目,以恢复相应的要恢复的默认参数。

设备重置

CiA 301 规范规定“默认值应在 CANopen 设备复位后设置为有效” - 通过电源循环、NMT 复位节点(子索引 01h 至 7Fh)或 NMT 复位通信(子索引 02h)。

什么是“默认值”?

“默认值”是否意味着:

  • 对象设置的值Store Parameters?在这种情况下,如何将设备重置为原始出厂默认设置?
  • 原厂默认设置?如果是这样,应该什么时候恢复保存的参数?
  • 上述的组合,即通过设备重置恢复出厂默认设置,并Store Parameters通过对象恢复值Restore Default Parameters
  • 其他定义?

我了解从对象读取以获取设备功能并将保护模式写入它们以触发所需操作的机制。我还知道要保存哪些值以及要为不同的子索引保存哪些子集。

我不明白的是什么时候应该使用工厂默认值(如果有的话)而不是保存的值,反之亦然?

0 投票
1 回答
1648 浏览

c - broadcast file transfer via CAN bus (CANopen?)

I'm building a system consisting of many (> 100) equal nodes all connected via CAN bus. The idea is that all nodes must have the same information, any node may generate an event and will broadcast it via CAN. For those events, the 8 byte payload provided by a CAN frame are enough and a broadcast will reach all nodes on a bus, so the requirement is met.

Now I also want to distribute firmware updates (or other files) to all nodes via CAN, obviously here I need some sort of fragmentation and the 8 bytes are a bit scarce.

Someone suggested CANopen to me to save me some work, but it appears that it only supports peer-to-peer mode with SDO block transfer and no broadcast.

Is there already a protocol that supports distributing files to all CAN nodes or do I have to come up with my own?

If so, what considerations should I take?

I haven't used CAN before.

0 投票
1 回答
954 浏览

can-bus - 我如何计算标准 CAN 2.0A 数据帧中的填充位

我有一个包含 8 字节数据的 CAN 标准 2.0A 帧。例如 CAN 帧数据“00 CA 22 FF 55 66 AA DF”(8 字节) 现在我想检查在这个 CAN 帧中将添加多少填充位(位填充)。计算最坏情况位填充情况的标准公式如下:64+47+[(34+64-1)/4] ->64 ::数据位和 47 :: 开销位 2.0A

如何计算此示例 CAN 消息中的实际填充位?任何评论,建议都将受到热烈欢迎。

0 投票
0 回答
203 浏览

canopen - DS402如何配置第一个TPDO

我想配置一个 TPDO 来获取状态字。有人知道怎么做这个吗?如果我想配置 TPDO 1,COBID 必须是 1800h 对吗?还有什么必须指定的?

提前致谢。

0 投票
1 回答
344 浏览

canopen - 是否可以通过 SDO 轮询 CANOpen 变量,如果可以,如何?

我已经建立了一个由 3 个引擎组成的 CANOpen 网络,每个引擎都有自己的 CANOpen 从站。我有一个 Hilscher CifX 板作为 CANOpen 主机。

通过将 RPDO 和 TPDO 直接读写到 Hilscher 板的进程内存中,我实现了正确的引擎命令。

现在,我尝试通过 Sycon.NET(Hilscher 配置工具)设置网络以将其他变量映射到 PDO,但我要捕获的变量没有出现在列表中。我认为这是因为 EDS 提到PDO Mapping = 0了这些变量。

我想每 20 毫秒左右读取一次这些变量的值。我可以通过 SDO 轮询设备来做到这一点吗?如果是这样,怎么做?

0 投票
1 回答
2075 浏览

canopen - CANopen over EtherCAT (CoE)

  1. CANopen 是点对点通信,而 EtherCAT 是基于总线的。点对点意味着会有节点地址。但这在 EtherCAT 中是多余的。所以我想知道如何在 CANopen over EtherCAT 中处理这个节点地址字节。我尝试搜索信息,但找不到任何具体的信息。
  2. 此外,我假设 CANopen 设备的循环和非循环数据仅通过 EtherCAT 循环发送,因为它是主触发的循环传输协议。这基本上意味着我不能在事件触发时在 EtherCAT 上发送异步的事件触发信息(这对于基于 CAN 的优先级是违反直觉的,因为它们都具有相同的优先级)。如果我对此有误,请纠正我。另外请告诉我如何使更高优先级的字节比低优先级的字节更快地到达(假设两者同时发生并假设在新帧开始时有带宽可以发送两者)。