adams和simulink联合仿真的案例分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相信大家在联合仿真ADAMS和SIMULINK时都会遇到很多的问题:ADAMS/contro中的例子ball_beam通过联合仿真,更容易理解adams和simulink的联合仿真精髓。小球在一脉冲力的作用下沿着横梁滚动,此时梁的两端受力不平衡,梁的一段倾斜,为了使得小球不掉下横梁,在横梁上施加一个绕Z轴的力矩,横梁达到一定的角度之后逆向转动,然后小球就在这个作用力矩的控制下来回滚动而不掉下横梁!其中控制力矩在整个过程中是个动态变化的,力矩Torque_In是通过位移Position 和横梁转角Beam_Angle确定,这个是在simulink中通过框图完成的。
首先我申明一下我用的是adams2003和matlab6.5
以下我说明一下我的操作步骤:
1、把control中的ball_beam文件copy到另外一个文件夹下,同时设置adams和matlab的默认路径即为ball_beam文件夹,这样可以省略很多不必要的麻烦!
2、用aview打开ball_beam.cmd文件,先试试仿真一下,可以看到小球会在脉冲的作用下滚动,仿真时间最好大于8s
3、载入control模块,点击tools|plugin manager在control框选定。
4、点击control|plant export在file prefix下输入你的文件名,这个可以随便的,我输入的是myball,在plant input点击右键点
击guess选定tmp_MDI_PINPUT,在tmp_MDI_PINPUT中就是输入力矩Torque_In,只有一个输入参数;同样在plant output 中点击右键guess选定tmp_MDI_POUTPUT,这是模型的输出变量横梁转角Beam_Angle和小球与横梁中心轴的距离position。control
package选择matlab,type是non_linear,初始化分析选择no,然后按ok!此时m文件已经生成了!
5、打开matalb,设置你的工作路径在ball_beam文件夹上,键入myball,马上有
%%% INFO : ADAMS plant actuators names :
1 Torque_In
%%% INFO : ADAMS plant sensors names :
1 Beam_Angle
2 Position
出现
6、再键入adams_sys,弹出一个控制框图,这时可以新建一个mdl文件,将adams_sub拖入你新建的mdl框图中,其实再这里有一个偷懒的办法,就是在matlab中打开ball_beam.mdl文件,然后把他的那个adams_sub用你的刚产生的这个代替,然后另存为my_ball.mdl!
7、设置仿真参数,在你刚建立的my_ball.mdl框图上的simulation parameter里设置一下stop time为10s,步长为ode15s。然后双击adams_sub打开adams_pant,再双击adams_pant弹出一个设置框图,在animation mode这一栏中选择interactive这是交互的,如果选择batch的话在联合仿真中看不到adams模型的运行情况(个人这样理解的:)!最后保存一下!
8、开始联合仿真start simulation,就会出现asolver,弹出dos 文件,这个不管他,然后adams模型中的小球开始运动,估计会比较慢,最后会出现小球在横梁上运动而不掉下横梁!
这是我在做这个模型的过程中的一些东东,写的比较杂,呵呵!如果大家觉得好的话可以顶一下,希望能给那些在adams和simulink联合仿真而徘徊的xdjm一点启示就行了!
note:这个例子是adams/cotrol自带的,可以在example中找到!
关于下述错误,我找到一个解决方法
Error reported by S-function 'adams_plant' in 'my_ball/adams_sub/ADAMS Plant/S-Function':
error in startup Could not connect to ADAMS server
编辑myball.m文件,将第24行
ADAMS_sysdir = strcat(topdir, '');
替换为第29行
ADAMS_sysdir = '...' ;依各人配置不同,具体路径有所区别改完之后保存即可