Adams和AMESim联合仿真的设置和简单例子(都是13版本)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Adams和AMESim的联合仿真
前言:本人并不是Adams和AMESim的高手,接触AMESim的时间很短,但是需要做Adams和AMEsim的联合仿真,这里分享一下我探索联合仿真的经验。
目录如下:
一、仿真前需要做的准备。
1、软件的安装
2、环境变量的设置
二、一个具体的联合仿真例子。
(这里只介绍Adams主控的仿真)***********************************************************
一、仿真前的准备
1、软件的安装
软件的版本对联合仿真有重要影响,这里只介绍我自己安装软件的情况。
我的系统是win7 32位,安装的软件是Adams2013、LMS b AMESim Rev 13、Visual Studio 2010。
Adams2013和AMESim Rev 13网上有很多下载资源和安装教程。
这里我只强调一下Visual Studio 2010。
也就是可以建立两个仿真软件联系的Visual C++程序。
Visual C++和Visual
Studio等之间的关系大家可以自己在网上查,其实都包含有
C++语言。
网上有些教程是用VC++6.0来建立两者之间的关系,但是我安装了VC++6.0的各种版本(企业版,中文版,英文版)都没有成功建立仿真,后来安装了完整的Visual Studio 2010就可以了,但是Visual Studio 2010有些大,我下载的是1.75G。
另外就是安装顺序,最好先安装VC++或者VS(我是最后安装的Visual Studio 2010,先安装的说法我这里并没有证实)。
下面是我的软件的安装位置,安装目录没有中文
D:\zy\ADAMS
D:\AMESim
D:\Program Files\Microsoft Visual Studio 10.0
在最后安装好Visual Studio 10后把D:\ProgramFiles\Microsoft Visual Studio 10.0\VC\bin下的nmake和vcvars32文件拷贝到AMESim的安装目录下D:\AMESim\v1300。
2、环境变量的设置
环境变量的设置至今我也没弄明白到底是什么道理,网上有很多教程也都不太一样,我的经验就是宁可多,不能少,把感觉靠谱的环境变量都加上去/(ㄒoㄒ)/~~。
下面我设置的环境变量。
环境变量有用户变量和系统变量之分。
用户变量:
Adams_CONTROLS_WTIME:20
AME_ADAMS_HOME:D:\zy\ADAMS
系统变量:
Adams_CONTROLS_WTIME:20(这个是我自己随便从上面拷过来的,有没有用并不知道,仿真成功后也懒得删了去检验O(∩_∩)O~)
AME: D:\AMESim\v1300
AME_ADAMS_HOME: D:\zy\ADAMS
MSSD: D:\Program Files\Microsoft Visual Studio; D:\Program Files\Microsoft Visual Studio10.0(这个好像是填VC++程序的位置)
Path:%AME%;%AME%\win32;%AME% \sys\mingw32\bin;%AME%\sys\mpich\mpd\bin;%AME%\sys\cgns;%A ME%\sys\python\win32;C:\Python34\Scripts;C:\Python34\Lib\site-packages\Django-1.8.3-py3.4.egg\EGG-
INFO\scripts;C:\Python34\Lib\site-packages\Django-1.8.3-
py3.4.egg\django;C:\Python34;C:\Program Files\AMD
APP\bin\x86;C:\Program Files\Intel\iCLS
Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Syst em32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\; C:\Program Files\Intel\Intel(R) Management Engine
Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine
Components\IPT;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;%AME%\libadams;D:\Program Files\Microsoft Visual
Studio10.0;D:\zy\ADAMS;D:\zy\ADAMS\win32;D:\zy\ADAMS\aview;D :\zy\ADAMS\aview\win32; $AME/$MACHDIR(path变量应该一开始就有,这也是最长最让人头疼的,我解释不清楚,但大致是AME 的路径,Adams的路径,VS的路径。
用红色字体标出的是有可能的关键路径。
)
注:这些变量是添加的变量,并不是所有的变量,系统也会自己设置一些变量。
二、联合仿真的例子
仿真可以分为Adams主控和AMSim主控,就是在那个软件里点击最后的“运行”,这里我只介绍Adams主控的,就是Adams引进AMESim的运算结果,在Adams里进行仿真。
在AMESim的help里面有一个联合仿真的例子用的是“天线”如下图所示。
“天线”模型是Adams程序里面自带的,但“天线”模型看着复杂一点,这里我的例子是用的自己的测试模型,如下图所示。
首先简单介绍一下这个模型的组成和工作,然后再说一下设置的步骤。
模型只有两个部分组成:外缸和内杆。
外缸
内杆
外缸是中空的,内杆在外缸中平移,是一个非常简单的平移运动。
所有的动作过程就是:内杆相对于外缸发生了一个平移——>测量平移的位移和速度——>将速度和位移传递到AMESim里面——>AMEsim反馈一个力作用在内杆上。
这只是一个用来测试的例子并没有任何实际的意义。
下面说一下设置的步骤。
1、在AMEsim的设置。
1)首先在AMESim里添加adams的库。
Modeling——>category path list —> user/corporate
libraries
选择下方的browse,选择AMESim安装目录下的
Adams文件夹。
我选择的文件夹如图所示
将文件夹通过add添加到右边的目录中去,点击
ok。
设置完成后,AMESim的元件界面会出现Adams的图
标。
2) 建立仿真系统
Modeling——>Interface block——>Creat interface icon弹出
如下对话框。
设置如下
点击ok后,在屏幕上点下我们的联合接口
摆放好所需要的元件,如图所示
五个元件分别是:速度和位移输入、弹簧、质量块、力的传感器、零力源。
这些都可以在mechanical里面找到,其中速度和位移的输入是从adams里传递过来的,而测得的力则要传递回adams。
最后通过连线把它们连接起来。
最终效果如图。
输入输出和相应的Adams模型其实没有太大的实际关系,只是强行把它们连在一起。
3)下面设置子模型,直接用Premier submodel就好了。
在设置参数之前,选择VC++编译器。
Tool——>options——>AMESim preferences——>compilation,选择C++。
设置参数,点击parameter mode
在这里强调一下,如果点击了这个按钮也没有报错的话,就离成功非常近了(O(∩_∩)O)
实际上,我个人感觉这个步骤的报错率还是挺高的,而且不知道问题出在什么地方。
我是不停地添加,修改环境变量、安装新的2010VS (VC++程序)我感觉这两个地方应该是关键。
还有一点,需要提醒一下的是,如果说用C++编译失败了,想再换回GNU GCC,然后再做一下其他的非联合仿真的问题,但还是会出现失败的提示(原来曾经成功过,
但现在却失败),这可能是因为之前在category path list添
加了adams模型的原因,把添加的模型删掉,应该就可
以成功的使用AMESim的非联合仿真的其他功能了。
点击parameter mode按钮成功通过后,就可以设置参数了,这里我是让他们保持初始参数不变的。
4)点击simulation mode,这时已经在你的AMESim文件
所在的位置生成了联合仿真所需要的文件,我的文件命名
是“guan”。
.dll文件是关键文件,需要在adams里面调用的。
也可以用File——>write auxiliary files来生成这些文件。
好了,到这里AMESim的设置就结束了。
2、在Adams里面的设置。
这是我在Adams里面的模型,前面已经提到了。
Adams的工作空间(directory)和文件要和AMESim的文件在同一个文件夹
1)有关模型的建立和导入,以及约束的设置,这里就不一一赘述了,因为这个模型非常简单,大家想要试试的话只需要做一个管,再做一个杆就好了。
现在把前期的准备叙述如下:
模型的材料都设置为钢,没有重力,外缸与地面添加固定约束,外缸和内杆添加移动副,在移动副上添加motion:motion为默认值10*time;在外缸的中心处施加一个力force,力的方向沿着杆的方向,大小为0。
2)利用measure测量内杆的速度和位移
速度和位移的图像如图,就是匀速直线运动。
3)建立两个变量:速度和位移
通过element——>system elements——>creat a state variable defined……弹出下面的对话框,设置如下,将表达式指向刚刚测量出的位移
通过同样的步骤建立第二个变量,速度。
建立完成后的目录栏
4)建立联合仿真所需要的数组
点击elements——>data element——>Create an ADAMS Array,弹出下面的对话框,并设置如下
数组设置。
Type选择u(inputs),variables选择刚才生成的两个变量,位移和速度,他们会作为Adams的输出,AMESim的输入。
再次点击elements——>data element——>Create an ADAMS Array,建立第二个数组,设置如下
(设置主要是:name,type,size。
Id用系统默认就好)下面设置第三个数组
Y数组里面就是由AMESim传递到Adams的力,他作为AMESim 的输出传递到Adams里面。
5)将数组Y的值(也就是力)赋给我们添加在外缸上的力。
之前我们设置的力为零,现做如下改变。
Function改为ARYVAL(ARRAY_Y,1)
6)创建一个GSE
GSE是用来建立Adams和AMESim的联系
点击elements——>system elements——>Create a general state equation(GSE)
设置如下:
注意这里我们选择的是discrete的仿真方式,如果选择continuous
的话,设置会不同。
(两种仿真的区别大家可以在网上查到。
)7)设置Adams的求解器。
点击setting——>solver——>Executable…
设置如下
这里的solver library选择的是前面设置AMESim时生成的
guan_.dll文件
8)进行仿真。
首先在adams里面建立一个仿真的脚本
点击simulation——>setup——create a new simulation script
打开对话框进行如下设置
Script type选择:Adams/Solver Commands
在文本框中输入:SIMULATE/DYNAMIC,END=5.0, DTOUT=1.0E-003,点击ok。
回到AMESim中的simulation模块,选择“set the run parameters”
将仿真的时间改为下图所示
最后在Adams中选择simulation——>simulate——>run a scripted simulation,选择刚才的脚本,点击运行。
Adams会弹出information对话框。
分析结束后,可以分别在Adams和AMESIM中查看力和速度的变化。
AMESim中速度的变化
就是这样一个大概的过程,因为是第一次做这种东西,所以可能有很多地方说的不清楚,如果大家有什么意见和建议可以发我的邮箱yifanchendaohang@,我会尽量改正和补充。