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

考虑参数摄动的PMSM鲁棒电流控制器Simulink仿真设计

考虑参数摄动的PMSM鲁棒电流控制器Simulink仿真设计 ★ FEATURED ARTICLE
做电驱仿真的朋友应该都遇到过类似情况PI参数明明按Simulink里标称的PMSM参数整定得很好电流曲线干净利落可一旦把参数摄动加进去——电感掉一点、磁链缩一截、电阻翻倍——波形就开始出现毛刺严重的时候直接振荡甚至发散。问题不在于PI控制本身有多差而在于我们把控制器的所有赌注都押在了参数永远是整定那一刻的参数这个假设上。这篇文章就来完整走一遍基于Simulink的考虑参数摄动的PMSM鲁棒电流控制器设计流程。我会先从物理层面讲清楚参数摄动到底怎么影响电流环再给出可落地的鲁棒控制律推导然后一步步搭出可实时改参数的PMSM仿真模型最后给出对比实验和调试中容易踩的坑。适合刚接触Simulink建模的高校学生、做伺服或电驱电流环的工程师以及要出鲁棒控制仿真结果又不想只靠论文公式硬套的人。1. 参数摄动有多要命先看一个视而不见的失控案例1.1 电流环为什么对参数变化如此敏感电流环是电机控制的内层底线它的任务只有一个让实际电流快速、无误差地跟踪指令电流。最常用的做法是dq坐标系下的PI调节器。整定PI时通常会做一次简化——把PMSM的d/q轴方程在工作点附近线性化忽略交叉耦合得到一个一阶惯性环节然后用带宽法或极点配置法算出比例增益和积分增益。问题就出在这里。你用标称电感L0、标称电阻Rs0算出的Kp和Ki本质上是把控制器的增益标定在了一个特定的被控对象上。一旦实际运行中的电感L发生饱和、下降20%到30%电流环的开环增益就跟着变了实际被控对象的增益比控制器设计时低整个闭环的特征方程变化极点位置偏移阻尼比下降。表现出来就是超调变大、调节时间变长严重的会出现等幅振荡。电阻的摄动方向相反但影响也不小。定子电阻随温度升高而增大温度系数大概是每升高10度增加3.9%左右。在低速工况下电阻压降占比明显电阻变化直接拉低电流环的稳态精度积分器也要花更多时间去补偿。还有一类容易被忽略的问题是解耦项失配。d/q轴电流通道之间存在反电动势和耦合项常规做法是在控制器里用标称参数做前馈补偿。标称参数下这组前馈是精准的能抵消耦合参数摄动后前馈就不准了d轴和q轴之间会漏出交叉耦合转速越高耦合电压越大对电流环的干扰越明显。1.2 PMSM参数摄动的三大来源不是所有参数变化都叫参数摄动。工程上真正会随工况持续变化的PMSM参数主要有三个参数摄动来源典型变化范围影响机理定子电阻Rs绕组铜损发热、环境温度标称值的1.2~2倍影响稳态压降、低速精度、阻尼比d/q轴电感Ld/Lq磁路饱和、电流幅值增大标称值的70%~130%影响电流环带宽、闭环稳定性、耦合强度永磁磁链ψf永磁体温度升高、老化退磁标称值的80%~110%影响反电动势补偿项带来恒定的扰动电压从控制角度看这些摄动可以统一看成控制器眼中的被控对象参数和实际被控对象参数之间的偏差。偏差越大传统PI控制器的设计前提就越不成立。提示参数摄动不是噪声它的变化往往是缓慢但持续存在的。这意味着任何靠积分器硬磨的补偿方式在面对电感摄动时都很难根治问题——积分器能消除稳态误差但补偿不了环路增益变化带来的稳定性问题。1.3 一个直观的数量级感受举一个仿真实例。某小功率PMSM标称参数为Rs02.875Ω、Ld0Lq08.5mH、ψf00.175Wb、极对数pn4。按电流环带宽ωc1000rad/s整定PIKpL0·ωc8.5KiRs0·ωc2875。仿真中把温升和磁饱和叠加电阻升高到1.6倍电感下降到75%。这种情况下传统PI电流环的阶跃响应会出现明显超调q轴电流振荡2到3个周期才收敛。如果把摄动幅度再加到电感降到60%系统基本就进入持续振荡状态。这就是为什么在高温、大电流、高转速工况下台架实测结果总比Simulink里用常温标称参数仿出来的结果烂一截。所以问题的本质很清楚我们需要的不是一个在标称工况下更好看的控制器而是一个在参数偏离标称值时仍然能维持预期动态性能的控制器。这就是鲁棒电流控制器存在的意义。2. 鲁棒电流控制器设计的数学底子2.1 PMSM的dq轴电压方程与不确定项整理先把基础模型写清楚。PMSM在dq旋转坐标系下的电压方程为u_d R_s·i_d L_d·di_d/dt − ω_e·L_q·i_qu_q R_s·i_q L_q·di_q/dt ω_e·(L_d·i_d ψ_f)其中u_d、u_q是定子d/q轴电压i_d、i_q是电流Rs是定子电阻Ld/Lq是d/q轴电感ψf是永磁磁链ωe是电角速度。现在把参数写成标称值偏差量的形式R_s R_s0 ΔR_s L_d L_d0 ΔL_d L_q L_q0 ΔL_q ψ_f ψ_f0 Δψ_f把上面这些代入电压方程会得到一组由标称参数描述的方程外加一堆跟Δ有关的项。这些Δ项就是参数摄动对系统动态的实际影响。为了方便控制器设计我把它们整理成集总扰动项δd和δqL_d0·di_d/dt −R_s0·i_d ω_e·L_q0·i_q u_d δ_dL_q0·di_q/dt −R_s0·i_q − ω_e·(L_d0·i_d ψ_f0) u_q δ_q其中δ_d −ΔR_s·i_d ω_e·ΔL_q·i_q − ΔL_d·di_d/dt δ_q −ΔR_s·i_q − ω_e·(ΔL_d·i_d Δψ_f) − ΔL_q·di_q/dt这里最核心的一步是我不需要精确知道每个Δ是多少只要能给出一组保守的上界——例如|δ_d|≤ρd、|δ_q|≤ρq——就可以设计一个能够压制住这些扰动的控制项。这就把参数摄动问题转化成了一个有界扰动抑制问题处理起来清晰得多。2.2 误差动态与李雅普诺夫鲁棒补偿项推导定义电流跟踪误差e_d i_d* − i_d e_q i_q* − i_q正常情况下i_d取0i_q来自速度环或直接给定。把误差对时间求导代入上面的标称模型可以得到误差动态。控制器的任务就是让误差动态尽量快地收敛到零并且不被δd/δq带偏。我采用的控制律结构是标称PI 解耦前馈 鲁棒补偿项三段式u_d (K_pd·e_d K_id·∫e_d dt) − ω_e·L_q0·i_q ρ_d·sat(e_d/ε) u_q (K_pq·e_q K_iq·∫e_q dt) ω_e·(L_d0·i_d ψ_f0) ρ_q·sat(e_q/ε)第一段是常规PI负责标称系统的跟踪和稳态精度第二段是解耦前馈用标称参数做d/q轴解耦和反电动势补偿第三段是鲁棒补偿项ρ为鲁棒增益sat(·)是饱和函数ε是边界层厚度。为什么用饱和函数而不是符号函数符号函数sgn(e)在误差极小时也会输出±1系统会变成继电器控制仿真和实际工程中都会出现高频抖振。饱和函数在|e|ε时输出±1相当于把强校正确认限制在大误差区在|e|≤ε时输出e/ε相当于一个很大的比例增益。这样既能实现强鲁棒性又不会产生抖振。为了验证这个结构的稳定性定义李雅普诺夫函数V 0.5·L_d0·e_d² 0.5·L_q0·e_q²V的导数由标称误差动态的衰减项、PI控制项和扰动项组成。只要鲁棒增益满足ρd≥|δd|的上界、ρq≥|δq|的上界那么V的导数始终为负误差动态在李雅普诺夫意义下收敛。这个推导过程不需要精确知道摄动的实时值只需要一个保守的上界估计这就是它能应对参数摄动的根本原因。2.3 控制增益怎么选不靠猜的估算流程很多朋友拿到公式后最头疼的问题是ρ到底取多少。我给一套可操作的流程参数估算方式实际参考值K_pd / K_pq按电流环带宽ωc计算Kp ωc·L0[参数示例中L08.5mHωc1000时Kp8.5]K_id / K_iqKi ωc·R_s0[参数示例中Rs02.875ΩKi2875]ρ_d估计ΔR·i_d ωe·ΔL_q·i_q ΔL_d·di_d/dt的上界小功率样机可取8~15Vρ_q估计ΔR·i_q ωe·(ΔL_d·i_dΔψ_f) ΔL_q·di_q/dt的上界高转速下Δψ_f的反电动势项占大头取15~25Vε按电流反馈噪声幅值取通常为额定电流的1%~3%0.2~0.5A重点是ρ不要精确等于扰动上界。工程上习惯取1.2到1.5倍裕量但也不要激进地取非常大否则鲁棒项在边界层外变成bang-bang控制反而诱发振荡。注意PI增益的整定依据仍然是标称参数下的带宽需求不要因为加了鲁棒项就盲目调大Kp。鲁棒项管的是参数摄动带来的扰动PI管的是标称系统的性能两者分工明确混了反而坏事。3. 基于Simulink的手把手建模过程3.1 搭建可摄动的PMSM本体模型Simulink里有两种搭PMSM的方式直接用电气库里的永磁同步电机模块或者用数学模块从dq方程手搭。对于鲁棒控制仿真我强烈推荐后者。原因很实在电气库模块的参数是对话框里的固定值没法在仿真过程实时注入摄动手搭dq模型则可以把Rs、Ld、Lq、ψf全部做成信号输入端口想什么时候突变就什么时候突变这才是参数摄动实验的关键自由度。建模思路不复杂就是把电压方程改写为电流导数的显式形式di_d/dt (u_d − R_s·i_d ω_e·L_q·i_q) / L_d di_q/dt (u_q − R_s·i_q − ω_e·(L_d·i_d ψ_f)) / L_q在Simulink里搭这个模型只需要两个求和模块算出分子、两个Gain模块做除法、两个Integrator模块得到id和iq、再反馈回来。模型内部只需要4个Gain模块和2个积分器不要滥用子系统把简单结构搞复杂。具体连线顺序是用Product模块做乘法R_s·i_dω_e·L_q·i_q这两个量同时送进d轴求和模块d轴求和模块的输入是u_d、−R_s·i_d、ω_e·L_q·i_q输出除以L_d后进积分器得到idq轴同理注意反电动势项ω_e·(L_d·i_d ψ_f)整体取负号id/iq同时作为反馈信号送回到乘法器并引出到控制器参数Rs/Ld/Lq/ψf不要直接写死用Inport口作为外部输入方便摄动注入。为了提高重用性把这个模型封装成Subsystem命名为PMSM_dq_Plant对外端口只留u_d、u_q、ω_e、Rs、Ld、Lq、psi_f、和输出id、iq。这样后面做多种控制器对比时完全不需要动本体模型。机械部分如果需要全模型可以在外面加运动方程积分出转速如果重点验证电流环可以把ω_e设成恒定值或者用一个斜坡信号模拟转速爬升。我建议第一版直接给定ω_e500rad/s左右先把电流环调通再加机械环节。3.2 电流控制器子系统内部接线控制器子系统我取名Robust_Current_Controller。外部输入分别是id_ref、iq_ref、id、iq、ω_e、和两组参数状态一组标称参数用于控制器内部一组实际运行参数用于被控对象。实际操作中我把标称参数作为模型工作空间变量引用而不是做成输入口这样子系统更简洁。控制器内部按三条并行通道搭建第一通道是PI。两个标准PI控制器分别处理d轴和q轴误差信号。用Parallel PI结构积分器需要加Saturation和Anti-windup这一步不能省否则在大阶跃下积分器饱和会让鲁棒项完全失效。第二通道是解耦前馈。d轴前馈量 −ω_e·L_q0·i_qq轴前馈量 ω_e·(L_d0·i_d ψ_f0)。注意这里i_q和i_d用的是实际反馈电流而不是参考值这样摄动下的解耦效果会更好一点。用Product和Sum模块搭好之后直接加到PI输出上。第三通道是鲁棒补偿。用Saturation模块模拟饱和函数模块上限设为1、下限设为−1输入是e/ε输出再乘ρ。为了减少连线条数可以直接把饱和模块输入设为e然后乘一个系数(ρ/ε)等价于sat(e/ε)·ρ。三个通道的输出相加得到u_d、u_q送进被控对象。最后一步是把控制器也封装成Subsystem否则后面切换对比方案时你会被一堆线绕晕。3.3 参数摄动注入与仿真配置参数摄动注入我用了两种方式各有用处第一种是阶跃摄动。用Step模块在指定时刻把参数从标称值跳变到摄动值适合观察瞬态响应。实现方法是常值参数 Step模块 × 偏移系数再用加法器合成。比如要模拟t0.2s时电感降到75%就设置Lq_in Lq0·(1 − 0.25·step(t−0.2))。第二种是斜坡摄动。用Ramp模块让参数在0.2s到0.5s内连续变化模拟温度缓慢升高造成的电阻爬升。个人建议先做阶跃因为阶跃是最恶性的工况控制器如果连阶跃摄动都能压住斜坡摄动基本不是问题。仿真配置方面既然用了连续积分器和连续控制器求解器建议选ode45或ode23tb最大步长设成小一点比如1e-5s。不要因为模型简单就开默认步长鲁棒项在边界层附近切换时大步长会带来数值误差让波形看起来比实际抖。如果想模拟数字控制的效果可以在控制器输出端加一个Zero-Order Hold和一个Unit Delay两个模块串联采样时间设成PWM周期例如10us表示电流采样延迟和PWM更新延迟。3.4 模型工作空间参数脚本为了方便复现我把模型参数放在一个初始化脚本里模型里所有相关模块直接引用这些变量名。脚本大致长这样% PMSM标称参数 Rs0 2.875; % 定子电阻 Ohms Ld0 8.5e-3; % d轴电感 H Lq0 8.5e-3; % q轴电感 H psi_f0 0.175; % 永磁磁链 Wb pn 4; % 极对数 J 0.001; % 转动惯量 kg*m^2 % 控制器参数 wc 1000; % 电流环带宽 rad/s Kp_d wc*Ld0; Kp_q wc*Lq0; Ki_d wc*Rs0; Ki_q wc*Rs0; rho_d 10; % d轴鲁棒增益 V rho_q 18; % q轴鲁棒增益 V eps_d 0.2; % d轴边界层 A eps_q 0.2; % q轴边界层 A % 仿真工况 Udc 300; % 直流母线电压 V we_ref 500; % 电角速度 rad/s iq_ref 5; % q轴指令电流 A所有参数在模型里通过变量名访问这样批量跑工况时只需要改脚本顶端数值模型不用动。4. 仿真设计与结果判读4.1 四组对比工况怎么布为了客观回答鲁棒控制器到底带来了什么我设计了四组对比仿真外加一组加压工况。每组的控制器、被控对象参数、运行时间都一致只有参数摄动配置不同。工况编号控制器类型参数状态目标工况1传统PI标称参数对照组基线工况2鲁棒控制器标称参数观察鲁棒项在无摄动时是否有副作用工况3传统PIt0.2s时L降25%、Rs升60%、ψf降15%复现参数摄动下的恶化工况4鲁棒控制器同上验证鲁棒补偿效果工况5鲁棒控制器在工况4基础上再加0.3s时iq_ref阶跃从5A到8A验证负载突变下的鲁棒性每个工况运行0.6sq轴电流初始为00.05s时给定iq_ref5A阶跃。记录iq响应、id耦合波段和控制器输出电压。4.2 从波形图出发看鲁棒性该看什么指标鲁棒性不能只看一张波形图感觉稳不稳。我固定看四个指标超调量、调节时间、振荡次数、偶发耦合幅度。工况1的典型结果是iq超调约4%调节时间约5msid几乎不波动整体清爽。工况2的结果通常很有意思在标称参数下鲁棒控制器的超调可能反而比纯PI略大一点调节时间也接近带宽极限没有明显提升。这不是控制器做差了而是在无摄动条件下鲁棒项处于低活跃状态整个控制器退化成带边界层高增益补偿的PI。代价很小但也不会白送性能提升。工况3的典型结果是iq超调飙升到15%到20%调节时间拉长到三倍以上同时id出现明显的耦合扰动波形多个周期的阻尼振荡。如果参数摄动再加大输出波形直接进入等幅振荡。工况4是核心验证场景超调量被压回5%以内调节时间接近工况1的水平id耦合扰动明显衰减。鲁棒补偿项在参数突变瞬间给出了一个额外的校正电压把参数摄动带来的扰动顶回去了。工况5继续加难鲁棒控制器的表现仍然是超调小、收敛快这说明该控制结构对参数摄动负载突变的组合工况也有不错的抑制能力。提示仿真时用Simulink的Data Inspector记录波形比直接拉Scope更好。Data Inspector支持波形光标测量超调时间和稳态误差还能把两组结果叠加对比Scope只能看不方便定量读参数。4.3 一个反直觉的结论鲁棒控制不是为了在所有工况下更快很多人在做鲁棒控制对比时会陷入一个误区期望鲁棒控制器在标称工况下也要比PI漂亮甚至把带宽拉高。实际结果是鲁棒项的加入并不会提升标称工况的带宽极限——它只是保证了当参数偏离标称值时系统的行为不会大幅恶化。用大白话说PI控制器是标称工况下最优参数一走样就露怯鲁棒控制器是标称工况不输太多参数走样了依然稳得住。在工业现场、台架测试这些参数必然漂移的环境里后者的价值远大于前者。仿真中应该在工况3和工况4之间做纵向对比而不是只盯着标称工况的波形自我感动。5. 做仿真时最容易踩的五个坑5.1 参数摄动加到物理不可能的程度仿真可以接受任意数值但控制结论只对物理合理的摄动范围有意义。比如把电感摄动设成负值、或者让电阻突然变成标称值的10倍系统发散是必然的这不证明鲁棒控制器差。做参数扫描时先把摄动范围限定在实际工况边界内再去解读控制器的表现。5.2 忽略离散化和延迟环节纯连续Simulink模型里控制器输出可以瞬间改变电压相当于理想无延迟执行。真实系统有PWM周期延迟、电流采样零阶保持、DSP计算延迟。建议至少加一个Unit Delay在控制器输出端模拟一拍延迟。加了延迟之后鲁棒增益的取值上限会下降之前连续模型里取ρ20V没问题的离散化之后可能到ρ15V就振。这不是控制器设计错了是数字实现引入的固有相位滞后。5.3 鲁棒项参数调节顺序反了一次把Kp、Ki、ρ、ε全调一遍几乎无法收敛。正确顺序是先把ρ设为0用标称参数把PI调好然后保持PI不动加入小ρ值观察标称参数下的波形是否恶化再把ρ逐步加大同时把参数摄动打开。每调一步只动一个参数。很多朋友一上来就把ρ取得很大结果波形高频抖动还误以为是PI整定问题来回折腾半天。5.4 解耦项偷偷用上了实际参数有个隐蔽的错误为了让仿真波形好看把解耦前馈中的Lq、Ld、ψf直接接到了被控对象的实际参数端口。这等于让控制器偷看了实际参数相当于告诉控制器真实的摄动值。这样做的结果是波形完美但完全违背了鲁棒控制器只知道标称参数的前提。控制器内部一切前馈、PI、解耦一律只用标称参数实际参数端口只能接到被控对象模型上。5.5 积分饱和让鲁棒项成了摆设大阶跃工况下PI积分器输出很容易顶到饱和限幅。这时鲁棒项即使给出补偿信号整体输出电压也被积分饱和卡死控制器退化成开环。仿真里不解决这个问题工况4和工况5的结果会非常难看。解决方法就是前面说的积分器加Limited Integrator限幅值按逆变器最大输出电压设定同时使能反计算抗积分饱和back-calculation。调试时优先观察u_d、u_q是否频繁顶到饱和模块的上限如果长时间贴边说明设计工况超出了电压裕量该提高母线电压或降低阶跃幅度。最后说几句实操体会这套鲁棒电流控制器我在多个仿真项目里反复用过最大的感悟是它不能替代整定但能把你辛辛苦苦调好的PI保护起来。只要参数摄动在设计的界内电流环的动态特性基本不漂移这对后续速度环、位置环的调试是巨大的隐性收益——底层不稳上层怎么调都白搭。另外一个经验是Simulink仿真里验证过的鲁棒控制器走向台架前一定要重新检查两个地方一是电流采样噪声因为边界层内的高增益对噪声很敏感如果实测波形出现毛刺可以把ε放大到额定电流的3%左右二是鲁棒项在低速和零速时的表现低速下耦合项和反电动势项都很小扰动上界估计应该收窄否则鲁棒项会过度反应。如果你想继续深挖还可以把同样的模型改成模型预测控制、滑模控制做三方对比或者把参数摄动从阶跃变成随机分布去做蒙特卡洛鲁棒性评估。手里有这样一个可摄动的Simulink模型很多控制算法都值得重新跑一遍。
阅读完成 · 觉得有帮助?
咨询建站