首页 / 资讯中心 / 文章详情

PMSM无传感器控制:LADRC速度环与非线性磁链观测器Simulink仿真实践

PMSM无传感器控制:LADRC速度环与非线性磁链观测器Simulink仿真实践 ★ FEATURED ARTICLE
做无传感器控制这几年最绕不开的两个坎就是速度环的动态性能和转子位置观测精度。传统PI调来调去负载扰动一来转速掉半天才恢复而磁链观测器要是不加带宽校正低速段和零漂问题能把人折磨到怀疑Simulink里是不是那块布局连线又连错了。最近我把整套方案从头过了一遍速度环不做PI改用一阶自抗扰控制LADRC位置反馈不做编码器靠非线性磁链观测器把转子磁链和电角度在线估出来最后配合FOC矢量控制跑通Simulink仿真效果比预期稳。这篇记录一下整套设计从原理到建模、从参数整定到踩坑排障的完整过程适合正在做PMSM无传感器控制、对LADRC和磁链观测器感兴趣的同学直接抄作业。1. 整体设计与方案选型为什么是“LADRC磁链观测器”这套组合1.1 无传感器控制解决的实际问题交流伺服系统里编码器和旋变是最常用的位置反馈设备精度高、响应快但问题也摆在面上成本、体积、线缆和现场可靠性。电机一旦装在高温、振动、油污环境里编码器故障率会明显上升很多改造项目里原电机没有引出编码器接口想加装又受机械结构限制。无传感器控制的目标就是去掉这一路反馈通过电机的电压电流重建转子位置和速度。但无传感器控制不是免费午餐它的技术难点非常明确零速和极低速阶段反电动势信号几乎为零磁链观测器的有效信息不足位置观测误差会急剧变大。中高速工况下反电动势足够强但积分环节容易累积直流偏置导致磁链角度漂移。负载突变时转速闭环如果动态响应慢观测器也会被带偏形成恶性循环。所以中高速段做无传感器控制核心矛盾就变成位置观测器的鲁棒性和速度环的动态抗扰能力。这正好对应标题里两个关键词——非线性磁链观测器负责位置和速度重建速度环LADRC负责快速抗扰。两者配合既能摆脱编码器又能把动态性能保住。1.2 速度环自抗扰到底比PID强在哪先看传统PI速度环的处境。PMSM的转速方程本质是一阶惯性加上负载转矩扰动J · dω/dt Te - Tl - Bω其中 Te 是电磁转矩Tl 是负载转矩J 是转动惯量B 是阻尼系数。PI控制器把转速误差比例放大再积分本质上是在“被动”地等误差出现然后去补偿。负载突变瞬间转速先跌下去PI才开始慢慢往上顶要加快响应就把比例增益调大但随之而来的是超调和振荡。这就是经典固定的权衡。LADRC的思路不是把误差放大而是把“所有不确定因素”当成一个总扰动用扩张状态观测器ESO实时估出来然后在控制量里直接抵消掉。或者说ESO负责“看清敌人”控制律负责“一炮打准”。对于一阶LADRC被控对象被等价成dω/dt b0 · u f_total其中 b0 是控制增益的估计值f_total 是包含了模型偏差、负载变化、摩擦、参数摄动等一切因素的“总和扰动”。ESO不关心扰动具体来自哪里它能一个数把它估出来控制律再用负反馈把它消掉。这一下就把PI最头疼的“快速性和超调不可兼得”问题绕开了因为扰动被在线估计并补偿等效被控对象变成了一个干净的积分器这时候只需要一个比例控制器就能让转速紧贴给定值而且不牺牲动态响应。1.3 双环路整体架构实际仿真模型的整体框架就是经典FOC结构只是把速度环反馈和位置信号从编码器换成观测器最外环速度给定 → 一阶LADRC控制器 → 输出q轴电流给定 iq_ref内环dq轴电流PI控制器产生电压指令坐标变换Clarke变换 Park变换需要转子电角度 θe无传感器部分采集 uαβ 和 iαβ送入非线性磁链观测器输出转子磁链角度和观测转速SVPWM生成逆变器开关信号驱动电机模型整套结构中磁链观测器输出的角度如果不准确Park逆变换就会把电压方向搞错电流环直接失控。所以无传感器控制的第一优先级不是运行而是先把角度看准。而LADRC把速度环抗扰能力拉满后即使负载有阶跃变化转速波动也被限制在很小的范围观测器输入信号质量更好整个系统更容易稳定。2. 核心原理拆解一阶LADRC与非线性磁链观测器的数学内幕2.1 一阶LADRC的ESO怎么建对于转速这样的单输入单输出对象一阶LADRC就够用。核心是构造一个扩张状态观测器。把总扰动 f_total 当成第三个状态变量系统状态空间可以写成dx1/dt x2 b0·u dx2/dt h其中 x1 ωx2 f_totalh 是扰动变化率工程上一般假设它有界即可。设计ESOe z1 - y dz1/dt z2 b0·u - l1·e dz2/dt -l2·e这里 z1 是转速观测值z2 是总扰动估计值l1、l2 是观测器增益。只要增益配置合适z1 和 z2 会快速逼近真实的转速和扰动。控制律设计为u0 kp · (ω_ref - z1) u (u0 - z2) / b0代入原系统后如果 z2 对扰动的估计足够准系统就被逼近为 dω/dt ≈ u0此时只需要一个比例控制器 kp 就能获得一阶惯性闭环响应。ESO收敛速度和抗扰能力由观测器带宽决定控制响应的快慢由控制器带宽决定两个参数分工明确不像PI那样耦合在一起。2.2 带宽法整定参数LADRC之所以工程上容易落地是因为它有套简单的参数配置方法。把观测器特征方程配置成 (s ωo)² s² 2ωo·s ωo² 的形式增益就取l1 2·ωo l2 ωo²控制律中 kp 取为控制器带宽 ωc。一般经验是观测器带宽要比控制器带宽快3到5倍因为ESO必须在控制器动作之前就把扰动估算出来否则补偿滞后会导致振荡。仿真开始时建议ωc 先从 20~40 rad/s 起步观察转速阶跃响应ωo 取 3~5 倍的 ωc然后根据实际波形微调b0 粗略取电磁转矩系数和转动惯量的比值b0 ≈ 1.5·p·ψf / J这里 b0 不要求非常精确ESO可以把建模误差归结为总扰动的一部分并予以补偿但也不能偏差太大。b0偏大相当于控制器“以为”输入作用很强实际作用却没那么大导致响应变慢和振荡b0偏小则会放大控制量容易引起电流饱和。2.3 非线性磁链观测器的工作逻辑磁链观测器的任务是重构转子磁链的位置。和直接基于电压的磁链积分不同非线性磁链观测器采用的是闭环结构用电压模型得到磁链主信息用电流模型或反电动势信息做校正避免纯积分产生的直流漂移。在αβ静止坐标系中定子电压方程可以写成uα Rs·iα L·diα/dt eα uβ Rs·iβ L·diβ/dt eβ其中反电动势项为eα -ωe·ψf·sinθe eβ ωe·ψf·cosθe反电动势的相位直接包含了转子位置信息。进一步把转子磁链在αβ轴上的分量定义成ψrα ψf·cosθe ψrβ ψf·sinθe那么反电动势的另一种写法就是eα dψrα/dt eβ dψrβ/dt所以问题转化成对磁链分量 ψrα、ψrβ 的观测。利用电压方程dψsα/dt uα - Rs·iα dψsβ/dt uβ - Rs·iβ可以估计定子磁链再减去电感压降得到转子磁链ψrα ψsα - L·iα ψrβ ψsβ - L·iβ但直接积分会有零漂仿真里可能因为初始值或数值误差磁链慢慢偏出去。非线性磁链观测器加入一个校正项让观测磁链动态收敛到真实值。常见形式是dψrα/dt eα k·(ψrα_ref - ψrα_hat) dψrβ/dt eβ k·(ψrβ_ref - ψrβ_hat)这里的 ψr_ref 可以由电流模型给出——电流模型受转子位置影响但依赖电机参数动态快而精度有限电压模型动态慢却无零漂。两个模型通过增益k融合等于在低频段信任电流模型在高频段信任电压模型兼顾稳态精度和动态跟踪能力。2.4 位置和速度提取磁链观测器输出 ψrα_hat、ψrβ_hat 后电角度可以直接用反正切求θe_hat atan2(ψrβ_hat, ψrα_hat)但直接用反正切有两个问题一是磁链幅值过零时角度跳变二是求导得到转速时会放大噪声。工程上更推荐用锁相环PLL提取速度和角度。把磁链分量变换到估计坐标系下用角度误差经过PI调节得到电角速度再积分得到平滑的角度。PLL的带宽不要设太高否则转速估计噪声大一般取10~30 Hz就能满足中高速段需求。3. Simulink仿真实操从零搭一个可跑的模型3.1 电机模型与参数准备仿真第一步是准备PMSM参数。可以用Simulink自带模块库里的PMSM模型也可以自己按数学方程搭一个。建议使用集中参数模块跑得快还省事。我的仿真参数如下参数数值单位定子电阻 Rs2.875Ω电感 LdLq8.5mH转子磁链 ψf0.175Wb极对数 p4-转动惯量 J0.001kg·m²阻尼系数 B0.0001Nm·s/rad额定转速3000r/min需要注意的是Simulink自带PMSM模块里有电气角速度换算位置传感器默认输出机械角度乘以极对数后的电角度。如果自己搭磁链观测器所有计算都用电气角速度速度环反馈要除以极对数再换算成机械转速。3.2 搭建ESOLADRC速度环速度环LADRC在Simulink里结构很清楚输入1转速给定 ω_ref输入2观测速度反馈 ω_hat输出q轴电流给定 iq_refESO部分用积分器模块搭状态方程的方式写成离散化更容易和真实控制器对接。在MATLAB Function块里直接写离散ESO代码更直观function [z1_next, z2_next] ESO_step(z1, z2, w_fb, iq_in, b0, wc, w0, Ts) e z1 - w_fb; l1 2 * w0; l2 w0^2; % ESO 状态更新 z1_next z1 Ts * (z2 b0 * iq_in - l1 * e); z2_next z2 Ts * (-l2 * e); end速度环控制律另外写一个函数用ESO输出的 z1、z2 计算控制量function iq_ref LADRC_controller(w_ref, z1, z2, b0, wc) u0 wc * (w_ref - z1); iq_ref (u0 - z2) / b0; end我习惯把ESO和控制律放在同一个Function块里输入上一拍的z1、z2、转速给定和观测反馈输出iq_ref和下一拍的z1、z2。这样只需要两个Unit Delay模块做状态保持结构很紧凑。需要注意的是iq_ref的物理意义是q轴参考电流而LADRC的控制量是电磁转矩或等效电流ESO里的b0应该折算成“从iq到转速变化率”的增益。上面给出的 b0 1.5·p·ψf/J 的单位就是 Nm/A → rad/s/A 再除以J计算时别漏了系数1.5。3.3 搭建非线性磁链观测器磁链观测器在Simulink里的搭建分三块第一步从三相电流和电压做Clarke变换得到αβ分量。电压信号直接取逆变器输出的参考电压如果有直流母线补偿可以做一步修正仿真里用参考电压即可。第二步电压模型积分模块ψsα ∫(uα - Rs·iα)dt ψsβ ∫(uβ - Rs·iβ)dt为了让仿真初始时不产生冲击积分器初始值设成与当前转子磁链方向一致或者在启动逻辑里先做一次预定位。第三步加入校正环节。我用电流模型构造磁链参考值ψrα_ref ψsα_ref - L·iα ψrβ_ref ψsβ_ref - L·iβ然后两个模型做融合实际上就是带反馈的观测器结构ψrα_hat 的微分 uα - Rs·iα - L·diα/dt k·(ψrα_ref - ψrα_hat)最稳妥的办法是把磁链作为状态变量电流作为输出用标准状态观测器闭环。在仿真里我直接把电压模型积分输出减去 L·iα得到转子磁链估计再通过一个一阶低通或带通校正把低频零漂抑制掉。实际测试下来k取20附近收敛就比较快角度误差能控制在10°以内。3.4 整体连接和转速反馈闭环磁链观测器输出角度给Park/Park逆变换转速反馈从PLL输出。PLL模块内部是一个PI调节器加一个积分器输入是磁链角度误差的正弦值先计算误差信号ε ψrα·sinθ_hat - ψrβ·cosθ_hat当角度误差小时等价于角度误差本身PI调节器输出电角速度估计积分得到电角度估计PLL的PI参数推荐按典型二阶系统配置带宽取 ωpllPI比例系数取 2·ζ·ωpll积分系数取 ωpll²阻尼系数ζ取0.707即可。然后整个速度外环的反馈就用观测器估计出来的转速完全丢掉编码器信号。3.5 离散化和求解器配置Simulink仿真有两套做法为了快速验证连续算法可以直接用变步长求解器但为了贴近代码生成和硬件实现建议一开始就用固定步长离散化。我的做法是求解器类型定步长步长Ts取1e-5或2e-5秒PWM开关频率等效为10 kHz或20 kHzSVPWM用平均模型时步长可以放宽磁链观测器、ESO、PLL都在每个Ts里离散更新一次把离散ESO代码里的Ts和模型实际步长严格对应起来否则状态更新会有偏差固定步长下最怕的一件事是采样步长和PWM载波周期不一致导致谐波混叠。建议给磁链观测器单独加一个采样保持采SVPWM周期中心的电流值这样反电动势观测更干净。4. 调试实录典型坑位与排查方法4.1 启动瞬间位置跳变导致电流冲击第一次跑仿真的时候电机启动瞬间电流直接顶到限幅转速起不来。查下来发现磁链观测器的积分器初始值是0但电机初始转子磁链方向是45°前几个周期里观测角度和真实角度偏差太大Clarke变换之后的电流全部带上了错误的直流偏置。解决办法包括两条一是做预定位启动前给q轴加一个大电流把转子强行拖到已知位置二是给磁链观测器积分器赋初值让 ψrα_hat ψf·cosθ0、ψrβ_hat ψf·sinθ0θ0是初始角度。实测下来赋初值最省事后续角度收敛时间缩短到0.1秒以内。4.2 ESO的b0参数偏差导致转速振荡LADRC调参最敏感的确实是b0。我把b0直接按公式算出来给了理论值结果仿真在高速段出现持续振荡转速上下抖十几转电流谐波也变大。原因是电机模型里还有磁路饱和和离散化带来的等效延迟实际增益比理论值低了不少。排查思路是先把观测器带宽 ωo 降下来让ESO不那么激进观察振荡是否减弱。然后把b0逐步调小每次调整20%发现b0降到理论值的70%左右时振荡消失阶跃响应反而更快。这说明理论计算公式只是一个起点最终一定以仿真波形为准。实际操作我给自己的经验值b0先按公式估算运行空载阶跃如果转速有高频振荡b0往小调如果阶跃响应爬升慢、扰动恢复慢b0往大调每次调整幅度控制在10%~20%等波形稳定后再动 ωo4.3 磁链观测器低速段角度漂移无传感器控制在低速段的尴尬是物理原理决定的反电动势太小位置信息太弱。仿真里我把转速给定降到100 r/min附近发现观测角度开始周期性偏移q轴电流忽大忽小。这是因为定子电阻压降和逆变器死区效应在低速下占了主导电压模型的信噪比下降。针对这个问题的处理有一个调优空间闭环磁链观测器里的校正增益k在低速段要加大让电流模型的主导地位提升中高速段又把k减小让电压模型主导。实现方式可以是k k_base k_speed · |ω_hat|也可以查表。我用了一个简单的线性调整低速段k取80高速段k降到20角度波动从正负15°缩小到正负5°以内。同时把反电动势估算时加入一个高通滤波器去掉直流偏置角度观测就稳定多了。4.4 常见问题速查表现象可能原因排查方法启动电流冲击大观测器初值和转子位置不一致给磁链积分器赋初值或预定位稳态转速振荡ESO带宽过高或b0偏差大降低ωo微调b0加速时跟随慢控制器带宽ωc低先提高ωo再提高ωc负载突变后恢复慢ESO带宽偏低或b0偏小增大ωo检查b0观测角度带高频抖PLL带宽过高或电流采样噪声降低PLL带宽加滤波低速漂移电压模型信噪比差加大校正增益引入高通滤波高速角度滞后PLL带宽不足适当增加PLL带宽iq_ref过大甚至限幅b0太小或总扰动补偿不够上调b0放宽ESO带宽实际调试过程中我发现一个比较隐蔽的问题PLL的输入滤波和速度环ESO是串联关系PLL带宽太高会把噪声送进ESOESO又把噪声当成扰动去补偿反而加剧速度波动。后来把PLL带宽降到15 Hz速度环ωc提到30 rad/s系统的配合反而顺畅很多。最后再分享一个实际体会这套方案在中高速段的无传感器运行已经比较成熟仿真验证的重点要放在参数摄动和负载突变两个场景里比如转动惯量翻倍、负载转矩阶跃等。如果这些极端工况下转速波动还在可控范围内那再做代码生成和实验台架验证就心里有底了。搭模型时把ESO、磁链观测器、PLL三个模块的离散化步长统一好参数从仿真跑到生成代码都不需要改结构后期移植非常方便。
阅读完成 · 觉得有帮助?
咨询建站