如何设置 PDO 映射



我基本上理解了CANopen网络中PDO映射的概念。它允许广播带有小标头的实时数据。

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

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

我需要某种软件吗?

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

它是如何制作的?

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

PDO的内容通过设备对象字典中相应的"映射参数"进行配置。TPDO 映射参数从索引0x1A00开始。TPDO0 对应于 0x1A00,TPDO1 对应于 0x1A01 等。映射保存在子索引中,并编码为 32 位无符号整数。格式首先是 16 位索引,然后是 8 位子索引,最后是要使用的参数的大小(以位为单位)。大小的粒度取决于设备。有些可能只提供字节级粒度。例如,如果您在对象字典中有一个 REAL32 变量,0x2000,0x02您希望作为 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 个),具体取决于您的设备。

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

NMT Message Format (CAN-bus payload):
+--------------------------+
| Code Specifier | Node ID |
+----------------+---------+
|       ff       |    ff   |
+----------------+---------+

最新更新