找回密码
 注册
Simdroid-非首页
查看: 3548|回复: 52

[联合仿真] Matlab7.1+ADAMS2005仿真步骤与调试经验

[复制链接]
发表于 2006-9-6 21:52:20 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
本帖最后由 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 发表 ]




评分

1

查看全部评分

发表于 2006-9-8 20:58:27 | 显示全部楼层 来自 辽宁沈阳
Simdroid开发平台
谢谢了!
发表于 2006-9-15 13:44:23 | 显示全部楼层 来自 重庆南岸区
慢慢研究下,谢拉
发表于 2006-9-15 17:51:47 | 显示全部楼层 来自 江苏镇江
呵呵,顶了!这样好帖子一定要支持。希望大家都能把自己在学习中的所得和体会写出来。。
发表于 2006-9-16 01:12:39 | 显示全部楼层 来自 上海黄浦区
这帖子实惠
发表于 2006-10-1 19:00:37 | 显示全部楼层 来自 重庆大学
很有指导作用,谢谢先
发表于 2006-10-2 06:45:10 | 显示全部楼层 来自 重庆大学
我按你的方法做了还是出现了error in startup Could not connect to ADAMS server,不知为什么
 楼主| 发表于 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
    如果你解决了,希望能与大家分享解决方案。
发表于 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,之类的错误
 楼主| 发表于 2006-10-17 15:56:39 | 显示全部楼层 来自 黑龙江哈尔滨
对于楼上的问题,我的感觉是运算过程超出了误差限所致。可是如果是那样的话,为什么第一次运行可以,而第二次运行不可以呢?难道是因为第一次运行时改变了一些中间变量所致?可以尝试用clear all命令将Matlab工作空间中的信息全部清除后再进行仿真(不要忘了将变量重新调入)。
希望高手们可以讨论一下 yangfanhn  所提错误的原因以及解决方案。
 楼主| 发表于 2006-10-17 16:04:47 | 显示全部楼层 来自 黑龙江哈尔滨
对于楼上的问题,我的感觉应该是运算过程超出了误差限所致。但是如果是那样的话,为什么第一次仿真可以,而第二次仿真就不行了呢?难道是由于第一次仿真时改变了中间变量所致?可以尝试一下用clear all命令清除Matlab当前Workspace中的内容,然后调入*.m文件进行仿真看看。
希望高手们可以讨论一下 yangfanhn 所提问题的原因和解决方案。
 楼主| 发表于 2006-10-17 16:27:15 | 显示全部楼层 来自 哈尔滨工业大学
对于楼上的问题,我的感觉应该是运算过程超出了误差限所致。但是如果是那样的话,为什么第一次仿真可以,而第二次仿真就不行了呢?难道是由于第一次仿真时改变了中间变量所致?可以尝试一下用clear all命令清除Matlab当前Workspace中的内容,然后调入*.m文件进行仿真看看。
希望高手们可以讨论一下 yangfanhn 所提问题的原因和解决方案。
发表于 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下的参数设置:
请高手指点!!
发表于 2007-3-15 18:14:48 | 显示全部楼层 来自 辽宁沈阳
实用,很好的  先谢谢了
继续努力 研究
发表于 2007-3-19 10:58:22 | 显示全部楼层 来自 辽宁沈阳
高手啊,谢谢了,研究一下
发表于 2007-3-23 15:36:30 | 显示全部楼层 来自 安徽马鞍山
顶顶,谢谢先!!!!!!!!!!!!
发表于 2007-4-19 16:45:47 | 显示全部楼层 来自 安徽合肥
我的问题是由于防火墙造成的
关了防火墙就顺利仿真成功了

我的是2005和6。5
发表于 2007-5-11 15:36:10 | 显示全部楼层 来自 广西南宁
好的
,顶的顶
回复 不支持

使用道具 举报

发表于 2007-6-15 22:07:54 | 显示全部楼层 来自 陕西西安
好东西支持啊  谢谢哦
回复 不支持

使用道具 举报

发表于 2007-7-13 17:23:15 | 显示全部楼层 来自 江苏南京
总结的不错,先收下,等自己遇到这类问题,就可以参考鉴戒下.
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-3-29 13:11 , Processed in 0.061454 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表