不连续性
什么是不连续性?液压作动器或液压缸的建模就是一个很好的例子。液压缸体的物理尺寸限制了活塞的运动范围。当活塞在缸体内运动到达行程极限时,必须使其停止运动。通常设备会设计"缓冲装置",使活塞在有限距离和时间内停止。若未设置缓冲装置,活塞仍会因碰撞部件的变形而在有限距离和时间内停止。
对此类情况进行建模是可行的,对于液压缸的详细设计极为有用。然而瞬态行为会极其快速且复杂。在通用液压仿真中使用包含这些特性的液压缸子模型并无必要,且可能导致无法接受的运行时间。
在通用液压缸子模型中,通常假设活塞到达行程极限时会瞬时停止。这就是不连续性的典型案例。不连续性的特征是物理量在瞬间从一个值跳变到另一个值。本例中的物理量就是活塞速度。
包含物理量不连续性的子模型较为罕见。但相关现象更为常见,例如控制系统中包含饱和元件的情况:输入x与输出y,当输出限制在xmin ≤y≤xmax范围内时y=x,否则保持极值。下图展示了典型示例。y关于x的曲线是连续的,但y的导数在两处存在不连续性。这类函数具有一阶导数不连续性,还有些函数会在二阶或更高阶导数出现不连续性。这些并非人为构造的案例,而是建模工作中真实存在的现象。

图2-22. 饱和特性
其他不连续性示例包括:
-
任何形式的间隙
-
节流孔中从层流到湍流特性的转变
-
摩擦引起的粘滑现象
-
任何形式的死区
-
如单向阀这类开启与关闭特性完全不同的阀门
-
任何形式的迟滞
-
包含阶跃或斜坡的工况循环
-
对实验数据采用线性插值的子模型
为何需要强调仿真子模型中的不连续性?问题源于求解仿真中常微分方程和微分代数方程时使用的积分算法。这些算法基于对状态变量及其导数连续性的假设。当假设不成立时,必须在不连续点采取特殊处理。如下图所示:

图2-23. 具有不连续导数的函数
变量y具有两条特性迥异的曲线C1和C2。该变量在点P处连续但导数不连续。积分算法沿C1积分时没有问题,但在P点会出现问题。若采用如下伪代码处理:
if(条件)
使用C1公式
else
使用C2公式
endif
积分器会在P点附近急剧减小步长以试图满足精度要求。许多积分器会在步长过小时报错退出,有些则保持最小步长继续计算(尽管精度不达标)。前者导致仿真中断,后者则会产生严重误差。
现代仿真软件普遍采用更精细的不连续性处理方法:当解沿C1越过P点时,不立即切换至C2方程,而是继续使用C1方程得到预测点Q。随后积分器需识别不连续点并进行精确定位(通过步长缩减或插值法)。准确定位P点后,积分器将重新初始化,丢弃P点左侧信息并沿光滑曲线C2继续积分。
该机制的有效实施需要积分算法与子模型间的协同配合:子模型需检测不连续性并通知积分器,积分器则在重启时通知子模型进行初始化。
译文质量与官方无关,仅做辅助学习使用,帮助大家更方便高效的掌握工具.文档网址:www.tech-doc.cn;公众号:Amesim学习与应用、译匠工厂