我基本上理解CANopen网络中PDO映射的概念。它允许用小标题广播实时数据。
它是如何制作的?如何设置我的设备以了解如何发送/接收PDO?我需要某种软件吗?
答案 0 :(得分:4)
很多问题的答案取决于您使用的具体设备,但总的来说......
我需要某种软件吗?
您不需要专门的软件来配置CANopen设备。它们可以使用SDO通过CANbus进行配置。虽然手动构建SDO很乏味,但USB CANbus加密狗已经绰绰有余了。存在提供配置任何CANopen设备的软件的公司,例如Vector。供应商通常会提供专门的GUI来配置他们的设备,例如AMC's 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 |
+----------------+---------+