3

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

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

4

1 回答 1

7

很多问题的答案取决于您使用的特定设备,但总的来说......

我需要某种软件吗?

您不需要专门的软件来配置 CANopen 设备。它们可以使用 SDO 通过 CANbus 进行配置。尽管手动构建 SDO 很繁琐,但一个 USB CANbus 加密狗已经绰绰有余。存在提供软件来配置任何 CANopen 设备(例如Vector )的公司。供应商通常会提供专门的 GUI 来配置他们的设备,例如AMC 的 DriveWare。如果有可用的,您可能应该使用它。

它是如何制作的?

与 SDO(服务数据对象)相比,PDO(过程数据对象)不包括有关消息内容的元数据,并且 TPDO 可以在没有来自主机的特定请求的情况下传输。这允许 PDO 更有效地使用总线。诀窍是 PDO 消息的内容必须提前达成一致。此协议是使用设备对象字典的 PDO 通信参数和 PDO 映射参数条目指定的。它们如何配置或是否可以配置取决于设备。最常见的 PDO 可以在运行时通过 SDO 在预操作模式期间进行配置。尽管如果您的设备提供的默认值足够,这可能(并且很可能)是不必要的。

PDO 的内容通过设备对象字典中相应的“映射参数”进行配置。TPDO 映射参数从索引 0x1A00 开始。TPDO0 对应于 0x1A00,TPDO1 对应于 0x1A01 等。映射保存在子索引中,并被编码为 32 位无符号整数。格式首先是 16 位索引,然后是 8 位子索引,最后是要使用的参数的大小(以位为单位)。大小的粒度取决于设备。有些可能只提供字节级粒度。例如,如果您在对象字典中的 0x2000,0x02 处有一个 REAL32 变量,您希望将其作为 TPDO0 的唯一参数发送,您可以将 0x1A00,0x01 设置为 0x20000220。RPDO 以相同的方式配置,其索引从 0x1600 开始。

下一个难题是通信参数。RPDO 通常不需要以这种方式进行配置。TPDO 确实需要配置。索引从 0x1800 开始,并以与映射参数索引相同的方式对应于 TPDO。

COBID        (0x01) UNSIGNED32 Arbitration/COB-ID PDO will use.
XMIT_TYPE    (0x02) UNSIGNED8 When PDO is transmitted
INHIBIT_TIME (0x03) UNSIGNED16 Minimum time between PDO messages (useconds)
EVENT_TIME   (0x05) UNSIGNED16 Timeout for sending (mseconds)

PDO 消息布局采用关联的 TPDOnCOMPARAM,COBID 作为仲裁 ID,并附加来自 TPDOnMAPPARAMS 的每个映射参数。对于 TPDO,这由设备在内部完成并发送。对于 RPDO,主设备执行此操作,发送 PDO,设备解码将每个参数写入其对象字典的消息。

如何设置我的设备以了解如何发送/接收 PDO?

默认连接集包括四个 TPDO(从节点发送)和四个 RPDO(由节点接收)。根据您的设备,可以指定更多(每个最多 512 个)。

只有当 CANopen 节点进入“操作模式”时,才会发送/接收 PDO。为此,您需要发送 NMT(网络管理)启动命令(代码说明符 = 1)。使用 0 作为节点 ID 表示所有节点都将响应的广播消息。NMT 消息: COB-ID 为 0 有效负载为 2 个字节

NMT Message Format (CAN-bus payload):
+--------------------------+
| Code Specifier | Node ID |
+----------------+---------+
|       ff       |    ff   |
+----------------+---------+
于 2015-01-18T16:41:47.090 回答