陈艳锋
(海军驻广州广船公司军事代表室,广东广州 510000)
船舶模拟训练是基于实船装置,人为构建与之相仿的环境,训练人员通过在此环境中对系统、设备等进行操作,实现相关科目的训练。对于船舶而言,其系统结构较复杂,实船训练成本高,动力装置模拟训练成本相对低、训练针对性强、训练周期短,在对船员培训、教学等方面具有优势[1]。协同仿真技术指对复杂系统中的子系统进行各自领域专业建模,在统一规则环境下实现耦合参数协同交互,实现子系统模型协同运行,总系统交互仿真的状态。基于以太网通讯进行模拟训练系统搭建具有通讯速度快、实时性高、交互参数多的优势,利于多参数耦合、多参数协同。以数学模型为基础的模拟训练系统,难以直观体现模型仿真进程,实际训练过程缺乏沉浸体验,因此引入虚拟现实仿真并与动态仿真模型的协同交互,可以增强参训人员直观体验,较快的应对科目操作,从而提高训练效果,如图1所示。
图1 基于网络通信的模拟训练协同仿真体系图
船舶动力装置模拟训练仿真进程内容包括:稳态性能仿真、加速性能仿真、减速性能仿真、操纵性仿真。该动力装置仿真模型输入是车令Lever,输出是性能仿真各输出参数及视景仿真输出,控制系统的仿真参数如表1所示。
动态性能仿真是以稳态性能仿真为基础,因此要先对稳态性能进行仿真。稳态性能仿真以表1中输入参数中的一项为变量,其它参数保持与实际船舶初始状态一致,稳态特性参数耦合如图2所示。
表1 控制系统参数
图2 稳态特性参数耦合
动力装置性能仿真中稳态性能是在稳态特性仿真的基础上进行的,目的是分析船舶在航行时,其推进系统采取不同的控制规律时该船舶机动性响应,进而改善控制规律,保证推进系统在各种机动工况下配合合理性、运行可靠性,合理地平衡喷水推进系统的可靠性和该船舶机动性之间的矛盾。在动态性能仿真中,首先选定一组基准控制参数,并结合喷水推进系统的具体参数范围,固定这组参数并选取其中的一个主要的控制参数在一定范围内变化来观察动态响应情况,逐一确定每个控制参数的动态响应,从而确定船舶的动态特性。根据模拟器的训练需求,船舶的动态特性仿真包括以下4种。
1)不同推进方式船舶加速/减速性能仿真。
2)全速正车前进至全速后退过程中以柴油机减速速率、放倒航斗转速为变量对船换向过程机动性能进行仿真。
3)全速后退至全速正车前进过程中以柴油机反向加速速率、倒航斗位置为变量对船舶换向过程的机动性能进行仿真。
4)不同级海况下,不同推进方式,对船舶回转运动时的操纵性能进行仿真。
对性能仿真模型与系统仿真的协同参数进行分析,经过归纳其协同参数耦合如图3所示。海况、排水量、船舶初始坐标、喷泵偏转速率及初始偏角是预设值在仿真前设定,整个协同的过程输入量就是对控制系统的输入;推进方式选择由动力装置系统模型中的一个开关量来控制[1];传统在虚拟视景坐标系的位置由三自由度运动模型输出轨迹参数经坐标转化后进行控制;船舶姿态一方面由艏向角控制,一方面由海浪和平滑因子(包括俯仰因子和横摇因子)控制;推进器的DOF节点已经在建模过程中进行设置,这里需要初始偏转角、偏转速率及喷泵偏角δ协同进行控制;协同仿真输出是过程中各项参数的仿真曲线和视景仿真输出[3]。
图3 动态特性协同参数耦合图
协同仿真时性能仿真模型在后台运行,使用面向对象的程序设计编写调用动力装置动态性能仿真模型输出三自由度模型参数,通过程序设计调用仿真模型输出参数数据库,数据库中的数值就是性能仿真用作协同参数的数值。
用于船舶在视景中位置定位方法有2种,第一种是调用三自由度模型输出参数中船舶在固定坐标系中的位置[4]X0(t) 和 Y0(t),建立 X0(t) 和Y0(t)和视景中船体模型的位置属性X、Y的对应关系,完成位置的实时预测,由于此场景中应用的坐标系是地心坐标系WGS84,而实际船舶的航行是在笛卡儿坐标系下的,因此需在视景仿真模型中进行坐标转化,并在代码编写过程中对虚拟视景中单位距离比例与实际距离比例进行调节、设定。对于姿态参数,同样根据前一步长调用的数据,预测艏向角变化量并据此改变船舶的姿态属性,其过程如图4所示,其中Position为位置属性,Heading为姿态属性[5]。
图4 船舶模型坐标驱动过程图
海况及排水量等其它耦合参数由性能仿真模型控制,以海况为例,协同运行时,通过判定海况输入量从而对虚拟视景模型海况参数进行设置,设置机制如图5所示。
图5 协同仿真中海况设定策略
对控制船舶运动方向的推进器设置自由度(DOF)节点,可以实现该定义部件的铰链型关节及运动范围,实现推进器模型的移动和旋转。
通过动力装置性能模型仿真运行,利用程序语言接口功能可以实时获得三自由度运动模型[3]各个时刻输出的船舶位置坐标、速度、艏向角数据。基于程序语言进行混合编程可以实现参数的读取、转化,驱动视景中船舶模型的运动。
实现方法为:编写调用Matlab引擎的C++程序语言,在语言设计程序中实现对性能仿真模型输出量的调用,Matlab有可供C和Fortan调用的引擎接口,视景仿真引擎运行时,单独占用一个线程对动态性能仿真输出的参数矩阵进行读取,并转化为语言程序中的数据格式从而解决语言程序和Matlab的混合编程问题,实现性能仿真模型、操纵模型、虚拟现实模型的协同仿真实现。
协同调用过程首先要启动Matlab引擎,然后启动视景模型线程,最后开始性能仿真过程,将协同参数传递给程序设计平台的运行代码,实现协同运行,如图6所示。
性能仿真引擎中有可供参数输出的模块数据库,将仿真实时参数存储到数据库文件夹,可供协同仿真调用。调用数据库文件中参数矩阵中数据的关键代码如下。
Engine* ep;
ep=engOpen(NULL);//启动引擎
engSetVisible(ep,false);
engEvalString(ep,"cd D:\dev");//数据库位置索引
engEvalString(ep,"sim('acceration.mdl',10)");//数据位置选取
mxArray*A=engGetVariable(ep,"y");
double* ayy=mxGetPr(A);//定义数据结构
double test=ayy [];//数据调用
此外,通过线程锁对视景运行线程以及数据调用线程进行线程同步处理,保证了调用参数与视景帧循环的线程同步。
图6 耦合参数协同过程
通过耦合参数分析、协同建模、协同仿真实现,建立用于测试的协同仿真运行软件界面[6],如图7。
图7 协同仿真软件界面
以双机双推进器为例,以船舶柴油机加速率为变量,对船舶直航时加速性能及减速性能进行协同仿真。仿真包括3个过程:①在前进一车令下加速,船舶从静止状态加速至最大稳定航速;再在后退一车令下减速至船舶航速为0;②在前进三车令下加速,船舶从静止状态加速至最大稳定航速;再在后退二车令下减速至船舶航速为0;③在前进四车令下加速,船舶从静止状态加速至最大稳定航速;再在后退三车令下减速至船舶航速为0。
3个过程通过一次协同仿真完成,协同运行过程图如图8。
图8 直航加速、减速性能仿真结果
协同仿真软件绘图模块绘制了船舶在视景坐标系的运行轨迹,为了便于分析,在代码编写过程中根据之前的坐标对应关系对视景引擎中坐标进行比例缩放使其横坐标和纵坐标对应实际坐标。
船舶初始艏向角为0(坐标系转化后船舶朝视景中坐标系的X方向),从原点到1过程,前进一车令的柴油机加速速率使船舶加速并在1点处达到双机双泵推进方式、标准排水量、正常海况下的最大稳定航速15 kn,之后船舶以稳定航速行至2点,自2到3点以后退一车令的柴油机降速速率使船舶减速至静止状态,至此在直航状态下完成协同仿真过程1);3点到6点之间完成仿真过程2),6点到9点完成仿真过程3)。
虚拟视景中的船舶航行距离按照比例换算后与性能仿真中输出的加速到最大稳定转速和减速时滑行距离在数值上接近,因此可以认为视景中船舶的运动基本符合实际状况;加速过程中,船舶模型航行距离小于性能仿真中得出的距离参数,而减速过程则相反,这是由于调用参数的延迟性和基于引擎调用的协同仿真效率不高,但总的来说其误差在可以接受的范围之内。
以船在三级海况下、双机推进器推进方式、正常排水量转弯工况下船舶操纵性的协同仿真运动参数验证,曲线绘制过程与直航状态时相同,柴油机转速加速到额定转速时,将推进器角度偏转30°,其仿真运行及仿真输出曲线如图9所示。
图9 协同仿真输出的回转特性曲线
将操纵性协同仿真界面输出的转弯特性曲线进行对比,发现由于协同的实时性受交互方式影响,同一时刻视景中船舶的运动速度略延迟于性能仿真中船舶的运动速度,因此视景仿真输出曲线中船舶转弯半径略大于性能仿真中的半径,调用过程实时性上满足模拟训练的要求,与性能仿真误差在可接受范围之内,可认为仿真结果在置信度范围内。以上取2个具有代表性的特例验证了基于航速和艏向角的参数调用实现的协同仿真,其运行结果中的运动参数及操纵性指标与性能仿真近似相等,从而验证了操纵性仿真的准确性。