Adams与simulink联合仿真之快速设置初值
去年到现在一直做的两个项目要用到Adams与simulnk联合仿真,虽然网上有很多这方面的教程,但都比较基本,要实现一些稍微复杂的要求就比较困难了,比如我需要改变模型的初始位姿,原来的方式是在adams中设置,再生成联合仿真需要的文件,再在matlab中进行调用和仿真,如果工况多的话这样就特别耗时耗力,经过长时间的摸索,终于找出了在matlab中直接改变Adams模型参数的方法,下面具体说明一下。
我这里的模型是一个小球通过弹簧连接在坐标原点,仿真开始后在重力作用下会振荡运动,模型的输出是小球的速度和位移,输入是作用在小球上的控制力。建立两个设计变量,分别为小球的初始速度和弹簧的刚度。由于建模到这一部分网上有很多教程,此处不再赘述。
然后在simulink中导入Adams模型并加上自己的控制模块,连成回路。这一步网上也有很多其他教程,所以不详细讲了。
再然后创建一个matlab脚本,如下所示:
clearclcsimus_ctrlcmd1= 'variable modify variable_name = .test.y0 real_value = -0.1!';cmd2='move translation part = ball c1=0.0 c2=-200 c3=0.0!';cmd3 = 'variable modify variable_name = .test.K real_value = 0.1!';ADAMS_init =[cmd1 cmd2 cmd3];sim('ball_ctrl')
其中,第4行为Adams导出的文件名,运行以生成联合仿真需要的参数;
第6行设置小球的初速度y0,这是之前在Adams中建立的设计变量,并和小球的初速度关联起来了;
第7行设置小球的初始位置,c1,c2,c3为小球在惯性系里 的位置坐标;
第8行设置弹簧刚度K,这也是这是之前在Adams中建立的设计变量,并和弹簧刚度关联起来了。
注意:第6行到第8行每行后边都要加感叹号!!要不然只能执行第一句,然后会出错!
第10行是把上面的三条命令赋值给ADAMS_init,这个参数在simulink中Adams模块点开会看到,初值设置的命令就行通过它传给Adams模型的。
最后,第12行,运行simulink,进行仿真。
通过这样的方式,直接在matlab中就可以修改你关心的量,不用再去Adams中修改,然后导出文件,再导入matlab,大大提高了工作效率!
如果觉得《Adams与matlab联合仿真的一些小技巧》对你有帮助,请点赞、收藏,并留下你的观点哦!