首页/文章/ 详情

Amesim建模小技巧 — 比较功能元件仿真失败的解决方法

1月前浏览6564

文章来源Amesim学习与应用,作者新浩

本文摘要(由AI生成):

本文介绍了在Amesim仿真中因不连续问题导致的计算失败问题,特别是使用具有比较功能的元件时。当滑块速度在0附近剧烈振荡时,comparison元件无法准确判断运动方向,导致求解器无法收敛。为解决此问题,提出了使用trigger元件代替comparison元件的方法,通过设置速度信号的“临界区域”来避免不连续性。改进后的模型成功运行,仿真结果符合预期。此外,该方法也可推广至其他具有比较功能的元件。最后,鼓励用户在使用Amesim时灵活思考,总结经验,以简单方法解决复杂问题。


一、问题描述

当我们在Amesim中使用具有比较功能的元件(比如信号库中的comparison元件、液压库中的shuttle_control元件等)进行仿真计算时,经常会遇到因不连续问题而导致的计算失败(错误信息:There have been 20 consecutive restarts. Thelast 20 discontinuity messages were: ……),这主要是由参数设置不合理造成的。此时,可以通过调整仿真参数来解决,但需要反复尝试,效率低下且成功率不高。笔者通过多次仿真实践,发现使用信号库中的trigger元件替代,可以有效解决此类问题。下面结合一个具体案例来详细说明问题出现的原因及解决方法。

二、案例模型及问题说明

案例模型和元件的参数设置分别如图1和表1所示(注:未列出的元件参数保持默认值;本案例采用Amesim 17版本进行建模仿真,若采用其他软件版本建模,参数设置可能会略有不同,请读者自行调整;此处的参数设置仅在本案例中用于说明问题,对于同类模型的参数设置并不具有参考价值)。

1案例模型图

1案例模型参数设置

元件编号及子模型

参数

值及单位

1.QS00

number of stage

1

flow rate at start of stage 1

301.593 [L/min]

flow rate at start of stage 2

301.593 [L/min]

duration of stage 1

2 [s]

2.HJ0023

use initial displacement

no

piston diameter

800 [mm]

rod diameter

400 [mm]

length of stroke

0.025 [m]

spring rate

0 [N/m]

3.MECMAS21

# velocity at port 1

0.01 [m/s]

use friction

yes

coefficient of viscous friction

10000 [N/(m/s)]

4.MECDS2A

gain for signal output

1000 [1/m]

5.FX00

expression in terms of the input x

1000000*(0*((x<=5)||(x>15))+(50*x-250)*((x>5)&&(x<=7))+(10*x+30)*((x>7)&&(x<=10))+(-26*x+390)*((x>10)&&(x<=15)))

6.CONS00

constant value

0 [null]

        该模型仿真的过程为,液压缸活塞在恒定流量作用下,推动滑块以大约10 mm/s的速度运动,时间为2 s。滑块所受的外负载为滑块位移的函数,二者关系如图2所示。此外,外负载还受到滑块运动方向的影响,当滑块向正方向运动时,外负载会作用在滑块上,反之则外负载为0,因此建模时采用速度传感器引出滑块运动的速度信号,并将此信号通过comparison元件(子模型为GT00)与常数0作比较,比较的逻辑结果与力函数相乘,计算结果作为滑块的外负载输入。(注:这是一种典型的外负载施加方式,比如液压机在进行成形加工时需要克服工件的变形抗力,就具有“是滑块位移的函数且与滑块运动方向相关”的特点,此时需要采用本模型中的外负载建模方式进行加载,读者可自行思考其中的原因。)

图2 外负载和滑块位移函数关系曲线

进入仿真模式,设置仿真时间为2 s,运行仿真。计算到0.500074 s时,出现连续性问题导致仿真失败,报错信息如图3所示。

图3 仿真失败报错信息

      仿真出错的原因如下:在t=0.500074 s时刻,外负载急剧增大,使油缸中的油液压缩、滑块速度减小,同时恒流量源持续向油缸注入油液,使活塞推动滑块向前运动,二者的共同作用导致Amesim的一个计算时间步长内,滑块速度在0左右剧烈振荡,comparison元件的输出时而为0时而为1,求解器被搞“懵”了,有点“不知所措”,无法收敛,因此计算中止

三、解决办法

由上述分析可以看出,出现不连续性问题的关键原因在于判断滑块运动方向的方式:当速度信号从小于0变化到大于0时,认为滑块的运动方向由负变为正;当速度信号从大于0变化到小于0时,认为滑块的运动方向由正变为负。于是我们就想,如果把判断滑块运动方向的速度信号“临界值”变为一个速度信号“临界区域”,换言之,判��滑块运动方向变化的规则由原来的速度信号跨越一个临界值0变为跨越一个临界区域±δ,是否可以解决仿真失败的问题?为此,可采用信号库中的trigger元件(关于此元件的用法读者可查阅帮助文档,此处不再赘述)代替comparison元件进行建模尝试。

       改进后的模型及trigger元件的参数设置如图4所示。在此模型中,当速度信号从较小值变化到大于0.001时,认为滑块的运动方向由负变为正;当速度信号从较大值变化到小于-0.001时,认为滑块的运动方向由正变为负。

图4 改进后的模型及trigger元件参数设置

     进入仿真模式,设置仿真时间为2 s,运行仿真。此时,仿真计算可以顺利进行!提取仿真结果,如图5所示。可以看出,滑块的速度、位移曲线以及外负载曲线均符合最初的设计想法。因此,采用trigger元件代替comparison元件可以有效解决因不连续问题而导致计算失败问题

图5 改进后模型的仿真结果

需要指出的是,本实例中所采用的速度信号“临界区域”为±0.001之间(见trigger元件的参数设置),这并非固定的。一般而言,这一“临界区域”范围越小,越接近真实情况、计算越精确,但仿真难度会加大,有时甚至会报错;范围越大,仿真成功率越高、计算速度越快,但精度会降低。大家在建模过程中,可根据具体模型的需要进行参数调整。

四、解决方法的推广

不仅是comparison元件,在Amesim的元件库中还存在其他一些具有比较功能的元件(例如液压库中用于模拟梭阀的shuttle_control元件),它们在使用过程中同样很容易出现因不连续问题而导致的计算失败问题,上述解决方法也可以用于解决这些元件的问题。例如,采用trigger元件配合部分其他元件,经过简单组合(图6中红色虚线框所示)就可以实现与液压库中shuttle_control元件一致的功能。此处不再对建模思路做具体说明,读者可以根据表2中所示的元件参数设置自行理解。我们还可以把图6中红色虚线框中的部分用supercomponent功能进行封装,创建超元件并保存为shuttle_control元件的子模���,方便后续使用。关于超元件的相关操作,读者可以查看软件帮助文档的说明或者学习淘 宝店铺中的相关课程。

图6 shuttle_control元件等效建模方法

表2 shuttle_control元件等效模型参数设置

元件编号及子模型

参数

值及单位

8 FXY0

expression for output in terms of x and y

x-y

9 TRIG0

(此元件参数根据情况设定,请读者思考)

initial output value

high

low input threshold value

-0.001 [null]

high input threshold value

0.001 [null]

10 FXYZ

expression for output as a function of x, y and z

x*(z==1)+y*(z==0)

五、总结

    针对使用具有比较功能的元件进行仿真计算时,经常会遇到因不连续问题而导致的计算失败问题,本文提供了一种行之有效的解决方法,即采用信号库中的trigger元件代替相应的比较元件进行仿真计算。当然,本文案例中所涉及到的解决方法并非唯一的解决方法。希望大家在使用Amesim进行建模和仿真计算过程中勤思考、多总结、灵活运用,充分挖掘软件的建模潜能,用尽量简单的方法解决复杂问题。

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