前言
一直在学习过程中。打工人的毕设内容会用到涉及到该部分内容,故此处发个博客做个小总结。
如果说simulink可以帮你做任何仿真(没错,是任何仿真!),那么simscape就是能够帮你更快速完成涉及物理、机械工程等领域的仿真。
用我老师的话来说就是——半物理仿真?
本篇文章旨在记录simscape里的一些基本的模块并搭建了一个PID控制下的单级倒立摆的应用实例,希望能对阅读到该内容的友友有所帮助!
正文
首先,matlab内置实际上是有simscape的学习使用教程的,如下图:
但是呢,这个教程是生肉(英文并且无字幕)。于是我在b站上找到了熟肉:
【Simscape入门之旅】熟悉Simscape入门之旅的界面_哔哩哔哩_bilibili
(不止这一个,有好几个教程)
这个教程我还没有完全看完,因为我的首要目的是运用simscape搭建一个单级倒立摆的模型,所以我找到了一个宝藏教程,虽然讲得比较快且不太细致,但确足够让我熟悉simscape并搭建一个单机倒立摆的仿真模型了(链接放在末尾)。
首先创建一个simulink的窗口,这里可以直接在simscape下面选择创建Multibody(多体模型)。
打开之后会发现一些模块:
从上到下:第一个可以理解为一个求解器(控制器?),第二个可以理解为一个世界坐标,第三个可以理解为对整体全局参数的设定(重力,x,y,z等)
这个箭头就是一个信号转换器,我的理解就是把将输入的物理信号转换为Simulink输出信号。(另一个箭头就是把Simulink输入信号转换为物理输出信号)。
这个模块是坐标转换模块。在系统中默认X,Y,Z轴的参考系是确定的,并且很多运动仿真模块也只能在规定的轴按要求运动,故如果需要更改模块的相对位置则需要在空间中的平移以及在空间中的旋转。而这个功能可以在以上模块中实现。
这个是刚体模块,可以在空间中设置一个确定大小、长度的刚体。
然后具体需要使用的物理模型,可以在Simulink Library Browser里面找到,具体路径如下图:
每个模型通过图标示意,以及具体的解释,就可以知道具体的使用方法、指代何种物理模型。并且每个模块都内置了很多功能,比如内置各种传感器。
以下为单级倒立摆的一个简单的一个搭建。
注意一下每个物理模型的使用的方向,以及需要使用的参数。
滑块模块:它只能在Z轴上平移,如果我们想让它在x轴上做平移运动,则需要提前进行坐标变换。考虑到滑块的输入端是由我们人为控制的,则需要设置Actuation中的力设置为自动计算,并且由输入端提供。
转动模块:只能在x,y平面绕着z轴旋转。由于需要检测倒立摆转动的角度,在这里选择一个角度传感器作为反馈信号。考虑到倒立摆竖直状态下,处于平衡状态,所以在这个地方可以给予它一个小的角度(10°)来让他摆动起来。
然后点击运行,则可以在隔壁matlab窗口看到一个这样的模型。
(emmm,实际状态是他在不受控制的转动,这里无法体现出来)
这里还会发现摆杆的运动会有些卡顿,可以在Model Settings里面调整求解器的步长(这里将最大步长设置为0.1)。重新启动后发现运动变得丝滑了。
接下来就是加入PID控制模块。这里直接接入了一个非常简单的PID模型。
将各模块连接后,一个简单的对PID控制下的单级倒立摆模型建模就完成了。
然后就是对参数P、I、D进行调整,这里随便输入了几个参数,得到以下结果。
可以看到窗口中倒立摆的运动是趋于平稳的,打开scope,可以看到系统是趋于稳定的。这和仿真结果相符。
结语
在学习过程中我只能感叹matlab功能的强大。学习的路还很长,还希望和各位技术人多多交流!
应用实例搭建源视频教程:matlab的simscape对PID控制下的倒立摆模型建模_哔哩哔哩_bilibili