AMESim与Motion联合仿真接口设置一、准备工作为了进行联合仿真,先要对AMESim的接口进行破解。有的朋友破解时会遇到“I/O32error”的错误,是因为之前的破解替换了“AMED.exe”等文件所致,这时只要找到AMESim安装镜像中的相应文件复制到AMESim安装目录“licensing”目录下覆盖掉相关文件即可解决。本文档基于AMESimR10和VirtualLabR10SL1的盗版撰写,仅作经验交流之用。二、Co-Sim模式Co-Sim模式就是在AMESim中导入Motion模型进行仿真。(一)Motion建模部分先在Motion中建模,选择“插入--Control—ControlInput”,弹出界面如下图所示。插入外部控件的输入变量(即Motion输出给外部控件的位移,速度等,他们是外部控件的输入,所以是Controlinput),插入时要定义好控件节点(ControlNode),用于标识这个变量,控件节点名注意要用拉丁字母开头,否则AMESim不认;同样的方法插入ControlOutput(即外部控件的输出,比如力,扭矩等,也就是motion模型的输入),注意定义时要将“Plant”一项选为“真”,大概意思是“这个Motion模型是植入到外部控件中进行仿真的”。模型建好后,要在“SolutionSet”定义求解参数。双击“SolutionSet”,切换到Dynamic选项卡,在“MethodIntergration”下拉菜单中选择“AMESIM_COSIM”,完成设置。模型完全建好后,右键点击“SolutionSet”选择“Compute”菜单,Motion就会将建好的模型导出为“.solverinputfile”文件和“.vlcosim”文件,如果只需要导出“.solverinputfile”文件,也可以从“solutionmanager”中导出,或者直接右键点击“SolutionSet”,选择“ExportSolverInputFile”导出。(二)AMESim建模部分接下来从Windows系统程序菜单LMSVirtualLab文件夹中找到MotionAMESim快捷方式并执行(如下图所示),AMESim随即启动。注意不能直接从AMESim程序快捷方式来启动AMESim。这是因为涉及到Motion系统中环境变量“VLMOTIONSLV”的置位问题。如果采用第一种方式启动,“VLMOTIONSLV”变量将置位,才能进行联合仿真,如果采用第二种方式启动,“VLMOTIONSLV”变量不会置位,就无法进行联合仿真。可能是由于盗版license的原因,有时编译只能在第二种方式启动的AMESim下进行,否则会提示“错误”,如下图所示,无法执行编译。点击确定后而仿真时必须切换到第一种方式启动AMESim,否则会提示“VLMOTIONSLVisnotset”,如下图所示,无法执行仿真。如果仿真前又进入草图模式修改了模型,则修改过后还必须切换回第二种方式启动AMESim重新编译,如此反复,很是麻烦。启动AMESim后,就可以导入Motion模型了。导入Motion模型有两种方法。第一种是点击“Modeling--InterfaceBlock--InputMotionModel,会弹出如下界面让你选择Motion输出的“.vlcosim”文件,正确选择后,会弹出如下的“MotionModelImport”界面。该界面是读取“.vlcosim”文件数据后生成的,因此输入输出变量数都无法修改。用记事本打开“.vlcosim”文件就可以很清楚看出其中的对应关系,如下图所示。点击OK后就会生成一个Motion模块,如下图所示,将它连接到模型中。连接时要注意AMESim中的信号引线与模块图标中各个输入输出变量是不是与匹配,不匹配的的话要适当调整引线。为了避免这种可能的不匹配,假设需要的Motion模块图标输入信号自上往下分别为为a、b、c,输出信号自上往下分别为x、y、z。则在Motion建模中,插入ControlInput和ControlOutput时,注意按以下顺序插入:z、y、x;a、b、c,这样的话在导入到AMEsim中,就能获得信号按上述顺序排列的图标。这样做的主要目的是避免修改AMESim信号引线时产生交叉。由于“.vlcosim”文件已经包含了“.solverinputfile”文件路径等信息,在导入界面中切换到V.LMotion选项卡也可以看到,如下图所示。因此这个Motion模块的属性中自动加入了.solverinputfile文件的路径,编译后不用再进行参数设置了。还有一种导入方式是,在AMESim建模时,直接从LibraryTree中拖入一个“VirtualLabMotionInterface”模块,按弹出的对话框定义好输入输出变量(变量名要与motion中的控件节点名的一致,第一种方法导入“.vlcosim”文件自动读取到控件节点名,避免了出现不一致的错误),定义完成后,还需要在编译后设置该模块参数,即手动加入“.solverinputfile”文件的路径。导入完成后,就可以在AMESim中进行与Motion的Co-Sim仿真了。三、Coupled-Sim模式Coupled-Sim模式就在Motion中插入AMESim模型进行仿真。以下主要描述与Co-Sim模式不同的地方。(一)AMESim建模部分AMESim建模时不能用导入模型的方法创建Motion模块,而必须用“Modeling--InsertInterface—CreateInterfaceIcon”,在弹出的对话框中创建一个Motion模块的图标(Icon),如下图所示。在下拉菜单中选择接口类型(Typeofinterface)为VL.Motion(如果联合仿真接口未破解,则下拉菜单中可能只有一项“DiscretePart”),并定义好输入输出变量,当然所有这些变量名也必须与Motion模型中的控件节点名匹配。注意,与Co-Sim模式不同的是,这个Motion模块不会与Motion的任何文件产生任何关联。因此编译后可以看到它的属性是空的,什么都木有,如下图。建好AMESim模型并编译后,切换到仿真模式,再执行“File--Writeauxiliaryfiles”,生成一堆“辅助”文件。(二)Motion建模部分首先,在Motion中定义ControlOutput和ControlInput时,Plant选项置为FALSE。其次,Motion中不用导出“.vlcosim”和“.solverinputfile”两文件,而是点击“插入—Mechatronics—ExternalInterface--AMESIM”,弹出如下对话框。在对话框中载入编译好的AMESim模型。如果正常的话,“InputNodestoAmesim”列表中会列出AMESim模型中Motion模块的输出变量名(即输入到AMEsim的变量),并与Motion模型中定义的ControlInput按控件节点名进行匹配。如果Motion模型中找不到任何控件节点名能某个变量名相同(匹配),则列表中该变量名对应的那一行会显示“INVALID:ControlNode“xxx”doesnotexist”,比如上图中的“x_boom”变量。另外,在OutputNodesfromAmesim列表中则列出了AMEsim模型中Motion模块的输入变量名(即从AMEsim输出到Motion模块的变量),这些变量名也必须与Motion模型中定义的ControlOutput的控件节点名匹配。注意:对话框中PrintInterval参数是从AMESim的仿真设置中导入的,不能也不必在Motion中修改。载入AMESim模型时,实质上是载入模型编译和执行“Writeauxiliaryfiles”后的某些文件,如果AMESim模型建好了但没有编译和执行“Writeauxiliaryfiles”,Motion在载入时可能会提示如下图所示错误。也可能会载入以前生成的旧文件,造成错误。载入了AMESim模型后,再双击“SolutionSet”,将“Dynamic”中“MethodIntergration”选为“AMESIM_COUPLED”,完成求解设置。