Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)

Simulink Example : Create Model Components

 

案例学习

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第1张图片

继上一期

当对简单的弹簧、阻尼系统建立完了模型。现在提出第二个问题:

如果F可控,但是外界环境也会有一些扰动,那么如何控制F能让小球最快到达稳定状态。

 

对于这样一个问题,在workflow第二期的Create Model Components(创建模型元件)这个案例里,simulink告诉我们,在对详细系统进行进一步建模前,我们可以先辨识出模型的各个元件及其边界,然后以创建子系统的方式将其分离。如下图所示:

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第2张图片

根据问题,案例创建了Operator、Environment、Controller、Mechanical system子系统。虽然子系统内的系统不一定这么复杂,但是这样的建模方式使可读性大大增加。能更好地捋清楚思路。

 

Mechanical system 子系统

由于我们控制的和收到扰动的都是外力,因此原来的F替换成control和disturbance。

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第3张图片

 

Controller 控制器

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第4张图片

example中通过一个PID控制器来控制外力,sensor的来源为小球的位置x

 

Operator 操作器

这里example给出了多个小球的目标位置,通过stateflow

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第5张图片

 

Environment 环境因素

目前环境因素只有一个外力的扰动,这里通过一个step去给出这个扰动

 


建模练习

来学着例子自己做做看吧,加入点自己的想法:

 

首先既然要分元件,我干脆就分的更彻底一些吧,Contro视为input到system的调整模块,

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第6张图片

urbance然后在control部分加入PID控制器,在前面加入Disturbance,并做好两侧的信号传递

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第7张图片


仿真

把所有模块连好仿真试一下:

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第8张图片

PID调试

先随便给个PID试试

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第9张图片Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第10张图片

嗯。。。。很明显不行

 

用PID Tuner更新一下PID参数再仿真一下

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第11张图片

很稳定,尝试一下让小球的目标位置处于一个变动状态,看看我们的控制效果如何。

 

把目标位置的输入改一改:

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第12张图片Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第13张图片

嗯,效果不错,完全重合了。。分开看更清楚点

 

换成随机位置输入:

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第14张图片Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第15张图片

目标位置变化速度太快的话还是会有超调

Simulink学习——基础建模流程案例(二)(简单弹簧阻尼器系统+控制建模)_第16张图片

把控制速度调慢点,减少震荡,效果好了很多。

 

小结

1.可以通过子系统创建来将不同类型的系统封装起来并定义接口

2.使用bus时线的位置要计划好,不然会让信号线变得非常乱


模型分享:

https://download.csdn.net/download/weixin_44281768/12839416

你可能感兴趣的:(Simulink学习,simulink)