首页/文章/ 详情

说一说联合仿真的那些事

6月前浏览15900

本文摘要(由AI生成):

本文主要介绍了Amesim-Adams联合仿真的基本概念和问题,包括接口模式和类型、协同仿真和模型交换的区别、通信间隔对仿真结果的影响、专用接口和FMI接口的区别等。此外,文章还讨论了Amesim-Adams联合仿真的注意事项,包括变量的传递方式、模型的编译和求解、避免代数环和数值问题等。最后,文章指出,Amesim-Adams联合仿真 主要用于建模前期和学术研究,一般情况下应尽量避免使用联合仿真。


本文以Amesim-Adams联合仿真为例,分享联合仿真的一些基本概念和问题。这些内容几乎也同样适用于Amesim和其他软件(如Simulink、Simcenter 3D Motion等等)的联合仿真,因此可供所有做联合仿真(不局限于Amesim-Adams)的朋友们阅读和参考。』

1 联合仿真的接口模式和类型


1.1 主(Master)程序 VS 辅(Slave)程序


正所谓,“一山不能容二虎,除非一公和一母”。联合仿真时,参与联合的软件双方的地位也不是对等的,而是有主(Master)程序辅(Slave)程序之分。



通常情况下,主程序一方通过仿真接口文件调用辅程序的模型和求解器(或只调用模型);而辅程序一方则主要用于生成接口文件并提供给主程序,以便被调用。人机交互方面,用户在提交运算时直接与主程序面对面,而辅程序则扮演小弟的角色,躲在后台,随时等待主程序的召唤。



对于主程序和辅程序的选择,并没有严格的规定。一般而言,我们可以选择更熟悉或者模型更复杂的一方为主程序,另一方为辅程序。举个例子,如果我们分析的重点在于使用Amesim进行液压控制系统仿真,而Adams只是过来帮个忙,用于机械运动部分的建模,那么最好选择Amesim为主程序、Adams为辅程序。

1.2 协同仿真(Co-simulation) VS 模型交换(Model Exchange)



根据参与计算的求解器的不同,联合仿真可分为协同仿真(Co-simulation)模型交换(Model Exchange)两种类型。



Co-simulation是指,主程序同时调用辅程序的模型和求解器,即联合的双方用各自的求解器求解各自的模型,一边求解一边相互交换数据;而Model Exchange是指,主程序只调用辅程序的模型而不调用其求解器,即辅程序将模型全部输出(Full Export)���主程序,由主程序求解器运算,辅程序求解器不参与运算。
图1 Co-simulation和Model Exchange仿真模式示意图
如图2所示,在Amesim中创建仿真接口时,针对每种要联合的软件都有两个接口选项。其中,Simulink、Adams等创建的是Model Exchange类型的接口,而SimuCosim、AdamsCosim等创建的是Co-simulation类型的接口。
图2 Amesim创建仿真接口
此外,Co-simulation又称为离散耦合(Discrete Coupling),Model Exchange又称为连续输出(Continuous Export)。在Adams等软件中设置仿真接口时,需要设置仿真类型为Discrete或Continuous,大家要注意和Amesim中对应,不要出错。
Model Exchange和Co-simulation的优缺点对比如下:Model Exchange可以得到更准确的计算结果,但计算难度大、计算缓慢,甚至会卡死报错;而Co-simulation在计算速度和成功率上更胜一筹,尤其适合大型复杂系统的联系仿真。以笔者有限的联合仿真经验来看,多数情况下推荐大家选用Co-simulation
当采用Co-simulation时,需要设置软件之间交换数据的时间间隔,即通信间隔(Communication Interval)。关于通信间隔,这里再啰嗦两点:

第一,前几天有人在群里问,“联合仿真时,Amesim是不是必须采用固定步长的求解器?”可能在有些人看来,联合仿真时Amesim要采用固定步长求解器,以便和另一方软件在固定时长内交换数据,但事实并非如此,因为软件间的通信间隔和求解步长是两个不同的概念。Amesim采用变步长方法进行模型的求解,在一个通信间隔内,尽管数据交换只发生了一次,但Amesim已经经历了很多个计算步。


第二,通信间隔的存在,相当于在模型中加入了离散延时,会在一定程度影响系统的动态响应,这也是导致联合仿真与Amesim单独仿真结果有差异的一个重要原因。一般而言,通信间隔越小,对系统动态特性的影响越小,但太小会拖慢仿真速度。因此,我们在做联合仿真时要结合具体问题多分析多尝试,选择合适的通信间隔

1.3 专用接口(Dedicated Interface) VS FMI(Functional Mock-up Interface)

联合仿真时,常用来实现软件联合的接口途径有两种,即专用接口(Dedicated Interface)和FMI(Functional Mock-up Interface)。

其中,专用接口是指专属于Amesim和其他某个软件之间的联合仿真接口,图2中前8个类型都属于专用接口;而FMI是为了应对工具碎片化、模型重复使用和知识产权保护等问题和需求,由欧洲仿真届提出的一种不依赖于具体工具的通用接口。只要软件双方都支持FMI标准,它们就可以通过FMI实现联合仿真。目前,工业上主流的仿真软件(包括我们常用的如Amesim、Adams、Simulink、Simcenter 3D Motion等等)都已经支持FMI。可以说,如果把专用接口比作软件之间联通的私家车,那么FMI就是软件之间联通的公共交通。

与标准接口相比,FMI的设置和使用更简单便捷,因此推荐大家使用FMI进行联合仿真。另外,目前常用版本的Adams已经不再支持导出Amesim可用的专用接口,如果要采用专用接口进行以Amesim为主的Amesim-Adams联合仿真,则必须使用Adams 2008或者更老的版本,非常不方便。因此,强烈推荐大家采用FMI进行Amesim-Adams联合仿真。FMI所采用的接口模块被称为FMU(Functional Mock-up Union),阿杰博士经常对我们讲,“高版本的Amesim和Adams联合仿真用FMU”,就是这个意思。

1.4 小结

以上内容从三个不同层面介绍了联合仿真接口的不同模式和类型。如果将它们排列组合一下,比如“采用FMI方式、以Amesim为主Adams为辅的Co-simulation”等等,就可以得到8种不同类型的软件联合方式。当然,这8种方式并非都是可行的。具体的方式选择,大家可以参考上文的分析,或者针对具体的软件查看帮助文档中的说明。

Amesim-Adams联合仿真注意事项

2.1 变量的传���方式

Amesim和Adams联合仿真时,多数情况下Amesim负责动力控制系统建模,而Adams用于机械运动系统建模。因此,由Amesim传递到Adams的变量一般是力、力矩等驱动量,而由Adams传递到Amesim的变量通常是(角)位移、(角)速度、(角)加速度等运动量。大家在做联合仿真建模时,如果由Amesim传递给Adams的是运动量,而Adams传递给Amesim的是驱动量,那么极大可能建模的基本思路已经出现了问题,一定要认真思考和检查。
2.2 先单独建模测试,再联合
强烈建议大家不要直接联合仿真,而应该在软件联合之前,先在Amesim和Adams中分别搭建完整的模型进行仿真测试。例如,在Amesim中建立完整的动力控制系统,Adams的部分可以用简单的机械库元件代替;同样,在Adams中建立完整的机械运动系统,Amesim中的部分可以用特定的驱动信号代替。在各自系统中仿真计算没有问题后,再将两个软件进行联合。通过这种方式不仅可以及时排除问题、提高建模效率,而且可以加深我们对系统整体的认知。
2.3 注意单位和矢量符号的问题
首先是单位的一致性,Adams中位移的默认单位是mm,而Amesim中位移的常用单位为m,因此要注意单位的换算;其次是矢量符号的问题,以液压缸元件为例,如图3所示,液压缸运动的正方向和端口输入的运动量的正方向是相反的,因此由Adams中传递过来的正向运动变量必须加负号改变符号输入液压缸才是正确的。
图3 液压缸外部输入运动变量正方向示意图
综合以上两点可以得出,如果采用软件的默认单位,那么Adams传递到Amesim的正向运动变量必须乘以系数-0.001才可以。这一点很重要,一旦疏忽仿真结果会相去甚远,一定要注意!
2.4 不能出现隐性变量和代数环
Amesim的求解器可以求解两种类型的微分方程:常微分方程ODE(Ordinary Differential Equation)和微分代数方程DAE(Differential Algebraic Equation)。其中,DAE中包含隐性变量(Implicit Variables)。而Amesim-Adams联合仿真只支持求解ODE,不能求解DAE。因此,联合仿真时,Amesim编译完之后的窗口中,隐性变量数目必须为0才可以



图4 编译成功后的状态变量数目显示
此外,联合仿真时模型中也不可以出现代数环(注:代数环问题,通俗讲就是鸡生蛋和蛋生鸡之间的矛盾,这里不再展开讲解,大家可以自行百度)。代数环的出现也伴随着隐性变量。解决代数环的方法为,在代数环中加入延时模块,打破它。但要注意的是,延时模块会影响系统的动态响应,延时常数越小对系统影响越
2.5 选用元件要避免数值问题
这里有必要先说一下带限位的质量块的限位类型。如图5所示,质量块子模型MECMAS21提供了三种不同的限位方式,其中常用的是ideal和elastic。如果选用elastic,当质量块运动到两侧端点时会和限位发生弹性碰撞,速度不会立刻减小到0;如果选用ideal,当质量块运动到两侧端点时速度会发生突变减小到0。像速度突变这种跳越式的不连续,Amesim称之为硬不连续(Hard Discontinuity),而Adams的求解器在求解硬不连续问题上显得力不从心

图5 质量块MECMAS21子模型限位类型
讲到这里,相信大家已经明白了:联合仿真时,当使用带限位的质量块时,endstop type一定不要使用ideal,以避免仿真求解时产生数值问题。同理,图6中第二行元件在使用过程中均包含硬不连续,因此不推荐使用;推荐使用第一行元件。
图6 联合仿真元件的选用

3 其他方面

笔者认为,Amesim-Adams联合仿真 主要用于以下两种情形:


第一,建模前期,系统的不同部分由不同工程师在Amesim和Adams中分别搭建完成;

第二,在校学生为了实现更多建模可能性,以便使论文结构和内容更加丰富饱满。

除这两种情形外,笔者的观点是,能在一个软件中完成就尽量避免使用Amesim-Adams联合仿真,毕竟Amesim的机械库元件也非常丰富,可以实现多数机械运动问题的建模,而且联合仿真接口设置麻烦、仿真难度大。

首发公 众号Amesim学习与应用,作者新浩。



Adams系统仿真通用AMESim科普
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2020-07-15
最近编辑:6月前
batt
本科 微信公众号:Amesim学习与应用
获赞 72粉丝 373文章 197课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈