基于Julia的自动控制系统时域仿真分析——以单闭环调速系统为例
创作时间:
作者:
@小白创作中心
基于Julia的自动控制系统时域仿真分析——以单闭环调速系统为例
引用
CSDN
1.
https://blog.csdn.net/GggKooK/article/details/146175461
在自动控制系统的时域分析中,可以利用Julia语言中的ControlSystems和Plots包完成系统的输出响应及性能分析。本文以单闭环调速系统为例,详细介绍了系统原理、仿真代码、仿真流程和可视化分析,并提供了完整的仿真代码和工程实践启示。
一、单闭环调速系统原理详解
单闭环有静差调速系统是工业控制中的经典案例,只有一个反馈回路,存在稳态误差的调速系统称为单闭环有静差调速系统,其原理如图一所示。其结构包含四大核心模块:
- 转速调节器(核心控制单元)
- 晶闸管整流器(功率放大装置)
- 直流电动机(执行机构)
- 测速发电机(反馈检测单元)
系统通过转速负反馈构成闭环控制,但存在固有稳态误差。调节器增益K的取值直接影响系统动态特性,这正是我们仿真分析的重点。
图一 闭环有静差调速系统
二、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 仿真结果分析
图二 仿真结果
Kp=0.11时:
响应曲线平缓上升
稳态误差明显
无超调现象
调节时间较长
Kp=6.0时:
快速上升但伴随剧烈振荡
出现显著超调
稳态误差减小
系统趋于不稳定
五、工程实践启示
- 参数整定原则:需在响应速度与稳定性之间折衷
- 静差消除方法:建议采用PI控制器代替纯比例控制
- 稳定性判据:可通过根轨迹法确定临界增益
- 实际应用场景:
- 机床进给系统(要求平稳)
- 电梯调速系统(需要快速响应)
附录:完整仿真代码
需要先下载Plots 包及其依赖项
- 打开终端(或命令提示符)
- 输入 julia 并按回车,进入 Julia REPL(你会看到 julia> 提示符)
- 使用下面代码直接安装
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)
本文原文来自CSDN
热门推荐
抛去《三国演义》不谈,三国真正的第一猛将是谁?并非吕布而是他
区块链公益怎么运作?
如何用ChatGPT来增强用户体验设计
煮牛肉汤搭配什么好喝?举例牛肉萝卜汤,学会了就可随你百变
商用版牛肉汤熬制工艺配方及详细制作流程分享(附牛油辣子的制作)
除了肌肉注射,疫苗接种还有哪些方法?
看《哪吒 2》大电影,这类人建议谨慎选 3D!
视频模板:创意与效率并存的制作利器
如何利用OCR实现外贸订单文件的自动识别
糖耐检查过早、过晚都不合适,多少周做准妈妈们要清楚
国家自然科学基金申请流程详解
这不仅仅是一部关于超级英雄的电影,更引发观众对人性的深度思考
服药优甲乐时,不能喝牛奶、吃鸡蛋?
酒精中毒:症状、预防、治疗及法律问题全解析
【肿瘤科普】质子治疗凭什么成为放疗技术“天花板”?
关于放疗的真相,你可能并不知道这些
八字解读事业走势:命理学如何指引事业发展
生活中无处不在的摩擦力
吉他入门教学:从基础到实战,手把手教你学吉他
热搜第一!母子看电影强行占座,300多人被迫退票……
什么是八字正缘?八字看正缘类型
祖冲之的杰出贡献与历史影响
用苹果设备分享WiFi密码二维码,简单便捷的共享方式
户外生存刀使用全解析:荒野求生必备工具的攻略与技巧
协和医生说 | 贪杯伤身,谨防上消化道出血
吃得少活得久,限制饮食可长寿?研究发现:晚上饿肚子或可延寿
每天了解一个繁华城市—新疆·和田
创作吸引眼球的段子文本:涵盖热门话题、搞笑素材与创意撰写指南
冬天最实用的雪地靴如何正确洗护?一篇为您详解!
女儿国国王要留下唐僧成亲,孙悟空为何让唐僧先答应?