Ethercat CSP控制模式下电机卡顿原因分析及解决方法


ethercat总线经过近十年的发展,逐渐成为国际上最广泛应用的实时以太网总线之一。国外商业化的ethercat主站价格昂贵,国内尚未有全自主的ethercat主站。德国开源IGH ethercat主站成为近几年国内研究应用的主流方向。大多数IGH主站使用者,都会遇到CSP控制模式下,电机偶尔卡顿的现象。本文将从原理分析卡顿原因,给出解决方案并进行最终的测试实验。
0 引言
随着数控机床和工业机器人的迅速发展,电机控制开始从传统并行通信转变为串行总线通信。一些公司和机构基于成熟的以太网硬件,在上层设计新的实时以太网通信协议,以满足工业场景的高可靠性、高实时性、低延迟的要求。其中,德国倍福公司主导的ethercat总线经过近十年的发展,并在该公司的推动下,逐渐成为国际上最广泛应用的实时以太网总线之一[1-3]。国外商业化的ethercat主站价格昂贵,国内尚未有全自主的ethercat主站。德国开源IGH ethercat主站成为近几年国内研究应用的主流方向。大多数使用IGH主站的人,都会遇到CSP控制模式下,电机卡顿的现象。
1 ethercat CSP电机控制原理
机器人类设备需要多轴插补进行轨迹控制,ethercat cia402协议中的CSP同步位置控制模式适用于该类设备。具体工作原理如图1所示。主运动控制器内,先进行轨迹规划,然后将t时刻的笛卡尔位置传递到运动学逆解器求解多轴位置,最后多轴位置经过ethercat主站,分别发送到各个轴的驱动器。驱动器收到目标位置后,进行内部的三环PID控制,从而使电机跟随插补轨迹动作[4]。

图1 ethercat电机控制原理图
2 测试环境搭建
主控制器采用X86工控电脑,J1900 CPU,2G内存,intel 82583网卡。上述电脑上安装ubuntu14.04操作系统,使用linux3.14内核并打上RtPreempt实时内核补丁。ethercat主站采用德国开源IGH主站V1.5.2版本。电机和驱动器采用清能德创公司的RC4型号驱动器。机械臂本体是3Kg负载的SCARA构型机械臂。实物如图2。编程环境采用QTCreatorIDE和C++语言。DC时间同步参考dc_rtai_sample.c示例程序编写实现。

图2 测试硬件构成图
3 电机卡顿现象
根据图1所示原理图,编写直线规划控制代码,控制机械臂做空间直线运动。测试发现机械臂会按照规划直线运动,但是会有随机性的“咚咚咚”机械臂冲击振动声音,肉眼可以观察到机械臂振动卡顿。在主控制器上面实时采集电机的力矩、速度、反馈位置。没有异响时的1轴波形如图3,有异响的1轴波形如图4。

图3 正常时1轴电机波形

图4 异响时1轴电机波形
从波形图可以知道,异响是因为电机实时反馈速度和力矩有剧烈突变,不够平滑所导致的。
4 原因分析
电机的位置跟随误差是伺服驱动器的一项重要性能指标,因为它会直接决定机械臂的末端轨迹精度。为了减少位置跟随误差,基于三环控制原理的伺服驱动器会增加速度前馈控制。速度前馈控制的基本原理是,将收到的ethercat命令电机位置与控制周期进行微分运算,从而得到前馈速度,然后再将前馈速度乘以控制比例系数后,叠加到伺服的速度控制环的输入[5]。速度前馈控制框图如图5。

图5 速度前馈控制原理图
IGH主站实现了Ethercat协议的DC同步机制。Ethercat主站有一个独立的时钟,多个伺服驱动器分别也有自己的独立时钟。Ethercat协议实现了网络延迟测量和时钟动态调整的机制。如图6所示,SM2时刻代表网络数据帧到达从站芯片的时刻,SYNC0时刻代表所有从站同步取目标位置的时刻[6]。正常时序要求SYNC0-SM2>0 且 SYNC0-SM2<控制周期。当ethercat主站没有合理处理好时序时,就会出现不满足上述条件的情况,这时伺服从站可能出现连续两次的目标位置是一样的,从而在速度前馈环节产生命令速度突变,继而引发电机异常的电流和速度突变,最终表面现象就是电机顿挫。

图6 sm2-sync0时序图
5 解决方法
新改进主站工作流程如图7所示,重点改进体现在主站时间和参考时间的偏差计算,然后根据偏差来修正周期睡醒时间值。从而保证主站和从站全部同步于参考时钟,最终保证SM2-SYNC0的时序要求。

图7 主站流程图
6 验证测试
在新程序的控制下,机械臂进行反复的直线规划运动,连续120个小时工作正常,无卡顿异响。在主控制器上面实时采集电机的力矩、速度、反馈位置波形平滑无突变。

7 结束语
本文概述了基于开源IGH Ethercat主站的软硬件搭建,并测试出了常见的CSP控制模式下电机卡顿现象。结合SM2-SYNC0时序和伺服速度前馈控制原理,详细分析了卡顿原因。最后改进设计出一套合理的主站流程图,保证时钟的一至同步性,并最终测试验证,解决了电机卡顿现象。