基于SRML的仿真语言研究及应用
2024-02-15
来源:小侦探旅游网
第30卷第3期 文章编号:1006—9348(2013)03—0285—05 计算机仿真 2013年3月 基于SI L的仿真 语言研究 口口 l 7乙 及应用 黄晓冬,凌绪强,温玮,方伟 (海军航空工程学院信息融合研究所,山东烟台264001) 摘要:SRML语言具有可扩展性好、与平台无关及Web架构兼容等优点,是XMSF技术体系中的关键技术之一。在SRML语 法框架基础上,通过增加面向对象表示、事件调度映射和参数配置等方面语法规范,增强了其对复杂系统的表达能力。通过 增加其对组件的描述,使其成为支持组件集成和系统演化的仿真语言。通过将基于改进语言的描述文件进行分类,使系统 的描述更加灵活,便于复用。应用实例表明,扩展后的SRML语言更有利于对复杂系统的描述与表达。 关键词:仿真参考标记语言;面向对象;组件;演化 中图分类号:TP391.9 文献标识码:A Research on SRML-Based Simulation Language and Its Application HUANG Xiao-dong,LING Xu-qiang,WEN Wei,FANG Wei (Institute of Information Fusion Naval Aeronautical and Astronautical University,Yantai Shandong 264001,China) ABSTRACT:Simulation Reference Makeup Language has the characteristics of well expandability,platform neutral and web compatibility,and is the key technique of XMSF.On the basis of SRML syntax,through adding syntax spec— ification of object—oriented representation,event management and parameter configuration,the representation ability for complex system was increased;through adding the description syntax for components,SRML was changed to sup・ port component integration and system evolution;through classifying the description files based on SRML,description orf system became more flexible and reusable.It was showed that the expanding SRML was more available to describe and represent the complex system from the application ease. KEYWORDS:SRML;0bject—o ented;Component;Evolution 1 引言 仿真系统的互操作性与模型的可重用性是仿真领域研 究的焦点问题…。1995年,美国国防部在其建模与仿真主 计划中提出了HLA、DS、CMMS等概念框架和标准,向这一目 应用,并使它们之间能够进行更好的交互。XMSF涉及一系 列技术和规范,但Web和XML技术是其中的基础和核心。 SRML (Simulation Reference Makeup Language)是2002 年由美国Boeing公司制定的基于XML标准的仿真参考标记 语言规范,同年提交到W3C作为标准草案发布。SRML提出 标迈出了可喜的一步。HIA是整个主计划的核心,由于 HLA只定义了成员问的互操作,成员粒度太粗,加之成员模 型通常具有平台相关性,因此,基于这一系列标准在实现系 的初衷是,希望通过WEB技术,使仿真模型按一种标准和公 认的方式被接收、处理、执行,正如HTML语言用于在互联网 上描述文本和其它媒体,而MathML用于描述数学计算一样。 目前,SRML是XMSF技术体系的公认的关键技术之一。 本文以SRML为基础规范,结合多个虚拟样机和装备体 系对抗仿真等多个仿真应用领域的特点和需要,对SRML进 行了扩展,形成了一种组件化的、支持复杂系统和演化式系 统的互操作与模型重用方面存在诸多缺陷。 针对上述问题,美国国防部建模与仿真办公室组织由美 国海军研究院、George Mason大学、SAIC公司以及工业专家 组成的专项小组开展了使用Web技术作为通用框架来增强 国防仿真系统能力的研究。在这种背景下,可扩展的建模与 仿真框架(eXtensible Modeling and Simulation Framework, XMSF)应运而生 ’ 。 统动态建模的仿真语言,有效地提高了仿真模型的可重用 性,促进了仿真系统的互操作。 XMSF的定义为:基于Web的M&S而组合的一系列标 准、原型和实践途径。其目的是形成和发展新一代的M&S 2 SRML简介 基于XML数据交换标准,SRML声明一组数量较少但相 对完备的元素和元素属性来描述抽象的结构、特性、行为以 收稿日期:2012—07—09 支持系统仿真模型描述,使仿真模型的描述具有平台无关 285・---—— 决定ItemClass的类别。ItemClass的状态通过ItemClass的属 件模型描述文件( .mdf)。组件描述文件进一步说明组件 的属性,包括组件的执行文件名称(通常是一个动态链接库 性集去定义,每个属性具有名称(Name)、类型(Type)或大小 (Size)。 图4 XESL语言结构 3.2系统参数及配置 对于一个柔性仿真系统,配置体系的设计是非常重要 的。XESL定义了规范的参数表示形式,所有的参数定义形 式为:<Parameter Name=”NN”Value=”VV”/>。同时,XESL 对配置参数进行了分类,包括成员参数、对象类参数、类型参 数和对象实例参数。其中成员参数只能在sim文件中描述, 常见的成员参数包括成员名、联邦名、fed文件名、时间管理 配置参数(如,是否时间控制(Constrained)、是否时间受限 (Regulation)、墙上时钟周期(Wallclock)、时间前瞻量(Looka— head)、仿真时间步长(Timestep)、RTI线程模式(RTIthread)) 等 。 对象类参数直接在ItemClass的子节点中定义,对象类 参数由该类及其派生类共享。类型参数在opd文件中描述, 并通过关键字OPDEnt ̄s指定,在OPDEnt ̄s的子节点中描 述,以下例子描述了F18飞机和SPY雷达的类型参数。 <OPDEntrys> <OPDEnt ̄Name=”F18飞机参数表”> <Parameter Name=”MaxSpeed”Value=”199”/> <Parameter Name=”MaxAcceleration”Value=”7.9”/> </OPDEntry> <OPDEnt ̄Name=”SPY雷达参数表”> <Parameter Name=”MaxPower”Value=”195”/> <Parameter Name=”Frequence”Value=”10.5”/> </OPDEntry> </OPDEntrys> 对象参数直接在Item的子节点中定义,该参数由该对象 所专属。类型参数、对象类参数、对象参数三者不同之处在 于:类型参数用于描述现实中的实体型号参数,对象类参数 用于描述软件中的对象类参数,对象参数则描述对象实例初 始的参数。 3.3组件与对象的支持 为了适应组件化集成的需要,XESL语言定义了组件 (Components)组装关系描述语法。一个sim文件可以声明将 多个组件mdf文件组合起来,而每个组件本身可以进一步复 合。每个组件有一个Source属性,以指定组件对应于哪个组 DLL)和组件内部定义的ItemClass。以下是一个组件描述文 件的示例。 <Component Ref=”ship.dll’’> <ItemClasses> <hemClass Name=”CShip”SuperClasses=”CEntity”> <Property Name=”longi”Type=”double”/> <Property Name=”lati”Type=”double”/> <P ̄ameter Name=“MaxPower”Value=”12Ooo0”/> <Parameter Name=”Len ̄h”Value=”130”/> </ItemClass> <ItemClass Name=”CDisplayModel”SuperClasses:” CMode1”> <OnEvent Name=”LButtonUp”Fun=”OnLButtonUp”/> </ItemClass> </ItemClasses> </Component> 同时,为了支持对复杂系统的表示,XESL增强了面向对 象的表达能力,主要体现在类聚合的表示、复合对象的表示、 继承关系的表示以及通过脚本可以直接访问ItemClass类的 属性。当然,这对基于XESL仿真引擎的实现提出了相应的 要求。 聚合关系分为类聚合和对象聚合。类聚合关系说明两 个类之间的不可分的组成关系,XESL通过定义Assembles关 键字进行表示。类聚合关系通常在opd文件中描述。比如, 定义CF18类由状态池、雷达类、飞行模型类、控制器类组合 而成,表示如下: <Assemble ItemClass=’’CF1 8Plane’’Type=”Entity”Tag =”F18战斗机”> <Assemble ItemClass=”F18”Type=”State”Tag=”状态 池”/> <Assemble hemClass=”CRadar”Type=”Sensor”Tag=” 雷达”/> <Assemble ItemClass=”CFly”Type=’’Actuator”Tag=’’ 飞行模型”/> <Assemble ItemClass:’’CFControl’’Type=”Controller” Tag=”控制器”/> </Assemble> 对象聚合关系表示类的实例之间的聚合,类聚合是不可 拆分的,但对象聚合可以拆分。这种关系在XESL中由Items 区域指定,该区域定义每个Item实例包括如下属性:实例对 应的ItemClass的名称、实例ID、实例对象名称(Name)。而 每个Item实例可以复合其它Item实例。例如: <Item ItemClass=’’CGroup”Name=”red—Group”> <Item ItemClass=”CShip”ID:”10001”Name=”驱逐舰 1”/> .--——287--・—— <Item ItemClass=”CPlane=”10002”Name=”战斗机2”/ > <P ̄ameter Name=”FedFile”Value=”nv.fed”/> <Parameter Name=”TC”Value=”l”/> </Item> <Parameter Name=”TR”Value=”1”/> <Parameter Name=”Walleloek”Value=”0.03”/> Item是ItemClass的实例,它可以在sim文件中描述,也 可以在sen文件中描述。 3.4订阅发布关系及事件响应 远程订阅发布关系说明了成员之间的信息依赖关系 。 订阅发布包括周期性的连接和突发性的事件,这分别在 Links和Events区域进行描述。事件(或连接)的订阅发布属 性包括名称(Name)、映射名称(Map—Name)、是否发布(Pub— lish)、是否订阅(Subscribe)。事件(或连接)的名称在Item— Class中必须进行声明。而映射名称指该事件作为外部事件 时(如作为HLA的交互类)的名称。 XESL抛弃了SRML中关于事件定义和响应比较繁琐的 表示。在XESL中:首先,事件类与其它类一样,均由Item— Class关键字定义,这样有利于类模板的复用;其次,事件的 响应通过在ItemClass中使用OnEvent函数定义响应函数名, 所有从该类实例化的对象均有响应该事件的能力;最后,事 件的产生或调度定义了两个标准函数,一个是SendEvent函 数,用以发送同步事件,另一个是PostEvent函数,用以调度 异步事件。 OnEvent关键字定义了两个属性:事件名(Name)和事件 响应函数名(Fun)。事件响应函数具有标准的人口参数,即 事件模型,事件模型是一个标准的结构化对象。在事件响应 函数中,可以通过函数GetPara获得事件参数值,还可以直接 访问响应对象的属性。 3.5对象行为的表示 行为的表示是SRML的重要内容,XESL在SRML脚本 基础上对行为表示进行了更具体的规范,定义了支持使用 Scirpt对象对每个ItemClass定义3个回调函数,即tick、Simu- lation、Output,SRML执行器自动在每个仿真步对各个实例的 回调函数进行扫描。其中tick规定完成仿真对象下一步的 预测的计算,并把预测的数据发送出去;Simulation规定完成 当前时刻的仿真计算;而Output规定完成当前仿真结果的显 示和输出。 4应用举例 根据XESL的语法,本文假设对飞机(F18)的属性和基 本组成进行建模与表示。飞机由飞行动力模型(Flydyn)、飞 行控制模型(FlyCt1)、雷达设备(Radar)组成。飞控模型和动 力学模型在主仿真文件中描述,而雷达模型在RadarCom组 件描述文件Radar.mdf中描述,飞机的初始化由其它成员发 送初始化事件提供通知和参数。示例的模型描述如下: <Simulation> <Parameters>系统基本参数 <Parameter Name=”FederateName”Value=”F1 8”/> <P ̄ameter Name=”FederationName”Value=”Fly”/> 288・---—— <Parameter Nnine=”Lookahead”Value:”0.03”/> <Parameter Name=”Timestep”Value=”0.03”/> <Parameter Name=”OPD”Value=”F18.opd”/>指定opd 文件 <Parameter Name=”SCN”Value=”F18fed.scn”/>指定 scn文件 /<Parameters> <Events>事件订阅发布描述区,此处订阅Init事件 <Event Name=”Init”Map—Name=”Init”Publish=”0” Subscribe=”1”/> </Events> <Links>对象订阅发布描述区,此处发布F18对象的状 态池 <Link Name=”F18”M印一Name=”F18”Publish=”l” Subscribe=”1”/> </Links> <Components>组件描述区,此处描述雷达组件集成到主 仿真进程中 <Component Source=”Radar.mdf”/> </Components> <hemClasses>以下描述sim文件中的ItemClass <ItemClass Name=”H6Ginit”SuperClasses=”CEvt”> <Property Name=”longitude”Type=”double”/> <Property Name=”latitude”Type=”double”/> <Property Name=”height”Type=”double”/> </ItemClass> <hemClass Name=”Flydyn”SuperClasses=”CActuator”> <Parameter Name=”MaxPower”Value:”100”/>对象类 参数 <OnEvent Name=”LButtonUp”Fun=”OnLButtonUp”/> /<hemClass> <hemClass Name=”FlyCtl”SuperClasses=”CController”> <Parameter Name:”MaxPower”Value=”10o”/> <OnEvent Name=”LButtonUp”Fun=”OnLButtonUp”/> </hemClass> </ItemClasses> /<Simulation> 5结论 SRML语言具有可扩展性好、与平台无关及Web架构兼 容等优点,是XMSF技术体系中的关键技术之一。本文在 SRML语法框架基础上,通过增加面向对象表示、事件调度映 射、参数配置和组件与行为描述等语法规范,使其成为支持