在阅读了几个CiA规范后,我仍然难以理解CANopen中的PDO映射,过程映像和过程数据交换。
我知道 SDO 用于处于运行前状态的配置设置,并且具有协议开销(因为它可以传输超过8个字节的数据)。
在运行状态下,PDO非常适合过程数据的输入和输出。 PDO只能传输最多8个字节的数据。
存在11位的COB-ID,其具有功能代码和节点编号。 由于节点号使用7位,我们最多可以有127个节点(对于CANopen 2.0A网络)。
但有四个TPDO和四个RPDO让我感到困惑。为什么需要多个TPDO和RPDO?在我读取设备配置文件的某个地方可以使用6000h到6FFFh的条目来描述设备参数和设备功能,并且在此范围内可以描述多达8个不同的设备。但是网络中可能有127个节点,那么这8个设备是什么?
答案 0 :(得分:6)
PDO是用于更高效和异步消息的消息类型。 PDO可以在定时器上发送,以响应SYNC消息或响应事件(如数字输入改变)。 CAN总线消息有效负载的所有8个字节都可用于您的数据。这与只有4个字节可用的SDO形成对比(有多个消息SDO,如块传输)。
PDO一次只能传输8个字节,因为这是CAN总线消息的最大传输大小。将此与SDO进行对比,其中必须发送命令字节和3字节地址,最多留下4个字节的信息。
默认情况下,设备有4个RPDO和4个TPDO。 4只是默认的PDO数量。可以安排更多,但您有责任为他们创建“渠道”。这是选择仲裁ID并确保总线上没有其他设备使用该ID进行通话。您需要多个PDO,因为:
0x180+$NODEID
赢得了0x280+$NODEID
等的公交仲裁TPDO是从设备传输的消息,而RPDO是接收到的消息并写入设备对象字典。
对象字典定义了CANopen设备的接口。使用16位索引和8位子索引来寻址字典。字典分为范围。 0x6000到0x6FFF是分配给设备配置文件变量的索引范围。设备配置文件为更专业的设备类提供标准化接口。
PDO映射是如何商定PDO中包含的信息。 PDO映射是设备对象字典中的条目,与任何其他条目一样。 3字节索引,子索引和以位为单位的参数大小在UNSIGNED32中编码。
答案 1 :(得分:1)
我喜欢将PDO(过程数据对象)看作类似于可以编程到CANopen节点的功能。
最近,我想制作一个移动电机的命令,并报告当前和编码器位置。我定义了一个PDO映射,其中包含三个SDO对象 - 移动(接收PDO)和两个发送PDO(当前报告和编码器报告)。
一旦定义并保存到节点中,我就可以发送一个带位置的PDO命令并获取当前和位置。
注意只有在总线上发送SYNC命令时才会执行PDO。然后,所有具有未执行PDO的节点处理它们并同时响应所有节点。
我们用它来让7个电机同时移动(当设置SYNC时)。