2024年1月1日发(作者:)

如何顺利实现adams和simulink的联合仿真?

经验之谈:如何顺利实现adams和simulink的联合仿真?

论坛中有关adams和simulink联合仿真的帖子不少,部分是成功者的经验,多数是初学者的疑惑。怎么安装和找到control模块,怎么在control中生成必需的中间文件,为什么仿真会失败?本人也曾对这些问题困惑过,经过一番摸索,积累了一点经验,愿与大家商讨。

对于第一个问题,我想就不必多说了.对于第二个问题可以参考郑建荣的ADAMS虚拟样机技术入门与提高第十三章机电一体化系统仿真部分,书中有两个问题需要注意:(1)书中介绍的ADAMS版本好像是10.0的,对于使用12.0的有一些差异:在Plant Export设置中无法直接选择输入输出变量control_torque、azimuth_position、rotor_velocity,它们分别由专门的宏tmp_MDI_PINPUT和tmp_MDI_POUTPUT表示.(2)天线仰角的方位角似乎应该是elevation_position,而不是azimuth_position,后者是天线支撑的转角。其它按文中所述步骤进行,File Prefix栏可随便写,不必一定用ant_test,最后在ADAMS的当前目录下生成四个文件:

ant_

ant_test。adm

ant_

ant_test.m

第三个问题基本上是由于没有正确设置路径,找不到所需的文件造成的:~),这也说明了control模块在设计时没有很好地考虑健壮性问题。具体来说simulink在开始仿真时要找到以下这些文件:

1。上述生成的文件,主要是ant_test.m和ant_,ant_test。m用于在simulink中对control模块环境和一些参数进行初始化,它必须在仿真前执行;ant_是天线模型定义文件,由于这里ADAMS是作为simulink创建的一个子进程而被启动的,它所需的模型文件名由simulink的调用参数传过来的,所以simulink要能够定位ant_(我一开始把它放到adams当前目录下,频频失败)。

2。adams_,它其实就是adams_sub的核心,ADAMS提供一个S函数,用于adams和simulink联合仿真的调度和通讯,如果simulink找不到它,则仿真就不能进行。adams_plant。dll位于ADAMS12controls下。

解决方法是在simulink中设置好上述文件所在的路径,但一个更方便的方法是把它们都拷到matlab的当前工作目录下,一般是MATLAB6p1work.经过以上设置,应该不会再出现仿真失败的对话框了吧。另外,如果因为一些原因仿真失败,需重启matlab,否则的话因为一些运行库的错误信息还保留在系统中,即便改正了错误仿真也会失败,只有重新启动初始化这些库.

我用的是adams12和matlab6。1,以前流传它们之间存在不兼容的问题,其实都是上述原因造成的,不存在版本兼容的问题,adams和matlab都是成功的商业软件,在发布前经过了大量的测试,如果不兼容他们不会置若罔闻,现在好像还没有他们的官方声明吧.

有个小小请求,在做RTW的时候需要用到adams_,谁能找到提供给俺,则感激不尽,如果有其源代码则更好了,这可是真正开启adams和simulink联合仿真的金钥匙啊!

非常感谢"wxd”的总结,但愿这也是以后更进一步讨论ADAMS 和MATLAB 联合仿真的开始,本人对ADAMS 和MATLAB 都只是刚入门,特别是在两者联合仿真过程中困惑许久,慢慢摸索,曾经也得到过各位的指点,今日见'wxd’大师的激情和热心,小弟来结合自己和wxd大师的小结,说说自己的一点点体会,期待更多的高手来指点迷津 。

确实,大部分的失败是由于没有正确设置工作路径而造成的,我想既然是针对一个项目进行仿真,那干脆为自己的项目建立一个文件夹,使ADAMS和MATLAB的工作区都相

同,如发现有时仿真不成,可把adams_plant。dll也事先拷贝到同一文件夹里,这样方便又不会出大错.

另外,对于还不大熟悉MATLAB的来说,在重仿时最好重ADAMS里重新导入MATLAB,并且必须在MATLAB里重新运行(很多时候MATLAB原来产生的变量被替换了),而不能只是简单的重新运行MATLAAB里建立 的SIMULINK模型。

总的来说,我感觉两者的联合仿真,困难之处不在于两者的接口问题,更关键的是我们所建立的机械系统的数学模型能否正确的建立,这将直接影响我们能否实现预想的控制目的,因为之所以要联合MATLAB,就是因为系统里各个量关系不好确定,要是容易确定的直接用ADAMS 里的函数等也可以控制了,对吧?所以要想更顺利的实现两者联合仿真的成功率,也需要对模型有准确的把握,不知道各位能否就机械方面较常见的系统归纳一下它们的数学模型,结合ADAMS实现更好的控制。

最后期待各位的参与,共同进步!

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_文件,先试试仿真一下,可以看到小球会在脉冲的作用下滚动,仿真时间最好大于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_文件,然后把他的那个adams_sub用你的刚产生的这个代替,然后另存为my_ball。mdl!

7、设置仿真参数,在你刚建立的my_框图上的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 = '。。。' ;依各人配置不同,具体路径有所区别

改完之后保存即可

adams与simulink联合仿真错误归纳

在建立adams与matlab的连接时,要导出adams模型,点击controls/plant export命令,创建输入输出变量,并生成三个文件,为aa。m aa。cmd和aa。adm文件。(。m文件保存输入输出信息,.cmd文件为命令文件,.adm为数据文件)其中aa为file prefix框中的内容,即导出模型的文件名.在matlab下输入adams_sys,创建系统控制模型。

联合仿真常见错误归纳

1、将…2005Win32文件夹中的adams_plant。dll文件和…MSC。ADAMS2005Controls—〉Win32下的plant。lib文件也Copy到 matlab的工作目录下.

2、前一次的仿真出错,虽然修改了matlab模块,但matlab工作空间内的信息没有修改.解决办法是在matlab命令行中键入:clear all回车XXX.m回车adams_sys回车从而,重新打开模块。

3、还有检查一下adams界面中,建立控制模块的 control plant的adams host 是否为本机名.

4、检查m文件中路径“”与“/”的错误,这是系统自动生成文件时的bug,只有手动修改.

5、如果有上网的客户端认证软件建议在仿真之前把它关掉,因为经常出现ADAMS的server不能开启的情况,关掉认证软件后,就能执行了。一般一些校园网上网时比较容易用这些客户端认证软件,比如华为的。

6、把ADAMS的工作路径直接设置到MATLAB的work文件夹中,避免路径出错

7、修改。m文件中的flag==0

8、有时由于参数不正确等原因,仿真会失败,比如提示如下错误:Error reported by S-function

'adams_plant' in 'GCdd/adams_sub/ADAMS Plant/S-Function’: ADAMS output uation failure at

time 0.695000。此时需要仔细检查,设定合理的参数,这种错误比较难查,需要对模型准确的把握和对提示信息的理解;有时DOS界面一闪就消失了,如果想要查看界面提示信息,只需再进行一次错误的仿真即可调出DOS界面.

9、将Matlab关掉重新启动(对于一些错误有效,比如 “error in startup Could not connect

to ADAMS server”就是用此方法解决的.

10、将。m文件中的第24行用29行代替。29行为adams安装路径.

11、如果在重复进行联合仿真时,已经退出了环境,则重新打开程序并指定好工作路径后,应在命令栏中输入ds,回车,从而保证联合仿真顺利的进行。

常用方法

1、在postprocessor窗口的右下侧选中surf,以后添加曲线就无需再单击add curves按钮了。

2、mechanism|pro是pro|e与adams的接口模块,可以传到adams中,也可以直接在pro|e中分析。