做永磁同步电机的电流环绕不开PI、无差拍、模型预测这几条路。这套方案把扩张状态观测器和无模型预测电流控制组合到一起我在仿真环境里调了小半个月跑下来确实比传统PI和普通MPCC更省心。今天把这套“ESOMPCC”的玩法完整拆开讲一遍为什么要把两个技术接在一起超局部模型怎么建ESO怎么离散化Simulink里怎么搭以及参数失配时应该盯着哪些波形判断好坏。永磁同步电机控制的难点不在“转起来”而在“转得稳、跟得快、扛得住扰动”。传统PI在标定工况下表现不差一旦电感饱和、磁链温漂、死区效应叠加进来电流环动态就会明显打折。普通MPCC又需要比较准确的电机参数参数偏了容易选错电压矢量。把ESO塞进无模型预测电流控制之后系统不再依赖精确的电阻、电感和磁链而是让观测器实时估计“总扰动”再交给MPCC滚动优化。仿真结果显示这套组合在参数失配、突加负载、转速突变等场景下电流响应和抗扰能力都有明显的提升。下面直接进入正题。1. 这套方案到底解决什么问题1.1 传统电流环的痛点永磁同步电机的d-q轴电流方程并不是两个完全独立的惯性环节转速越高反电动势项和交叉耦合项影响越大。经典PI设计时往往先在额定工况点线性化然后按固定的电阻、电感参数整定实际运行中这些参数会变。比如定子电阻随温度变化、电感随电流饱和下降、永磁磁链随温度漂移这些都会让PI的模型前馈失准。积分环节可以慢慢消除稳态误差但动态过程中会表现为超调、振荡或者响应迟缓。另一个问题是带宽受限。电流内环需要比速度外环快得多但PI带宽太高会导致噪声放大实际整定时很难兼顾动态和鲁棒性。遇到突加负载q轴电流需要快速变化PI只能依靠误差积分去追赶这一拍的滞后往往就是转速跌落的主要来源。1.2 为什么选无模型预测电流控制模型预测电流控制MPCC的核心思路很直接用当前电流、参考电流和所有可能的电压矢量预测每个电压矢量作用后的下一个采样周期电流然后选一个让代价函数最小的开关状态。相比PIMPCC动态响应快不需要单独调PI参数多变量约束处理也方便。但普通MPCC的预测方程里有电阻、电感、磁链预测准不准很大程度上取决于参数准不准。参数失配时预测电流会偏差代价函数排序也会出错轻则电流纹波增大重则选错电压矢量导致控制发散。为了摆脱对精确参数的依赖无模型预测电流控制引入超局部模型的概念。把系统的已知部分和未知部分打包成一个实时估计项F只保留一个近似已知的控制增益α。这样预测模型就从“电机参数精确已知”变成“总扰动实时估计”参数失配带来的影响被大幅削弱。1.3 ESO在这里扮演什么角色扩张状态观测器ESO是自抗扰控制的核心它把系统模型误差、外部扰动、交叉耦合项统一视为“总扰动”扩张成一个新状态通过观测器实时估计。放到无模型MPCC里ESO承担的就是F估计器的角色。F包含反电动势、电阻压降、电感变化、死区效应等一大堆说不清的量ESO不关心它们具体是什么只关心总和是多少。每周期把F估出来MPCC的预测模型就不再是黑箱而是一个“可预测的灰箱”。ESO的另一层价值在于实现简单。电流环模型是一阶动态配二阶ESO就够了带宽整定也直观β1取2倍观测器带宽β2取带宽平方。调节起来比一堆PI参数省事得多。2. 控制原理拆解从PMSM模型到ESOMPCC2.1 永磁同步电机在dq轴下的电流动态方程先写最常用的表贴式永磁同步电机在同步旋转dq坐标系下的电压方程ud Rs·id Ld·(did/dt) - ωe·Lq·iquq Rs·iq Lq·(diq/dt) ωe·Ld·id ωe·ψf其中Rs是定子电阻Ld、Lq是dq轴电感ψf是永磁磁链ωe是电角速度。整理成电流状态方程did/dt (ud - Rs·id ωe·Lq·iq) / Lddiq/dt (uq - Rs·iq - ωe·Ld·id - ωe·ψf) / Lq传统MPCC就是拿这两条方程预测电流。可以看到预测需要Rs、Ld、Lq、ψf四个参数还要知道当前转速和电角度。转速和电角度靠观测器给参数只能靠铭牌或者离线辨识。一旦参数偏离真实值预测方程本身就错了。2.2 无模型MPCC的超局部模型无模型预测电流控制不直接使用上面那两条完整方程而是把d、q轴电流各自写成一阶超局部模型did/dt Fd αd·uddiq/dt Fq αq·uq这里的Fd和Fq就是“总扰动”电流变化率αd、αq是控制增益。从物理上讲如果取αd≈1/Ld、αq≈1/Lq那么Fd就等于真实电机方程中除ud和uq项以外的所有部分包括电阻压降、反电动势、耦合项、参数偏差损失等。ESO的任务就是实时估计Fd和Fq。离散化之后预测模型可以写成id(k1) id(k) Ts·Fd(k) Ts·αd·ud(k)iq(k1) iq(k) Ts·Fq(k) Ts·αq·uq(k)Ts是电流环采样周期。注意这个公式里没有Rs、Ld、ψf只有αd和αq。α的取值不需要非常精确因为偏差可以部分折算进F里补偿但也不能偏差过大否则输入增益失真会导致预测和控制律不匹配。2.3 ESO设计与离散化以q轴电流为例把iq作为观测量uq作为输入Fq作为扩张状态。二阶ESO连续域方程如下dz1/dt z2 β1·(iq - z1) αq·uqdz2/dt β2·(iq - z1)z1是iq的估计值z2是Fq的估计值。按照带宽参数化方法取β12·ωoβ2ωo²ωo就是ESO带宽。d轴形式完全一样。离散化直接用前向欧拉即可前提是Ts足够小。实际代码可以封装成一个函数function [z1, z2] eso_step(z1, z2, i_meas, u, alpha, beta1, beta2, Ts) e i_meas - z1; z1 z1 Ts * (z2 beta1 * e alpha * u); z2 z2 Ts * (beta2 * e); endd轴和q轴各跑一个这样的函数每周期输入当前测量电流和上周期电压指令输出z1、z2。注意ESO本质上是个开环微分估计器电流测量噪声会被z2放大所以ωo不能拍脑袋取大后面我会专门讲怎么调。2.4 代价函数与控制律有限控制集MPCC中逆变器通常有8个开关状态。两电平逆变器对应8个基本电压矢量包括两个零矢量。每个控制周期对每个矢量计算对应的dq轴电压代入超局部模型预测下一拍电流然后代入代价函数g (id_ref - id_pred)² (iq_ref - iq_pred)²也可以加上电压项或开关变化次数惩罚项用来限制开关频率但会增加电流纹波。基础版本先不加跑通后再说。如果采用连续控制集方案则不需要遍历8个矢量可以直接令预测电流等于参考电流反解出需要的电压矢量。但有限集方案更贴合“直接控制逆变器开关状态”的思路仿真实现也更直观。3. 仿真平台搭建与实操步骤3.1 Simulink模型顶层架构这套仿真在Simulink里建议用固定步长离散求解器电流环采样周期Ts取10~20微秒。模型顶层结构大致是直流电源和两电平逆变器PMSM电机模块使用自带模型或自建数学模型坐标变换模块三相电流转dq电角度来自电机模块速度环控制器输出q轴参考电流d轴参考电流按id0给定电流环ESOMPCC核心模块输出逆变器开关信号示波器和数据记录模块转速环可以选择PI或者ADRC。第一版建议先用PI跑通电流环避免两个新技术同时调试时互相甩锅。PI输出iq_ref需要限幅避免启动电流过大限幅值一般取额定电流的1.5~2倍。3.2 电流环ESOMPCC模块的实现细节电流环每个采样周期内按顺序执行采样id、iq、电角度θ和转速ωr计算当前dq轴电压候选矢量8个开关状态经Clarke变换到αβ再经Park变换到dq运行两个ESO分别估计Fd和Fq对8个候选电压矢量用超局部模型预测下一拍电流计算代价函数选择最优开关状态输出开关信号到逆变器dq电压候选矢量计算要严格注意Park变换的符号约定。常见做法是先算αβ轴电压v_alpha Vdc/3 * (2*Sa - Sb - Sc); v_beta Vdc/sqrt(3) * (Sb - Sc);再根据电角度旋转到dq轴vd v_alpha * cos(theta) v_beta * sin(theta); vq -v_alpha * sin(theta) v_beta * cos(theta);MPCC核心函数可以这样组织function [Sa, Sb, Sc] mpcc_esoi(id_ref, iq_ref, id, iq, theta, Vdc, Fd, Fq, alpha_d, alpha_q, Ts) switches [0 0 0; 1 0 0; 1 1 0; 0 1 0; 0 1 1; 0 0 1; 1 0 1; 1 1 1]; g_min inf; idx 1; for k 1:8 [vd, vq] switch_to_dq(switches(k,:), Vdc, theta); id_pred id Ts * Fd Ts * alpha_d * vd; iq_pred iq Ts * Fq Ts * alpha_q * vq; g (id_ref - id_pred)^2 (iq_ref - iq_pred)^2; if g g_min g_min g; idx k; end end Sa switches(idx,1); Sb switches(idx,2); Sc switches(idx,3); end第一版先按上面的思路跑通不加延时补偿。跑通之后再看电流波形是否有周期性毛刺如果有说明需要补充一拍延时补偿。3.3 转速环怎么搭PI还是ADRC标题里主要强调电流环但仿真要完整闭环转速环少不掉。如果你只是复现ESOMPCC外环用PI就行重点是验证电流环鲁棒性。转速环PI参数按常规方法整定先让电流环闭环作为一个快速内环把速度环带宽设为电流环带宽的1/10左右然后手动调Kp、Ki。如果想让方案更“自抗扰”一些转速环也可以上ADRC。转速环的机械方程包含转动惯量、摩擦系数同样可以用二阶ESO估计负载转矩和未建模摩擦。做一次完整的ADRC外加无模型MPCC整台电机从内到外都不依赖精确参数抗扰能力更强代价是观测器数量翻倍调试工作量也翻倍。第一版不建议一次全上。3.4 仿真参数设置示例下面这套参数我在调试时用过属于常见的小功率PMSM风格不代表任何具体型号仅供参考。你可以在自己仿真里按需调整。参数数值直流母线电压 Vdc310 V额定转速1500 rpm极对数4定子电阻 Rs0.5 Ωd轴电感 Ld3 mHq轴电感 Lq3 mH永磁磁链 ψf0.1 Wb转动惯量 J0.001 kg·m²粘滞摩擦系数 B0.001 N·m·s电流环采样周期10 μs转速环采样周期100 μs电流限幅±10 AESO带宽 ωo5000 rad/sESO带宽初始值可以按采样频率的1/20来取。采样频率100kHz时ωo取5000rad/sβ110000β225e6。之后通过看F估计波形微调。4. 关键仿真结果怎么看4.1 启动响应与额定工况空载启动时转速环会输出一个比较大的iq_ref电流环MPCC跟踪参考值。正常波形应该是q轴电流快速上升并稳定在限幅值附近直到转速接近参考值后电流逐渐回落到近零d轴电流始终维持在0附近波动幅度应在小范围内。如果d轴电流出现明显偏移先检查Park变换方向以及ESO有没有收敛。启动过程中ESO的Fd、Fq估计值会从初值跳变。我习惯把ESO状态初始化为当前测量电流值z2初始化为0这样启动瞬间不会因为观测器大误差导致MPCC选错电压矢量。启动前还可以给一个软启动斜坡参考转速。4.2 突加负载扰动仿真到一半突然加上额定负载转矩可以看到q轴电流快速上升到负载对应值转速会有一个小的跌落然后迅速恢复。ESOMPCC的优势在这个场景下最明显负载变化会立刻反映到Fq的估计值里下一拍预测模型就带上了负载信息电流环不需要等转速误差变大才反应。如果转速跌落幅度偏大优先检查转速环PI有没有限幅作用再检查ESO带宽是否足够。带宽太低F估计滞后负载信息进入预测模型就慢带宽太高z2噪声大电流预测会来回抖。4.3 参数失配鲁棒性对比这个测试是整套方案的点睛之笔。把仿真电机模块里的电阻改成控制器设定值的2倍电感改成80%磁链改成1.2倍然后保持ESOMPCC参数不变看电流波形和转速波形。结果应该与正常参数时相差不大。作为对比在同样失配条件下跑一个普通MPCC你会发现预测电流偏差变大波形出现明显畸变甚至转速振荡。实际调试时F估计值会吸收掉一部分参数偏差所以你会看到Fd、Fq的幅值和正常情况不一样这是正常现象。不要用“F是否符合理论公式”来评判ESO好坏而应该看“F的估计是否平稳、预测电流是否准确”。5. 常见问题与排查技巧实录5.1 电流发散波形炸飞ESOMPCC最常见的故障是上电瞬间电流发散。原因多半是ESO初始状态与实际电流不匹配或者α符号、幅值不对。排查顺序先断开MPCC给一个开环固定电压矢量看电流平台是否正确再独立检查ESO输入一个已知正弦电压看z1能否跟踪测量电流z2是否平滑最后再投入闭环。ESO状态限幅建议加上。z2是电流变化率数量级可能到几万甚至几十万不加限幅容易在异常工况下打爆控制输出。5.2 电流纹波偏大、开关频率太低有限集MPCC没有固定PWM载波开关频率不恒定电流纹波一般比SVPWMPI大。如果纹波受不了可以加大电流环采样频率或者在代价函数里加入开关切换惩罚项g (id_ref - id_pred)² (iq_ref - iq_pred)² λn·n_switchn_switch表示当前候选开关状态与上一周期实际开关状态之间发生变化的开关次数λn越大开关频率越低但动态响应变慢。这个λn只能靠仿真扫描从0开始慢慢加观察电流THD和动态响应平衡点。5.3 延时补偿怎么加数字控制器存在一拍计算延时k时刻采样、计算、输出实际电压要到k1周期才开始作用。理想MPCC如果忽略这一点会导致预测电流偏“乐观”实际电流跟踪滞后一拍高转速时尤其明显。补偿方法是在当前采样值基础上先用上一周期发出的开关状态预测k1时刻电流然后把k1时刻电流作为新起点再遍历八个开关状态预测k2时刻电流选择使k2时刻电流接近参考值的开关状态。第一版不加补偿能跑通但动态性能会被低估。5.4 ESO带宽到底调到多少没有一个万能数字。工程上我习惯从采样频率的1/20开始试观察z2波形。如果z2在阶跃扰动后恢复慢说明带宽偏低如果z2毛刺明显且电流纹波增大说明带宽偏高。仿真内有理想测量时可以把带宽往高里调一些验证ESO的收敛能力加入测量噪声以后一定要重新往低调。另外ESO的两个增益β1、β2必须严格按带宽法配合不能单独乱调否则观测器特征根位置改变会振荡。5.5 α参数怎么定αd、αq本质是控制增益。物理上接近额定电感倒数但不需要准确。比如真实Lq3mHαq可以取250~350之间。α偏大预测模型对电压过于敏感容易导致控制动作剧烈α偏小动态偏慢参考电流跟踪延迟。ESO只能补偿F中的扰动和模型误差补偿不了α本身的偏差所以α不能离谱。我在仿真中一般先取1/L的标称值再上下扫描10%左右看电流阶跃响应的超调和上升时间。5.6 转速环和电流环采样周期冲突电流环用10μs转速环用100μsSimulink里要注意离散模块的采样时间设置。转速环输出iq_ref保持到下一个更新周期电流环每个周期都读这个值。如果转速环PI输出有高频抖动iq_ref可能一直在变MPCC会不断切换开关状态加大开关损耗。建议在转速环输出端加一个一阶低通滤波或者把转速环采样周期调慢一些。6. 参考文献检索建议与扩展阅读项目标题里提到“附参考文献”这里不做成那种生硬的条目而是给你几个明确的检索方向去学术数据库一搜就有大量可用的原理性文献和学位论文。第一自抗扰控制基本框架与扩张状态观测器理论重点看ESO的带宽参数化、离散化实现和收敛性分析搜“active disturbance rejection controlextended state observer”即可。第二模型预测电流控制在永磁同步电机中的应用重点看有限控制集和连续控制集两种路线搜“model predictive current controlPMSM”能够找到很多对比实验。第三无模型预测电流控制重点看超局部模型的定义、F估计方式搜“model-free predictive current controlultralocal model”可以找到近几年的改进方案。第四电流环参数鲁棒性研究搜“parameter mismatchcurrent controlpermanent magnet motor”可以找到与PI、无差拍、MPCC在不同失配程度下的对比结论。第五数字控制延时补偿搜“one-step delay compensationdigital current control”可以找到延时产生的原因和常见补偿结构。这些文献不一定要全读抓三篇核心的就行一篇讲清ADRC一篇讲清MPCC一篇讲清无模型预测控制。先把原理框架搭起来再回到仿真里验证效率比泡在文献里高得多。最后分享一个我自己常用的调试顺序先让ESO开环跑起来把F估计波形和理论扰动项对比确认观测器收敛再让MPCC闭环跑电流环确认动态和纹波最后才挂转速环做整机测试。这样每一步出了问题都知道该查谁不会在整套系统里来回抓瞎。这套方案后续想扩展也很顺手无模型电流环的F估计器可以换成更高阶观测器或者把转速环也改成自抗扰结构思路都是一脉相承的。
阅读完成 · 觉得有帮助?