ndlx2001 发表于 2006-9-6 21:52:20

Matlab7.1+ADAMS2005仿真步骤与调试经验

本帖最后由 ndlx2001 于 2015-1-21 23:14 编辑

参照SimWe中wxd等大牛关于联合仿真帖子,最近也做了一些联合仿真,遇到了不少困难,最后得到的结果还令人满意,深切体会到联合仿真在机电系统控制分析中的作用,下面将自己的一些笔记整理后与大家共享,作为对SimWe的回报,其中有不少错误和问题应该是新手都比较容易遇到的,希望可以对大家有所帮助。

1.建立Adams仿真模型,设文件名为Adams.bin和Adams.biq并进行初步仿真,验证其合理性。

2.在Matlab中建立控制模型,进行单独仿真,确保控制模型的正确性。

3.新建立一个仿真文件夹,比如Adams_Matlab, 将Adams.bin和Adams.biq文件copy到该文件夹下;将…\MSC.ADAMS\2005\Win32\文件夹中的adams_plant.dll文件和…\MSC.ADAMS\2005\Controls->Win32\下的plant.lib文件也Copy到该文件夹下(仿真中经常因为路径问题出错,有不少关于路径设定的帖子,本帖子中的方法已经过验证,优点是文件集中,便于统一管理)。

4.打开Adams.bin文件,注意,打开文件时,选择“Open an existing database”后,一定要将下边的“Start in”设置到…\Adams_Matlab\文件夹,确保生成的*.m(假设文件名为simwe.m)等4个文件在该文件夹中,避免不必要的麻烦。

5.Adams->Controls->Plant Export,设定输入变量和输出变量以及文件名等。详见郑建荣的“ADAMS—虚拟样机技术入门与提高”等书;也可以查看Adams的Help->Other Product Help->ADAMS/Controls中的Examples等帮助,看帮助文件的好处是消除了版本不同所带来的局限,例如在Adams2003以上的版本中对输入变量和输出变量的设置需要借助PINPUT_1和PINPUT_1等中间变量,与基于ADAMS12及以下版本的书中描述的不同。 完成后可以看到生成相关的文件。

6.在Matlab中,将其工作目录设定到…\Adams_Matlab\文件夹,输入simwe.m文件的文件名simwe(不包括扩展名.m),将相关变量调入当前Workspace,同时可以查看输入输出变量,否则可能出现Parameter 'ADAMS_sysdir' cannot be evaluated.MATLAB error message: Undefined function or variable 'ADAMS_sysdir'等错误。

7.新建Ada_Mat.mdl文件,将原Matlab仿真文件Copy过来并进行相应修改,用Adams模型代替其相关部分。其中的Adams_Sub可以直接从Examples里边的antenna.mdl文件copy后进行修改,主要修改输入输出变量名和变量个数即可,注意同时要将Mux和Demux的Number of Inputs和Number of Inputs进行修改,将数目改为与自己的输入输出变量对应的个数,同时将输入输出变量改为自己命名的变量名。

8.对于仿真时的一些错误,处理方法有:检查是否将simwe.m文件的变量调入工作区;检查Matlab路径设定是否正确;将Matlab关掉重新启动(没太搞明白原因,但是对于一些错误有效,比如有一次 “error in startup Could not connect to ADAMS server”就是用此方法解决的;此错误在之前遇到过一次,是因为我Copy了用03版本做的.mdl文件;另外误用03版本的plant.lib和adams_plant.dll文件,仿真会提示错误,大致意思是:S函数需要0个参数但是有18参数)。

9.有时由于参数不正确等原因,仿真会失败,比如提示如下错误:Error reported by S-function 'adams_plant' in 'GCdd/adams_sub/ADAMS Plant/S-Function': ADAMS output evaluation failure at time 0.695000。此时需要仔细检查,设定合理的参数,这种错误比较难查,需要对模型准确的把握和对提示信息的理解;有时DOS界面一闪就消失了,如果想要查看界面提示信息,只需再进行一次错误的仿真即可调出DOS界面。

10.仿真出错后,即使将参数改正确了发觉仍旧提示以前错误,这时重新启动Matlab,设定路径,调入simwe.m文件,按新参数仿真,便可以成功执行。

11.完毕后可以设定与联合仿真时对应的参数在ADAMS中进行单独仿真,比较反馈结果,还可以将这两组结果在Matlab中同时绘制出来进行比较。

[ 本帖最后由 ndlx2001 于 2006-9-10 19:28 编辑 ]

后记:
感谢大家近10年来对该帖子的支持。
ADAMS+Matlab仿真可以解决很多问题。
这些年将应用仿真软件扩展到了接触力学建模和二次开发仿真软件上,
解决了复杂地形中的移动机器人高保真度仿真问题。
采用Matlab自己编写代码实现仿真可以掌握细节,但速度很慢。
后来采用开放式商业软件实现了高保真度实时仿真,应用于月球车、足式机器人等方面。
目前,致力于基于虚拟现实的遥操作、硬件在环的仿真测试等方面。
可联系ndlx_2001@hotmail.com。
[ 本帖由 ndlx2001 于 2015-1-21 23:13 发表 ]




kindness 发表于 2006-9-8 20:58:27

谢谢了!

wycowboy 发表于 2006-9-15 13:44:23

慢慢研究下,谢拉

li20183333 发表于 2006-9-15 17:51:47

呵呵,顶了!这样好帖子一定要支持。希望大家都能把自己在学习中的所得和体会写出来。。

zerrolee 发表于 2006-9-16 01:12:39

这帖子实惠

findpath 发表于 2006-10-1 19:00:37

很有指导作用,谢谢先

findpath 发表于 2006-10-2 06:45:10

我按你的方法做了还是出现了error in startup Could not connect to ADAMS server,不知为什么

ndlx2001 发表于 2006-10-11 13:15:00

error in startup Could not connect to ADAMS server

楼上的,问题解决了吗?在1楼的帖子中有关于这个错误的介绍,我也不清楚问题具体是处在哪里,只能罗列一些我知道的情况。有一次是Matlab出了问题,一直无法连接上,重装后就好了。还有一种可能,是从网上看到的(我没有遇到过这种问题):
    如果你有上网的客户端认证软件运行的话,我建议你在仿真之前就赶紧把它关掉吧,我仿真是出的问题就有这一点,经常出现ADAMS的server不能开启的情况,关掉认证软件后,就能执行了。一般一些校园网上网时比较容易用这些客户端认证软件,比如华为的。(http://blog.sciei.com/user1/6/archives/2006/200672684618.html)
    如果你解决了,希望能与大家分享解决方案。

yangfanhn 发表于 2006-10-16 12:23:38

但是有时候做第一次会成功,原封不动再运行一遍就会出现Error reported by S-function 'adams_plant' in 'GCdd/adams_sub/ADAMS Plant/S-Function': ADAMS output evaluation failure at time 0.695000,之类的错误

ndlx2001 发表于 2006-10-17 15:56:39

对于楼上的问题,我的感觉是运算过程超出了误差限所致。可是如果是那样的话,为什么第一次运行可以,而第二次运行不可以呢?难道是因为第一次运行时改变了一些中间变量所致?可以尝试用clear all命令将Matlab工作空间中的信息全部清除后再进行仿真(不要忘了将变量重新调入)。
希望高手们可以讨论一下 yangfanhn所提错误的原因以及解决方案。

ndlx2001 发表于 2006-10-17 16:04:47

对于楼上的问题,我的感觉应该是运算过程超出了误差限所致。但是如果是那样的话,为什么第一次仿真可以,而第二次仿真就不行了呢?难道是由于第一次仿真时改变了中间变量所致?可以尝试一下用clear all命令清除Matlab当前Workspace中的内容,然后调入*.m文件进行仿真看看。
希望高手们可以讨论一下 yangfanhn 所提问题的原因和解决方案。

ndlx2001 发表于 2006-10-17 16:27:15

对于楼上的问题,我的感觉应该是运算过程超出了误差限所致。但是如果是那样的话,为什么第一次仿真可以,而第二次仿真就不行了呢?难道是由于第一次仿真时改变了中间变量所致?可以尝试一下用clear all命令清除Matlab当前Workspace中的内容,然后调入*.m文件进行仿真看看。
希望高手们可以讨论一下 yangfanhn 所提问题的原因和解决方案。

canghai409 发表于 2006-12-18 10:42:30

我仿真的时候是出现下面的 提示:
Error in 'my/adams_sub/ADAMS Plant': Parameter 'mytest' cannot be evaluated.MATLAB error message: Undefined function or variable 'mytest'.
my是我新建的控制框图,
mytest是我在adams_sub下的参数设置:
请高手指点!!

yansiping 发表于 2007-3-15 18:14:48

实用,很好的先谢谢了
继续努力 研究

ziyouxing2008 发表于 2007-3-19 10:58:22

高手啊,谢谢了,研究一下

lzf983 发表于 2007-3-23 15:36:30

顶顶,谢谢先!!!!!!!!!!!!

shyseaman 发表于 2007-4-19 16:45:47

我的问题是由于防火墙造成的
关了防火墙就顺利仿真成功了

我的是2005和6。5

zuojixie 发表于 2007-5-11 15:36:10

好的
,顶的顶

bie3left 发表于 2007-6-15 22:07:54

好东西支持啊谢谢哦

dlp_swjtu 发表于 2007-7-13 17:23:15

总结的不错,先收下,等自己遇到这类问题,就可以参考鉴戒下.
页: [1] 2 3
查看完整版本: Matlab7.1+ADAMS2005仿真步骤与调试经验