直流电机双闭环控制系统,是电力电子与运动控制领域绕不开的经典结构。很多人一听到“转速电流双闭环”就知道是搞电机控制,但真正上手把仿真搭出来、把波形调到工程上能看顺眼的,还是要踩不少坑。我最近又把一套转速—电流双闭环直流调速系统的 Simulink 仿真从头搭了一遍,从调节器结构到 PI 参数整定再到开关模型调试,整个过程挺值得记录下来。这篇文章就把这套系统的设计逻辑、模型搭建步骤、参数计算过程,以及我在调参过程中遇到的各种问题,完完整整拆开讲一遍。
不论你是自动化、电气工程专业的学生,还是刚入行做电机驱动的工程师,这套双闭环控制思路其实都是基础中的基础。搞懂它,后面再做永磁同步电机、伺服系统、甚至一些并网变换器的控制,很多思想都是相通的。我会尽量把每一步都说得接地气一点,把“为什么这么做”也交代清楚,让你不仅会照着搭模型,还能真正理解这套控制结构背后的道理。
1. 双闭环系统的整体设计思路与核心逻辑
1.1 被控对象:直流电机的数学模型
先把要控制的“对象”搞清楚。直流电机虽然结构简单,但它的数学模型是整个控制系统设计的起点,也是后面所有 PI 参数计算的依据。
电枢回路电气方程是:
Ua = Ra·ia + La·(dia/dt) + Ea
其中 Ea = Ke·ω,即反电动势与转速成正比。机械方程则写为:
J·(dω/dt) = Tem − TL − B·ω
电磁转矩 Tem = Kt·ia,在磁场恒定的情况下,Kt 与 Ke 有确定的比例关系,折算到国际单位制通常数值相等。
这两个方程放在一起,就能得到直流电机典型的传递函数结构。电气部分是一阶惯性环节加反电动势反馈,机械部分也是一阶惯性环节加负载扰动。也就是说,这个被控对象本质上是一个“大惯性 + 小惯性”串联的系统:电气时间常数 Tl = La/Ra 通常只有几毫秒到几十毫秒,机械时间常数 Tm = J·Ra/(Kt·Ke) 通常要大得多。
这一点很重要,直接决定了双闭环控制的结构。因为电气响应快,电机电流能迅速跟随给定;而转速响应慢,电流就是中间那个“调动速度最快”的量。所以自然的想法就出来了:把电流放在内环,把转速放在外环,让内环绕得快,外环绕得稳。
1.2 双闭环的结构关系与信号流向
整个系统从信号流向来看并不复杂。转速给定 n_ref 进入外环调节器 ASR(Automatic Speed Regulator),ASR 输出的是电流给定值 i_ref。再看电流内环,电流给定 i_ref 与实测电流反馈 i_fb 做差,送入 ACR(Automatic Current Regulator),ACR 的输出就是触发电力电子变换器的控制电压,比如三相整流桥的触发角控制信号,或者 PWM 的占空比指令。
也就是说,外环调节器的输出并不是直接给电机,而是作为内环的给定。内环调节器的输出才是真正改变主电路电压的那个量。在 Simulink 里搭这个结构不难,难的是理解这样层层嵌套的意义。
我见过不少同学上来就把两个 PI 串在一起,但内环 PI 的输出没有限幅,或者限幅值设得离谱,结果一启动就满励磁电流保护触发,波形一团糟。限幅不是一个可有可无的“保护措施”,它就是双闭环控制能够按工程逻辑工作的核心机制之一:ASR 输出限幅决定了最大允许电枢电流,ACR 输出限幅决定了最大可控整流电压。把这两个值设置对了,系统自然慢慢学得会“先限流后升速”。
1.3 内环外环的职责划分与物理意义
从物理意义上把两个环路的职责分清楚,比记住任何公式都重要。电流环的任务是快速跟踪电流给定,保证电磁转矩能够快速响应负载变化;在启动阶段,它还承担过电流限制的作用——转速环在启动时输出饱和,相当于把电流给定钳在最大允许值,系统以最大恒流加速,这就是直流调速系统里经典的“恒流起动”过程。
转速环的任务则是稳态精度。它通过积分作用消除静差,保证负载变化时转速能回到给定值。当转速超过或低于给定值,ASR 的输出改变 i_ref,进而通过 ACR 调整电枢电压,最终让转速回到设定点。
这两个环路的时间常数应该有明显差距:电流环的开环截止频率要做到转速环的 5 到 10 倍以上。如果两个环的速度没有拉开,就会出现现象层面的交叉耦合:转速波动导致电流给定抖动,电流波动又反过来影响转速。说白了,内环必须“快到你感觉不到它”,外环才有资格安心干稳速的活。
2. 调节器结构与 PI 参数工程整定
2.1 ACR 与 ASR 的典型结构
工程上直流双闭环最标准的做法是:电流环 ACR 用 PI 调节器,转速环 ASR 也用 PI 调节器,必要时转速环加微分反馈来抑制振荡。为什么都用 PI?原因直截了当:既要足够的动态响应速度,又必须消除稳态误差,比例环节给响应,积分环节清静差,比例积分组合天然契合这两个需求。
在 Simulink 里我通常用 Simulink 自带的 PID Controller 模块,把微分项设为 0,或者直接搭一个 Kp + Ki/s 的传递函数。两种做法都行,但要注意一点:如果使用离散化仿真,PID Controller 模块有比较完整的抗积分饱和和非线性处理逻辑,直接用传递函数模块搭,输出限幅自己写起来更麻烦。
在调节器结构上,电流环还可以进一步简化设计。因为电流环中的反电动势相对于电流环带宽来说变化很慢,工程设计时常把反电动势当作扰动,认为电流环被控对象近似为一个一阶惯性环节加一个小时间常数的滞回。这样把电流环校正成典型 I 型系统,中频带就不是问题了。
转速环一般校正成典型 II 型系统,目的是兼顾动态响应和抗扰性能。典型 II 型系统的参数设计绕不开中频带宽度 h 的选择,通常取 h = 5 左右,超调量和快速性都比较均衡。很多教材上都强调这一点,但真正做工程仿真时你会发现,理论给的 Kp、Ki 只能算初值,最后基本还是要靠微调。
2.2 参数整定的先后顺序与计算过程
先把我的习惯操作流程写在这儿,然后逐个参数展开说明。整定顺序永远是先内环后外环:先把电流环甩开,ACR 参数调好,让它能又快又准地跟踪阶跃;然后把电流环闭合在转速环之内,再调 ASR。
以一个虚构例子说明,某直流电机额定电压 220V,额定电流 5.5A,额定转速 1500rpm,电枢电阻 Ra 约 2Ω,电枢电感 La 约 20mH。电磁时间常数 Tl = La/Ra = 10ms,机械时间常数则需要知道转动惯量和转矩系数。设 Ke = 1.4 V/(rad/s),J = 0.02 kg·m²,那么 Tm = J·Ra/(Ke²) ≈ 20ms 左右。这个数量级和实际系统挺接近。
电流环设计时,把 TL = La/Ra 这个对象极点用 PI 零点抵消掉,也就是 Ki/Kp = Ra/La。剩下的对象就是一阶惯性 + 电力电子变换器小惯性,整定目标是让阻尼比约 0.707,这一步通常能直接把电流环开到比较高的带宽。我用 MATLAB 的 pidtuner 或者 sisotool 做过几次,发现先把零点放在对象主导极点上,再调增益,比直接调两个参数直观得多。
转速环设计就不是简单地消极点那么简单了。转速环串联了一个积分环节之后存在一个轻阻尼的振荡因素,所以要用典型 II 型系统的“h 准则”来计算中频带宽。常取 h=5,然后根据对象的各时间常数去算 Kp 和 Ki 的初值。算出来之后到 Simulink 里换挡,记得不要直接上满参数,先从小增益逐步加,不然第一轮波形基本不可能收敛。
以下是我个人常用的参数初值表和整定口诀,仅供参考:
| 环路 | 典型系统 | 整定重点 | 初始参数经验 |
|---|---|---|---|
| 电流环 | 典型 I 型 | 零点抵消电磁时间常数 | Kp≈Ra, Ki≈Ra/Tl |
| 转速环 | 典型 II 型 | 中频带 h≈5 | Kp 从小到大扫,Ki 跟着积分配 |
2.3 限幅值与逻辑保护
限幅值的设计原则是:电流限幅满足电机和工作机械的过载能力,通常设为 1.5~2 倍额定电流。转速环 ASR 的输出限幅值就直接等于这个电流上限。ACR 输出限幅则对应主电路能输出的最大电压,比如三相整流桥的 220V 极限。
这里有个细节我踩过一次:Simulink 的 PID Controller 模块里限幅默认为 [-1, 1],如果直接用,微型电机没感觉,但 220V 电机就会发现电压怎么都上不去。所以每次新建 PID 模块,第一件事就是把 Output Saturation 改成实际值,或者留到比例输出后再接一个 Saturation 饱和模块,两者效果一样。
还有一点是关于限幅的平滑性:限幅值处的曲线切忌出现硬切的抖动,电流一旦顶到限幅值,转速环仍处于饱和,内环电流稳态可能略有差别。这时要注意 PI 控制器的“抗积分饱和”问题,PID 模块默认带这个功能,如果自己搭传递函数就必须手动判断输出是否受限,否则积分项越积越多,会产生一恢复就给大信号的超大超调。实际工程中这叫“积分饱和”,仿真里想看到的话,把 ASR 的积分器上限去掉,加一个大阶跃转速给定,启动瞬间就能看到吓人的电流尖峰。
3. Simulink 仿真模型搭建全过程
3.1 模型总体框架与模块选型
模型搭建之前先在草稿纸上把结构画清楚,这比打开 MATLAB 就拖模块管用得多。整体无外乎四块:主电路与电机、电流反馈通道、转速反馈通道、双闭环控制器与脉冲发生器。在 Simulink 里,这四块的选型有两种典型的路线。
第一种是纯传递函数连续模型。用传递函数代表电枢回路和机械环节,电力电子变换器用一阶惯性加纯滞后来近似,适合验证控制算法和参数学逻辑,仿真速度快,调试 PI 参数最方便。第二种是包含电力电子开关的模型,用 Simscape Electrical 的 DC Motor 模块、Universal Bridge 模块来真正模拟三相整流和 PWM 调制。这种模型更接近硬件,看得见电流纹波和开关谐波,但是仿真速度慢、数值刚性大,调 PI 时容易因为开关不收敛而怀疑人生。
我的建议是:先搭纯连续系统模型,把并调 PI 参数调顺,再在这个基础上加入电力电子开关模型。这样既不容易打击初学者信心,也能把两类模型的优势都用上。下面先重点讲连续模型,再告诉你怎么切换到开关模型。
3.2 主电路与仿真步长设置
在连续模型里,电机用一个受控电压源串电阻电感表示电枢回路,机械部分用一阶惯性环节把电磁转矩变成转速。要模拟反电动势反馈,就把转速乘以 Ke 再反馈回电压输入。这一套自己搭,本质上就是把上文的电机方程“搬”到 Simulink 积木里。
仿真求解器建议用变步长 ode45,相对误差设 1e-3 基本够用。但如果电力电子开关模型出现高频振荡或仿真步长变得极小,就换成 ode15s 试试。开关模型里 PWM 载波频率通常设 10kHz 左右,这里你还会遇到一个常见的问题:变步长求解器在开关切换点会密集插值,仿真时间变得特别慢。为了提高效率,可以将 breaker 部分的采样时间设为与 PWM 周期同步,或者干脆用定步长离散求解器,步长取 PWM 周期的 1/50,比如 2μs。
实际上我实验过,定步长和变步长两种方案算出来的关键波形指标差别不大,但速度差异很显著。调 PI 的时候用连续模型,出论文或者做硬件对标的时候再切换成定步长开关模型,这样是效率最高的工作流。
3.3 反馈通道与信号调理
反馈通道是 Simulink 建模里最容易被忽视的地方,很多波形不正确都出在这里。电流反馈和转速反馈都必须先做信号调理再进调节器,不能让原始测量信号直接作为反馈。比如电流量纲是安培,转速是每分钟多少转或者弧度每秒,而调节器内部期望的是数值可能是“标幺值”或者“工程值”,不分清楚就会乱。
我经常用 Gain 模块把实测电流从安培标定为单位 1,或用 1/5.5 把 5.5A 变成 1。有些人喜欢直接用物理单位,也不难,只是 PI 参数数值会差很多。关键要保证单位一致,所有模块里前后量纲匹配,否则调参数的经验值全不适用。
另外,如果模型中引用了 Simscape 的电流传感器,要注意从物理信号到 Simulink 信号的转换模块必须用正确,通常会提示你用一个 PS-Simulink Converter。我自己有一次把转换模块的采样时间设成默认值,结果信号出现一个采样周期的滞后,电流环刚好在这个延迟上产生了一个谐振峰,怎么看都不对,排查了半天才反应过来。
反馈信号从传感器出来之后,建议接一个低通滤波器滤掉开关纹波,截止频率取在电流环带宽的 2 到 3 倍以上比较合适,不会太多相位滞后,又可以把 PWM 的高频分量压掉。这在实际硬件控制板上也是常规操作,仿真里多加一步,会让你后面的波形分析轻松很多。
3.4 完整的典型模块参数表
把常用模块参数整理成一张表,方便大家参考。
| 模块 | 角色 | 关键参数 | 备注 |
|---|---|---|---|
| Step | 转速给定 | 初始0,终值1500 | 阶跃时间0.1s |
| PID Controller (ASR) | 转速环调节器 | Kp=0.6, Ki=5 | 输出限幅 ±5.5A |
| PID Controller (ACR) | 电流环调节器 | Kp=2.4, Ki=240 | 输出限幅 ±220V |
| 受控电压源 | 电枢电压输出 | 电源等于输入信号 | 与电枢回路串联 |
| 电枢电感+电阻 | 电枢动态 | Ra=2Ω, La=0.02H | 串联后接电机反电势 |
| Gain(Ke) | 反电动势反馈 | 1.4 V/(rad/s) | 从转速输出算出 Ea |
| Gain(电流反馈) | 标幺化 | 1/R_ino | 取 1/5.5 = 0.1818 |
| Saturation | 电流限幅 | ±5.5A | 要放在 ACR 给定端出口 |
表格里给的数值只是初值,实际肯定要微调,但按这个框架起步,至少能跑出一条正常的启动波形。很多教程只给公式不给初值,我在这块补上,希望能减少你一开始调参的盲目性。
4. 仿真结果分析与典型问题排查
4.1 启动过程转速与电流波形的正确解读
模型搭好之后,第一个值得仔细盯的仿真是阶跃启动过程。把示波器里转速、电枢电流、ACR 输出电压三个波形一起导出来看。正常的恒流启动分三个阶段。
第一阶段叫“电流上升段”。转速从 0 开始上升,转速环的误差很大,ASR 输出迅速顶到限幅值,电流给定直接给定在最大允许电流附近。电流内环要在一个比较短的时间内把实际电流拉起来,这个过程你会看到电流很快到达限幅值。这个阶段大约持续一两个电流环时间常数,肉眼看起来就是一个“几乎瞬间上升的电流阶跃”。
第二阶段叫“恒流升速段”。转速从 0 线性上升,电枢电流维持在限幅值附近,反电动势不断增大,ACR 输出也就是电枢电压也在不断爬升。这个阶段的重点是电流波动要小、上升过程平稳,如果电流出现锯齿状波动,那么要么是电流环 PI 偏软了,要么是 PWM 载波频率太低导致电流纹波太大。波形上出现明显的周期性锯齿是正常的,但幅值太大会影响转矩平稳性。
第三阶段叫“转速超调与稳态收敛”。转速接近给定值时,ASR 输出退饱和,电流给定迅速回落到负载电流水平,转速有一个典型的二阶系统超调过程。超调量过高的话,就要调转速环阻尼,方法是减小 Kp 或增加 Ki,或者调大转速环的抗饱和限幅策略。到这里波形稳定,电流平直,转速等于给定值,系统就算跑通。
4.2 常见问题速查与排查思路
调试过程中最耗时间的往往不是理论问题,而是那些看似简单却反复出现的模型问题。我把这些年碰到过的典型问题整理成一个表,方便排查:
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 启动电流一直顶格不回落 | ASR 积分饱和或限幅太大 | 检查 ASR 输出饱和逻辑 |
| 电流环跟随时有明显滞后 | 电流环 Kp 太小或带宽不足 | 降低电流环时间常数 |
| 转速超调特别大 | 转速环 Kp 偏大或中频带偏宽 | 减小 Kp,增大 Ki 试试 |
| 电流波形出现高频尖峰 | 传感器信号混叠或开关噪声 | 加低通滤波并检查采样时间 |
| 系统仿真速度极慢 | 开关模型、变步长不收敛 | 转定步长方案或提高容差 |
| 转速稳态存在静差 | ASR 积分失效或反馈系数不对 | 检查 Ki 是否为零或增益单位 |
| PWM 触发波形错乱 | 载波周期和给定频率不匹配 | 检查调制深度和同步逻辑 |
4.3 参数调整的实用心得与后续扩展方向
分享几个我自己实际摸索出来的小经验,不一定在教科书上能找到。
第一个心得是调 PI 不要两个参数一起乱转。每次只改一个参数,先粗扫 Kp,把波形从“蠕动”调到“快速但略有超调”,然后再调 Ki 消除静差,最后再回头微调 Kp。整个过程一气呵成,最多十几分钟就能让电流环阶跃响应变得很干净。
第二个心得是关于看波形的顺序。见很多人一上来就盯着转速波形看,我建议先看电流波形。电流环快不快、准不准,直接决定了整个系统的品质。电流波形如果做到阶跃无超调且响应时间在几个毫秒内,转速环再差也差不到哪里去。反过来转速环调得完美但电流环拖沓,系统动态特性一定拉胯。所以调试次序可以总结为一句话:先内环,后外环;先电流,后转速。
第三个心得是限幅值的调试要和 PI 参数结合起来看。不要只看响应快慢,要看给定输出是否达到限幅、退出限幅是否平滑。有一次我调某个模拟项目时,转速环 Kp 调得很大,启动时电流很快就冲顶,但退饱和时出现一个很大的电压尖峰,原因是积分项已经积了一大堆,饱和一放开全砸出来了。后面我把 PID 控制器的积分限幅和输出限幅都设置成同值,尖峰立刻消失了。这个细节在工程上异常重要,仿真里看不到或者忽略掉,到了实际硬件上很可能直接把开关管打坏。
再往后扩展的方向其实很多。双闭环直流调速系统可以加一个电流前馈补偿或者负载观测器,让系统抗负载扰动能力更强;也可以在转速环外面再套一层位置环,变三级环结构,那就往伺服系统方向去了。这些扩展在 Simulink 里都不难加,但前提是基础双闭环模型足够扎实。
我个人在实际操作中的体会是,做完一个经典的转速电流双闭环仿真,最大的收获不是那几个 PI 参数,而是对内环和外环之间“时间尺度分离”这个概念有了画面感。电流环反正就是要快,转速环需要的只是稳,两者各司其职才能配合默契。很多后续项目,哪怕换了控制对象,这套思路依然能沿用。你要是正在搭这个系统,建议一定亲自把 PI 参数从最初的默认值扫到合理范围,亲手感受一下那种“波形从乱到顺”的变化,这个过程本身就是做控制最有价值的一部分。