直流电机双闭环控制系统 转速电流双闭环调速 matlab/simulink仿真配套文档
2026/4/5 20:30:41 网站建设 项目流程
直流电机双闭环控制系统 转速电流双闭环调速matlab/simulink仿真配套文档这是一份完整的 直流电机转速、电流双闭环调速系统 的 MATLAB/Simulink 设计方案。为了满足你的要求我将内容分为两部分设计文档参考包含系统原理、调节器设计计算ASR 和 ACR。仿真模型生成代码一段可以直接运行的 MATLAB 脚本它会自动搭建包含直流电机、PWM 变换器、转速环和电流环的完整仿真模型。 第一部分设计文档参考系统原理与结构双闭环调速系统采用转速外环和电流内环的串级控制结构。电流环内环作用改造控制对象加快电流跟随速度限制最大电流保护电机抑制电网电压波动干扰。调节器通常采用 PI 调节器ACR。设计目标通常校正为典型 I 型系统以获得最快的电流跟随性能。转速环外环作用消除转速静差实现无静差调速对负载变化起抗扰作用。调节器通常采用 PI 调节器ASR。设计目标通常校正为典型 II 型系统以保证系统的抗扰性能和跟随性能。调节器参数计算工程设计方法假设直流电机参数如下代码中将使用这些参数额定功率 P_N 10 text{ kW}额定电压 U_N 220 text{ V}额定电流 I_N 55 text{ A}额定转速 n_N 1000 text{ r/min}电枢电阻 R 0.5 Omega电枢电感 L 0.01 text{ H}电动势系数 C_e 0.196 text{ V}cdottext{min/r}机电时间常数 T_m approx 0.1 text{ s}电磁时间常数 T_l L/R 0.02 text{ s}电流调节器ACR设计确定时间常数小时间常数之和 T_{Sigma i} (包括 PWM 滞后和电流滤波)。选择参数按典型 I 型系统设计取 K_I T_{Sigma i} 0.5。计算 K_{pi}, K_{ii}。转速调节器ASR设计确定时间常数电流环等效时间常数 2T_{Sigma i} 转速滤波时间常数。选择参数按典型 II 型系统设计取中频宽 h5。计算 K_{pn}, K_{in}。 第二部分MATLAB 仿真模型这段代码会自动创建一个名为 DC_Dual_Loop_Control 的 Simulink 模型。使用方法复制下方代码。在 MATLAB 中保存为 build_dc_motor.m。运行该脚本function build_dc_motor()% 清除环境clc; clear; close all;model_name DC_Dual_Loop_Control; % 如果模型存在则关闭 if bdIsLoaded(model_name) close_system(model_name, 0); end % 创建新模型 new_system(model_name); open_system(model_name); %% 1. 定义电机与系统参数 (写入模型工作区) % 电机参数 Pn 10000; % 功率 10kW Un 220; % 电压 220V In 55; % 电流 55A Nn 1000; % 转速 1000rpm R 0.5; % 电枢电阻 L 0.01; % 电枢电感 J 0.05; % 转动惯量 B 0.01; % 粘滞摩擦系数 Ke 0.196; % 反电动势系数 (V/rpm) - 需转换为 V/(rad/s) Kt 0.196 * 60 / (2*pi); % 转矩系数 (Nm/A) % 系统参数 Vdc 300; % 直流母线电压 Ts 1e-4; % 采样时间 % 写入模型工作区 params {R, L, J, B, Kt, Vdc, Ts}; values {R, L, J, B, Kt, Vdc, Ts}; for i 1:length(params) assignin(model, model_name, params{i}, values{i}); end %% 2. 搭建主电路 % --- 直流电源 --- add_block(sps/Elements/DC Voltage Source, [model_name /DC Source], ... Position, [50 300 80 330], Amplitude, Vdc); % --- H桥变换器 (简化为受控电压源或通用桥) --- % 这里使用通用桥模拟 PWM 变换器 add_block(sps/Power Electronics/Universal Bridge, [model_name /H-Bridge], ... Position, [120 250 170 380], Power electronics, IGBT/Diode, ... Number of bridge arms, 2, Snubber resistance, 1e4); % --- 直流电机 (电枢回路) --- % 使用 RLC 串联 反电动势来模拟或者直接用 Simscape 的 DC Machine % 为了教学清晰这里使用受控电流源或简单的电路搭建 % 这里直接使用 Simscape 的 DC Machine 模块并配置参数 add_block(sps/Machines/DC Machine, [model_name /DC Machine], ... Position, [220 250 270 380], Preset model, No, ... Nominal power, voltage, speed, [Pn, Un, Nn], ... Armature resistance and inductance, [R, L], ... Field resistance and inductance, [20, 10], ... % 他励参数随意设 Mutual inductance, 1.5, ... Inertia, friction, viscous damping, [J, 0, B]); % 连接主电路 add_line(model_name, DC Source/1, H-Bridge/DC); add_line(model_name, DC Source/2, H-Bridge/DC-); add_line(model_name, H-Bridge/AC~, DC Machine/A); % A- 自动连接 % --- 负载 --- add_block(simulink/Sources/Step, [model_name /Load Torque], ... Position, [220 400 250 430], Time, 1.0, FinalValue, 50); % 1s 加负载 add_line(model_name, Load Torque/1, DC Machine/Tm); %% 3. 搭建双闭环控制回路 % --- 测量模块 --- % 电枢电流 add_block(sps/Measurements/Current Measurement, [model_name /Ia Meas], ... Position, [180 260 200 280]); add_line(model_name, H-Bridge/AC~, Ia Meas/1); % 转速 (从电机 m 端口获取) add_block(simulink/Signal Routing/Bus Selector, [model_name /Motor Signals], ... Position, [300 300 330 330]); set_param([model_name /Motor Signals], SignalNames, wm, Te, If, Ia); add_line(model_name, DC Machine/m, Motor Signals/1); % --- 给定信号 --- add_block(simulink/Sources/Step, [model_name /Speed Ref], ... Position, [50 100 80 130], Time, 0, FinalValue, 100); % 100 rad/s % 注意这里给定是 rad/s如果要用 rpm 需转换 %% 4. 控制算法搭建 (ASR ACR) % --- 转速环 PI (ASR) --- % 位置[400 100 450 140] add_block(simulink/Continuous/PI Controller, [model_name /ASR], ... Position, [400 100 450 140], P, 10, I, 50); % 参数需根据计算调整 set_param([model_name /ASR], UpperLimit, 100, LowerLimit, -100); % 限幅 % --- 电流环 PI (ACR) --- % 位置[550 100 600 140] add_block(simulink/Continuous/PI Controller, [model_name /ACR], ... Position, [550 100 600 140], P, 5, I, 100); set_param([model_name /ACR], UpperLimit, 1, LowerLimit, -1); % 输出电压限幅 -1~1 (PWM占空比) % --- 误差计算与连接 --- % 转速误差 add_block(simulink/Math Operations/Sum, [model_name /Sum Speed], ... Position, [370 105 390 125], Inputs, -); add_line(model_name, Speed Ref/1, Sum Speed/1); add_line(model_name, Motor Signals/1, Sum Speed/2); % wm 反馈 add_line(model_name, Sum Speed/1, ASR/1); % 电流误差 (ASR 输出作为电流给定) add_block(simulink/Math Operations/Sum, [model_name /Sum Current], ... Position, [520 105 540 125], Inputs, -); add_line(model_name, ASR/1, Sum Current/1); % I_ref add_line(model_name, Ia Meas/1, Sum Current/2); % Ia 反馈 add_line(model_name, Sum Current/1, ACR/1); % --- 输出至变换器 --- % ACR 输出连接到 H 桥的 g (门极) 端口是不行的需要 PWM 发生器 % 这里简化处理ACR 输出直接作为占空比 (Duty Cycle) % 使用 PWM Generator (2-Level) add_block(sps/Control Blocks/PWM Generator (2-Level), [model_name /PWM Gen], ... Position, [650 100 700 160], Generator mode, Single-phase full bridge, ... Frequency, 2000, Sample time, Ts); add_line(model_name, ACR/1, PWM Gen/Modulating); add_line(model_name, PWM Gen/PL, H-Bridge/g); %% 5. 示波器与仿真设置 add_block(simulink/Sinks/Scope, [model_name /Scope], Position, [800 100 830 130]); add_line(model_name, Motor Signals/1, Scope/1); % 转速 add_line(model_name, Ia Meas/1, Scope/2); % 电流 set_param(model_name, StopTime, 2.0); set_param(model_name, Solver, ode23t (mod. stiff/Trapezoidal)); set_param(model_name, MaxStep, 1e-5); disp(直流电机双闭环控制模型构建完成); disp(请运行仿真并双击 Scope 查看转速和电流波形。);end 仿真结果分析指南运行上述代码模型后点击运行你可以通过 Scope 观察到以下现象用于撰写报告启动阶段 (0 - 0.5s)转速从 0 迅速上升无超调或微小超调最终稳定在给定值100 rad/s。电流启动瞬间由于转速误差大ASR 输出饱和电流迅速上升到限幅值最大允许电流电机以最大转矩加速。这是双闭环系统的典型特征——准时间最优控制。抗扰阶段 (t 1.0s)当负载转矩从 0 突变到 50 Nm 时转速会有短暂的动态降落但 ASR 的积分作用会迅速消除静差使转速恢复到给定值无静差。电流为了平衡负载转矩电枢电流会阶跃上升稳定在负载对应的电流值。跟随性能如果你修改 Speed Ref 的阶跃时间或幅值系统能快速跟踪体现了电流内环加快了系统的响应速度。这是一份完整的 直流电机转速、电流双闭环调速系统 的 MATLAB/Simulink 设计方案。为了满足你的要求我将内容分为两部分设计文档参考包含系统原理、调节器设计计算ASR 和 ACR。仿真模型生成代码一段可以直接运行的 MATLAB 脚本它会自动搭建包含直流电机、PWM 变换器、转速环和电流环的完整仿真模型。 第一部分设计文档参考系统原理与结构双闭环调速系统采用转速外环和电流内环的串级控制结构。电流环内环作用改造控制对象加快电流跟随速度限制最大电流保护电机抑制电网电压波动干扰。调节器通常采用 PI 调节器ACR。设计目标通常校正为典型 I 型系统以获得最快的电流跟随性能。转速环外环作用消除转速静差实现无静差调速对负载变化起抗扰作用。调节器通常采用 PI 调节器ASR。设计目标通常校正为典型 II 型系统以保证系统的抗扰性能和跟随性能。调节器参数计算工程设计方法假设直流电机参数如下代码中将使用这些参数额定功率 P_N 10 text{ kW}额定电压 U_N 220 text{ V}额定电流 I_N 55 text{ A}额定转速 n_N 1000 text{ r/min}电枢电阻 R 0.5 Omega电枢电感 L 0.01 text{ H}电动势系数 C_e 0.196 text{ V}cdottext{min/r}机电时间常数 T_m approx 0.1 text{ s}电磁时间常数 T_l L/R 0.02 text{ s}电流调节器ACR设计确定时间常数小时间常数之和 T_{Sigma i} (包括 PWM 滞后和电流滤波)。选择参数按典型 I 型系统设计取 K_I T_{Sigma i} 0.5。计算 K_{pi}, K_{ii}。转速调节器ASR设计确定时间常数电流环等效时间常数 2T_{Sigma i} 转速滤波时间常数。选择参数按典型 II 型系统设计取中频宽 h5。计算 K_{pn}, K_{in}。 第二部分MATLAB 仿真模型这段代码会自动创建一个名为 DC_Dual_Loop_Control 的 Simulink 模型。使用方法复制下方代码。在 MATLAB 中保存为 build_dc_motor.m。运行该脚本。function build_dc_motor()% 清除环境clc; clear; close all;model_name DC_Dual_Loop_Control; % 如果模型存在则关闭 if bdIsLoaded(model_name) close_system(model_name, 0); end % 创建新模型 new_system(model_name); open_system(model_name); %% 1. 定义电机与系统参数 (写入模型工作区) % 电机参数 Pn 10000; % 功率 10kW Un 220; % 电压 220V In 55; % 电流 55A Nn 1000; % 转速 1000rpm R 0.5; % 电枢电阻 L 0.01; % 电枢电感 J 0.05; % 转动惯量 B 0.01; % 粘滞摩擦系数 Ke 0.196; % 反电动势系数 (V/rpm) - 需转换为 V/(rad/s) Kt 0.196 * 60 / (2*pi); % 转矩系数 (Nm/A) % 系统参数 Vdc 300; % 直流母线电压 Ts 1e-4; % 采样时间 % 写入模型工作区 params {R, L, J, B, Kt, Vdc, Ts}; values {R, L, J, B, Kt, Vdc, Ts}; for i 1:length(params) assignin(model, model_name, params{i}, values{i}); end %% 2. 搭建主电路 % --- 直流电源 --- add_block(sps/Elements/DC Voltage Source, [model_name /DC Source], ... Position, [50 300 80 330], Amplitude, Vdc); % --- H桥变换器 (简化为受控电压源或通用桥) --- % 这里使用通用桥模拟 PWM 变换器 add_block(sps/Power Electronics/Universal Bridge, [model_name /H-Bridge], ... Position, [120 250 170 380], Power electronics, IGBT/Diode, ... Number of bridge arms, 2, Snubber resistance, 1e4); % --- 直流电机 (电枢回路) --- % 使用 RLC 串联 反电动势来模拟或者直接用 Simscape 的 DC Machine % 为了教学清晰这里使用受控电流源或简单的电路搭建 % 这里直接使用 Simscape 的 DC Machine 模块并配置参数 add_block(sps/Machines/DC Machine, [model_name /DC Machine], ... Position, [220 250 270 380], Preset model, No, ... Nominal power, voltage, speed, [Pn, Un, Nn], ... Armature resistance and inductance, [R, L], ... Field resistance and inductance, [20, 10], ... % 他励参数随意设 Mutual inductance, 1.5, ... Inertia, friction, viscous damping, [J, 0, B]); % 连接主电路 add_line(model_name, DC Source/1, H-Bridge/DC); add_line(model_name, DC Source/2, H-Bridge/DC-); add_line(model_name, H-Bridge/AC~, DC Machine/A); % A- 自动连接 % --- 负载 --- add_block(simulink/Sources/Step, [model_name /Load Torque], ... Position, [220 400 250 430], Time, 1.0, FinalValue, 50); % 1s 加负载 add_line(model_name, Load Torque/1, DC Machine/Tm); %% 3. 搭建双闭环控制回路 % --- 测量模块 --- % 电枢电流 add_block(sps/Measurements/Current Measurement, [model_name /Ia Meas], ... Position, [180 260 200 280]); add_line(model_name, H-Bridge/AC~, Ia Meas/1); % 转速 (从电机 m 端口获取) add_block(simulink/Signal Routing/Bus Selector, [model_name /Motor Signals], ... Position, [300 300 330 330]); set_param([model_name /Motor Signals], SignalNames, wm, Te, If, Ia); add_line(model_name, DC Machine/m, Motor Signals/1); % --- 给定信号 --- add_block(simulink/Sources/Step, [model_name /Speed Ref], ... Position, [50 100 80 130], Time, 0, FinalValue, 100); % 100 rad/s % 注意这里给定是 rad/s如果要用 rpm 需转换 %% 4. 控制算法搭建 (ASR ACR) % --- 转速环 PI (ASR) --- % 位置[400 100 450 140] add_block(simulink/Continuous/PI Controller, [model_name /ASR], ... Position, [400 100 450 140], P, 10, I, 50); % 参数需根据计算调整 set_param([model_name /ASR], UpperLimit, 100, LowerLimit, -100); % 限幅 % --- 电流环 PI (ACR) --- % 位置[550 100 600 140] add_block(simulink/Continuous/PI Controller, [model_name /ACR], ... Position, [550 100 600 140], P, 5, I, 100); set_param([model_name /ACR], UpperLimit, 1, LowerLimit, -1); % 输出电压限幅 -1~1 (PWM占空比) % --- 误差计算与连接 --- % 转速误差 add_block(simulink/Math Operations/Sum, [model_name /Sum Speed], ... Position, [370 105 390 125], Inputs, -); add_line(model_name, Speed Ref/1, Sum Speed/1); add_line(model_name, Motor Signals/1, Sum Speed/2); % wm 反馈 add_line(model_name, Sum Speed/1, ASR/1); % 电流误差 (ASR 输出作为电流给定) add_block(simulink/Math Operations/Sum, [model_name /Sum Current], ... Position, [520 105 540 125], Inputs, -); add_line(model_name, ASR/1, Sum Current/1); % I_ref add_line(model_name, Ia Meas/1, Sum Current/2); % Ia 反馈 add_line(model_name, Sum Current/1, ACR/1); % --- 输出至变换器 --- % ACR 输出连接到 H 桥的 g (门极) 端口是不行的需要 PWM 发生器 % 这里简化处理ACR 输出直接作为占空比 (Duty Cycle) % 使用 PWM Generator (2-Level) add_block(sps/Control Blocks/PWM Generator (2-Level), [model_name /PWM Gen], ... Position, [650 100 700 160], Generator mode, Single-phase full bridge, ... Frequency, 2000, Sample time, Ts); add_line(model_name, ACR/1, PWM Gen/Modulating); add_line(model_name, PWM Gen/PL, H-Bridge/g); %% 5. 示波器与仿真设置 add_block(simulink/Sinks/Scope, [model_name /Scope], Position, [800 100 830 130]); add_line(model_name, Motor Signals/1, Scope/1); % 转速 add_line(model_name, Ia Meas/1, Scope/2); % 电流 set_param(model_name, StopTime, 2.0); set_param(model_name, Solver, ode23t (mod. stiff/Trapezoidal)); set_param(model_name, MaxStep, 1e-5); disp(直流电机双闭环控制模型构建完成); disp(请运行仿真并双击 Scope 查看转速和电流波形。);end 仿真结果分析指南运行上述代码生成模型后点击运行你可以通过 Scope 观察到以下现象用于撰写报告启动阶段 (0 - 0.5s)转速从 0 迅速上升无超调或微小超调最终稳定在给定值100 rad/s。电流启动瞬间由于转速误差大ASR 输出饱和电流迅速上升到限幅值最大允许电流电机以最大转矩加速。这是双闭环系统的典型特征——准时间最优控制。抗扰阶段 (t 1.0s)当负载转矩从 0 突变到 50 Nm 时转速会有短暂的动态降落但 ASR 的积分作用会迅速消除静差使转速恢复到给定值无静差。电流为了平衡负载转矩电枢电流会阶跃上升稳定在负载对应的电流值。这张图片展示的是晶闸管SCR-直流电机开环或单闭环调速系统的Simulink仿真模型。为了让你能够复现这个仿真我将提供构建该模型所需的MATLAB代码。这段代码会自动创建一个新的Simulink模型并添加图中所示的所有模块三相电源、晶闸管整流桥、直流电机、脉冲触发器、示波器等并设置好它们之间的连接关系。%% MATLAB代码自动生成晶闸管-直流电机调速系统模型% 对应图片中的系统拓扑结构% 运行此代码前请确保已安装 Simscape Electrical 工具箱function create_thyristor_drive_model% 1. 创建新模型modelName ‘Thyristor_Drive_System’;new_system(modelName);open_system(modelName);% 2. 添加电源部分 (三相交流源 变压器) % 三相电源 add_block(powerlib/Sources/Three-Phase Source, [modelName /Three-Phase Source], ... Position, [30 30 130 130]); set_param([modelName /Three-Phase Source], Voltage, 380, Frequency, 50); % 变压器 (图中有两个变压器这里简化为一个降压/隔离变压器) add_block(powerlib/Elements/Three-Phase Transformer (Two Windings), [modelName /Transformer], ... Position, [160 30 260 130]); % 3. 添加整流部分 (晶闸管整流桥) % 通用整流桥 add_block(powerlib/Power Electronics/Universal Bridge, [modelName /Universal Bridge], ... Position, [300 30 400 130]); % 设置为晶闸管 set_param([modelName /Universal Bridge], Bridge_type, Thyristors); set_param([modelName /Universal Bridge], Number_of_bridges, 1); % 4. 添加直流电机部分 % 直流电机 add_block(powerlib/Machines/DC Machine, [modelName /DC Machine], ... Position, [480 30 580 130]); % 机械负载端口 add_block(powerlib/Machines/DC Machine, [modelName /Mechanical Load], ... Position, [620 30 720 130], Load_type, Constant torque); % 设置为恒转矩负载 % 5. 添加控制部分 (同步6脉冲触发器) % 同步6脉冲发生器 add_block(powerlib/Control Measurements/Pulses/Synchronized 6-Pulse Generator, [modelName /Synchronized 6-Pulse Generator], ... Position, [300 180 400 280]); % 常数模块 (用于设置触发角 Alpha) add_block(simulink/Sources/Constant, [modelName /Alpha Constant], ... Position, [160 180 260 200]); set_param([modelName /Alpha Constant], Value, 30); % 初始触发角30度 % 6. 添加测量与显示 (示波器) % 示波器 add_block(simulink/Sinks/Scope, [modelName /Scope], ... Position, [750 30 850 130]); % 7. 连接模块 (模拟图中的连线) % 电源 - 变压器 add_line(modelName, Three-Phase Source/ABC, Transformer/Primary); % 变压器 - 整流桥 add_line(modelName, Transformer/Secondary, Universal Bridge/AB); % 整流桥 - 直流电机电枢 add_line(modelName, Universal Bridge/DC, DC Machine/A); add_line(modelName, Universal Bridge/DC-, DC Machine/A-); % 触发器 - 整流桥门极 add_line(modelName, Synchronized 6-Pulse Generator/Pulses, Universal Bridge/g); % 同步信号 - 触发器 add_line(modelName, Three-Phase Source/ABC, Synchronized 6-Pulse Generator/AB); % 常数 - 触发角 add_line(modelName, Alpha Constant/1, Synchronized 6-Pulse Generator/alpha_deg); % 电机输出 - 示波器 (简化连接实际需加电压/电流测量模块) % 注意图中有电压表和电流表这里为了简化代码直接连电机信号 % 实际仿真中需要在电枢回路串联 Current Measurement 模块 % 8. 添加必要的测量模块 (电压/电流) add_block(powerlib/Measurements/Current Measurement, [modelName /Current Measurement], ... Position, [440 30 460 50]); add_block(powerlib/Measurements/Voltage Measurement, [modelName /Voltage Measurement], ... Position, [440 60 460 80]); % 重新连接测量模块 delete_line(modelName, Universal Bridge/DC, DC Machine/A); add_line(modelName, Universal Bridge/DC, Current Measurement/1); add_line(modelName, Current Measurement/1, DC Machine/A); % 显示提示信息 disp(Simulink模型已生成请检查连接并运行仿真。);end代码说明与图片对应关系左侧电源部分代码中的 Three-Phase Source 和 Transformer 对应图中最左侧的交流电源和变压器模块。这模拟了工业电网供电通过变压器降压后供给晶闸管。中间整流部分Universal Bridge 设置为 Thyristors 模式对应图中的六脉冲晶闸管整流桥。这是系统的核心功率变换部分将交流电变为可控的直流电。下方控制部分Synchronized 6-Pulse Generator 对应图中的脉冲发生器。它接收同步信号来自电源和控制角 alpha来自常数模块产生触发脉冲去控制晶闸管的导通。右侧负载部分DC Machine 对应图中的直流电机。图中电机后面连接了测量仪表电压表、电流表和示波器代码中也加入了测量模块以观测波形。如何使用打开MATLAB。新建一个脚本.m文件将上述代码粘贴进去。点击运行。运行结束后会弹出一个名为 Thyristor_Drive_System 的Simulink窗口。你需要手动微调一下示波器的输入连线将电压、电流测量模块的输出连到示波器即可开始仿真。这个模型是开环的通过改变常数模块的Alpha值来改变电压。如果你需要实现闭环如转速负反馈需要在此基础上增加PI控制器和转速反馈回路。

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

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

立即咨询