Adams和Amesim联合仿真-cosim形式(Adms为主控)

2025-08-20
1.前言
在Adams 2008及之前版本,可通过Adams接口将Adams模型导AmesimAmesim主控)。但Adams 2013版本后取消了该接口,需借用FMU接口才可以,而Amesim没有取消与Adams专业接口。
FMU方式:Adams导入Amesim中(Amesim主控);
专用接口:Amesim导入Adams中(Adams主控)。
图片
Amesim专业接口又分成2种:
co-simulation(联合仿真):同时使用Amesim和Adams的各自求解器。这种"离散耦合"方式使两个仿真器彼此视为离散系统。由于每个模型部分都使用其原生的最优求解器,联合仿真在模型-求解器适配性方面更为鲁棒。需注意选择尽可能大的联合仿真步长(以提高性能),同时保持仿真稳定性。
model exchange(模型交互)Adams求解器将同时求解 Amesim和Adams部分,这通常(但非绝对)有利于提升性能。模型交换仅适用于需要紧密"连续"耦合的场景。当Amesim模型复杂时,adams求解器求解amesim模型就显得不合适了。建议采用第1种。
建议:模型较小时,采用第2种,精度更高;模型较大时,采用第1种,鲁棒性更好。
本案例采用co-simulation接口,Amesim 2310版本+Adams 2020版本,模型文件见文末。且两者文件都保存在同一路径。
图片
2.Amesim接口设置

  • 打开模型,设置co-simulation接口(序号1中图),2个输入:力和扭矩;4个输出:角速度+角度,线速度+位移。
图片
图片

  • 生成接口
Amesim模型切换到仿真模式,软件编译后会生成.dll文件(名字为Amesim模型名字)。
图片

3.Adams接口设置

  • 设置输出接口(状态变量):
    按如下图所示,选定1个物体绕另1个物体Z轴旋转的角速度。同样,设置其他3个输出接口。注:名称要和Amesim接口设置一样。
图片

  • 设置输入接口(状态变量):
    同样,设置2个输入接口,F值先保存默认值0,等下再关联(扭矩需Amesim模型计算,通过接口传递过来),如下图所示。
图片

  • 创建组:

    创建输入组:如下图所示,依次创建即可,变量中,把4个输出量加进来,这里类型选择U输入(输入到Amesim中的量)。(右键-变量类型-浏览,可快速添加)。
图片
图片

再创建X状态组:大小为1,代表离散方式(cosim)。

图片
再创建Y输出组:大小为2表示有2个输出量(输入力和扭矩)。
图片

  • 创建状态方程(关联数组):
按如下方法设置:把U数组(输入)、Y数组(输出)、X数组(离散)关联起来;用户函数参数:分别填写把输入和输出的ID,其余如图所示。
图片
创建力和扭矩的关联接口
如下图:创建驱动位置的扭矩(先创建后修改),并关联F函数,注意函数名,数字2代表接口顺序(而1表示力顺序)。系统单元中也同步修改。
图片
图片

4.Adams脚本运行

  • 在运行脚本之前,我们先把.dll文件加载进来。如下图所示,执行栏,选择外部;求解库栏,加载文件。

图片

  • 创建脚本,仿真时间与Amesim模型一致,且选择动力学仿真;然后运行脚本即可。
图片

5.结果

对比Amesim与Adams值(第1张图为Amesim)。
图片
图片


公众号直接输入"关键词”检索历史精品文章

如需一起讨论,请在公众号后台回复:加群


分享
写评论...