使用专业MCU简化PI控制运动系统的设计

描述

数字运动控制方法可在机器人系统中精确调节电动机和执行器驱动末端执行器的运动和定位。然而,在实践中,开发基于传统比例积分(PI)控制器的运动控制系统的工程师通常会发现他们的项目因为难以调整敏感的控制器参数而停滞不前。更有效的方法可降低调谐复杂度,同时在各种工作条件下提供稳定的性能。

低成本,高性能微控制器推动了数字电机控制的迅速发展,能够广泛应对通过软件控制的操作条件。通过在软件中设计PI控制器,工程师可以创建具有最少数量组件的高响应电机控制系统。然而,在实践中,找到最佳的PI控制器参数集给开发人员带来了重大挑战。很多时候,工程师发现每个电机的独特特性(以及相关的电机控制系统实现)使确保电机在不同速度和负载下稳定运行的任务变得非常复杂。因此,电机控制开发团队发现自己被迫扩展项目进度并解决微妙的调整问题。

PI控制器挑战

传统PI控制器使用生成的控制回路用于减少某些过程中预期值和测量值之间误差的输出。在控制回路的串行形式(图1)中,Kb设置PI控制器的零点,而Ka设置闭环系统响应的带宽。

mcu

图1:在传统PI控制器的串行形式中,工程师必须找到其零(Kb)和带宽(Ka)的最佳设置 - 经常延迟运动控制项目的过程。 (图像来源:德州仪器)

在电机控制应用中,PI控制器优化的复杂性变得更加复杂,因为工程师需要控制电流来控制速度。在典型的电机速度控制回路中,工程师将使用两个PI控制器 - 一个在内环中控制电机电流,另一个在外环中控制电机速度(图2)。当电机速度低于指令值时,外环需要更多电流;内环纠正电机电流以匹配所需的值。

mcu

图2:典型的速度控制回路使用两个PI控制器来控制电机电流和速度本身,从而使寻找最佳控制器参数的任务更加复杂。 (图像来源:德州仪器)

实际上,在整个运行条件下实现稳定的性能变成了一项复杂,耗时的任务。工程师需要调整多个参数以针对特定速度和负载工作点调整控制器。然而,特定的调整解决方案可能只能解决非常小的速度和负载范围。因此,工程师可能会发现具有不同速度和负载点的高动态系统可能需要为每个点调整PI控制器,从而进一步延迟项目进度。

高级控制算法

TI InstaSPIN-MOTION解决方案为数字电机控制设计提供了一种简单明了的方法。作为InstaSPIN-MOTION的核心,LineStream Technologies的SpinTAC可在系统的动态速度,位置和负载范围内提供强大的控制。这种专有方法提供先进的速度和位置控制,并具有主动干扰抑制控制(ADRC)。

ADRC适应电机模型的高度不确定性。它将未建模的电机动力学和系统的不良行为视为可以估计,拒绝或纠正的干扰。这允许SpinTAC控制器通过一个调整参数(称为带宽)控制各种位置,速度和负载,这些参数决定了系统的刚度,并决定了系统拒绝干扰的积极程度。

当设计人员通过这种调谐方法增加控制器的带宽时,对扭矩干扰的响应变得更快并且具有更小的过冲(图3)。如果带宽设置得太高,则当从系统中消除扭矩干扰时,系统开始围绕目标速度振荡。设计者只需找到带宽,当扭矩消除时,该带宽导致目标速度值附近的最小振荡。

mcu

图3:SpinTAC调整只需要设置一个参数 - 带宽。在该示例中,理想带宽是40rad/s。在该带宽处,当扭矩被移除时,响应在目标速度附近表现出最小的振荡。 (图片来源:德州仪器公司)

简化开发

InstaSPIN-MOTION不是处理传统PI控制器中优化多个参数的复杂性,而是让工程师只需设置单带宽参数。与使用传统PI控制器的设计相比,这种简单而强大的方法可以显着缩短开发时间。同时,这种方法提供的解决方案具有更少的过冲和更快的建立时间,从而最终降低了最终应用的功耗(图4)。

mcu

图4:响应应用的扭矩干扰,InstaSPIN比传统的PI控制器回路明显更快地恢复。 (图片来源:德州仪器)

TI进一步提供了一个结合了软件和硬件的广泛的开发和部署平台。 TI的MotorWare产品包括特定于器件的驱动器和支持软件,以及完整的系统示例和技术培训。

为了更快地部署这些设计,TI提供了包含InstaSPIN-MOTION库的C2000 Piccolo MCU的专用版本在片上ROM和Flash中,无需额外电荷(图5)。基于90 MIPS C28x处理内核,C2000 InstaSPIN TMS320F28069M MCU将片上InstaSPIN-MOTION电机控制软件与完整的片上外设相结合,包括一个16通道模数转换器(ADC),用于采集电机控制算法中使用的数据(例如,参见图5右侧的ADC输入)。

mcu

图5:德州仪器(TI)的TMS320F28069M MCU采用片上InstaSPIN-MOTION软件库,进一步简化了运动控制系统的开发。 (图像来源:德州仪器)

TMS320F28069M还具有8个片上增强型脉冲宽度调制器(ePWM)模块,提供16个PWM通道。因此,工程师可以使用最少的附加组件快速设计完整的电机控制系统。 MCU的PWM可以直接驱动专用隔离栅极驱动器,如TI ISO5851(图6)。 ISO5851具有CMOS输入,使微控制器能够直接驱动它们 - 与典型的基于光耦合器的栅极驱动器不同,后者需要外部电流驱动器和偏置电路来提供输入控制信号。

mcu

图6:与高度集成的微控制器(如TI TMS320F28069M)配合使用,CMOS隔离栅极驱动器(如TI ISO5851)使设计人员能够创建具有最少数量附加组件的复杂电机控制系统。 (图像来源:德州仪器)

在软件方面,由于SpinTAC控制器算法,电机控制实现同样简单明了。工程师以最少的步骤配置SpinTAC速度控制,包括适当的头文件(例如,spintac_velocity.h)以将SpinTAC软件组件带入应用程序。 (此示例解决了SpinTAC速度控制,但SpinTAC位置控制配置遵循类似的方法。)

然后开发人员在主源文件中声明全局结构:

ST_VelCtl_t stVelCtl;//SpinTAC速度控制器对象

ST_VELCTL_Handle stVelCtlHandle;//SpinTAC速度控制器句柄

在应用程序的主要功能中,开发人员会将配置变量初始化为其默认值。对于许多电机,此配置通常包括以下变量:

复制

ST_VelCtl_t stVelCtl;//SpinTAC速度控制器对象

ST_VELCTL_Handle stVelCtlHandle;//SpinTAC速度控制器句柄

在应用程序的主要功能中,开发人员会将配置变量初始化为其默认值。对于许多电机,此配置通常包括以下变量:

//初始化SpinTAC速度控制器组件stVelCtlHandle = STVELCTL_init(& stVelCtl,sizeof(stVelCtl));

//设置PU中的最大电流

_iq maxCurrent_PU = _IQ(USER_MOTOR_MAX_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A);

//速度控制器的实例

STVELCTL_setAxis(stVelCtlHandle,ST_AXIS0);

//采样时间[s],(0,1)

STVELCTL_setSampleTime_sec(stVelCtlHandle,_IQ(ST_SPEED_SAMPLE_TIME));

//系统惯性上限(0,127.9999)和下限(0,SgiMax)限制[PU/(pu/s ^ 2)] STVELCTL_setInertiaMaximums(stVelCtlHandle,_IQ(10.0),_IQ(0.001));

//系统控制信号高(0,OutMax)和低[OutMin,0]限制[PU] STVELCTL_setOutputMaximums(stVelCtlHandle,maxCurrent_PU,-maxCurrent_PU);

//系统最大值( 0,1.0]和最小[-1.0,0]速度[pu/s] STVELCTL_setVelocityMaximums(stVelCtlHandle,_IQ(1.0),_ IQ(-1.0));

//系统上限(0,0.2/(T * 20)]和带宽标度的下限[0,BwScaleMax]限制STVELCTL_setBandwidthScaleMaximums(stVelCtlHandle,

_IQ24((0.2)/(ST_SPEED_SAMPLE_TIME * 20.0)),_ IQ24(0.01));

//系统惯性[PU/(pu/s ^ 2)],[SgiMin,SgiMax]

STVELCTL_setInertia(stVelCtlHandle,_IQ(USER_SYSTEM_INERTIA));

//控制器带宽比例[BwMin,BwMax]

ST VELCTL_setBandwidthScale(stVelCtlHandle,_IQ24(USER_SYSTEM_BANDWIDTH_SCALE));

//最初未启用ST_VelCtl

STVELCTL_setEnable(stVelCtlHandle,false);

//最初ST_VelCtl未重置

STVELCTL_setReset(stVelCtlHandle,false);

在运行期间,主中断服务程序将更新速度参考,加速度参考和速度反馈,然后以适合该部件的抽取率(在ISR_TICKS_PER_SPINTAC_TICK中指定)调用SpinTAC速度控制功能。

< p> 复制

CTRL_Obj * obj =(CTRL_Obj *)ctrlHandle;//获取指向CTRL对象的指针

//获取pu/s中的机械速度

_iq speedFeedback = EST_getFm_pu(obj-> estHandle);//获取pu/s中的机械速度//更新速度参考

STVELCTL_setVelocityReference(stVelCtlHandle,

STVELMOVE_getVelocityReference(stVelMoveHandle));

//更新加速参考

STVELCTL_setAccelerationReference(stVelCtlHandle,

STVELMOVE_getAccelerationReference(stVelMoveHandle));

//更新速度反馈STVELCTL_setVelocityFeedback(stVelCtlHandle,speedFeedback);//运行SpinTAC速度控制器STVELCTL_run(stVelCtlHandle);

//从SpinTAC速度控制器获取扭矩参考

iqReference = STVELCTL_getTorqueReference(stVelCtlHandle);

//设置来自SpinTAC速度控制的Iq参考

CTRL_setIq_ref_pu(ctrlHandle,iqReference);

开发人员可以使用TI C2000 Piccolo F28069M LaunchPad快速启动电机控制开发,该产品具有所有硬件和功能。基于F2806x微处理器开发应用程序所需的软件。 TI还提供完整的电机控制解决方案套件,如高压电机控制套件,该套件全面介绍了对最常见类型的高压三相电机的控制,包括交流感应(ACI),无刷直流(BLDC)和永磁同步电机(PMSM)。 TI还提供补充套件,如BLDC电机套件,其中包括带内置霍尔效应传感器的无刷直流电机,可直接与电机控制套件软件配合使用。

结论

使用传统PI控制器的传统电机控制设计由于调整这些控制器的复杂过程而可能面临严重的延迟。 TI的InstaSPIN-MOTION内置于专用微控制器中,可将调谐功能简化为单一参数,为设计人员提供简单性和稳定性的组合,使其成为机器人系统等多种状态转换或体验动态变化等应用的理想选择。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分