李向东,仇振安,苏文强
(1.中国人民解放军92941部队,辽宁 葫芦岛 125001;2.陆航驻北京地区军事代表室,河南 洛阳 471009;3.中航工业洛阳电光设备研究所,河南 洛阳 471009)
现代作战环境的体系化使得作战平台更趋多样化和复杂化,对于空中战斗机平台而言,其携带的机载武器数量和种类越来越多。根据任务的不同,飞机还可以携带多种非直接杀伤性悬挂物,如瞄准吊舱、导航吊舱、电子干扰吊舱、捕控指令吊舱以及副油箱等,这些悬挂物的管理控制同样纳入了SMS的范畴[1],国外如F-22、F-35率先推进了SMS标准化、灵巧化、智能化进程,形成了如通用开放体系结构框架(AS4893),飞机/悬挂物接口通用框架(AIR5532),飞机/悬挂物通用接口控制文件格式(AS5609)等[2]在内的一系列标准。在训练体系上,建立了规范的开发模式和开发手段。国内研究工作起步较晚,虽然积累了许多模型和数据,但研究的空白区域较多,低层次模型多,高层次模型少,缺乏模型总体框架指导,形不成系统,面向实际应用困难[3]。为适应规范化的训练仿真和机上嵌入式模型设计,同时兼容HLA体系规范,采用开放式设计架构来进行武器悬挂物管理仿真的通用化设计非常必要,通过SMS功能仿真的通用设计技术建立一套SMS模型,从功能仿真的力度支持各种机型的SMS仿真研发。
本文以研究针对武器悬挂物管理通用的仿真软件设计方法、建立可扩展基本软件架构、提供货架化软件设计参考为主要目的,着力于对悬挂物管理系统核心处理软件的功能仿真研究,将软件设计重心从对固定行为的硬编码转移为定义基本行为集[4],研究利用模式设计针对武器悬挂物管理系统仿真搭建开放式架构。
参考典型三代机和国外典型四代机(F-35)悬挂物管理系统(见图1、图2),可以发现从组成结构上有较大变化,三代机一般由外场可更换单元(LRU)组成,主要包括控制部分、接口部分、处理部分、显示部分等,图1是典型三代机悬挂物管理系统组成框图。
图1 悬挂物管理系统典型组成框图[1]Fig.1 Typical composition of SMS
图2 F-35战斗机航空电子系统结构组成框图[1]Fig.2 Avionic system construction of F -35
而F-22、F-35等先进战斗机则更进一步推进了综合化概念,采用了通用化、模块化设计,以外场可更换模块(LRM)为基本组成。
根据当前发展分析,悬挂物管理系统在核心功能上并没有改变,只是使完成功能的手段更先进,方式更简单。悬挂物管理系统的核心功能包括:1)航炮和悬挂物的加载控制和清单显示;2)监控悬挂物工作状态;3)管理悬挂物投放程序,实现武器发射方案的选择;4)实现武器占位选择;5)完成武器总线控制、武器供电控制、地面检查、发射前检查、任务数据装订,控制武器安全、可靠地发射/投放,并且向防喘系统提供飞机发动机补氧和防喘信号;6)在紧急条件下完成悬挂物应急投放和导弹应急发射,实现武器故障等特殊情况的安全性处理;7)为航电系统的其他分系统提供所需信号[1]。
为支持通用化设计,需要使用SMS系统开放式架构,即SMS系统应采用系统功能层、武器访问层、物理介质层的开放式层次架构,该架构将功能通用层最大程度限制在系统功能层,该层可以实现硬件无关性。SMS开放式架构如图3所示。
图3 SMS开放式架构[5]Fig.3 SMS open architecture
分析悬挂物管理系统的功能,可以总结如下一些基本特点:1)不同机型的悬挂物管理系统架构基本一致,功能架构具备通用性;2)针对每个挂点的操作基本统一;3)挂点悬挂物可被替换;4)根据任务的不同,挂点悬挂物类型、数量和发射/投放方式在一定范围内可变化;5)不同类型悬挂物的信息接口内容不同,但同种类型不同型号间的悬挂物信息接口内容基本一致,接口定义方式可能不同。
在外挂组成框图中针对具备统一标准的模块接口使用了通用挂载,针对非统一标准的模块接口使用了AIU和PIU中间件,实际是一种适配器(Adapter),其避免因具体的悬挂物接口进行增加或修改而导致系统的整个软件体系遭到较大修改,根据功能分析,适合使用抽象工厂(Abstract Factory)、模板方法(Template Method)及适配器(Adapter)等作为基本设计方法。
悬挂物系统物理结构可抽象为核心处理部分、挂架管理部分、悬挂物管理部分,其中核心处理部分负责以下内容:1)所有与外部系统相关的信号传输和主要的控制及逻辑功能处理;2)将外部信息传送到挂架;3)将挂架及悬挂物状态信息反馈到外部系统。
挂架管理部分实际完成以下功能:1)从物理上悬挂武器及吊舱等悬挂物;2)提供信号及供电给悬挂物;3)负责将自身故障信息反馈到核心处理部分。
悬挂物管理部分实际是模拟悬挂物的管理,主要完成以下内容:1)接收核心处理部分传输来的程序清单;2)获得控制信号,完成相应检测、武器占位、准备、目标探测、发射、投弃等工作指令管理;3)反馈悬挂物本身信息。
SMS功能分析转化为UML[5]用例图,如图4所示。
图4 悬挂物管理系统顶层用例图Fig.4 Top-level usage of SMS
以上列出了主要的角色与用例,实际使用根据应用深度展开。
根据系列化要求,采用抽象工厂来建立外挂的工厂系列,具体指图5中的外挂主工厂类(CSMSModel),该类有两个子类CASMSModel和CBSMSModel,分别代表型号A和型号B的外挂,在实际应用中,可根据系列化要求产生多个型号子类,外挂工厂包含的抽象产品主要包括:清单(CSMSBill)、投放程序(CSMSProgram)、检测与故障处理部件(CSMSTest)、投放部件(CSMSDrop),考虑到一般仿真处理力度要求,这里将CSMSTest与CSMSDrop单独建为产品类,实际使用中,可根据需要调整。
该建模分两层,上层为抽象工厂构建CSMS部分,主要完成外挂系统的构建,这层的构建根据不同需要可选择不同部件分类标准,这里采用的部件分类主要分清单类(CSMSBill)、投放程序类(CSMSProgram)、检测与故障类(CSMSTest)、投弃类(CSMSDrop),下层可通过工厂方法构建外挂清单类,主要的具体工厂产品包括挂架类(Cstation)、悬挂物类(CSuspender),实际使用中与工厂方法略有变化。
外挂清单的构建包括构建挂架类(CStation),分别针对各挂点构建单挂架、双挂架、级联挂架。由挂架类再挂装悬挂物(CSuspender),包括:武器(CWeapon)、吊舱(CXPOD)、副油箱(CAuxOlidBox)等。图5中的CXPODA、CBombA、CGuideWeaponA分别指某具体型号的吊舱、炸弹和制导武器。
图5 悬挂物管理系统UML建模图Fig.5 UML model of SMS
根据UML通用框架建模展开开放式通用化设计,创建不同型号外挂模型需要使用面向对象(OO)的3大特性[6],尤其需要使用到继承性,图6是一个简单的创建序列图。
在UML框架中外挂模型通过类CSMS调用,将CSMS构造函数设置为保护性,防止外部直接使用。建立创建函数来创建悬挂物系统,基本流程如图7所示。
图6 外挂清单创建序列图Fig.6 Sequence of store list
其中,创建外挂清单函数调用具体型号的外挂清单(如CASMSBill)来完成创建,创建结果返回为抽象CSMSBill类指针,根据实际型号的不同,该函数内部的构造部分产生变化,例如返回的是CASMSBill而不是CSMSBill,CASMSBill完成A型外挂清单的管理。武器投放程序管理、挂点清单管理、武器占位规则管理等其他管理部件的通用化创建方法类似。
在调用CreateSMS()函数时,通过不同参数也能实现不同型号的建模,如需要创建B型号外挂,采用如下方式:首先创建CBSMSModel实例,再通过该实例调用创建函数创建B型SMS模型,在创建函数CreateSMS输入参数中提供B型参数,该方法可产生B型号的外挂模型。
以上两种方法采用第一种更实用,第二种使用了条件选择语句,增加了代码维护成本。
图7 悬挂物管理系统创建示意图Fig.7 Creation of SMS
在外挂清单类[7]的具体实现中,包括的内容如图8所示。
图8 外挂清单类定义示意图Fig.8 Definition of store list
以上定义中,清单加载(Load)、清单修改(Modify)、清单加载检测(IsCanLoad)、清单修改检测(IsCan-Modify)等需要重载,其中清单加载检测、清单修改检测为纯虚函数,采用延迟加载技术,其具体实现根据具体型号要求在子类或调用类中完成实现。此外针对清单的特殊处理还有构造函数及操作符重载,这里不作详细讨论,而特别来关注加载函数,代码如图9所示。
在该代码段内,IsCanLoad()函数是一个纯虚函数,它并不在类CSMSBill中实现,因为不同型号间清单表不一样,是否某个挂架能装某个悬挂物的标准也不一样,因此,该判断由其子类来实现。
在外挂清单加载函数IsCanLoad()的实现代码中检测任务被交给了检测对象(m_pSMSTest),由检测对象完成真正的检测工作,采用代码的弱耦合,检测中调用外挂检测类的具体指针实例m_pSMSTest,根据不同型号可构建不同继承类对象。
图9 清单加载流程示意图Fig.9 Process of list loading
外挂显示模块在三代及以后已经集中到显示控制管理系统或核心任务处理系统中,这里不管模块本身在哪,该模块仍是与外挂管理系统支持模块,负责SMS的显示,提供人机观察界面。
该UML类实例设计与其他菜单显示设计实际一致,主要包括基本计算类(CBaseCompute)、基本符号类(CBaseSymbol)、专用符号类(CExtraSymbol)、基本文本类(CBaseText)、周边键文本类(COSSText)、专用文本类(CExtraText)和主菜单类(CMenu),类实例间调用关系见图10。
图10 SMS显示菜单类通用设计Fig.10 Universal design of SMS display menus
悬挂物管理的通用模式设计方法已经经过多种型号仿真使用,实践证明,采用模式设计的方法建立的开放式通用模型尤其适合系列化使用,扩展性强,在外挂仿真中,尤其在编队对抗、大规模对抗仿真中能极大简化编程、减轻代码重构量。具体针对单个型号检测设备或仿真建模时,可根据模型直接裁减,有很高的实用性。
[1]王朝阳.机载悬挂物管理系统技术发展分析[J].电光与控制,2009,16(3):1-5.
[2]冯金富.模型驱动的开放式结构悬挂物管理系统设计方法[J].空军工程大学学报,2010,11(4):1-4.
[3]魏继才.基于仿真的武器装备体系作战能力评估研究[J].系统仿真学报,2007,19(21):5093-5097.
[4]GAMMA E ,HELM R,JOHNSON R,et al.设计模式 -可复用面向对象软件的基础[M].李英军,译.北京:机械工业出版社,2010.
[5]BOGGS W,BOGGS M.Mastering UML with rational rose 2002[M].Publishing House of Electronics Industry,2005.
[6]BLIPPMAN S,LAJOIE J.C++Primer[M].潘爱明,译.3版.北京:中国电力出版社,2009.
[7]PLAUGER P J,STEPANOV A A,MENG LEE,et al.The C++standard template library[M].Prentice-Hall,Inc,2000.