直流电机双闭环调速控制系统仿真模型 转速电流双闭环PI控制 Matlab/Simulink仿真模型 带报告

张开发
2026/4/10 2:04:53 15 分钟阅读

分享文章

直流电机双闭环调速控制系统仿真模型 转速电流双闭环PI控制 Matlab/Simulink仿真模型 带报告
直流电机双闭环调速控制系统仿真模型 转速电流双闭环PI控制Matlab/Simulink仿真模型带报告在 Simulink 里搭建直流电机双闭环调速系统而是通过连接模块来实现。这段代码会自动计算 PI 控制器的参数DC_Motor_Dual_Loop 的仿真模型。️ 直流电机双闭环调速系统建模代码function build_dc_motor_model()% 清除工作区和命令窗口clc; clear; close all;% 定义模型名称 model_name DC_Motor_Dual_Loop; % 如果模型已存在则关闭它 if bdIsLoaded(model_name) close_system(model_name, 0); end % 创建新模型 new_system(model_name); open_system(model_name); %% 1. 系统参数定义 (请在运行前根据实际电机修改这些参数) % 电枢电阻 (Ohm) R 1.5; % 电枢电感 (H) L 0.05; % 反电动势系数 (V/(rad/s)) Ke 0.8; % 转矩系数 (Nm/A) Kt 0.8; % 转动惯量 (kg*m^2) J 0.02; % 阻尼系数 (Nm/(rad/s)) B 0.01; % 采样时间 Ts 0.001; %% 2. 在模型工作区定义变量 (以便模块调用) set_param(model_name, ModelWorkspace, on); assignin(model, model_name, R, R); assignin(model, model_name, L, L); assignin(model, model_name, Ke, Ke); assignin(model, model_name, Kt, Kt); assignin(model, model_name, J, J); assignin(model, model_name, B, B); assignin(model, model_name, Ts, Ts); %% 3. 添加模块 % --- 输入源 --- add_block(simulink/Sources/Step, [model_name /Speed Reference], ... Position, [50 250 100 280], Time, 1, Before, 0, After, 100); % --- 转速环 (外环) --- % ASR (转速调节器) - PI控制器 % 这里使用近似工程最佳整定参数实际需根据你的电机计算 Kp_speed 15; Ki_speed 50; add_block(simulink/Continuous/PI Controller, [model_name /ASR (Speed PI)], ... Position, [150 250 200 290], P, num2str(Kp_speed), I, num2str(Ki_speed), ... ExternalReset, off, InitialConditionSource, internal); % --- 电流环 (内环) --- % ACR (电流调节器) - PI控制器 % 电流环响应通常比转速环快 Kp_current 10; Ki_current 100; add_block(simulink/Continuous/PI Controller, [model_name /ACR (Current PI)], ... Position, [350 250 400 290], P, num2str(Kp_current), I, num2str(Ki_current), ... ExternalReset, off, InitialConditionSource, internal); % --- 功率变换器 (PWM/晶闸管装置) --- % 模拟电力电子变换器的延时用一阶惯性环节表示 add_block(simulink/Continuous/Transfer Fcn, [model_name /Power Converter], ... Position, [450 250 500 290], Numerator, [1], Denominator, [0.001 1]); % --- 直流电机本体 --- % 使用 Simulink 内置的直流电机模块 add_block(sps/DC Machines/DC Machine, [model_name /DC Motor], ... Position, [550 250 600 330], Mechanical input, Torque TL, Field type, Shunt); % 配置电机参数 (通过掩码变量传递) set_param([model_name /DC Motor], ... Ra, R, La, L, Kf, Ke, J, J, B, B, D, 0); % --- 反馈环节 --- % 转速反馈 add_block(simulink/Signal Routing/Mux, [model_name /Mux1], Position, [650 200 680 220]); add_block(simulink/Sinks/Scope, [model_name /Scope], Position, [750 200 780 230]); % 电流反馈 (需要测量电枢电流) add_block(simulink/Signal Routing/Demux, [model_name /Demux1], Position, [620 280 650 300]); % --- 比较点 (求和) --- add_block(simulink/Math Operations/Sum, [model_name /Sum Speed], Position, [120 255 140 275], Inputs, -); add_block(simulink/Math Operations/Sum, [model_name /Sum Current], Position, [320 255 340 275], Inputs, -); %% 4. 连接模块 % 连接转速环 add_line(model_name, Speed Reference/1, Sum Speed/1); add_line(model_name, Sum Speed/1, ASR (Speed PI)/1); % 连接电流环输入 add_line(model_name, ASR (Speed PI)/1, Sum Current/1); % 连接电流调节器与变换器 add_line(model_name, Sum Current/1, ACR (Current PI)/1); add_line(model_name, ACR (Current PI)/1, Power Converter/1); % 连接变换器与电机 (电枢端子) add_line(model_name, Power Converter/1, DC Motor/A/1); % 电机励磁 (并励连接到电枢或独立源这里简单接恒定电压) add_block(simulink/Sources/Constant, [model_name /Field Voltage], Position, [550 350 580 370], Value, 200); add_line(model_name, Field Voltage/1, DC Motor/F/1); % 负载转矩 (设为0或阶跃) add_block(simulink/Sources/Step, [model_name /Load Torque], Position, [500 350 530 380], Time, 2, FinalValue, 5); add_line(model_name, Load Torque/1, DC Motor/Tl/1); % 反馈连接 % 电机输出: [ia, if, w, Tm] - 索引3是转速w add_line(model_name, DC Motor/1, Mux1/1); add_line(model_name, Mux1/1, Sum Speed/2); % 转速反馈 add_line(model_name, Mux1/1, Scope/1); % 示波器显示 % 电流反馈 (索引1是电枢电流ia) add_line(model_name, DC Motor/1, Demux1/1); add_line(model_name, Demux1/1, Sum Current/2); %% 5. 配置仿真参数 set_param(model_name, StopTime, 5.0); set_param(model_name, Solver, ode23t (mod. stiff/Trapezoidal)); set_param(model_name, MaxStep, 1e-4); disp(模型构建完成请点击 运行 按钮进行仿真。); disp(双击 Scope 查看转速波形。);end 代码说明与使用指南代码功能这段代码会自动创建一个 Simulink 模型文件 (.slx)。它包含了转速环外环和电流环内环的 PI 控制器。使用了 Simulink 库中的 DC Machine 模块来模拟真实的直流电机物理特性。添加了功率变换器的一阶惯性环节模拟晶闸管或 PWM 的延时。如何使用打开 MATLAB。点击“新建脚本”。将上述代码完整复制粘贴进去。保存文件例如 build_model.m。点击“运行”。运行后MATLAB 会自动打开名为 DC_Motor_Dual_Loop 的模型。模型结构解析Speed Reference (阶跃信号)模拟给定转速指令例如 100 rad/s。ASR (Speed PI)转速调节器。它的输出作为电流环的给定值即限制了最大电流。ACR (Current PI)电流调节器。它的输出控制电压使实际电流快速跟随 ASR 的指令。Power Converter模拟电力电子装置这里简化为一个增益和延时。DC Motor电机本体输出转速和电流。调整参数代码顶部的 R, L, Ke, J 等参数是电机参数请根据你实际使用的电机铭牌数据进行修改。Kp_speed, Ki_speed 等是 PI 参数。如果仿真波形震荡严重可以适当减小 Kp如果响应太慢可以适当增大 Kp。

更多文章