机械系统动力学自动分析联合仿真高效通用方法_第1页
机械系统动力学自动分析联合仿真高效通用方法_第2页
机械系统动力学自动分析联合仿真高效通用方法_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、机械系统动力学自动分析联合仿真的高效通用方法安德鲁S艾略特博士机械动力学有限股份有限公司6530东弗吉尼亚街梅萨,亚利桑那州,美国,85215-0736480.985.1557 摘要:本文介绍了一种将任何外在的计算机编码和机械系统动力学自动分析连接 起来的高效通用的方法,这样两个程序可以在系统模拟中连接起来, 从而两个程 序都能以接近最佳单机速度的速度运行。该方法允许外部编码按照设计在离散时 间中运行,并且可能有多重和(或者)可变的采样率。有两个问题可能利用了这 一方法,其分别为气动伺服弹性响应和半实物之类的交互仿真更改。在前者中, 通过有限差分计算流体动力学软件计算空气动力载荷;而在后者中,

2、用户需要在问题产生时改变模拟输入。该方法运用了二次内插、外插程序,这体现在公式翻 译程式语言中,不过在任何程序语言中都能轻松实现。序言:在ADAM机械系统仿真技术的高级应用中,用户经常在只能解决部分问题的 其他计算机编码中投入很多,比如说计算水力,电磁负荷或是气动载荷。这可能 是个商业上可行的程序,或者特别开发的高度专有的内部产品。 另外一个编码通 常的解法和ADAM大相径庭,它可能在不同的计算机硬件或是不同的站点上运行。 因此,要把另外一个编码转化成求解器模块的子程序,使其运行,这通常是不大可能的。反之亦然。在这些研究中,我们需要把另外一个编码和求解器模块连接起来,使得两个程序能够在系统模拟

3、中互相通信,从而获得完整的耦合响应。另外,由于这类问 题一般比较大而且复杂,连接必须有效,如此两个程序能以最佳可能速度运行, 除非在时间和硬件可用性上没有限制。联合仿真注意事项:提出联合仿真解法时,应该考虑以下几点:1.求解器模块在连续时间内解决系统方程式,并且得出连续结果,即使我 们只在固定时间增量内要求求解程序给出输出信息的情况下,亦是如此。除此之外,求解器模块的解法的安排方式是,如果校正器出现问题,难以聚合,内部模 拟时间事实上有可能倒退。2你想连接到求解程序上的另外一个编码经常只能在离散时间内解决其自 身问题,而且无法得到时间步长之间的结果。 如果另外一个编码使用离散逼近连 续时间法,

4、譬如说有限差分方法,或者另外一个编码事实上是模仿数控执行机构 之类的离散过程,那么这有可能成真。3.另外一个编码有可能比求解器模块慢得多或者快得多,这取决于每个编 码解决的问题的相对复杂程度,以及它们使用的计算机硬件。如果可能的话,我 们希望确保在联合仿真过程中,每个编码以其最佳可能速度运行,而且编码之间 的通讯不会限制速度。范例问题一一可能出错之处通过一个非常简单的证明题,我们可以说明准备不充分的联合仿真可能出错 的很多地方。然后,我们将通过同一问题说明如何有效改善结果。模型包括一对完全相同的弹簧-质量-阻尼器,其特征为:K = 314.16 lbf/in (= 121391 Ibm-in/

5、sec2/in)C = 0.0005 Ibf-sec/i nM = 0.3183 Ibm我们特意设计了这个模型,来创建一个非常僵硬、几乎没有阻尼的系统,其 自然频率接近100赫兹(实际上大约为98.3赫兹)。一个弹簧-质量-阻尼器受到一个常规ADAMSFORCH素的推动,其使用了低 频率,全部是正弦曲线的力量,量值为 50 Ibf,周期为1秒。另外一个弹簧-质量-阻尼器受到外部离散时间编码的推动,这一编码的力量 接近第一个。我们可以轻易控制另外一个编码的时间步长。所有仿真会持续4秒钟。联合仿真会出错的地方很多。最常见的问题是编码之间存在通讯瓶颈, 联合 解决方案运行速度非常慢。一个编码如果难以

6、“消化”另外一个编码提供的数据, 也会引起减速。然而,某些问题可能导致联合仿真得出错误答案。这些问题包括:两个编码之间的同步化故障采样区间不当引起的混淆现象离散输入导致的ADAM系统中的数值脉冲不兼容的误差控制引起的人为不稳定现在,让我们一起看看在求解器模块和另外一个编码中使用不同步长联合仿 真时,这个简单的系统会出现什么情况。求解器模块 -25 output steps/sec (step size = .040)夕卜部力量-50 compute steps/sec (step size = .020)由于受迫振动频率只有1赫兹,我们会期待这些数值会得出非常不错的结果 下面的图表将受到真正连

7、续外力作用的质量的位移和受到联合仿真离散外力作 用的质量的位移做了对比。SOLVER OUTPUT AT 04F0RCIN4 COMPUTE AT .020 Q 0 hrQa.Q.9.b UH f一 -DISCRETE1.1JJ'MI JO2DTIME (nc)将求解器的步长减小到.02或者甚至是.01秒,对联合仿真响应几乎没有影 响,除了提高运行时间10%或20%之外。不过,求解器达到0.005秒或者更小的步 长,会允许离散外部力量在数值上激起100盒子的机械系统,如下图所示。求解器模块 -200 output steps/sec (step size = .005)夕卜部力量 -5

8、0 compute steps/sec (step size = .020)SOLVER OUIPUT Q .005 FORCIN& COMiPUTE ® .02 10310.2 '10.1 -10.0 -9.Q “g.8a.a 3JD3.754QTIME因此,很明显这不是达到预期解决方案的步骤。相反,我们可以试着减少外 部力量编码的步长,看看是否会改善系统响应。求解器模块 -50 output steps/sec (step size = .020)夕卜部力量 -500 compute steps/sec (step size = .002)goSOLVER OUT

9、PUT ® .02FOFtCIH COMPUTE 您 821.02.0<TIME (5403.0.0CONTINUOUS 一阳CRETE这个方法看起来很有希望,不过随着仿真的进行,响应似乎在减弱。如果我 们查看速度轨迹的话,就会发现系统产生纯粹是人为引起的不稳定性, 其频率出 人意料地为大约1.6赫兹。30.0-30.0SOLVER OUTPUT .02 FORCIH& COMPUTE W22D.0 -T0.O -Q0-20.01-0Z.DT IME (sec)3.0我们的最后一个方案是努力提高外部力量编码的采样率 求解器模块 -50 output steps/sec

10、(step size = .020) 外部力量-1000 compute steps/sec (step size = .001)MOSOLVER OUTPUT 凰.02FORCIHG COMPUTE .001102.0TIME (secji3.0"CONTINUOUS -DISCRETEJo104.0结果更糟糕!离散受迫方不稳定,响应频率是奇怪的 1.4赫兹。不仅如此, 数值变得如此糟糕,响应变成预想的模型的两倍,而且使得模型也变得不稳定!因此,我们很明显在使用外部计算离散外部力量时,遇到了简单的联合仿真问题。我们无法接近真实解法。增加求解器一方的仿真步数会认为引发意料不到 的系统

11、谐振,而增加外部力量一方的步数则会导致响应不稳定。解决方案“胶水”程序:幸运的是,有一个很直接的方法可以解决这个问题。 那就是在求解器模块和 另外一个编码之间加一个内插、外插界面。首先,我们必须承认,这类问题的所有数字计算机解法事实上都是对连续物 理的离散计算逼近(暂时先不考虑数控)。我们拥有的不同破解工具之间的区别 主要在于功能的排序。该排序可以用来粗略估计计算的离散点之间的真正解法。有效差分编码(以及离散压力器)可能完全不会在求解点之间插入,但是求 解器模块通过预估校正解法中各种排序的多项式帮助积分器推动并且插入求解 点之间的响应。我们可以将这种方法应用到联合仿真中。另外一个编码希望采用它

12、青睐的步长,这一般比求解器的步长小多了。而且, 另外一个编码希望在每一个步骤里,抽样检查 ADAM的响应。由于求解器主要使 用不同的步长积分器,因此,要求求解器使用和另外一个编码相同的小步长既不 合理,也没效率。而且正如我们上文所示,即使我们可以实现这一点,也不能完 全解决联合仿真的问题。我们真正需要的是另外一个编码可以随时抽样检查的 ADAM结果的连续逼近。这就是积分器。另外,求解器模块希望能够在任何特定时间询问另外一个编码的响应,不仅仅是在固定的区间,甚至也不是总是准时。另外一个编码通常只有离散输出,因此它只能响应那些。我们可以努力让另外一个编码采取细微的步长, 这样它会非 常接近连续。但

13、是我们之前已经发现,这不能完全解决联合仿真的问题。另外,随着求解器的进步,预测器需要在未来时代猜测响应, 但是另外一个 编码无法提供这些。所以,我们需要一种可以将另外一个编码的响应延伸到未来 的方法,即外插工具。因此,解决问题的方案就是创建一个小巧高效的“胶水” 程序,可以在联合仿真过程中将两个编码连接起来, 并且能对编码之间传输的数 据进行双向内插和外插。这个方法事实上非常有效。我将在下面对其进行详细描 述。双向内外插界面:下列图表展示了我们的“胶水”程序所具备的功能ADA MS/S olverInterfaceOther CodeTfueDigital Bypass通常,该程序的实施中伴随

14、着以下逻辑:1. 求解器模块随着每一积分步长的机械相应数据更新其界面一方。2. 另外一个编码在其使用的任意抽样检查区间从界面获得内插响应。3. 另外一个编码向前推移,直到与求解器模块的仿真时间相差一个步长为 止,同时随着每一步长的压力数据更新其界面一方。4. 求解器模块从界面获得连续外插力量,促进其自身进步。由于另外一个 编码永远赶不上求解器,这种方法有时被称为“半步领先”法。注意,如果另外一个编码实际上模拟真正的离散过程, 你则不应该使用界面 的外插工具。上列图表的“省略”部分说明了这一点。同样,如果另外一个编码 的响应不取决于任何ADAM系统状态,而只是取决于时间,那么你也没有必要使 用内

15、插工具。内插工具和外插工具都需要用到二次函数。 使用二次方程式可以避免高阶多 项式中出现的“样条函数连接”问题,不过仍然能更好地逼近简单的一次函数。 但是,二次函数要求有三个数据点, 因此,计算二次函数比计算一次函数代价高, 而且需要三个步长才能开始。 因而, 要认真安装启用内插工具和外插工具, 以便 从界面获得最好的响应。这一点很重要。在二次系数的分析解法的基础上,这里说明了在FORTRAN这种界面的单变量实现,同时利用旋转迭式存储器减小存储操作。这可以转化为任何目标语言, 而且可以作为多变量实现的基础。SUBROUTINE INTRP2 ( yvals, tvals, reqtim, va

16、lue )DOUBLE PRECISION yvals(3), tvals(3), reqtim, valueDOUBLE PRECISION a,b,c,denom,y1d23,y2d31,y3d12,d31,d23C assumptio n is that y = a*tA2 + b*t + cd31 = tvals(3)-tvals(1)d23 = tvals(2)-tvals(3)denom = d31*(tvals(1)*tvals(3) + tvals(2)*(d23-tvals(1)y1d23 = yvals(1)*d23y2d31 = yvals(2)*d31y3d12 = y

17、vals(3)*(tvals(1)-tvals(2)a = ( y1d23 + y2d31 + y3d12 ) / denomb = ( (tvals(2)+tvals(3)*y1d23 +1 (tvals(3)+tvals(1)*y2d31 +2 (tvals(1)+tvals(2)*y3d12 ) / -denomc = ( (tvals(2)*tvals(3)*y1d23) +1 (tvals(1)*tvals(3)*y2d31) +2 (tvals(2)*tvals(1)*y3d12) ) / denomC outputvalue = a*reqtim*2+b*reqtim+cretu

18、rnend使用 TIMGET:两个程序的同步化取决于它们知道对方在仿真序列里的位置。 求解器模块的实用子程序TIMGET1常根据上一次成功的仿真步长,返回时间;而且过了这个时 间,求解器再也不会做备份。通过监测用户编写的子程序(如SFOSU,BVFOSU)B内部的TIMGE结果,我们可以确认一个成功的仿真步长是何时完成的。这里又引出了一个小小的并发问题。监测TIMGE的结果只能告诉我们上个步 长是何时成功的。这意味着每次进入子程序时,我们都需要保存所有传达给外部 力量编码的状态,这样当我们看到TIMGE结果的变化时,我们可以从上次调用子 程序时发送状态数量。我们在下面概括介绍了这个问题。需要的

19、求解器模块功能:1. 检查TIMGET看看上一步是否成功(如果没有成功,则跳到 3#)。2. 连接到界面。更新保存的状态阵列的内插阵列。3将保存的状态阵列更新为目前的状态。4. 连接到界面。获得外插力量。5. 返回外部力量给模型。跨进程通信:当然,为了确保联合仿真顺利工作,两个编码和“胶水”程序必须能彼此交 流。根据每个编码使用的操作系统和硬件以及你是否能够进入另外一个编码的内 部工作,很多方法可以实现这一点。在求解器一方,通信经常是通过用户为 SFORC,EVFORC,EGFORCEVARIABL或者DIFF元素编写的标准子程序完成的。最高效的跨进程通信借助于直接的子程序界面。也就是说,要设

20、立内插提取界面和另外一个编码,这样求解器模块可以调用它们。在这种情况下,通过FORTRACOMM分程序块等共享记忆可以转化数据。特 别是在Windows/NT平台上,只要每个编码有办法获得系统服务,通过动态连接库 也可以转化数据。跨进程通信的另外一个方法是利用“管道”。UNIX和NT操作系统都提供管道服务。管道服务与共享内存堆栈的功能相当, 不过要通过文档形式 存储。管道服务包括进程阻塞和同步化工具。管道要求所有涉及到的进程在NTT作 组内的同一个或者是类似的系统里运行。这里举的例子是把管道作为通信方法。最后,如果参与进程是在不同系统,甚至不同地方运行,跨进程通信可以通 过套接字这种网络系统实现。套接字是UNIXffiNT操作系统都提供的另外一项标准 系统服务。它可以通过TCP/IP协议,在任何网络的任何兼容硬件上运行。 套接字 的实现和管道非常像,也能提供进程阻塞和同步化工具。点击 ntro.html,可以找至卩ADAM的跨进程通信套接字的教程。结果:在这为数不多的几次机会里,我们可以获得更快更廉价更好的结果。1. 内插联合仿真的运行速度比非内插联合仿真快。这里列举了 4秒钟仿真实例的运行时间结果。该实例在求解器中使用了 50步长/秒,在外部力量编码中使 用了 1000赫兹抽样检查,并且在4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论