专栏
标签
基于MWorks的自动控制系统时域仿真分析——以单闭环调速系统为例
技术分享
发布于 2025-10-16 19:29:13
查看 19过去229天

在系统的时域分析中,可利用MWorks完成系统的输出响应及性能分析。

##一、单闭环调速系统原理详解
单闭环有静差调速系统是工业控制中的经典案例,只有一个反馈回路,存在稳态误差的调速系统称为单闭环有静差调速系统,其原理如图一所示。其结构包含四大核心模块:

  1. 转速调节器(核心控制单元)
  2. 晶闸管整流器(功率放大装置)
  3. 直流电动机(执行机构)
  4. 测速发电机(反馈检测单元)
    系统通过转速负反馈构成闭环控制,但存在固有稳态误差。调节器增益K的取值直接影响系统动态特性,这正是我们仿真分析的重点。
    图片1.png
    ​图一 闭环有静差调速系统

##二、MWorks仿真代码深度解析
2.1 代码结构说明

  using ControlSystems  # 控制系统工具箱
using Plots           # 绘图工具包
# 定义关键参数
kp = [0.11, 6.0]     # 对比分析两种增益
t = 0:0.01:1         # 1秒仿真时长,10ms步长
# 系统建模函数
function create_system(kp_val)
    # 分子项:前向通路增益
    num = [303.03 * kp_val] 
    
    # 分母项:系统时间常数相关
    den = [0.00001, 0.00633, 0.20167, 21.21*kp_val + 1]
    
    tf(num, den)     # 生成传递函数模型
end

2.2 关键参数设计原理
 kp选择依据:0.11代表小增益稳定状态,6.0用于观察大增益时的超调现象
 时间步长:0.01秒兼顾仿真精度与计算效率
 传递函数推导:
  分母系数来源于系统各环节的微分方程联立求解:
 τ_mτ_ds³ + (τ_m + τ_d)s² + s + K·K_s = 0
  其中τ_m为机电时间常数,τ_d为电路时间常数

##三、仿真流程详解
 3.1 系统建模

  # 创建对比系统

sys1 = create_system(kp[1])  # Kp=0.11系统

sys2 = create_system(kp[2])  # Kp=6.0系统

3.2 时域响应计算

  # 计算阶跃响应

y1, t_out, _ = step(sys1, t)  # 小增益响应

y2, t_out, _ = step(sys2, t)  # 大增益响应

# 数据格式转换

y1_vec = vec(y1)  # 矩阵转向量便于绘图

y2_vec = vec(y2)

##四、可视化分析
 4.1 绘图配置

  # 创建双子图画布
p = plot(layout=(2,1), size=(800,600))
# 绘制Kp=0.11响应
plot!(p[1], t_out, y1_vec,
       label="Kp=0.11", 
       xlabel="Time(s)", ylabel="Amplitude",
       title="小增益系统响应", 
       grid=true, ylims=(0,15))
# 绘制Kp=6响应
plot!(p[2], t_out, y2_vec,
       label="Kp=6",
       xlabel="Time(s)", ylabel="Amplitude",
       title="大增益系统响应",
       grid=true, ylims=(-10,30))

4.2 仿真结果分析
图片2.png
图二 仿真结果
Kp=0.11时:
 响应曲线平缓上升
 稳态误差明显
 无超调现象
 调节时间较长
Kp=6.0时:
 快速上升但伴随剧烈振荡
 出现显著超调
 稳态误差减小
 系统趋于不稳定

##五、工程实践启示

  1. 参数整定原则:需在响应速度与稳定性之间折衷
  2. 静差消除方法:建议采用PI控制器代替纯比例控制
  3. 稳定性判据:可通过根轨迹法确定临界增益
  4. 实际应用场景:
        机床进给系统(要求平稳)
        电梯调速系统(需要快速响应)

附录:完整仿真代码
需要先下载Plots 包及其依赖项
1.打开终端(或命令提示符)
2.输入 julia 并按回车,进入 Julia REPL(你会看到 julia> 提示符)
3.使用下面代码直接安装

  using Pkg
Pkg.add("Plots")

Julia 会自动下载 Plots 包及其依赖项(可能需要几分钟,具体取决于网络速度)
安装完成后,在 REPL 中测试是否成功

  using Plots  # 如果没有报错,说明安装成功

安装成功后便可以正常运行仿真代码

  using ControlSystems
using Plots

# 定义系统参数
kp = [0.11, 6.0]  # 两个不同的Kp值
t = 0:0.01:1      # 时间向量

# 创建函数来生成系统
function create_system(kp_val)
    # 分子系数
    num = [303.03 * kp_val]
    
    # 分母系数
    den = [0.00001, 0.00633, 0.20167, 21.21*kp_val + 1]
    
    return tf(num, den)
end

# 创建两个子图
p = plot(layout=(2,1), size=(800,600))

# 处理第一个系统 (kp = 0.11)
sys1 = create_system(kp[1])
y1, t_out, _ = step(sys1, t)

# 处理第二个系统 (kp = 6)
sys2 = create_system(kp[2])
y2, t_out, _ = step(sys2, t)

# 将y1和y2转换为向量
y1_vec = vec(y1)
y2_vec = vec(y2)

# 绘制第一个子图 (kp = 0.11)
plot!(p[1], t_out, y1_vec, 
    label="kp = 0.11",
    xlabel="Time (s)",
    ylabel="Amplitude",
    title="System Step Response (kp = 0.11)",
    grid=true,
    ylims=(0, 15))

# 绘制第二个子图 (kp = 6)
plot!(p[2], t_out, y2_vec, 
    label="kp = 6",
    xlabel="Time (s)",
    ylabel="Amplitude",
    title="System Step Response (kp = 6)",
    grid=true,
    ylims=(-10, 30))

# 显示图像
display(p)
所属专栏:Julia语言
产品信息:Syslab科学计算环境
科学计算控制工程其他
附件 1 个附件(2kb)

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天