《基于TMS320F28377D的伺服驱动系统调试》有奖问答--第三期/共四期
扫描二维码
随时随地手机看文章
第三篇 使用eQEP模块的电机速度环与位置环调试
伺服系统中速度环控制为整个闭环控制系统中的中间环,位置环控制为最外环。速度环在伺服系统中主要起到控制转速的作用。位置环是伺服系统的位置控制单元。
速度环的反馈元件一般为模拟测速机或编码器,位置环的反馈元件一般为编码器、光栅尺、感应同步器、旋转变压器等,根据不同的工作场合而决定。多数场合下都使用编码器作为速度环与位置环的反馈元件。编码器根据工作原理分为绝对值编码器和增量式编码器。我们在项目中使用2500线增量式光电编码器,其输出为正交脉冲A/B信号与原点脉冲Z信号。
TMS320F28377D集成了增强型正交编码脉冲(eQEP)模块,该模块通过和增量式光电编码器的A/B/Z信号相连,获取高性能的运动和位置控制系统中电机的位置、方向和速度信息。TMS320F28377D有3个eQEP模块,包含如下功能单元:
● 每个引脚的可编程输入限制(GPIO MUX的一部分)
● 正交解码器单元(QDU)
● 位置计数器和位置测量控制单元(PCCU)
● 用于低速测量的正交边缘捕获单元(QCAP)
● 速度/频率测量的单位时基(UTIME)
● 用于检测失速的看门狗定时器(QWDOG)
图1展示包括电流环、速度环、位置环的全闭环框架。项目调试中,一般遵循先调试电流环,再调试速度环,最后调试位置环的步骤。依次确认各个环路的硬件与软件正确工作。图中速度环的输出Spd_out、位置环的输出SpeedRef、位置给定参考值PositionRef,与ADC模块采集的实时电流Ds、eQEP模块采集编码器的实时速度Speed与位置MechTheta通过PID调节器实时调节误差,增强系统的准确性与稳定性。
图1 全闭环框架
TI提供了数字电机控制软件库( Digital Motor Control),由为C2000电机控制而开发的C函数(或宏)组成。DMC库几乎覆盖了所有与FOC电机控制相关模块化的数学计算函数,以及这些模块的初始化函数。例如,图1所示速度环中的速度计算函数SPEED_FR()。软件设置中使用DMC库可以很方便的调用这些函数,使软件控制流程更加清晰。
eQEP模块在实际使用中应根据电机的具体参数进行初始化工作。例如我们项目使用8转子极数与2500线制编码器一体的电机,软件初始化eQEP过程如下:
// Init QEP parameters
qep1.LineEncoder = 2500; // these are the number of slots in the QEP encoder
qep1.MechScaler = _IQ30(0.25/qep1.LineEncoder);
qep1.PolePairs = POLES/2; // POLES = 8
qep1.CalibratedAngle = 0;
QEP_INIT_MACRO(1,qep1)
其中QEP_INIT_MACRO函数中配置eQEP的QPOSMAX寄存器为4* qep1.LineEncoder,即eQEP采集编码器输出的正交脉冲信号最大计数值为10000。在FOC算法中位置计数(eQEP模块的QPOSCNT寄存器)需要经过如下换算为机械角度。为适应不同的启动位置,用CalibratedAngle表示首次检测到编码器原点信号时位置的计数锁存值。
/* Compute the mechanical angle */
qep1.RawTheta = (*eQEP[1]).QPOSCNT + qep1.CalibratedAngle;
qep1.MechTheta = qep1.MechScaler * qep1.RawTheta;
PolePairs是电角度(ElecTheta)与机械角度(MechTheta)的倍数。在FOC算法中重要的PARK、IPARK及速度的计算需要电角度(ElecTheta)参数。其软件实现如下:
/* Compute the electrical angle */
qep1.ElecTheta = (qep1.PolePairs*qep1.MechTheta) -floor(qep1.PolePairs*qep1.MechTheta);
速度环与位置环的PID调节使用了DMC库标准函数,如下所示。
// position PI regulator
pi_pos.Ref = rc1.SetpointValue;
pi_pos.Fbk = posEncMechTheta;
PI_POS_MACRO(pi_pos);
// speed PID regulator
pid_spd.term.Ref = pi_pos.Out;
pid_spd.term.Fbk = speed1.Speed;
PID_MACRO(pid_spd);
位置环的工作需要eQEP模块进行位置信息的读取,而速度环的工作需要根据eQEP模块读取的位置计算速度。在整个软件控制中如仅有速度环,则只能控制电机按照一定速度旋转。增加位置环不仅可以控制电机旋转,更可控制电机按照既定位置旋转,达到伺服控制系统中对精确位置控制的要求。
在项目调试过程中,笔者遇到当电机转子第一次旋转至编码器原点时,电机会出现轻微抖动伴有异常声音,严重时会导致超调出现过流保护现象。判断与转子原始角度RawTheta = (*eQEP[1]).QPOSCNT + CalibratedAngle公式的计算有关系。图2表示电机抖动时刻RawTheta的变化。
图2 RawTheta异常情况
这个问题属于软件问题,是在原点信号到来时软件没有处理好QPOSCNT与CalibratedAngle的关系,导致CalibratedAngle存储了原点位置,而QPOSCNT尚未清零出现位置数据叠加情况,进而导致后续的速度与电流同时进行调节而出现转子抖动。
软件问题的发现与处理较硬件问题容易解决。若编码器脉冲信号上存在电磁干扰会直接导致电机运转过程频繁抖动或直接超调而进行保护动作。如图3右图所示,一个异常的原点信号使转子位置突然初始化为0。如图3左图所示,软件中的各PID模块因调整误差而超调,最后导致实际电流过大。信号的电磁干扰是实际调试中对增量式编码器脉冲信号影响较大的因素。需要在硬件设计上做更多对电磁干扰的考虑。
图3 左图为电流情况 / 右图为转子位置(RawTheta)