☰
三环PI自整定仿真模型:电流环、速度环、位置环参数设计
2026/10/24 4:37:57 网站建设 项目流程

前阵子带一套伺服系统做负载测试,被参数“叫声”折腾了一下午。电流环增益刚往上调,电机就高频啸叫,像是什么地方卡了壳;把增益降下来,响应又肉得不行,动一下要晃好几拍。那时候我就想,如果有一套靠谱的三环PI自整定仿真模型,能把电流环、速度环、位置环每一步的物理边界都算清楚,哪还用这么苦哈哈地盲试。

这篇博文就围绕这个主题展开:从三环嵌套的物理逻辑,到永磁同步电机的线性模型和频域参数映射,再到仿真平台上的自整定流程与结果判读,最后把仿真模型搬到真实驱动器之前必须补的几个工程认知讲透。内容既适合刚接触伺服控制的同学建立体系,也可以给正在做驱动器算法验证的工程师当一份参考清单。

1. 三环嵌套的物理逻辑:为什么电流环必须最快、位置环必须最慢

1.1 从电磁时间常数到机械时间常数,环路顺序由物理决定

三环伺服控制的经典结构是“位置环包着速度环,速度环包着电流环”,这个顺序不是拍脑袋定的,而是由电机的物理时间尺度决定的。永磁同步电机在dq坐标系下,电流的动态取决于电气时间常数 L/R。定子电感L一般是毫亨级,电阻R是欧姆级,时间常数在几毫秒左右。机械惯量J和粘滞系数B构成的机械时间常数则大得多,通常在几十毫秒到几百毫秒。一个信号从电压变化到电流变化,可能只需要一两毫秒;从电流变化到转速明显变化,却要几十毫秒。

控制回路的响应速度必须和被控对象的物理速度匹配。电流环处理的是电磁过程,必须足够快,才能在外部电压扰动或负载突变时迅速调整转矩;速度环基于电流环提供的转矩,处理机械过程,带宽必然低于电流环;位置环基于速度积分获得位置,积分效应让相位滞后继续累积,所以带宽最窄。用一句通俗的话讲:电流环是“立定站好”,速度环是“按节奏走路”,位置环是“决定走到哪个座位”,节奏越快的人反而要站在更靠里的层级。

1.2 带宽分配的经验法则与反例:外环太快的灾难

工程上常用的带宽分配比例是:位置环带宽约为速度环带宽的1/5到1/10,速度环带宽约为电流环带宽的1/5到1/10。举个例子,电流环带宽取1000 rad/s,速度环带宽取100到200 rad/s,位置环带宽则取20到50 rad/s。这样由内到外形成至少5倍的带宽梯度,可以避免外环指令在内环还没有跟上之前就被放大成剧烈的振荡。

我曾经见过一个初学者的反例:为了保证位置追踪“响应快”,他把位置环增益调到跟速度环差不多,结果电机一到位就猛烈抖动,出现极限环振荡。原因很简单:位置环输出的是速度指令,如果位置环增益太高,很小的位置误差就会生成很大的速度指令,而速度环又无法在一个控制周期内消化这么大的指令变化,最终整个串联环路呈现出肉眼可见的振荡。位置环的带宽上限其实由速度环的跟踪能力约束,而不是由“越灵敏越好”决定。自整定模型里最大的价值,就是能把这个梯度关系提前标定出来,而不是等硬件啸叫了再去降增益。

1.3 仿真模型里的离散化时序:采样周期的倍数关系

很多仿真模型默认所有环节都是连续时间,这会让自整定结果明显偏乐观。真实控制器在数字芯片上运行,电流环通常以开关频率同步采样,速度环和位置环则可以工作在更低的频率。做三环自整定仿真时,必须把这种异步采样与一拍延迟显式建立出来:电流环采样周期取开关周期,比如0.0001秒;速度环采样周期取电流环的5到10倍;位置环取速度环的5到10倍。每个环路的PI输出更新都带一个 z^-1 延迟,模拟DSP读取反馈、执行控制律、更新PWM比较值的过程。

这些时序差异会直接影响整定结果。如果强行把所有环路的采样周期都设成一样,速度环和位置环能看到的高频噪声更多,相位裕度估计也会失真。仿真时建议至少把电流环和速度环的采样周期分开设置,并在速度反馈路径里加一个离散差分器,模拟编码器测速的微分过程。这一步是自整定模型是否可信的分水岭。

2. 自整定的“可算”基础:永磁同步电机线性模型与频域参数映射

2.1 dq坐标系下的简化模型:哪些项该忽略,哪些必须保留

自整定要做的第一件事是确认控制对象模型。永磁同步电机在dq旋转坐标系下的电压方程为:

U_d = R_s i_d + L_d di_d/dt - ω_e L_q i_q

U_q = R_s i_q + L_q di_q/dt + ω_e L_d i_d + ω_e ψ_f

对于表贴式永磁同步电机,L_d≈L_q=L_s,在采用i_d=0控制时,转矩表达式简化为 T_e = 1.5 p ψ_f i_q。记转矩系数 K_t = 1.5 p ψ_f,则运动方程为 J dω_m/dt = T_e - T_L - B ω_m。

这里有个关键判断:做传统线性控制器整定时,不必非要把所有耦合项都线性化建模。d轴与q轴的交叉耦合在i_d=0附近是小量,反电动势项在低速整定阶段也可以忽略。自整定激励通常选择在零速或低速条件下进行,因此忽略 ω_e 相关项是合理的工程近似,能够把电流对象简化成:

G_i(s) = 1/(L_s s + R_s)

速度对象则简化为:

G_v(s) = K_t/(J s + B)

位置对象就是从速度到位置的纯积分 1/s。

那一对耦合项不是没用,它们会在高速运行中出现,属于后续鲁棒性验证阶段要加进去的对象。自整定模型如果一开始就把耦合全写进去,反而看不清最底层的参数映射关系。我的习惯是先线性、后加扰,先让自整定算法在“干净模型”上跑通,再逐步打开非线性开关。

2.2 电流环PI参数与期望带宽的直接换算

电流环对象是一阶惯性环节,最适合用零极点对消设计。PI控制器的传函为:

C_i(s) = Kp_i + Ki_i/s = Kp_i (s + Ki_i/Kp_i)/s

令pi零点和对象极点对消,也就是让 Ki_i/Kp_i = R_s/L_s。对消后,开环传递函数为:

G_ol(s) ≈ Kp_i/(L_s s)

这是一个纯积分型开环,剪切频率正好是 Kp_i/L_s,也就是期望的电流环带宽 ω_ci。于是反推PI参数:

Kp_i = L_s * ω_ci

Ki_i = R_s * ω_ci

这套公式简单到有点让人意外,但它成立的条件是“PI零点完全对消对象极点”。如果电机电感或电阻估算精度不高,对消就失效,系统会退化成二阶或更高阶动态,表现出的振荡频率由零极点分离程度决定。因此,电流环自整定的重点往往不是算PI,而是把L_s和R_s测准。后面第4章我会给出具体的辨识流程。

2.3 速度环与位置环的传函推导及PI参数计算

速度环在电流环内环闭合后近似为一个积分环节 K_t/(J s)。速度环PI参数设定要考虑相位裕度:如果直接把开环传函整成 Kp_v*K_t/(J s^2),相频特性恒为-180度,没有相位裕度,系统必然不稳定。所以速度环PI必须增加一个零点,传函为:

C_v(s) = Kp_v + Ki_v/s

零点位置 ω_z = Ki_v/Kp_v,通常取期望速度带宽的1/5到1/10。设期望速度开环剪切频率为 ω_cv,由低频段增益可得:

Kp_v = J * ω_cv / K_t

Ki_v = Kp_v * ω_cv / a

其中 a 取5到10。a越大,零点离剪切频率越远,相位裕度越高,但超调也会略大? 实际上零点越远,系统越接近双积分,阻尼越小。这里有个容易混淆的点:对超前校正而言,零点位置越靠近剪切频率,提供的相位提升越多,但也会让系统在转折频率附近增益提升。工程上取a=5时,系统阻尼约0.7左右,响应比较快且无明显振荡。这个参数可以留在自整定脚本里做扫描寻优。

位置环则简单得多。位置对象为 1/s,用纯P控制即可形成 C_p(s)=Kp_p 的开环 Kp_p/s,剪切频率就是 Kp_p。按带宽梯度原则,取期望位置环带宽 ω_cp,则:

Kp_p = ω_cp

位置环不需要积分,否则会引入额外相位滞后,导致大行程移动时超调。如果觉得纯P在带载匀速时存在静态误差,修正手段是加前馈,而不是加积分项。自整定模型里,位置环通常是三个环路里最容易标定的一个。

3. 仿真模型搭建:从PMSM对象到自整定激励的完整链路

3.1 电机本体的搭建:凸极率、反电动势与中性点处理

搭建仿真模型时,电机本体的选择直接影响辨识精度。第一种方式是用理想模型:根据dq方程写S函数或用信号模块搭建,转子和定子之间通过旋转角度联系。优点是速度快、参数完全已知,适合做算法验证。第二种方式是用有限元或内置电机模块,能够模拟饱和和反电动势谐波,但需要额外设置凸极率、磁链谐波等参数。我建议自整定模型先用第一种,把电机当作“带非线性扰动的线性对象”,等算法验证完毕后再移植到高保真模型。

如果使用常见的电气仿真环境,三相中性点接法一定要处理清楚。很多初学者直接把三相电压源并联到电机模块,导致没有零序电流通路,仿真报错。正确做法是采用“中性点”浮动或设置内部接地,让三相定子电流之和满足基尔霍夫定律。转子位置初始化也要注意,要让反电动势初始角为零,否则零速辨识时会出现无意义的大电流冲击。

3.2 逆变器与PWM延迟:为什么不能省略

自整定模型最不能省略的模块是逆变器和PWM生成器。逆变器导通压降、死区时间、上下桥臂互锁都会在电压指令和实际电机端电压之间引入死区电压误差和小幅的非线性。死区造成最直接的现象就是电流波形过零畸变,这会污染电流环阶跃响应的“初始斜率”估计。为了在辨识阶段减弱死区影响,可以让激励幅值远大于死区电压误差,通常激励电压幅值取母线电压的10%以上。

PWM延迟更是必须显式建模。数字控制在一个PWM周期开始时采样电流,经过中断运算,在下一个周期更新占空比。这意味着电流环内至少存在一拍延迟。仿真中可以用零阶保持器和 z^-1 延迟模块串联来模拟。如果不加这一拍延迟,自整定算出的一组参数在延时较高的硬件上会明显偏振荡,甚至根本稳定不住。

3.3 反馈通路的采样与滤波:时间戳错位问题

反馈通路是另一个容易被低估的失真来源。仿真中电流采样可以用“落到PWM周期中心的平均值”代替“开关瞬间的瞬时值”。理想采样时刻选在三角载波顶点,此时电流纹波近似为零,采样值最接近真实基波平均值。速度反馈则要模拟编码器测速神经:低速时脉冲间隔大,速度计算延迟接近一个速度环周期;高速时测速延迟相对小。在自整定模型中给速度反馈加一个一阶低通滤波器,并让滤波截止频率高于速度环带宽的一个数量级,这样既能抑制量化噪声,又不至于把相位裕度吃掉太多。

现实里有一类问题特别烦:电流环采集时刻和速度环采集时刻不同步。电机控制中断里,电流环在PWM周期中断中运行,速度环在定时器中断中运行,两个中断存在相位错位。仿真时可以用一个“双速率采样器”来复现这种时序错位。自整定过程中,速度环的激励响应曲线会因为这种错位出现高频毛刺,习惯就好,不要看到毛刺就误以为是算法不稳定。

4. 自整定三步走:先电流环后速度环最后位置环的实操流程

4.1 电流环自整定的步骤:零速电压阶跃、电感电阻辨识、带宽验证

电流环自整定不要直接用闭环阶跃反复试,而是先做一次开环辨识。具体做法:把电流环控制器断开,让电机转子锁死或保持在零速,给q轴电压施加一个幅值不超过母线电压20%的阶跃指令,p轴电压设零。记录q轴电流的上升曲线。

电流升到稳态时的结束值可以估算电阻:

R_s = V_q_step / I_q_ss

但在实际中,反电动势在零速时为零,通电瞬间还有一个暂态过程。取最初几毫秒的电流斜率估算电感:

L_s = V_q_step / (di_q/dt | t=0)

需要注意,电流初始斜率用差分计算,采样噪声会被放大,所以通常要做最小二乘拟合直线,而不是直接取两点。得到 L_s 和 R_s 后,按期望电流环带宽 ω_ci 计算出 Kp_i 和 Ki_i。

带宽验证也很关键。把PI参数写入电流环闭环,给定一个阶跃电流指令,观察响应时域波形。用FFT分析可以更准确测出-3dB带宽,但工程上也可以用上升时间粗略估算:若系统为一阶惯性,则带宽约等于 0.35/tr,tr为上升时间。如果实测上升时间明显比目标慢,可能是指数延迟或电流滤波没有建模进去。

4.2 速度环自整定:惯量辨识与PI参数落地

电流环稳定后,速度环整定首先要估算等效转动惯量。惯量的物理来源包括电机转子、负载、联轴器,还有减速齿轮折算到电机轴的等效惯量。仿真模型里可以提前设定已知值,但自整定的价值就是要测出来。

辨识惯量的标准方法是“加速度法”。在速度环开环状态下,给q轴电流一个恒定的阶跃(比如5%额定电流),让电机拖动负载匀加速。记下转速随时间变化率 dω/dt,以及电机实际产生的转矩 K_t*i_q。如果认为粘滞摩擦和负载恒定,那么在加速度阶段:

J_est = K_t * i_q / (dω/dt)

这个公式忽略了摩擦和负载转矩。要消除它们的影响,可以用对称激励:先正向加速一段时间,再反向加速一段时间,取差值抵消摩擦。更精细的做法是在转速达到稳态后测出摩擦转矩项 B,再在动态段扣除该项。

得到J_est后,结合K_t、电流环带宽,按速度环带宽公式算出Kp_v和Ki_v。速度环的初始目标带宽建议取电流环带宽的1/10左右,甚至更低,先求稳再求快。实际测下来,如果速度阶跃响应出现一两次轻微振荡,通常就是带宽目标定得太高,或惯量估算偏小。

4.3 位置环整定与前馈引入:带宽标定法

位置环只包含比例项,整定步骤最简短。根据位置环期望带宽,直接设定 Kp_p = ω_cp。位置环的带宽受速度环带宽约束,通常取速度环带宽的1/10,甚至更保守一些。位置环闭环测试用“小角度阶跃”或“S型曲线跟踪”。小角度阶跃的目的是看是否有超调:若位置响应越过目标角度再回摆,说明Kp_p还是偏大,需要降一个系统数再试。

位置环整定里很值得做的是速度前馈。纯P控制的位置环存在一阶滞后,跟踪斜坡时最大跟踪误差接近 V_max/ω_cp。加入速度前馈后,前馈通路直接给出速度指令,相当于“预习”目标速度,可以显著减小跟踪误差。仿真模型中,前馈系数设为1,也就是位置指令的微分直接接到速度指令求和点。自整定模型可以做一个对比:同样跟踪一条S曲线,有前馈的跟随误差通常能减小一半以上。

4.4 脚本化自动迭代:误差积分指标与参数微调

刚才三步整定给出的是理论起点,不是终点。要让模型具备“自整定”气质,还得加入脚本化自动迭代。做法很简单:在仿真环境里跑一次阶跃测试,把时域响应保存下来,然后计算误差积分指标。常用的指标有两种:IAE(绝对误差积分)和ITAE(时间加权绝对误差积分)。ITAE对长时间保持小误差的惩罚更小,更容易选到响应快但振荡少的参数。

脚本的迭代逻辑可以是:以带宽法计算的PI参数为初始值,在±30%范围内做网格搜索或单纯形优化,每次更新PI参数后重跑一次仿真。优化目标不宜只取超调量,建议设成:

J = ∫ t|e(t)|dt + W * 超调量

W根据工程需要定,想要无超调就把W调大。这种离线自动整定方法虽然每轮要跑仿真,但胜在全过程可复现。模型跑通之后,把同样的脚本接到硬件在环平台,就是一套自动整定工具。

5. 结果判读:从波形对比看自整定到底改善了什么

5.1 电流环阶跃:超调、调节时间、带宽三件套

自整定完成后,先在电流环做一组阶跃对比测试:一组用经验试凑的参数,一组用自整定参数。经验参数通常会导致电流响应有较明显的二阶振荡,超调量可能达到10%以上,调节时间拖到三四毫秒。自整定参数对应一阶低通特性,超调接近零,调节时间可以压缩到0.5毫秒以内,而且频域曲线在下滑率上更干净。

判读电流环性能有三个基本指标:超调量、调节时间、实际带宽。在仿真平台上还有一个额外好处——可以直接测量开环Bode图,看看相位裕度是否符合预期。如果相位裕度低于30度,即使阶跃波形暂时没振荡,抗干扰能力也已经很弱了,需要把带宽目标调低一档。

5.2 速度环抗扰:突加负载的跌落与恢复

速度环整定得好不好,不能只看空载阶跃,还要看抗负载扰动。仿真中可以在电机轴上加一个阶跃负载转矩,比如从零突然跳到额定转矩的80%。记录转速波形:从加载瞬间到转速跌落最深点的峰值跌落量,以及恢复时间。

手动粗调参数常见的问题是有较长的“杵头”现象:转速跌落大,恢复慢,甚至出现一次明显回摆。自整定参数下,速度跌落由惯量和电流环带宽共同约束,通常可以做到跌落量降低30%到50%,恢复时间缩短一半以上。注意一点:积分增益 Ki_v 对稳态和抗扰起决定作用,积分太弱,加载后速度会一直存在静差;积分太强,又会在负载突变时出现过冲。自整定模型的价值就是把积分增益和零点位置通过带宽比例锁定在一个安全区间。

5.3 位置跟随:梯形/S曲线指令下的最大跟踪误差

位置环的整定效果用跟踪误差来评价最直观。让模型跑一条梯形速度曲线或S型速度曲线,记录指令位置和实际位置之间的误差曲线。纯P控制的最大跟踪误差出现在速度最大的加速段或匀速段,仿真结果通常会在1000 rpm的速度指令下出现几十毫弧度的误差。加入速度前馈后,同样轨迹的最大误差能降到原来的三分之一以下,而且误差曲线的形状变得“对称尖锐”,而不是单向滞后。

这里容易犯一个错误:为了减小跟踪误差就把Kp_p继续调大。调大之后,虽然跟踪误差更小,但位置响应会出现振荡。正确做法是保持Kp_p按带宽梯度取值,跟踪精度不足靠前馈,而不是靠压榨比例增益。

6. 把仿真参数搬到真实驱动器之前,必须处理的三个工程坑

6.1 延迟链对相位裕度的侵蚀:带宽上限的实用估算

仿真里一拍延迟很干净,但真实驱动器有采样延迟、计算延迟、PWM比较值装载延迟,还有隔离驱动和通信延迟。这些零碎延迟叠在一起,对电流环相位的影响不可忽视。工程上有一个快速估算:假设总延迟为 T_d,则电流环相位损失约为 ω_ci * T_d。要保底45度相位裕度,就要求 ω_ci * T_d 小于0.785。

举例:开关频率10kHz,采样延迟0.1ms,计算和装载延迟加起来0.05ms,T_d约0.15ms。此时电流环带宽上限约5200 rad/s,折合830Hz。但留足裕度后,一般取到开关频率的1/10,也就是约1000 rad/s,折算160Hz左右。自整定模型里如果发现设目标带宽500Hz时电流波形仍有轻微振铃,先把期望带宽降到300Hz试试,通常问题就解决了。

6.2 积分饱和与限幅:自整定激励的幅值约束

三环控制器的输出都有限幅:速度环输出限幅是电流指令的峰值上限,位置环输出限幅是速度上限。PI控制器在这个限幅下如果持续饱和,积分项会一直累积到很夸张的数值,等反馈误差反向时,需要很长时间才能退饱和,表现出来就是“电机猛地冲过头再拉回来”。

自整定必须在模型里显式加入积分饱和逻辑。最简单的做法是条件积分法:判断PI输出超出限幅时,冻结积分项累加,让积分值自行衰减回限幅内。伪代码如下:

if (u >= u_max) if (error > 0) ki_int = ki_int; else ki_int = ki_int + ki * error * dt; u = u_max; else if (u <= u_min) ...

在整定激励的选择上,阶跃指令的目标值最好限制在限幅的30%-50%之间。电流环整定时,期望电流阶跃不能设成逼近速度环限幅,否则在辨识阶段就触发饱和,电流环动态被“削顶”,无法反映真实线性区间。

6.3 反馈滤波器、测速延迟与低速抖动

电流采样滤波器、转速测速滤波器都会影响自整定的相位判断。很多模型为了滤波效果好,把低通截止频率设在开关频率附近,结果电流环看到的反馈信号已经滞后了40度以上。自整定的正确做法是:先把滤波器放在反馈通路里,再通过开环频响测量系统的总相位,而不是先整定后滤波。“先整定后滤波”会让你误以为相位裕度充足,硬件上电就抖。

低速抖动的根源是测速分辨率。用增量式编码器低速运行时,脉冲间隔变长,测速结果量化噪声变大。这时候速度环带宽如果仍然取得很高,噪声会被PI放大成明显的转速波动。仿真模型里可以用“脉冲计数器+周期测量”模拟这种量化。观察低速段的速度波形,如果自整定速度环在100rpm以下有周期性的“节拍感”,说明测速延迟和量化已经抵消了整定带来的收益。工程上的缓解手段是降低速度环带宽,或者切换到低速专用测速策略。

7. 往在线自整定进阶:时变参数下的鲁棒性思考

7.1 温升和饱和带来的参数漂移

离线自整定得到的是某一时刻的参数快照,但实际运行时L_s、R_s、J不会一成不变。温升会让R_s最快变化,铜绕组温度每升高10度,电阻大概增加4%。电感在d轴电流增大时可能饱和下降20%;负载惯量随机械工装变化甚至可能翻倍。

这些漂移中最危险的是电阻变化对电流环零极点对消的影响。自整定辨识出R_s后,如果驱动器运行一段时间温度升高,R_s变大,PI的零点与对象极点失配,电流环会从“一阶干净”退化成“二阶带零点”,出现一定超调。要评估这种风险,仿真里可以让R_s按温度系数线性变化,观察电流阶跃超调的变化量。如果超调从0涨到15%,说明设计需要增加相位裕度冗余。

7.2 在线辨识与再整定的简单思路

进阶的自整定模型可以考虑加入一个轻量级的在线辨识模块。最实用的方案是递推最小二乘(RLS)估计在线电动势常数和电阻。递推公式不复杂,但实现时要注意遗忘因子:遗忘因子取0.97到0.995,太接近1会让参数更新太慢,太小则对噪声过敏。

另一种思路是模型参考自适应控制(MRAS),把实际电机当作参考模型和可调模型,用转速误差来在线修正磁链或惯量参数。这类方法在仿真中效果很好,但工程上落地会碰上数字量化和激励充分性问题。我建议先在仿真环境里用PRBS(伪随机二进制序列)叠加在电流指令上,哪怕只有额定幅值的1%,也能持续激励系统,让在线算法在低噪声环境下收敛。仿真里先验证这种在线辨识是否破坏了原有三环整定的稳定性,再考虑移植到硬件。

7.3 自适应增益调度:从离线整定到闭环学习

最终极的自整定形态是增益调度:把在线辨识得到的J、R_s、L_s映射到PI参数,形成闭环学习。增益调度的关键是参数变化的方向要明确。比如惯量变大时,速度环Kp_v应该随J增大而增大,Ki_v也要相应调整;电阻变大时,电流环Kp_i和Ki_i需要同步修正。把这些映射关系做成一维查找表,在线辨识输出端通过一阶低通平滑后查表更新增益,就能避免参数在估计噪声下剧烈跳变。

我在仿真里做过一次比较:把负载惯量在运行中途突然增大50%,固定参数的速度环转速跌落明显,恢复时间拉长,甚至出现一次回摆;而带增益调度的闭环学习能在一个速度环周期内逐渐修正增益,第二个周期开始响应特性就回到预设表现。这个结果说明,离线自整定解决“开机的第一步”,在线增益调度解决“运行中的每一步”。

最后分享一个我在整个过程中最深的体会:自整定不是某种黑魔法,它的每一步都建立在物理模型和频域设计之上。仿真模型给的是一套科学起点,真正的工程稳定性,更多来自对延迟链、限幅和滤波这三件事的理解。把这套模型跑熟之后,再去现场改参数,心态会完全不一样——至少你知道每调一个数字,是在向哪个时间尺度妥协。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询