4. 多轴控制中的过程数据对象PDO映射设计
在多轴运动控制系统中,PDO(Process Data Object)映射决定了每个通信周期里主站与从站之间到底交换哪些数据、以什么顺序交换、占用多少字节。它直接决定了控制环路的实时性、同步精度以及可扩展的轴数。很多现场问题——比如某个轴位置反馈延迟、某个IO状态偶尔丢失、总线周期无法压缩——根源往往不在控制算法,而在PDO映射与SM/FMMU配置不合理。本节围绕“根据对象字典规划映射、配置SM与FMMU、完成启动参数设置”这一主线展开。
一、先理解PDO映射的三层结构
EtherCAT从站内部的数据交换依赖三个层次协同:对象字典是数据源与数据宿,每个可映射对象都有唯一的16位索引和8位子索引,例如0x6041(状态字)、0x6064(位置实际值)、0x607A(目标位置);SM(SyncManager)负责管理缓冲区与方向,通常SM2为输出(主站→从站,RxPDO),SM3为输入(从站→主站,TxPDO);FMMU(Fieldbus Memory Management Unit)把从站物理地址映射到主站逻辑地址空间,使主站可以用一段连续逻辑内存访问所有从站的过程数据。
三者关系可以概括为:对象字典决定“映射什么”,SM决定“往哪个方向、用哪块缓冲”,FMMU决定“映射到主站逻辑地址的哪一段”。任何一层配置错误,都会导致PDO数据错位、周期抖动甚至从站无法进入OP状态。
二、从对象字典出发规划PDO内容
规划PDO的第一步不是打开主站配置软件,而是先查清每个从站的对象字典。以一台支持CiA402协议的伺服驱动器为例,其TxPDO(从站→主站)通常需要包含:状态字0x6041(16位)、位置实际值0x6064(32位)、运行模式显示0x6061(8位)、可选的速度实际值0x606C(32位)。RxPDO(主站→从站)通常包含:控制字0x6040(16位)、目标位置0x607A(32位)、运行模式0x6060(8位)、可选的目标速度0x60FF(32位)。
这里有一个关键原则:PDO映射的字节长度必须是偶数。如果某个从站的TxPDO总长度为奇数,需要在末尾补一个填充字节(Padding),否则FMMU映射会错位。例如上述TxPDO为16+32+8=56位=7字节,是奇数,必须补1字节填充,使总长度变为8字节。RxPDO为16+32+8=56位=7字节,同样需要补1字节,变为8字节。
对于IO模块,映射内容更简单但同样需要精确。一个16通道数字量输入模块,其TxPDO通常映射0x6000:01(16位输入状态);一个16通道数字量输出模块,其RxPDO映射0x7000:01(16位输出状态)。如果IO模块支持诊断,还需要把诊断对象0x6010或0x7010加入映射。
三、SM配置:方向、缓冲与看门狗
SM配置的核心是确定每个SM的起始地址、长度、方向和控制字节。以常见的ET1100从站控制器为例,SM2通常配置为:起始地址0x1100,长度等于RxPDO总字节数(如8字节),方向为写(主站→从站),控制字节使能看门狗。SM3配置为:起始地址0x1180,长度等于TxPDO总字节数(如8字节),方向为读(从站→主站),控制字节同样使能看门狗。
看门狗(Watchdog)是SM配置中容易被忽视但极其重要的参数。它分为两个阶段:第一阶段超时后从站将输出置为安全状态,第二阶段超时后从站直接退出OP状态。对于多轴控制,建议第一阶段看门狗设为通信周期的3~5倍,第二阶段设为10倍以上。例如周期为1ms时,第一阶段可设3ms,第二阶段设10ms。这样既能快速响应通信中断,又不会因为偶发抖动导致从站掉线。
四、FMMU配置:逻辑地址与位映射
FMMU的配置决定了主站如何用一段连续逻辑地址访问所有从站的过程数据。每个FMMU需要配置:逻辑起始地址、逻辑长度、物理起始地址、物理长度、方向(读/写)以及位映射信息。
在多轴系统中,通常为每个轴的TxPDO和RxPDO各分配一个FMMU。例如轴1的TxPDO映射到逻辑地址0x0000,长度8字节,方向读;轴1的RxPDO映射到逻辑地址0x0100,长度8字节,方向写。轴2的TxPDO映射到0x0010,RxPDO映射到0x0110。IO模块的输入映射到0x0200,输出映射到0x0210。
对于位映射的IO数据,FMMU需要额外配置起始位和停止位。例如一个16位输入模块,逻辑地址0x0200,物理地址0x1200,起始位0,停止位15,方向读。这样主站读取0x0200的两个字节即可获得16个通道的状态。
五、启动参数设置与验证
完成SM和FMMU配置后,还需要设置启动参数(Startup Parameters)。这些参数在从站进入PREOP状态时通过邮箱通信写入,包括:PDO映射对象(0x1A00/0x1600)的条目数、每个条目的索引子索引和位长度、以及SM同步模式(0x1C32/0x1C33)中的周期时间。
以下是一个轴1的TxPDO映射配置示例(以0x1A00为例):
0x1A00:00 = 4 // 映射条目数
0x1A00:01 = 0x60410010 // 状态字,16位
0x1A00:02 = 0x60640020 // 位置实际值,32位
0x1A00:03 = 0x60610008 // 运行模式显示,8位
0x1A00:04 = 0x00000008 // 填充字节,8位
配置完成后,需要验证三件事:第一,从站能否从PREOP进入SAFEOP再进入OP;第二,主站逻辑地址中的数据是否与从站对象字典一致;第三,通信周期是否稳定。验证方法可以是:在OP状态下强制某个轴的目标位置变化,观察位置实际值是否跟随;或者用示波器测量SM2/SM3的触发信号与主站周期信号的相位关系。
- 每个从站的TxPDO和RxPDO总字节数是否为偶数?奇数需补填充。
- SM2/SM3的起始地址是否与从站ESC内存布局一致?
- FMMU逻辑地址是否连续且无重叠?
- 看门狗第一阶段是否≥3倍周期,第二阶段是否≥10倍周期?
- 启动参数中的PDO映射条目是否与SM长度匹配?
- 从站能否稳定进入OP状态并保持?
PDO映射设计不是一次性的工作。当轴数增加、IO点数变化或需要增加诊断数据时,都需要重新审视SM长度、FMMU逻辑地址分配以及看门狗参数。建议在项目初期就建立一份映射表,记录每个从站的SM配置、FMMU逻辑地址、PDO内容与字节长度,作为后续调试和扩展的依据。