
简介运动控制系统课程中的单闭环直流调速系统仿真报告面向自动化、电气工程等专业学生适合需要完成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 s1)]这个式子把反电动势对电枢电流的内部反馈折算成积分环节因此搭建单闭环直流调速系统仿真时不应在传递函数外面再串联额外的反电动势反馈否则会重复计入积分。这里有一个单位换算细节容易被忽略如果 Ce 采用 V/(r/min)那么转矩系数 Cm 与 Ce 之间相差 9.55 倍直接用 CmCe 会把 Tm 算错近一个数量级。常见做法是把速度统一成 rad/sCe 和 Cm 数值相等再在显示环节乘 60/(2π) 换成 r/min。初始化脚本里应写明每个量的单位不要只写数字否则以后换一组真实电机参数时仿真发散会反复出现却找不到原因。2.2 整流器或 PWM 跟随环节的等效惯性不能拍脑袋晶闸管整流器输出电压 Ud 与控制电压 Uc 之间近似为一阶惯性环节 Gr(s)Ks/(1Ts 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 VPWM 控制器可以是 -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输出控制电压 UcUc 先经过整流器等效惯性环节再进入电枢回路电枢回路输出电流电流通过转矩系数变成转矩转矩与负载转矩相减后经转动惯量积分得到角速度角速度转换为转速再乘以反馈系数 alpha_n 送回 Sum。把各环节对应关系整理成下表环节Simulink 模块关键参数转速给定StepStep time0.1Final value1300偏差计算Sum加减号按接线方向设置转速调节器PID ControllerPKpIKiD0控制电压限幅Saturation上下限取 Uc 的物理范围整流器等效环节Transfer Fcn分子 [Ks]分母 [Ts 1]电枢回路Transfer Fcn分子 [1/Ra]分母 [Ta 1]机械积分Integrator初始值 0测速反馈Gainalpha_n接线顺序里有两个位置需要特别注意。反电动势 E 是转速的反馈量它出现在电枢回路的输入端与整流器输出电压相减同时转速又是电流积分的结果于是电流与转速在同一仿真步内互相依赖Simulink 会提示检测到代数环。代数环不一定会报错但会在每一个步长里做多次迭代一旦 PI 参数稍大就会出现仿真发散。最直接的解决办法是在反电动势反馈通道上串一个时间常数很小的滤波环节例如 1/(0.0001 s1)它不影响低频特性却能切断瞬时互锁回路。另一个更简化的办法是直接使用 Gm(s)1/Ce/[Tm s(Ta s1)] 作为被控对象把整个电流、转矩、积分过程合并成一个传递函数块。这个方法适合只做转速环验证但只要后续要扩展成双闭环直流调速就必须回到物理结构形式否则电流环反馈点无从接入。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例如 Ts0.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(Kp0.1,0.5,1.0,2.0,5.0);运行后找到出现等幅振荡的最小 Kp记为 Kcu再从 osc simulation 中读取振荡周期 Tu。按照临界比例法的整定规则PI 控制取 Kp0.45×KcuTiTu/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值越大退出饱和越快但过大会让积分项抖动。以 UcMax10 V 为例限幅后输出固定在 10 V内部积分仍在上升back-calculation 会把它拉回使调节器输出能根据实际反馈及时下降到限幅以下。单闭环直流调速系统仿真中这个操作几乎必做否则临界比例法整定出的参数在阶跃时全部失真。4.4 稳态误差和负载扰动的判定标准将负载转矩 Step 模块接到机械积分之前Step time 取 1.5 sFinal 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 里曲线形状。本文还有配套的精品资源点击获取