教程介绍
本教程适用于以simulink为主导,在simulink中搭建仿真流程,并调用AMESim和Adams完成计算的联合仿真项目。 第二节主要介绍AMESIM和matlab的联合仿真
AMESIM联合案例制作
创建工作目录 在工作路径下创建一个专门用来存放联合仿真项目资料的文件夹,本教程最终联合仿真的所有文件都在AMESim项目所属的文件夹下,所以直接确定好工作目录。不建议后期中途修改。 在AMESIM路径中新建一个AMESIM项目文件 interfaces中点击"Create interface block" 输入数量和输出数量改为1; “Type of export interface”修改为“Simulink(model exchange) - AME2SL”; 界面中间区域的输入框第一列为输入参数列、第三列为输出参数列,可以修改参数名称。也可点击右下角“Auto-set names”,用默认名称。
点击"OK",将interface模块放置在工作区。
添加简单的计算模块,让interface的输出加2然后传递给interface的输入;可以根据自己的需要进行修改,如果是第一次做,可以先创建如下图所示的案例,主要对联仿环境做测试。 联合仿真参数概念: interface模块中的“to_ame_1”是AMESim的输入; interface模块中的“from_ame_1”表示AMESim的输出。 在AMESim中,两个参数的关系是to_ame_1经过一系列运算得到一个值,这个值传递给from_ame_1,然后interface模块会将其传递出去。 但是对于Matlab来讲,“to_ame_1”是输出,而 “from_ame_1”是输入。 对于一些复杂系统,要分清每一个领域下的输入和输出参数,同一个参数在不同领域下,输入输出属性是不同的。 同一个参数只能做一次输出参数,能做多次输入参数。这里应该很好理解。在一个系统中,一个参数只能被一个模块赋值,这个值可以被其他多个模块使用。 当然,如果涉及到对参数值的修改,那一个参数可能作为多个模块的输出,但是此时我们常把这一个参数定义为两个参数,即A_befo和A_after。这个做法是为了避免一个参数被多次作为输出,从而导致的信息传递混乱。
保存项目到AMESim的工作路径。 切换到SIMULATION界面,此时会自动编译项目 如果编译失败,点击菜单中的“Tools”-"Perferences"
切换到左侧“Compilation”,将“Active compiler”修改为“Microsoft Visual C++ 2015 and higher (64-bit)”
点击“OK”返回到主界面。 重新切换到SIMULATION界面,此时会自动编译项目。 如果编译失败,检查interface模块的“Type of export interface”是否为“Simulink(model exchange) - AME2SL”
编译成功后,点击“Tools”-"MATLAB®"
AMESim会自动启动matlab,此时Matlab的运行路径为AMESim的工作路径,启动simulink。 创建新的simulink程序,并添加“AME2SL”模块 双击打开,选择AMESim生成的".mexw64"文件 加载好后,“AME2SL”模块出现输入和输出接口。
注意: 此时的AME2SL模块下方的名称变为了AMESimMain,这是AMESim项目文件的名字。 另外,AME2SL的输入与输出接口和AMESim中的输入输出接口已经调换。
经验之谈 为了避免参数混乱,我们在进行联合仿真前,需要针对每个领域定义其输入输出参数。格式类似下表:
该表对应的参数传递关系如图:(以matlab为主导)
在simulink中搭建仿真流程,如下图: Simulink生成一个正弦波,将每个时刻的振幅转递给AMESim,AMESim中给振幅+1,然后输出给Simulink。 运行后,打开示波器。
振幅上升2。 在simulink和AMESim中都可以看到运行结果。
在AMESim中修改K的值,再次运行,修改会立即生效。这种联仿方式,需要保证AMESim处于启动状态,优势在于可以随时对AMESim项目进行修改,而且立即生效,不需要重复生成类似FMU文件或.m文件之类的东西。
至此,simulink和AMESim的联合仿真已经实现。 接下来是Adams+Simulink仿真