单闭环直流调速系统仿真:从模型搭建到PI参数整定与排错
2026/9/17 15:55:13 网站建设 项目流程

简介:运动控制系统课程中的单闭环直流调速系统仿真报告,面向自动化、电气工程等专业学生,适合需要完成Simulink仿真作业的初学者。报告为docx格式,单文件约348KB,内容涵盖实验目的、动态结构框图、模块选型、参数设置、仿真模型搭建及结果分析等完整环节。重点研究比例积分(PI)控制器对调速系统的影响,通过调整比例系数与积分时间常数,对比不同参数下的转速响应曲线,并基于Scope测量工具计算上升时间和超调量,验证系统稳定性与快速性的矛盾关系。此外还单独完成一组比例控制仿真,便于理解无积分作用时系统的局限性。目前已有2208人学习,可直接参考或扩展,适合用来熟悉Simulink环境中电机、PWM转换器、PI调节器模块的搭建与调试流程。

1. 单闭环直流调速系统仿真不是把 PI 接上就算完

很多工程师学生时代都搭过单闭环直流调速系统仿真,工作后再做却常常发现结果失控:阶跃后转速冲出极限,或一开跑就“仿真发散”,Scope 里出现一片红色条纹。问题多半不在软件,而是整流器等效滞后、电机双时间常数和 PI 限幅没有匹配好。该仿真本质是验证对带积分环节对象的反馈校正,只要调节器参数与对象参数差一个数量级,波形必错。本文从数学模型、Simulink 搭建、整定排错、线性化验证四步展开,适合正在做电气传动课设,或准备把调速算法移植到嵌入式平台前先做仿真的工程师。

2. 单闭环直流调速系统仿真的数学模型与参数选定

2.1 他励直流电动机的双时间常数:Ta 与 Tm 分别管哪段

他励直流电动机在额定励磁下以电枢电压为输入、转速为输出时,常被简化成两个串联环节:电枢回路先决定电流快慢,机械转子再决定转速快慢。电枢回路电气时间常数 Ta = La/Ra,量级是几毫秒到几十毫秒;机电时间常数 Tm = JRa/(CeCm),量级是零点几秒到几秒。Ta 决定电流波形上升斜率,Tm 决定转速波形整体积分斜率。很多运动控制系统教材直接给出开环传递函数近似式 Gm(s) = 1/Ce / [Tm s (Ta s+1)],这个式子把反电动势对电枢电流的内部反馈折算成积分环节,因此搭建单闭环直流调速系统仿真时不应在传递函数外面再串联额外的反电动势反馈,否则会重复计入积分。

这里有一个单位换算细节容易被忽略:如果 Ce 采用 V/(r/min),那么转矩系数 Cm 与 Ce 之间相差 9.55 倍,直接用 Cm=Ce 会把 Tm 算错近一个数量级。常见做法是把速度统一成 rad/s,Ce 和 Cm 数值相等,再在显示环节乘 60/(2π) 换成 r/min。初始化脚本里应写明每个量的单位,不要只写数字,否则以后换一组真实电机参数时仿真发散会反复出现却找不到原因。

2.2 整流器或 PWM 跟随环节的等效惯性不能拍脑袋

晶闸管整流器输出电压 Ud 与控制电压 Uc 之间近似为一阶惯性环节 Gr(s)=Ks/(1+Ts s)。其中 Ks 是整流器放大倍数,取整流器额定输出电压与控制电压最大值的比值;Ts 是平均失控时间,三相全控桥在工频 50 Hz 下工程值约为 1/(2m f) = 1/(2×6×50) ≈ 0.00167 s。PWM 电路按平均值模型处理时,Ts 可取开关周期的一半,例如 10 kHz 对应 0.00005 s。这个参数很小,但它在闭环系统里贡献的高频滞后不可忽略,Ts 设得过大,仿真相角裕度会被吃掉,转速波形看起来像自激振荡。

用下面的 MATLAB 脚本初始化工序单闭环直流调速系统仿真参数:

% 单闭环直流调速系统仿真参数初始化 Ra = 0.5; % 电枢电阻 ohm La = 0.01; % 电枢电感 H J = 0.1; % 转子转动惯量 kg*m^2 Ce = 0.2; % 反电动势系数 V/(rad/s) Cm = Ce; % 电磁转矩系数 N*m/A,速度单位统一为 rad/s Ta = La / Ra; % 电气时间常数 0.02 s Tm = J * Ra / (Ce * Cm); % 机电时间常数 1.25 s Ks = 230; % 整流器放大倍数 Ts = 0.00167; % 三相桥平均失控时间 s alpha_n = 0.007; % 转速反馈系数 V/(r/min)

该脚本先算 Ta、Tm,再算整流器和反馈系数,顺序不能颠倒。Ks 和 alpha_n 的作用是决定 PI 比例增益的量级:Ks 越大,控制电压对电压波动的放大越敏感,Kp 要相应调小;alpha_n 越大,反馈越强,同样达到额定转速时误差电压越小,Kp 也需要调小。建议把这些参数统一放在同一个模型回调函数或 MATLAB 脚本里,不要散落在各个模块参数对话框中。

下表汇总参数数量和影响,方便和实际电机铭牌对照:

参数定义量级范围对仿真波形的影响
Ta电枢回路时间常数 La/Ra5~50 ms决定电流上升斜率,过大则电流滞后明显
Tm机电时间常数0.2~2 s决定转速响应积分斜率,过小则容易超调
Ts整流器失控时间0.05~3 ms过大削减相角裕度,引发振荡
Ks整流器放大倍数50~300决定控制电压到主电路电压的增益
alpha_n测速反馈系数0.001~0.01 V/(r/min)决定稳态误差和反馈强度

2.3 PI 调节器的零点位置与限幅初值

单闭环直流调速系统仿真中转速调节器一般用 PI,比例项负责快速纠偏,积分项负责消除静差。由于电机对象内含积分,PI 又在其零频处加入一个积分,系统是双积分型对象,稳定裕度完全靠 PI 零点拉回来。若把 PI 零点放在 Ta 时间常数附近,可近似抵消电枢电磁惯性,让系统近似成为“积分 + 惯性 + 滞后”的典型对象;零点若放得太靠近原点,积分作用太强,阶跃响应会拉出明显超调;零点若放得太远,相当于纯比例控制,稳态误差无法消除。

PI 输出限幅初值先按控制电压的物理范围来定。晶闸管触发器控制电压 Uc 通常是 0~10 V,PWM 控制器可以是 -5~5 V 或 0~3.3 V。限幅值不是保留裕量用的,它决定整流器输出电压的上下限。如果限幅设得太大,仿真里会出现一种假象:转速超调不大,但实际触发角早已饱和,换一组参数后立刻发散。限幅初值应该写进初始化脚本,并跟随 Ks 一起修改,避免两个参数不一致导致直流母线电压越界。

3. 用 Simulink 搭建单闭环直流调速系统仿真模型的最小步骤

3.1 选平均模型还是开关模型

在 Simulink 里搭单闭环直流调速系统仿真有两种路线:一种直接用 Simscape Electrical 的晶闸管和直流电机物理模块,另一种用 Transfer Fcn、Gain、Integrator 搭平均模型。前者更接近实际电路,但换相过程和开关动作会引入高频分量,必须用小步长求解,很容在 Step 模块加入阶跃瞬间出现代数环和数值不稳定。平均模型把整流器和 PWM 变换器都等效为一阶惯性,变量全是连续时间信号,解算器压力小,适合验证 PI 参数、转速反馈系数这些控制层问题。

我一般建议先把平均模型跑通,再决定是否改造为物理模型。单闭环直流调速系统仿真要回答的核心问题,是“用什么 Kp、Ki 能让转速稳定在给定值附近”,而不是“晶闸管换相过程是否准确”。平均模型把被控对象从非线性开关网络变成线性传递函数,后续做 Bode 图、零极点分析和离散化也都有直接对应的解析式,这是物理模型难以替代的。

3.2 主回路、控制回路和反馈通道的分层接线

最小可运行模型的结构如下:Step 模块给出转速给定,与转速反馈经过 Sum 得到偏差;偏差进入 PID Controller,输出控制电压 Uc;Uc 先经过整流器等效惯性环节再进入电枢回路;电枢回路输出电流,电流通过转矩系数变成转矩;转矩与负载转矩相减后经转动惯量积分得到角速度;角速度转换为转速,再乘以反馈系数 alpha_n 送回 Sum。把各环节对应关系整理成下表:

环节Simulink 模块关键参数
转速给定StepStep time=0.1,Final value=1300
偏差计算Sum加减号按接线方向设置
转速调节器PID ControllerP=Kp,I=Ki,D=0
控制电压限幅Saturation上下限取 Uc 的物理范围
整流器等效环节Transfer Fcn分子 [Ks],分母 [Ts 1]
电枢回路Transfer Fcn分子 [1/Ra],分母 [Ta 1]
机械积分Integrator初始值 0
测速反馈Gainalpha_n

接线顺序里有两个位置需要特别注意。反电动势 E 是转速的反馈量,它出现在电枢回路的输入端,与整流器输出电压相减;同时转速又是电流积分的结果,于是电流与转速在同一仿真步内互相依赖,Simulink 会提示检测到代数环。代数环不一定会报错,但会在每一个步长里做多次迭代,一旦 PI 参数稍大就会出现仿真发散。最直接的解决办法是在反电动势反馈通道上串一个时间常数很小的滤波环节,例如 1/(0.0001 s+1),它不影响低频特性,却能切断瞬时互锁回路。

另一个更简化的办法是直接使用 Gm(s)=1/Ce/[Tm s(Ta s+1)] 作为被控对象,把整个电流、转矩、积分过程合并成一个传递函数块。这个方法适合只做转速环验证,但只要后续要扩展成双闭环直流调速,就必须回到物理结构形式,否则电流环反馈点无从接入。

3.2.1 转矩负载突变用 Step 还是 Signal Generator

验证负载扰动时,负载转矩 Tload 不要只加常数值。常用做法是用 Step 模块在 1.5 s 时从 0 跳到额定负载,观察转速跌落后能否恢复;如果需要周期性扰动测试,可用 Signal Generator 设成方波,频率取 0.5 Hz,幅值为额定转矩的 20%。Signal Generator 在仿真中代表周期性冲击负载,比如往复式机械负载,输出直接接到机械积分输入端的第二个加法点上。这个加法点要明确加上负号,方向接反会变成转速随负载增加而上升,波形看起来稳定但物理上错误。

3.3 变步长与固定步长如何选

平均模型不包含实际开关脉冲,理论上用 ode45 变步长就能跑。但模型里有 Saturation、Step 跳变这些不连续环节,ode45 在误差指标控制下会自动加密步长,遇到积分饱和时步长可能小到毫秒级以下,拖慢仿真速度。排查仿真发散时可先用 ode15s 试一遍,ode15s 对刚性系统更稳,能把数值振荡压下去。固定步长情况下,最大步长不要超过整流器时间常数 Ts 的 1/10;例如 Ts=0.00167 s,则 MaxStep 取 0.000167 s。

下面是装载参数并运行模型的脚本:

% 单闭环直流调速系统仿真模型运行 Kp = 1.5; Ti = 0.05; UcMax = 10; % 控制电压限幅 V set_param('dcmotor_speed', 'StopTime', '2'); set_param('dcmotor_speed', 'SolverType', 'Variable-step'); set_param('dcmotor_speed', 'Solver', 'ode15s'); set_param('dcmotor_speed', 'MaxStep', num2str(Ts/10)); simOut = sim('dcmotor_speed'); t = simOut.find('t'); n = simOut.find('n'); plot(t, n); grid on; xlabel('t (s)'); ylabel('n (r/min)');

这里把 Solver 设为 ode15s,同时限定 MaxStep,避免 Simulink 在限幅切换点附近无限加密。simOut.find 适用于较新的 MATLAB 版本;如果日志记录用的是 logsout,就从 simOut.logsout.getElement 中读取信号名。数据归一化工作放在绘图前完成,把转速单位统一成 r/min 或 rad/s,不要直接在画图时除以某个系数,否则后面做误差分析容易单位错乱。

4. 单闭环直流调速仿真的“仿真发散”与参数整定方法

4.1 PI 初值:用对象时间常数估比例与积分

单闭环直流调速系统仿真的开环对象包含一个积分环节,Kp 的选择比一般惯性对象更敏感。先把 Ki 置为 0,只加比例控制,看转速曲线的临界增益,再用临界比例法确定 PI 参数。该方法在 Simulink 中实现非常直接:

% 临界比例法找 Kp 临界值 Ki = 0; Kp_list = [0.1 0.5 1.0 2.0 5.0]; for i = 1:length(Kp_list) Kp = Kp_list(i); set_param('dcmotor_speed/PID Controller', 'P', num2str(Kp)); set_param('dcmotor_speed/PID Controller', 'I', num2str(Ki)); simOut = sim('dcmotor_speed', 'StopTime', '1.0'); n_i = simOut.find('n'); plot(n_i.Time, n_i.Data); hold on; end legend('Kp=0.1','0.5','1.0','2.0','5.0');

运行后找到出现等幅振荡的最小 Kp,记为 Kcu,再从 osc simulation 中读取振荡周期 Tu。按照临界比例法的整定规则,PI 控制取 Kp=0.45×Kcu,Ti=Tu/1.2,可得到一个较保守的初值。这个方法比公式直接算更可靠,因为它包含了整流器惯性、反馈滤波和代数环迭代带来的实际延迟,这些因素很难用一个简单公式表达。

得到初值后再把 PI 零点放在 Ta 附近做微调。零点太靠近原点,积分作用强,稳态误差小但超调大;零点太靠右,相当于削弱积分,转速恢复能力差。微调的原则是保持相角裕度在 45° 左右,这一点在第 5 章用线性化工具验证。

提示:遇到单闭环直流调速系统仿真发散时,先不要改 Kp,先看 Saturation 限幅是否把 Uc 限制在物理范围之外。限幅过宽会让仿真出现超高直流母线电压,波形发散速度快且不规律,排查起来比参数振荡更麻烦。

4.2 仿真发散定位:先把非线性砍掉再看线性系统

排除限幅、代数环和步长问题后,用频域手段定位发散源。打开 Simulink 的 Model Linearizer,在工作点处计算开环传递函数的相角裕度。如果相角裕度小于 0,闭环必然发散;如果相角裕度在 0 到 20° 之间,仿真时域会表现为等幅振荡。这个检查可以在搭模型的早期做,不用等到波形飞了再回来猜。

模型里若有明显的非线性环节,线性化工具会忽略状态相关变换的细节,所以线性化结果主要用来判断“参数是否落在危险区域”。在 Model Linearizer 里操作时,把输入定义为 Step 信号,输出定义为测速反馈信号,得到开环 Bode 图;若截止频率超过整流器等效带宽的 1/3,说明 Kp 过大,应回退到临界增益的一半以下。

4.3 积分饱和是限幅之外的另一个隐藏发散源

即使整流器放大倍数和 Kp 都合理,加限幅后的转速阶跃响应仍可能出现“冲过头再回落”的典型饱和现象。原因在于 Uc 达到限幅值后,PI 控制器内部的积分项仍继续累加偏差,导致输出无法及时退出饱和。Simulink 的 PID Controller 模块把 Anti-windup method 设为 back-calculation,即可解决这个问题。

Back-calculation 的工作原理是先计算实际限幅输出与调节器理想输出的差值,把这个差值除以一个回退系数后反馈到积分输入端。回退系数一般取 1/Ti,单位为 1/s,值越大退出饱和越快,但过大会让积分项抖动。以 UcMax=10 V 为例,限幅后输出固定在 10 V,内部积分仍在上升,back-calculation 会把它拉回,使调节器输出能根据实际反馈及时下降到限幅以下。单闭环直流调速系统仿真中这个操作几乎必做,否则临界比例法整定出的参数在阶跃时全部失真。

4.4 稳态误差和负载扰动的判定标准

将负载转矩 Step 模块接到机械积分之前,Step time 取 1.5 s,Final value 取额定转矩的 100%。运行后先看两个指标:一是负载突变瞬间转速跌落值,二是恢复到稳态的时间。转速跌落值主要受 Kp 影响,Kp 越大,动态速降越小;恢复时间主要受 Ki 影响,Ki 越大,静态误差消除越快,但 Ki 过大会在转速误差进入死区后反复震荡。

判定合格的标准可以这样设定:稳态时转速误差小于给定值的 0.5%,负载突变后转速恢复时间不超过 0.5 s,且不出现超过两次的来回穿越。若转速最终没有恢复到给定值,检查反馈通道 Gain 是否把反馈电压缩放到了正确范围;alpha_n 设错是最常见的稳态误差来源,它会让误差电压无法归零,PI 积分再大也补不回来。

5. 用线性化分析和离散化验证单闭环直流调速仿真结果

5.1 线性化后看闭环带宽与相角裕度

单闭环直流调速仿真里不能只靠眼睛看曲线,因为超调、响应时间和稳定裕量之间存在折中关系。用 Simulink Control Design 对模型做线性化,能得到当前工作点下的闭环 Bode 图。操作前把 PI 限幅设成足够宽,使线性化点不触边,然后把输入输出闭环打点,执行线性化得到开环传递函数,再看相角裕度。工程上相角裕度 45° 左右对应阶跃超调 20%~30%,若波形超调超过 40%,相角裕度多半低于 30°。

5.2 连续 PI 转离散 PI 后波形一致性检查

如果后续代码要跑在 ARM 或 DSP 上,控制器必须是离散形式。用 Tustin 双线性变换把连续 PI 转离散,取控制周期 1 ms:

% 连续 PI 转离散 PI s = tf('s'); PIc = Kp * (1 + 1/(Ti*s)); PId = c2d(PIc, 0.001, 'tustin'); [NumPId, DenPId] = tfdata(PId, 'v');

将离散 PI 的系数换算成增量式 PID 的 b0、b1、b2,替换模型中的连续 PID Controller 后重新仿真。对比两条转速响应曲线,若离散后超调明显增大,优先缩小控制周期;若控制周期已经接近整流器时间常数 Ts,说明高频段离散化损失过大,需要降低 Kp 而不是继续缩减步长。

5.3 用稳态平衡公式验证模型内部一致性

最后一个只用十秒能完成的验证技巧是:读取稳态后的 Uc、电枢电流 Id 和转速 n,检查是否满足 Uc×Ks - Ce×n = Id×Ra。如果该等式偏差超过 5%,说明模型里整流器增益、电机参数或反馈系数之间存在单位不一致。直接在各信号末端加 To Workspace 模块,再用 mean 取后几百个点求均值,就能定位是哪个环节的参数设错。单闭环直流调速系统仿真正确性最终要靠信号之间的数值关系确认,而不是只看 Scope 里曲线形状。

本文还有配套的精品资源,点击获取

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

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

立即咨询