Simulink Example : Create Model Components
案例学习
继上一期
当对简单的弹簧、阻尼系统建立完了模型。现在提出第二个问题:
如果F可控,但是外界环境也会有一些扰动,那么如何控制F能让小球最快到达稳定状态。
对于这样一个问题,在workflow第二期的Create Model Components(创建模型元件)这个案例里,simulink告诉我们,在对详细系统进行进一步建模前,我们可以先辨识出模型的各个元件及其边界,然后以创建子系统的方式将其分离。如下图所示:
根据问题,案例创建了Operator、Environment、Controller、Mechanical system子系统。虽然子系统内的系统不一定这么复杂,但是这样的建模方式使可读性大大增加。能更好地捋清楚思路。
Mechanical system 子系统
由于我们控制的和收到扰动的都是外力,因此原来的F替换成control和disturbance。
Controller 控制器
example中通过一个PID控制器来控制外力,sensor的来源为小球的位置x
Operator 操作器
这里example给出了多个小球的目标位置,通过stateflow
Environment 环境因素
目前环境因素只有一个外力的扰动,这里通过一个step去给出这个扰动
建模练习
来学着例子自己做做看吧,加入点自己的想法:
首先既然要分元件,我干脆就分的更彻底一些吧,Contro视为input到system的调整模块,
urbance然后在control部分加入PID控制器,在前面加入Disturbance,并做好两侧的信号传递
仿真
把所有模块连好仿真试一下:
PID调试
先随便给个PID试试
嗯。。。。很明显不行
用PID Tuner更新一下PID参数再仿真一下
很稳定,尝试一下让小球的目标位置处于一个变动状态,看看我们的控制效果如何。
把目标位置的输入改一改:
嗯,效果不错,完全重合了。。分开看更清楚点
换成随机位置输入:
目标位置变化速度太快的话还是会有超调
把控制速度调慢点,减少震荡,效果好了很多。
小结
1.可以通过子系统创建来将不同类型的系统封装起来并定义接口
2.使用bus时线的位置要计划好,不然会让信号线变得非常乱