PMSM控制进阶:从PI参数整定到滑模与无感FOC全解析

发布时间:2026/10/20 16:59:46
PMSM控制进阶:从PI参数整定到滑模与无感FOC全解析 做PMSM永磁同步电机控制这些年最常被新入行的工程师问的问题就是PI参数怎么调滑模到底比PI强在哪无位置传感器是怎么“猜”出转子位置的说实话这三个问题其实是同一个问题的三个阶段——你从电流环调到速度环再从带编码器的FOC走向无感FOC本质上都是在解决“怎么让电机转得稳、转得准、还能省掉传感器”这三件事。这篇博客我打算把这个链条完整拆一遍先讲清楚PMSM的数学模型和坐标变换这个地基再讲PI控制器的原理、整定方法和离散化实现接着进入滑模控制的设计思路和工程化要点最后落到无位置传感器模型上把滑模观测器、锁相环、启动策略串起来。适合做伺服驱动、电动工具、家电变频、机器人关节控制的朋友参考就算你是刚接触FOC不久只要照着这条线走也能把整个控制链路打通。1. 为什么先把“控制方案”放在一起讲很多教程会把PI、滑模、无感控制拆成三篇完全独立的文章来讲但实际做项目的时候这三者是咬合在一起的。你不可能只把电流环换成滑模而速度环还用原来的PI也不可能在无感控制里去用依赖编码器角度的高速观测策略。所以我想先给读者一张“全景图”明白每个环节在整条链路里占什么位置这样后面看到任何一个模块都不至于迷失方向。一套典型的三环PMSM控制结构是这样的最外层是位置环或者速度环中间是速度环视具体应用取舍最内层是电流环。电流环是响应速度最快的一环决定了转矩的响应速度和精度速度环负责让电机的实际转速跟随给定值最外环一般不是必须的但在一些伺服应用里要保证末端的位置精度。电流环的核心是d-q轴解耦控制。这里先不展开公式只强调一个结论PMSM的定子绕组通的是三相交流电如果不做坐标变换它的数学模型里含有和转子位置强耦合的项控制器很难直接设计。而通过帕克变换和克拉克变换把三相静止坐标系转换到跟随转子旋转的d-q坐标系之后电机的电感参数在稳态下几乎变成了常数电流环就能用很简单的PI调节器去控制。这也是为什么“从PI开始”不是一种过时的选择而是FOC框架下最自然的基础方案。滑模控制的价值在于它把PI的“线性思维”换成了“非线性思维”。PI靠比例和积分两个动作去逼近目标滑模靠的是把系统状态“拉到滑模面上”再沿着滑模面滑向原点。滑模对参数变化和外部扰动不敏感这种强鲁棒性在电机参数随温度漂移、负载突变的场景下很有优势。当然它也有代价就是理想切换带来的高频抖振这在工程上需要做平滑处理。无位置传感器模型再往上走一层目标是省掉编码器或者霍尔传感器。它的本质是“从电压、电流的信息里把转子位置估出来”。最常用的方法之一是滑模观测器因为它天然适合处理反电动势这种含有不连续谐波干扰的信号。这样一来前面讲的滑模控制正好和无感观测天然契合可以共用一套设计语言。这也就是为什么我建议你把这几个主题放在一起学而不是孤立地背公式。2. 先打好地基坐标变换与dq轴模型2.1 三项绕组怎么变成两个直流分量PMSM的物理结构不复杂定子上有三相绕组转子是一块永磁体。通入三相正弦电流之后定子产生旋转磁场拖着转子转。问题在于三相绕组的互感随着转子位置变化而变化直接求解三个相电压方程非常麻烦而且物理意义不清晰。解决办法是坐标变换。第一步叫克拉克变换把三相静止坐标系 abc 变成两相静止坐标系 αβ。这一步相当于把三个互差120度的正弦量合成两个互差90度的正弦量在数学上做一次简单的线性变换而已。第二步叫帕克变换把αβ坐标系的交流量投影到旋转的dq坐标系里。投影的角度就是转子磁极的位置通常是编码器或观测器给出的θe。做完这一步原来随角度变化的交流量在dq坐标系里就变成了直流分量id是励磁分量iq是转矩分量。有些读者第一次看变换矩阵会觉得抽象我建议用“看表盘”来理解三相绕组相当于你看钟表的时针、分针、秒针它们在不停转动帕克变换相当于你站到表盘中央跟表针一起转这时候所有针相对你都是静止的。控制上的好处就是你终于可以像控制直流电机的电枢电流一样去控制这个“静止”的iq了。2.2 dq轴电压方程和转矩方程在dq同步旋转坐标系下表贴式PMSM的定子电压方程简化如下ud R·id L·(did/dt) - ωe·L·iquq R·iq L·(diq/dt) ωe·L·id ωe·ψf式子里R是定子电阻L是电感ωe是电角速度ψf是永磁体磁链。第一眼看过去ud的表达式里有-ωe·L·iquq里有ωe·L·id这两项就是d轴和q轴之间的交叉耦合。如果控制器的带宽不够高或者没有解耦两个轴相互影响电流响应就会变差。电磁转矩在表贴式电机里可以写成Te 1.5·pn·ψf·iqpn是极对数。这个式子非常漂亮它说明转矩只和iq成正比和id无关。于是有了最经典的id0控制策略永远让d轴电流为0iq就是唯一的转矩控制量此时电机的表现几乎像一台直流电机。转矩电流比在这个策略下也最直接控制律可以设计得很简洁。2.3 为什么“id0”不是万能的我需要诚实地说id0是工程入门最友好的策略但不是所有场合的最优解。在高速弱磁区端电压被母线电压限制住必须引入负的id来削弱永磁磁场才能继续升速。在考虑最大转矩电流比的场合对于内置式电机Ld≠Lq需要根据磁阻转矩的表达式去分配id和iq让给定电流幅值下输出转矩最大。在你的第一个无感项目里我建议先用id0把整个控制链路跑通等到转速范围、负载特性都摸清楚之后再考虑弱磁策略。否则一开始就把id的目标值设成负的电流环的调试难度会明显上升出了问题很难区分是观测器的问题还是电流环的问题。3. PI控制用得最多也最容易调错的环节3.1 电流环PI为什么可以用“零极点对消”设计电流环的被控对象很简洁以一个轴为例从电压到电流的传递函数是1/(LsR)这是一阶惯性环节。设计PI时最常见的思路就是零极点对消让PI控制器的零点去抵消被控对象的极点然后再把整个前向通路设计成典型的低通形式。具体参数公式很多文献都写过工程里我习惯用Kp L·ωcKi R·ωcωc就是你想要的电流环带宽这里以rad/s为单位。实际上就是把闭环传递函数近似成ωc/(sωc)响应速度完全由ωc决定。这个设计方法的好处是“一个参数走天下”你只需要决定带宽Kp和Ki自动算出来。而且Kp负责快速响应Ki负责消除稳态误差两者的比值刚好等于R/L也就是电机的电气时间常数这在物理上是自洽的。实际选带宽的时候电流环带宽一般取开关频率的1/10到1/20。比如开关频率10kHz带宽取500Hz到1kHz是常见的。太高容易引入数字延时的相位滞后太低则转矩响应迟钝速度环的动态性能也上不去。等你改了开关频率、换了电机只要重新计算电气参数PI参数都能直接给出来比盲目试凑靠谱得多。3.2 速度环PI别直接抄电流环的公式速度环的被控对象和电流环完全不同它后面接着的是机械转动惯量J是一个积分环节。速度环的PI设计通常也采用带宽法忽略摩擦和负载扰动后从电流指令到转速的传递函数可以近似成串联积分环节。速度环带宽ωv一般取电流环带宽的1/10到1/5这样保证内环在外环眼里足够快速度环才能稳定。速度环P参数和I参数的粗略计算可以借助这个思路Kp_v ≈ J·ωv / (1.5·pn·ψf)Ki_v ≈ Kp_v·ωv / k这里k的取值和系统阻尼有关实际项目中我通常是先算一个初值再在空载、额定负载两种工况下微调。要注意的是转速环的输出是iq的给定单位是安培和真实电流环给定量是有增益关系的这个增益就是1.5·pn·ψf如果搞丢了这项PI参数可能差好几倍。还有一个很实用的经验速度环的比例系数太小会出现转速“软绵绵”的现象给定转速变化之后电机半天才跟上而且加载后转速跌落明显比例系数过大会出现转速震荡表现为电机低速时走走停停、啸叫。积分系数主要影响稳态误差如果带载后转速一直偏小优先加大Ki_v。3.3 积分饱和这个坑几乎人人都踩PI控制在输出达到限幅值之后积分项还在继续累加导致控制器输出暂时“卡”在限幅值等误差反向之后需要很久才能退出来。这就是积分饱和。反映到电机上就是启动时电流超调特别大或者转速过冲之后很难回稳严重的时候直接触发过流保护。工程上最常见的做法是“条件积分抗饱和conditional integration”也叫积分钳位。我自己用的逻辑很简单当控制器的输出已经到达限幅值时如果积分项的方向和限幅方向一致就停止积分如果误差已经反向说明需要退出饱和那就正常积分。这样既不复杂实测效果也很好。还有一个配合手段是“输出限幅跟着母线电压走”。PMSM电流环的输出是电压给定经过SVPWM之后要落到母线电压能给出来的范围之内。很多人只在SVPWM那里做了限幅电流环输出的限幅却写得很随意结果弱磁区电流环一直在饱和边缘挣扎。我建议把电流环输出限幅和母线电压关联起来比如给到0.9倍的最大矢量电压而不是固定一个电压值。3.4 离散化前向欧拉和突斯汀要注意延时差异数字控制里PI调节器要写成离散形式。最常见的是位置式u[k] Kp·e[k] Ki·Ts·Σe[k]或者写成增量式Δu[k] Kp·(e[k]-e[k-1]) Ki·Ts·e[k]两种写法本质相同增量式在某些场合下防积分饱和更方便因为限幅可以直接对输出增量做处理。我个人的习惯是电流环用增量式、速度环用位置式原因是电流环对超调敏感增量式能把输出变化率卡住速度环需要明确的积分项来消除静差位置式更好观察积分状态。更精细的做法是用突斯汀变换去离散积分项因为前向欧拉在高带宽时会引入额外的相位滞后。不过考虑到大多数MCU的电流环带宽和采样率前向欧拉在10kHz采样率下影响不明显。如果你把采样率降到5kHz以下或者电流环带宽拉到1kHz以上再考虑突斯汀的差异也不迟。我在某款MCU上实测过同样的PI参数前向欧拉和突斯汀在600Hz带宽下相位差不到2度基本不影响稳定裕量。4. 滑模控制从哪里来为什么能抗扰动4.1 滑模的大白话理解滑模控制最容易理解的方式是类比“滑雪下坡”。你要从山顶滑到山脚设计的滑模面就是山坡上画好的那条雪道控制律负责把滑雪板压到雪道上。一旦上了雪道不管雪面摩擦力怎么变化你都会沿着雪道滑下去。对应到控制系统滑模面是把误差状态压到一条特定的轨迹上之后系统对参数扰动就不敏感了。数学上滑模控制的设计分两步第一步设计滑模面使系统在滑模面上的运动是稳定的第二步设计控制律使系统能在有限时间内到达滑模面。对速度环来说一个常用的滑模面是s e c·∫e dte是转速误差c是滑模面系数。这个滑模面有个好处当s0时误差的动态方程变成了一阶惯性环节误差按指数衰减到0而且衰减速度由c决定不会出现PI控制那种积分饱和的问题。控制律通常写成等效控制加切换控制的形式u u_eq u_sw等效控制是维持系统停在滑模面上的控制量切换控制则是把系统“踢”回滑模面的非线性项一般取u_sw k·sgn(s)。4.2 符号函数带来的抖振问题怎么处理理想情况下切换控制应该以无穷大频率来回切换实际控制器做不到于是真实系统会在滑模面附近来回穿越形成高频抖振。抖振会通过电流环进入转矩电机噪音变大高速时尤其恼人严重时还会激发机械谐振。工程上最常用的处理有三种。第一种是边界层法把符号函数sgn(s)替换成饱和函数sat(s/φ)φ是边界层厚度。在边界层内控制量从满幅连续过渡到0等于牺牲一部分鲁棒性换来了平滑。第二种是替换成连续函数比如s/(|s|ε)或者tanh(s/ε)实测效果比饱和函数平滑一些但ε太小还是会抖。第三种是改用高阶滑模比如超螺旋算法它把切换函数放到输出的一阶导数里从源头减弱抖振代价是算法更复杂、参数更多。我自己的工程习惯是先用饱和函数把系统调稳边界层厚度取滑模面变化范围的5%到10%等整个环路稳定后再尝试用超螺旋算法去优化噪音。不要一上来就追求高级算法因为抖振的根源不只是符号函数还有采样延时、电流环带宽、速度反馈噪声这些都是边界层和算法替代解决不了的。4.3 滑模和PI怎么选每次聊滑模总有人问是不是滑模就能全面取代PI。我的回答是如果系统工况相对固定PI调好之后完全够用而且调试参数少、物理意义直观如果负载会突变、参数会大范围漂移或者你希望省掉速度环PI的精细整定过程滑模会更省心。在PMSM上一个非常经典的搭配是速度环用滑模、电流环用PI。理由是电流环的带宽高PI的频率响应优势能充分发挥速度环面对的是机械转动惯量和负载扰动这个尺度下滑模的鲁棒性优势更大。这样组合我做过几次项目确实比全PI在“负载跳变时转速跌落”这个指标上表现好不少。当然滑模不是没有代价。除了抖振它还需要准确的模型系数。比如算等效控制时要用电机的转矩常数这个值随温度变化如果偏差太大等效控制就不准切换项的负担会变大抖振随着变大。所以用滑模前最好先把电流环的PI参数整定好让“内功”扎实滑模才有发挥空间。5. 无位置传感器模型把一个传感器省掉之后5.1 为什么需要无感控制省掉的到底是什么传统FOC离不开转子位置信息而位置来自编码器或霍尔传感器。编码器贵、娇气、还要多一根线缆在压缩机、风机、水泵这类成本敏感的应用里面不划算在高温高湿环境下可靠性也打折。无位置传感器控制的目标就是“不要那个反馈器件照样把转子角度和速度估出来”。我先声明一个关键认知无感控制不是真的“无感”而是把物理传感器换成了“虚拟传感器”。这个虚拟传感器依赖的是电机本体作为一个观测器通过定子电压、电流的测量信息把反电动势中的位置信息提取出来。反电动势是啥就是转子永磁体旋转时在定子绕组里感应出来的电压它的大小和方向都跟转子位置直接相关。低速时反电动势太小信号几乎淹没在噪声里这就是无感控制在零速和极低速下困难的根源。5.2 滑模观测器是怎么“猜位置”的无感控制里最经典的中高速方案就是滑模观测器。它的思路是我推测一个电流值实际测量一个电流值两者做差这个差值里含有反电动势误差我通过滑模控制把它趋近到0得到反电动势的估计值再从中提取角度。具体实现时先在αβ静止坐标系下写出定子电流方程。真实的电流方程里有真实的反电动势但我不知道它观测器方程里我假设反电动势是未知扰动量通过一个切换项来补偿。切换项的输入是电流观测误差形式为e_alpha_hat k·sgn(i_alpha_hat - i_alpha)e_beta_hat k·sgn(i_beta_hat - i_beta)当观测电流和实际电流一致时观测器方程里的切换项就正好等于真实反电动势。这个“等于”是滑模收敛得到的不是直接测出来的所以叫观测器。得到反电动势估计值之后转子电角度就可以通过反正切或者锁相环提取了。一个很容易踩的坑是符号函数带来的高频谐波会直接混进角度估计里。所以实际工程里很少直接对e_alpha_hat和e_beta_hat做反正切而是先经过低通滤波器或用锁相环去跟踪角度。锁相环的核心是误差检测器把估计角度和真实角度隐藏在反电动势里作差经过PI调节器得到角速度的估计再积分得到角度的估计。这个过程本质上就是一个内部的小闭环能让角度估计值平滑跟随真实值。5.3 低速启动开环I/f又不是不能用反电动势在低速时太小滑模观测器几乎失效。所以目前工程上最常见的做法是低速用开环强制换相也就是I/f启动。I/f的意思是我指定一个电流幅值和电机频率按照定时步长强制旋转定子磁场拖着转子转起来等到转速上来了、反电动势足够大了再切换到闭环观测器。I/f启动最核心的参数是“切换转速”我一般设在额定转速的5%到10%之间。如果切换早了观测器信噪比不够角度估计会跳如果切换晚了开环阶段电机可能失步因为转子实际位置已经跟不上给定的旋转磁场了。切换瞬间要做平滑处理比如把给定角速度和观测角速度做线性过渡持续几十到几百毫秒避免角度跳变带来的电流冲击。还有一种更先进的做法是高频注入法在低速和零速下靠电机的凸极效应来辨识位置。但它对电机结构有要求需要Ld和Lq有明显差异表贴式电机通常效果不好。所以对第一版无感方案我强烈建议先用“I/f开环启动滑模观测器闭环”的组合把整个流程跑通再考虑高频注入。5.4 母线电压、采样增益和相序一致性无感方案里有个经常被忽略的细节所有电压、电流的测量都要折算到同一套标幺值体系里。很多新手直接从代码里拿原始AD值算电流又从别的地方拿母线电压值算坐标变换结果观测器的输入信号根本不是同一个物理尺度角度估计乱七八糟。我的建议是在代码最前端把所有电气量统一归一化。电流按最大可测电流归一化电压按母线电压的1/√3归一化再进坐标变换和观测器。这样不仅代码好移植滑模观测器的切换增益k也更容易确定。还有相序问题电机三相接反或者UVW顺序反了观测器出来的角度会偏差120度或240度表现出来就是转速不稳、电流很大。排查这个问题的办法是在带编码器的测试平台上先验证一下观测器角度和编码器角度的偏差如果稳定差一个常数那就是相序或初始角度偏置问题如果差值一直在漂那才是观测器参数问题。6. 现场调试速查表我踩过的坑6.1 电流环发散先查方向再查参数只要电流环发散先停下来做“开环测试”。具体做法是给定一个固定的ud或者uq观察电流反馈方向和大小是否符合预期。如果给uq电压q轴电流没有跟着走甚至反向那大概率是编码器角度不对或者相序反了。这个验证做完之后再谈PI参数。参数方面有一个我每次换电机都要做的事先测电机电阻和电感再计算Kp、Ki的初值。很多项目的电机供应商给的参数是设计值和实际绕组有偏差直接拿设计值去跑控制器效果总差一口气。手头有LCR表就用LCR表测没有的话可以用变频器加直流母线电压做简单的在线辨识总之别懒到直接抄旧项目的参数。6.2 滑模抖振太大先看电流反馈噪声有几次滑模速度环抖振明显我第一反应是调边界层结果没用。后来把电流波形抓出来一看发现电流反馈上叠了一堆高频开关噪声是采样点没对齐导致的。这种情况下再怎么平滑滑模面都没用根治办法是把ADC采样时刻对准PWM载波的波谷或波峰让采样到的电流避开开关管开关瞬态。另一个隐藏噪声源是转速反馈。很多人用M法测速在一个固定时间窗口数脉冲低速时脉冲少量化噪声大滑模面自然抖。低速建议用T法测速在两个脉冲之间计时或者做一阶数字滤波滤波截止频率别设太低否则相位滞后会让速度环不稳定。6.3 无感启动失败别急着改观测器先看I/f阶段无感启动失败最常见的原因是I/f阶段电流给的太小拖动力矩不够。I/f阶段电流幅值通常比额定电流大一些给足力矩让转子跟上旋转磁场。如果我发现电机在开环阶段有“跟丢”的迹象比如电流震荡、转速上不去优先加大I/f电流幅值再看斜坡加速度是否太陡。切换失败的表现通常是“咔”一声然后过流保护。这时把切换转速往上提一点同时把切换过渡时间拉长一般能缓解。如果切换之后转速波动检查切换时的角度差是否超过30度超过的话在切换逻辑里做一个角度补偿或者用观测器角度和给定角度差作为切换完成的判据而不是单纯用转速阈值。6.4 无感高速跑飞锁相环带宽和低通滤波要一起调高速跑飞的现象一般是转速冲上去之后停不住然后过压或过流保护。这通常是观测器在高速时反电动势信号里混入了大量谐波锁相环跟踪不稳定造成的。对策是把反电动势的低通滤波器截止频率往下压同时降低锁相环的带宽。但这两个参数不能无脑调低低了之后动态响应变慢负载突变时会跟丢。我的经验是把锁相环带宽设置为电流环带宽的1/5到1/3低通滤波器的截止频率放在观测器开关频率的1/10附近然后在这个范围内做成可配置参数台上实测微调。6.5 一张速查表现象优先排查方向常用手段电流环PI一给就炸相序/编码器角度/测量尺度开环电压测试验证方向电流稳态误差偏大Ki太小或限幅饱和加大Ki检查抗饱和逻辑速度环震荡Kp_v过大或转速反馈噪声减小Kp_v加测速滤波负载突变转速跌落大速度环带宽不够提高ωv改用滑模速度环无感启动跟丢I/f电流偏小或斜坡过陡加大电流幅值减缓斜坡无感切换瞬间过流切换转速过低或切换生硬提高切换转速做角度线性过渡高速跑飞观测器滤波和锁相环参数不当降低滤波截止频率调低锁相环带宽电机噪音大死区效应或滑模抖振死区补偿用饱和或超螺旋代替符号函数7. 写在最后做控制要有系统思维我见过不少人花很多时间研究滑模的公式推导或者纠结无感观测器的各种变体结果到了电机台上电流环PI还没调稳编码器角度偏了一个电角度都没发现。控制这个东西理论是必要条件但不是充分条件。真正让你把项目落地的是“电流环带宽够不够、采样噪声大不大、限幅逻辑对不对、状态切换顺不顺”这些看起来没那么高深的工程问题。如果你现在正准备做PMSM控制我建议的路线是先在带编码器的平台上把三环PI调通透理解每个参数对响应的具体影响然后试着把速度环换成滑模体会鲁棒性带来的差异最后再把编码器断开上无感观测器。每一步都卡住之后再走下一步你会发现后面步骤的很多“诡异现象”其实都来自前面基础环节埋的隐患。最后再分享一个小技巧调试的时候养成记录波形参数的习惯每次改一个参数把转速阶跃响应、电流波形、角度估计偏差存下来。这样过几天回头看你能一眼看出哪个改动引发了哪个变化排查效率会高很多。控制调试没有银弹靠的就是“改一个参数、看一组波形、记一次结果”这种笨功夫但累积起来比任何高级算法都管用。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询