AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

前面一期我们使用了Simulink进行了一次弹簧阻尼器+位置控制仿真。还记得这个图么:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

后面联合仿真的环境配置好后,我在想,如何联合使用AMESIM和SIMULINK比较科学。然后就想到,当时建立Simulink模型时,小球、弹簧阻尼器这些物体之间,根据help中所提供的物理关系:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

来进行建模,加入扰动和外力控制,建立了模型中的Relationship模块,如下图:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

么如果我不知道这种关系呢?这时候AMESIM就能派上用场啦,AMESIM可以很方便地对物理系统进行建模,即使我不知道他们的关系。然后我们可以像之前的联合仿真一样把建好的物理系统嵌入到Simulink模型中(取代下面蓝色System区域内的模块),下面就来试试吧。

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真


 

Amesim物理模型建模

 

首先回到问题,这个物理模型内有一个弹簧阻尼器,一个小球。这里我们直接就可以在AMESIM 1D mechanical里面找到弹簧阻尼器这个模块。小球这个物体没有特殊的意义,这里可以用一个质量块来代替。

 

另外,由于我们要施加给小球扰动和控制力去稳定小球到固定位置(上一期有讲过),我们这里再安装一个用于外力施加的信号元件和一个小球位置传感器元件。连好后,将力控制信号F与位置传感器信号Displacement连接到Simulink Interface上即可。

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

然后配置一下这些物理元件的自身属性,如重量,硬度之类的。

 

如弹簧的k值与阻尼器的c值:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

 

小球(质量块)的质量与初始位置:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

 

设定好各项物理参数,至此AMESIM部分的物理模型就建模完毕了。

 


Simulink建模

 

打开Matlab,添加进AMESIM接口模块:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

编译好AMESIM物理模型,点击接口模块选择刚编好的模型:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真


Simulink-Amesim 联合仿真

点击仿真就可以看看效果啦:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

发生代数环问题,估计是反馈控制的信号出现了代数环问题,这里在反馈控制的力这里加上一个delay就好了(话说那原来的模型没有加这个,是怎么解决的?):

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

打开AMESIM就可以看到仿真的效果啦,虽然好像波动有点大,但是最后还是控制在了目标位置x=0.5了:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

 

也可以直接在Simulink里面观测结果:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

 

控制的效果挺差的,调整下试试:

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

这个模型挺敏感的。。。调慢点

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

这样就太慢了,再调调看

AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真

快了许多,但是这个Delay带来了控制的延迟,影响挺大的。

不知道这个怎么解呢,有没有大佬能够指教一下。。。