一种时序同步方法与流程

文档序号:12034942阅读:353来源:国知局
一种时序同步方法与流程

本发明涉及车辆动力学仿真与控制领域,更具体的是,本发明涉及一种时序同步方法。



背景技术:

公路液罐车是液态化工产品运输的重要载体。对于液罐车,尤其是拖带挂车的液罐车,在极端工况下,由于罐体内部液体的晃动与车辆运动之间的耦合,很容易丧失稳定性,发生折叠、摆振以及侧翻事故。由于这种危险性的存在,研究人员难以通过实车试验对液罐车的稳定性进行研究。因此对液罐车动力学的性能测试以及稳定性控制策略的离线验证是十分必要的。

当前尚无专门用于建立液罐车动力学的模型,液罐车模型的建立主要是通过分别对车辆与液体进行建模并将两个模型耦合在一起实现的。目前绝大多数液罐车辆建模所采用的技术方案是:建立液体的线性等效模型,如单摆模型、弹簧-质子模型等,再建立车辆的简化模型或准确模型,这种技术方案不足之处是所建立的液罐车动力学模型不能充分考虑液体的晃动特性。或者是建立液体的非线性模型,而建立车辆的简化模型,将二者进行联合建立液罐车动力学模型,这种技术方案能够充分体现液体的非线性晃动特性,但车辆模型不够准确。人们想到,建立一个准确的车辆模型,再建立一个非线性的液体模型后,将二者联合来建立液罐车动力学模型。但是准确的车辆模型和非线性的液体模型并没有相同的计算周期,时序并不相同,因此有必要设计一种方法,使二者能够联合使用,控制二者的时序同步,从而建立较高精度的液罐车动力学模型。



技术实现要素:

本发明的一个目的是设计开发了一种时序同步方法,在trucksim中的车辆模型和在fluent中的液体模型,能够使得两个模型在联合使用时保证时序的同步。

本发明提供的技术方案为:

一种时序同步方法,包括:

在trucksim中车辆模型,其为第一模型;

在fluent中液体模型,其为第二模型;

以第一模型的计算周期为主导周期:

当其与第二模型时序同步时,进行数据传递;

当其与第二模型时序不同步时,进入等待状态直至时序同步;

第二模型保持连续的运行,其内部设有时序判别方法:

在每个第二模型的计算周期内,当所述第一模型的累计时长tf与所述第二模型的累计时长tt的偏差δ小于等于一设定阈值时,所述第一模型和第二模型的时序同步。

优选的是,当所述第一模型和所述第二模型的时序同步时,所述第二模型的计算周期内包括运行、判断、写入和读取四个状态,随后进入下一第二模型计算周期的运行状态。

优选的是,当所述第一模型和所述第二模型的时序不同步时,所述第二模型的计算周期内仅包括运行和判断两个状态,随后进入下一第二模型计算周期的运行状态。

优选的是,所述第一模型包括等待、读取、运行和写入四个状态,在其每个计算周期开始时即进入等待状态,直至所述第一模型和所述第二模型的时序同步时,进入读取、运行和写入状态,随后进入下一个所述第一模型的计算周期的等待状态。

优选的是,所述第二模型的单个计算周期为tf,所述偏差δ小于等于tf/2。

优选的是,还包括一个中间同步源,其与所述第一模型的时序同步,用于联合所述第一模型和所述第二模型。

优选的是,所述中间同步源内设置有第一模块和第二模块,所述第一模块用于运行所述第一模型,所述第二模块用于数据读写,所述第一模块与所述第二模块之间进行数据传递,实现所述第一模型和第二模型的联合。

本发明所述的有益效果为:

本发明所述的时序同步方法,能够使得两个模型在联合使用时保证时序的同步。

附图说明

图1为本发明实施例所述的液罐车整车动力学测试模型仿真中fluent6.3与trucksim8.0联合仿真的流程图。

图2为本发明实施例所述的液罐车整车动力学测试模型仿真中第一模型的运行状态示意图。

图3为本发明实施例所述的液罐车整车动力学测试模型仿真中fluent6.3与trucksim8.0联合仿真过程中的时序同步方法示意图。

图4为本发明实施例所述的液罐车整车动力学测试模型仿真中fluent6.3与trucksim8.0联合仿真过程中时序同步判别标准示意图。

具体实施方式

下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。

本发明提供一种时序同步方法,包括:在trucksim中车辆模型,其为第一模型;在fluent中液体模型,其为第二模型;以第一模型的计算周期为主导周期:当其与第二模型时序同步时,进行数据传递;当其与第二模型时序不同步时,进入等待状态直至时序同步;第二模型保持连续的运行,其内部设有时序判别方法:在每个第二模型的计算周期内,当所述第一模型的累计时长tf与所述第二模型的累计时长tt的偏差δ小于等于一设定阈值时,所述第一模型和第二模型的时序同步。当所述第一模型和所述第二模型的时序同步时,所述第二模型的计算周期内包括运行、判断、写入和读取四个状态,随后进入下一第二模型计算周期的运行状态。当所述第一模型和所述第二模型的时序不同步时,所述第二模型的计算周期内仅包括运行和判断两个状态,随后进入下一第二模型计算周期的运行状态。所述第一模型包括等待、读取、运行和写入四个状态,在其每个计算周期开始时即进入等待状态,直至所述第一模型和所述第二模型的时序同步时,进入读取、运行和写入状态,随后进入下一个所述第一模型的计算周期的等待状态。所述第二模型的单个计算周期为tf,所述偏差δ小于等于tf/2。本实施例中,还包括一个中间同步源,其与所述第一模型的时序同步,用于联合所述第一模型和所述第二模型。所述中间同步源内设置有第一模块和第二模块,所述第一模块用于运行所述第一模型,所述第二模块用于数据读写,所述第一模块与所述第二模块之间进行数据传递,实现所述第一模型和第二模型的联合。

下面通过建立液罐车整车动力学测试模型仿真具体阐述所述时序同步方法的使用;所述第一软件为trucksim8.0;第二软件为fluent6.3;操作系统为windows7;所述中间同步源的软件为matlab/simulinkr2015b。

如图1所示,在trucksim8.0中建立车辆模型,在matlab/simulinkr2015b中建立cosimulation.mdl文件,将车辆模型的联合仿真接口代码发送至cosimulation.mdl中,建立trucksim8.0与matlab/simulinkr2015b的联合仿真环境。车辆模型在cosimulation.mdl中以s-function的形式通过调用trucksim8.0产生的dll文件来运行,仿真结束后的车辆动力学响应可以在trucksim8.0中查看。在cosimulation.mdl中包含两个s-function模块,一个用于运行车辆模型,另一个为数据读写s-function,其用途如下:1.读取生成共享文件force.txt中的液体晃动力及晃动力矩;2.将液罐侧向加速度及侧倾角速度写入共享文件motion.txt;3.当trucksim8.0与fluent6.3时序不一致时循环等待。两个s-function在cosimulation.mdl中进行数据的传递从而实现液体模型与车辆模型之间的耦合,当然,还可以通过在cosimulation.mdl中加入对车辆的稳定性控制策略以验证其有效性。液体晃动模型的运行步长、介质属性及边界条件等事先写入fluent6.3的日志文件中,fluent6.3运行前需要载入日志文件进行配置,在fluent6.3中使用c语言编写用户自定义函数(udf),udf主要用于实现以下作用:1.读取共享文件motion.txt中的液罐侧向加速度及侧倾角速度;2.将计算得到的液体晃动力及晃动力矩写入共享文件force.txt;3.将读取的液罐侧向加速度及侧倾角速度施加与fluent6.3中的液体模型;4.计算液体模型的液体晃动力及晃动力矩;5.判断fluent6.3与trucksim8.0运行的时序是否一致。当与trucksim8.0运行的时序一致时,fluent6.3将计算得到的液体晃动力及晃动力矩写入共享文件force.txt中,并读入共享文件motion.txt中的液罐侧向加速度及侧倾角速度,随后对液体模型的液体晃动力及晃动力矩进行迭代计算。

如图2所示,所述trucksim8.0与matlab/simulinkr2015b的运行状态是同步的,在程序运行过程中每个车辆模型计算周期包含等待、读取、运行、写入四个状态,每个车辆模型计算周期开始时进行等待,直到有新的共享文件force.txt生成,此时进入读取状态,从共享文件force.txt中读取液体晃动力及晃动力矩,读取后进入运行状态,计算车辆的运动状态,计算完毕后进入写入状态,将通过对车辆模型进行求解得到的液罐侧向加速度及侧倾角速度写入共享文件motion.txt,随后转入下一个车辆模型计算周期的等待状态。程序运行过程中以trucksim8.0与matlab/simulinkr2015b的运行周期为主导周期,与fluent6.3时序一致时进行数据的传递,否则进入等待状态直至时序一致,而fluent6.3保持连续的运行。当时序一致时,fluent6.3中的液体模型计算周期是一个完整的计算周期,包含运行、判断、写入、读取四个状态,首先进入该周期的运行状态,求解液体的晃动力及晃动力矩,求解完毕进入判断状态,判断时序是否一致,一致则进入写入状态,将液体晃动力及晃动力矩写入共享文件force.txt,写入完毕后进入读取状态,从共享文件motion.txt中读取液罐侧向加速度及侧倾角速度,随后进入下一液体模型计算周期的运行状态。当时序不一致时,fluent6.3中的液体模型计算周期只包含运行与判断两个状态,当判断结果为时序不一致时,不进行数据的读写操作,直接转入下一计算周期的运行。

如图3所示,trucksim8.0中的车辆模型计算步长与fluent6.3中的液体模型计算步长多数情况下是不一致的,即使步长一致,由于fluent6.3相对于trucksim8.0计算耗时较长,二者也难以保持时序上的同步,因此设计开发了时序同步方法,该机制的核心为trucksim8.0中的车辆模型计算周期的等待与fluent6.3中的液体模型计算周期中的判断。fluent6.3在每个液体模型计算周期中都会判断fluent6.3的累计时长与trucksim8.0的累计时长的偏差δ是否满足若满足,则认为此时时序一致,生成共享文件force.txt,否则转入下一液体模型计算周期的运行。trucksim8.0在每个车辆模型计算周期开始时判断是否有共享文件force.txt生成,若无共享文件force.txt生成则进入循环等待,而当fluent6.3在时序一致时生成共享文件force.txt,此时trucksim8.0结束等待,matlab/simulinkr2015b中的数据读写s-function在每个车辆模型计算周期结束时将当前共享文件force.txt删除然后进入下一车辆模型计算周期的等待状态。以工作环境中共享文件force.txt的生成作为时序同步的标志,通过这种方法使trucksim8.0与fluent6.3保持运行时序上的同步。

如图4所示,设定tf为fluent6.3的单个液体模型计算周期时长,tt为trucksim8.0的单个车辆模型计算周期时长,tt为trucksim8.0当前的累计时长,tf2、tf4为fluent6.3当前液体模型计算周期结束时的累计时长,tf1、tf3为fluent6.3上一液体模型计算周期结束时的累计时长。图4中包括两组对比,前一组中fluent上一计算周期结束时的累计时长与trucksim当前的累计时长的偏差比fluent当前计算周期结束时的累计时长与trucksim当前的累计时长的偏差小,即

tt-tf3<tf4-tt

为保证时序一致的唯一性,此时应认为在tf3时刻时序是一致的,在fluent6.3的上一液体模型计算周期结束时即将fluent6.3计算结果写入共享文件force.txt中供trucksim8.0读取。而在后一组对比中,fluent当前计算周期结束时的累计时长与trucksim当前的累计时长的偏差比fluent上一计算周期结束时的累计时长与trucksim当前的累计时长的偏差小,即

tf2-tt<tt-tf1

为保证时序一致的唯一性,此时应认为在tf2时刻时序是一致的,在fluent6.3的当前液体模型计算周期结束时将fluent6.3计算结果写入共享文件force.txt中供trucksim8.0读取。因此,时序一致判别标准所采用的偏差δ应为:

本发明所述的时序同步方法,能够使得两个模型在联合使用时保证时序的同步。在液罐车整车动力学测试过程中,建立了准确的车辆模型和非线性液体模型,并通过上述时序同步方法使两者能够联合使用,较高精度的实现对液罐车整车动力学的测试。

尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1