MATLAB控制系统仿真3.2:SIMULINK仿真设置及实例

本文详细介绍了MATLAB/SIMULINK在自动控制领域的应用,涉及SIMULINK模块设置、参数调整、仿真器配置,以及四个实战案例,涵盖了信号处理、系统仿真、控制器设计等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该系列博客主要讲述MATLAB{\rm MATLAB}MATLAB软件在自动控制方面的应用,参考书籍:《MATLAB/SIMULINK{\rm MATLAB/SIMULINK}MATLAB/SIMULINK与控制系统仿真》。



2.SIMULINK仿真设置及实例
2.1 SIMULINK功能模块的处理
2.1.1 SIMULINK功能模块参数设置

5

2.1.2 SIMULINK模块基本操作

在模型窗口中,选中模块,四角出现黑色标记,对模块可以进行如下操作:

  • 移动:选中模块,按住鼠标左键将其拖曳到想放置的位置即可;要脱离线移动,按住Shift{\rm Shift}Shift键进行拖曳;
  • 复制:选中模块,按住鼠标右键进行拖曳即可复制一个同样的功能模块;
  • 删除:选中模块,按Delete{\rm Delete}Delete键即可;若删除多个模块,同时按住Shift{\rm Shift}Shift键,用鼠标选中多个模块,按Delete{\rm Delete}Delete键即可;亦可用鼠标选取某区域,按Delete{\rm Delete}Delete键即可把该区域的所有模块和线等全部删除;
  • 转向:右键模块,即可看到Flip&Rotate{\rm Flip\&Rotate}Flip&Rotate选项;
  • 改变大小:选中模块,对模块出现的444个黑色标记进行拖曳即可;
  • 模块命名:在模块上的"…“展开点击”Show Block Name{\rm Show\ Block\ Name}Show Block Name",把模块名显示后,点击模块名即可进行修改;
  • 颜色设定:右键模块,选中"Format{\rm Format}Format“选项卡即可看到”Foreground Color{\rm Foreground\ Color}Foreground Color“前景颜色,”Background Color{\rm Background\ Color}Background Color"背景颜色;
  • 参数设定:鼠标双击模块即可进行参数设置;
  • 属性设定:选中模块,选中"Properties{\rm Properties}Properties"选项卡,点击进入属性设定界面,包括Description、Priority、Tag{\rm Description、Priority、Tag}DescriptionPriorityTag等属性的设定;
2.2 SIMULINK仿真设置
2.2.1 仿真器参数设置

"ctrl+E{\rm ctrl+E}ctrl+E"打开仿真器参数设置界面:

6

  • 仿真时间(Simulation time)({\rm Simulation\ time})(Simulation time)

    计算机仿真对时间的表示,10s{\rm 10s}10s的仿真时间,如果采样步长为0.1{\rm 0.1}0.1,则需要执行100100100步,如果把步长减小,则采样点数增加,实际执行的时间会增加;

    需要设置仿真开始时间(Start time)({\rm Start\ time})(Start time)和仿真结束时间(Stop time)({\rm Stop\ time})(Stop time),仿真开始时间一般设置为000,结束时间视情况而定;

  • 仿真步长模式(Type)({\rm Type})(Type)

    仿真步长模式可选:Variable−step{\rm Variable-step}Variablestep(变步长)模式和Fixed−step{\rm Fixed-step}Fixedstep(固定步长)模式;

    变步长模式在仿真过程中改变可以改变步长,提供误差控制和过零检测选择;固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测;

  • 解法器(Solver)({\rm Solver})(Solver)

    变步长模式的解法器:

    • discrete{\rm discrete}discrete:当SIMULINK{\rm SIMULINK}SIMULINK检查到模型没有连续状态时使用它;
    • ode45{\rm ode45}ode45:默认值,四/五阶龙格-库塔法,适用于大多数连续或离散系统,不适用于刚性系统;是单步解法器,即在计算y(tn)y(t_n)y(tn)时,仅需要最近处理时刻的结果y(tn−1)y(t_{n-1})y(tn1)
    • ode23{\rm ode23}ode23:二/三阶龙格-库塔法,在误差限要求不高和求解的问题不太难的情况下,可能比ode45{\rm ode45}ode45更有效,是一个单步解法器;
    • ode113{\rm ode113}ode113:一种阶数可变的解法器,在误差容许要求严格的情况下通常比ode45{\rm ode45}ode45有效;ode113{\rm ode113}ode113是一种多步解法器,即在计算当前时刻输出时,需要以前多个时刻的解;
    • ode15s{\rm ode15s}ode15s:一种基于数字微分公式的解法器,是一种多步解法器,适用于刚性系统;
    • ode23s{\rm ode23s}ode23s:一种单步解法器,专门用于刚性系统,在弱误差允许下的效果优于ode15s{\rm ode15s}ode15s,能解决某些ode15s{\rm ode15s}ode15s不能有效解决的stiff{\rm stiff}stiff问题;
    • ode23t{\rm ode23t}ode23t:表示梯形规则的一种自由插值实现,适用于求解适度stiff{\rm stiff}stiff而用户又需要一个无数字振荡的解法器的情况;
    • ode23tb{\rm ode23tb}ode23tb:表示TR−BDF2{\rm TR-BDF2}TRBDF2的一种实现,TR−BDF2{\rm TR-BDF2}TRBDF2是具有两个阶段的隐式龙格-库塔公式;

    固定步长模式的解法器:

    • discrete{\rm discrete}discrete:一种实现积分的固定步长解法器,适用于离散无连续状态的系统;
    • ode5{\rm ode5}ode5:默认值,适用于大多数连续或离散系统,不适用于刚性系统;
    • ode4{\rm ode4}ode4:四阶龙格-库塔法,具有一定的计算精度;
    • ode3{\rm ode3}ode3:固定步长的二/三阶龙格-库塔法;
    • ode2{\rm ode2}ode2:改进的欧拉法;
    • ode1{\rm ode1}ode1:欧拉法;
    • ode14x{\rm ode14x}ode14x:固定步长的隐式外推法;
  • 变步长模式的步长参数设置

    • Max step size{\rm Max\ step\ size}Max step size(最大步长参数):决定解法器能够使用的最大时间步长,默认值为"仿真时间/505050",即整个仿真过程至少取505050个取样点;一般建议对于仿真时间不超过15s{\rm 15s}15s的采用默认值即可,对于超过15s{\rm 15s}15s的每秒至少保证555个采样点,对于超过100s{\rm 100s}100s的,每秒至少保证333个采样点;
    • Min step size{\rm Min\ step\ size}Min step size(最小步长参数):规定变步长仿真时使用的最小步长;
    • Relative tolerance{\rm Relative\ tolerance}Relative tolerance(相对误差):指误差相对于状态的值,是一个百分比,默认值为:1e−3{\rm 1e-3}1e3,表示状态的计算值要精确到0.1%0.1\%0.1%
    • Absolute tolerance{\rm Absolute\ tolerance}Absolute tolerance(绝对误差):指误差值的门限,或在状态值为零的情况下可以接收的误差;如果设置为auto{\rm auto}auto,则SIMULINK{\rm SIMULINK}SIMULINK为每一个状态设置初始绝对误差为1e−6{\rm 1e-6}1e6
    • Initial step size{\rm Initial\ step\ size}Initial step size(初始步长参数):一般使用auto{\rm auto}auto默认值;
    • Zero crossing control{\rm Zero\ crossing\ control}Zero crossing control:过零点控制,用来检查仿真系统的非连续;
  • 固定步长模式的步长参数设置

    • Multitasking{\rm Multitasking}Multitasking:当SIMULINK{\rm SIMULINK}SIMULINK检测到模块间非法的采样速率转换时系统会给出错误提示;非法采样速率转换即两个工作在不同采样速率的模块间的直接相连;
    • Singletasking{\rm Singletasking}Singletasking:此模式下不检查模块间的速率转换,在这种系统不存在任务同步问题;
    • Auto{\rm Auto}Auto:此模式下,SIMULINK{\rm SIMULINK}SIMULINK根据模型中模块的采样速率是否一致,自动决定切换到Multitasking{\rm Multitasking}Multitasking模式或Singletasking{\rm Singletasking}Singletasking模式;
2.2.2 工作空间数据导入/导出设置

7

  • Load from workspace{\rm Load\ from\ workspace}Load from workspace
    • Input{\rm Input}Input:从MATLAB{\rm MATLAB}MATLAB工作空间获取时间和输入变量,时间默认:ttt,输入变量默认:uuu
    • Initial state{\rm Initial\ state}Initial state:从MATLAB{\rm MATLAB}MATLAB工作空间获得的状态初始值的变量名;
    • SIMULINK{\rm SIMULINK}SIMULINK通过设置模型的输入端口,实现在仿真过程中从工作空间读入数据,常用的输入端口模块为信号与系统模块库(Signals&Systems)({\rm Signals\&Systems})(Signals&Systems)中的In1{\rm In1}In1模块,设置参数时,选中Input{\rm Input}Input前的复选框,在后面的编辑框键入数据的变量名,并可以用命令行窗口或M{\rm M}M文件编辑器输入数据;
  • Save to workspace{\rm Save\ to\ workspace}Save to workspace
    • 用来设置存在MATLAB{\rm MATLAB}MATLAB工作空间的变量类型和变量名,选中选项前面的复选框并在选项后面的编辑框输入变量名,即可吧相应数据保存到指定的变量中;
    • 常用的输出模块为信号与系统模块库(Signals&Systems)({\rm Signals\&Systems})(Signals&Systems)中的Out1{\rm Out1}Out1模块和输出方式库(Sink){({\rm Sink})}(Sink)中的To Workspace{\rm To\ Workspace}To Workspace模块;
  • Save options{\rm Save\ options}Save options
    • 用来设置设置存往工作空间的有关选项;
    • Limit date points to last{\rm Limit\ date\ points\ to\ last}Limit date points to last:用来设定SIMULINK{\rm SIMULINK}SIMULINK仿真结果最终可存往MATLAB{\rm MATLAB}MATLAB工作空间的变量的规模,对于向量而言即其维数,对于矩阵而言即其秩;
    • Decimation{\rm Decimation}Decimation:设定了一个亚采样因子,默认值为111,即对每一个仿真时间点产生值都保存,若为222则是每隔一个仿真时刻保存一个值;
2.3 SIMULINK仿真实例
2.3.1 实验1

实验要求:使用SIMULINK{\rm SIMULINK}SIMULINK求解微分方程dudt=cos⁡(sin⁡t),u(0)=1\displaystyle\frac{{\rm d}u}{{\rm d}t}=\cos(\sin{t}),u(0)=1dtdu=cos(sint)u(0)=1

解:

# 实验步骤:
# 1.所需模块:正弦信号、余弦函数、积分模块、观测结果模块;

# 2.各模块所在位置
# 2.1 正弦信号:Sources模块组中Sine Wave模块;
# 2.2 余弦函数:Math Operations模块组中Trigonometric Function模块,双击该模块选择余弦函数;
# 2.3 积分模块:Continuous模块组中Integrator模块;
# 2.4 显示模块:Sinks模块组中Scope模块(示波器模块);

# 3.把各模块拖曳到仿真窗口,并连接起来;

# 4.点击"run",然后双击Scope(示波器)显示结果;

8

2.3.2 实验2

实验要求:产生一个5sin⁡(2t){5\sin(2t)}5sin(2t)sin⁡(5t)\sin(5t)sin(5t)叠加的信号,另外叠加一个功率谱为0.50.50.5的限带宽白噪声;

解:

# 实验步骤:
# 1.所需模块:正弦信号、限带宽白噪声、加法模块、观测结果模块;

# 2.各模块所在位置
# 2.1 正弦信号:Sources模块组中Signal Generator模块,双击模块设置正弦信号参数;
# 2.2 限带宽白噪声:Sources模块组中Band-Limited White Noise模块,双击设置Noise power为0.5;
# 2.3 加法模块:Math Operations模块组中Add模块,双击将"List of Signs"的"++"改为"+++";
# 2.4 示波器模块:Sinks模块组中Scope模块;

# 3.把各模块拖曳到仿真窗口,并连接起来;

# 4.点击"run",然后双击Scope(示波器)显示结果;

9

2.3.3 实验3

实验要求:已知单位负反馈二阶系统的开环传递函数为:G(s)=10s2+3sG(s)=\displaystyle\frac{10}{s^2+3s}G(s)=s2+3s10,使用SIMULINK{\rm SIMULINK}SIMULINK求解其单位阶跃响应。

解:

# 实验步骤:
# 1.所需模块:阶跃信号、相加器、传递函数、示波器;

# 2.各模块所在位置
# 2.1 阶跃信号:Sources模块组中Step模块;
# 2.2 相加器:Math Operations模块组中Sum模块;
# 2.3 传递函数:Continuous模块组中Transfer Fcn模块;
# 2.4 示波器模块:Sinks模块组中Scope模块;

# 3.把各模块拖曳到仿真窗口,并连接起来;

# 4.点击"run",然后双击Scope(示波器)显示结果;

10

2.3.4 实验4

实验要求:某控制系统的传递函数为:Y(s)X(s)=G(s)1+G(s)\displaystyle\frac{Y(s)}{X(s)}=\displaystyle\frac{G(s)}{1+G(s)}X(s)Y(s)=1+G(s)G(s),其中:G(s)=s+502s2+3sG(s)=\displaystyle\frac{s+50}{2s^2+3s}G(s)=2s2+3ss+50,用SIMULINK{\rm SIMULINK}SIMULINK求解其阶跃输出响应,并将响应曲线导入到MATLAB{\rm MATLAB}MATLAB工作空间,在工作空间中绘制响应曲线。

解:

# 实验步骤:
# 1.所需模块:阶跃信号、传递函数、加法模块、数据导出模块、结果观测模块;

# 2.各模块所在位置
# 2.1 阶跃信号:Sources模块组中Step模块;
# 2.2 传递函数:Continuous模块组中Transfer Fcn模块;
# 2.3 加法模块:Math Operations模块组中Sum模块;
# 2.4 示波器模块:Sinks模块组中Scope模块;
# 2.5 数据导出模块:Sinks模块组中To Workspace模块,导出数据命令:y,save format设为array;

# 3.把各模块拖曳到仿真窗口,并连接起来;

# 4.点击"run",然后双击Scope(示波器)显示结果;

11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FUXI_Willard

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值