原文:https://blog.csdn.net/sillysunny/article/details/84197686

第三章 KY-OMT对象模型模板工具
       本章介绍了对象模型模板的相关知识,以及如何使用KY-OMT对象模型模板工具创建对象模型文件。

3.1 对象模型模板
       HLA1.3包含3个标准,第一个是描述整个联邦和联邦成员必须遵循的10条规则的标准;第二个是用于实现RTI的100多个服务的标准,这些服务分为仿真成员调用RTI和RTI调用仿真成员(回调)两类服务;第三个就是对象模型模板(Object Model Template,OMT)标准。

从本质上说,HLA是一个仿真成员之间数据交换的标准,数据交换有一个专门的词语“互操作”;因此,HLA是关于仿真成员互操作的标准。当多人共同设计一个大型仿真系统时,应该如何描述仿真成员之间交换的数据格式就成为一个关键问题。当数据格式描述清楚后,不同的仿真开发人员就可以按照统一的格式各自开发相应的模块。对象模型模板就是这样的一个数据格式描述规范。

对象模型分为三类:联邦对象模型FOM(Federation Object Model)、成员对象模型SOM(Simulation Object Model)、管理对象模型MOM(Management Object Model)。联邦对象模型描述整个仿真系统中需要交换的对象类、对象属性、交互类、交互参数等;成员对象模型则描述一个仿真成员自己对外公布和订购的数据信息;管理对象模型则用于管理仿真系统。

虽然用户未必有FOM和SOM的概念,但在一个大型仿真系统开发之前,一般需要采用文字或表格的形式将整个仿真系统(FOM)和各个子系统或模块(SOM)需要交换的数据定义清楚,哪些是全局的,哪些是属于子系统或模块的。为此,HLA1.3的对象模型模板提供了9个表格帮助用户建立仿真对象模型。当然,用户未必一定需要按照这样的方法进行操作,这些表格只是辅助用户开发而已,具体到RTI仿真,只需要为RTI提供一个文本格式的fed文件即可,在fed文件中并没有标识FOM和SOM。

对象模型模板提供的9个表格如下。

(1)对象模型鉴别表。记录与HLA对象模型相关的重要标识信息,包括名称、开发者、开发日期等。

(2)对象类结构表。记录所有FOM和SOM中的对象类的名称,以及类与子类的关系。

(3)交互类结构表。记录所有FOM和SOM中的交互类的名称,以及类与子类的关系。

(4)属性表。记录FOM和SOM中的对象属性的特性。

(5)参数表。记录FOM和SOM中的交互参数的特性。

(6)枚举数据类型表。用来对属性表或参数表中的枚举数据类型进行说明。

(7)复杂数据类型表。用来对出现在属性表或参数表中的复杂数据类型进行说明。

(8)路由空间表。用来指定联邦中对象类属性和交互类的路由空间。

(9)FOM/SOM词典。用来记录上述各表中使用的所有术语的定义。

在上述9个表格中,与fed文件密切相关的有“(2)、(3)、(4)、(5)、(8)”。以“(7)复杂数据类型表”为例,它与fed文件没有什么关系;实际上,所有数据类型都与fed文件没有关系,具体可参见后面的fed文件示例。如果两个仿真成员之间需要传输比较复杂的数据结构,那么两个仿真成员的开发人员需要将这种协商一致的复杂数据结构记录在案,便于开发和日后查阅,但在RTI中传输时,RTI并不知道数据是何种格式,在它看来,所传输的只是一个字符串而已;字符串所代表的意义由两个仿真开发人员去理解,并体现在自己的仿真程序中。

3.2 对象类和交互类
       对象类和交互类都是对象模型中的概念,是HLA标准的重要概念,让我们再来探讨一下这两个术语。

实例1:由1个飞机和雷达组成的仿真系统。飞机在飞行过程中将其xPos和yPos二维坐标位置信息发送到RTI,再由RTI将其发送到订购者“雷达”。

实例2:由2个人组成的发报系统。一个人给上级发送电报,每次发送2个数,然后把这两个数发送到RTI,再由RTI将其发送到订购者“上级”。

在实例1的HLA仿真系统中,通常使用对象类将需要传输的信息进行封装。譬如将对象类定义为plane,该类有2个整型属性xPos和yPos。在HLA标准中,对象类中的变量依照面向对象的概念仍然叫做“属性(Attribute)”。

class plane {         //对象类

int  xPos;        //属性

int  yPos;        //属性

}

在实例2的HLA仿真系统中,通常使用交互类将需要传输的信息进行封装。譬如将交互类定义为chat,该类有2个整型参数first和second。在HLA标准中,交互类中的变量叫做“参数(Parameter)”。

class chat {           //交互类

int  first;           //参数

int  second;    //参数

}

从面向对象的角度来看,这两个类并没有本质的区别,只是现实世界中的语义有所不同;从HLA的角度来看,一个代表对象类,一个代表交互类,在公布、订购、发送和接收数据时所采用的HLA服务并不相同。

然而,HLA是一个关于数据交换的标准,实例1中的飞机和雷达除了可以使用对象类交换数据外,还能使用交互类进行数据交换吗?反之,实例2中的人和上级除了可以使用交互类交换数据外,还能使用对象类进行数据交换吗?答案显然是肯定的,当把交互类chat用于实例1,而把对象类plane用于实例2是完全可行的,只是chat和plane这两个英文单词比较别扭,如果把这两个单词改成xxx和yyy那就好看多了。顺便说一句,在用户程序中并不要求用户定义plane和chat类,这两个类只是定义在fed文件中;另外,类中变量的类型int不会出现在fed文件中,它不影响RTI的数据传输。在后面的章节中,你会看到示例程序中并没有按照面向对象的概念定义这两个类。

再举1个简单例子,如果程序A向程序B传送文件,则既可以采用对象类,也可以采用交互类来传送,只是采用的HLA服务不同而已。

总之,对象类和交互类都为HLA仿真中的数据交换提供支持,但在实际使用时不要太拘泥于这两个概念的固有含义。

3.3 基于KY-OMT开发对象模型
       KY-OMT是Windows操作系统下的一个HLA1.3对象模型模板开发工具,位于KY-RTI的bin目录。通过该工具创建的对象模型在保存时会同时生成后缀为“.fed”和“.xml”的两个文件。前者应保存到KY-RTI服务器程序所在目录,即bin目录;在客户端则不需要保存。后者比前者记录了更多的信息,譬如一些注释信息等。KY-OMT可打开这两种格式的文件,但“.fed”会比“.xml”少一些信息。

3.3.1基本功能
       KY-OMT启动后的界面如下图所示。通过“文件”菜单可新建、打开、保存一个后缀为.xml或.fed的文件;通过“模型管理”可在fed文件中插入与MOM相关的对象类和交互类,这样仿真成员就可以通过MOM服务对仿真系统进行管理;通过“模型信息”菜单可查看“文档属性”和进行“数据统计”功能,譬如有多少对象类、多少交互类等。

图3.1 KY-OMT的启动界面

下图是新建一个文件的缺省界面。图中右部分显示的是对象模型鉴别表,包括模型信息和联系人信息。左部分是一个根节点为“ObjectModel”的树形结构,分为ObjectRoot、InteractionRoot、Synchronizations、basicData、enumeratedData、arrayData、recordData、routingSpace、Notes等子节点,每个子节点对应一项功能。

图3.2 对象模型鉴别表

ObjectRoot:所有对象类的根节点;

InteractionRoot:所有交互类的根节点;

Synchronizations:定义同步点,同步点是联邦管理中的概念,通过同步点实现仿真成员的同步功能;但实际仿真系统常用交互来实现同步功能;

basicData:显示基本数据类型的定义,包括short、long、float等;

enumeratedData:用来定义枚举类型;

arrayData:显示系统中已有的向量类型定义,包括vector<short>、vector<long>、vector<float>等;

recordData:定义仿真系统用到的记录数据类型;

routingSpace:定义路由空间;

Notes:添加一些注释信息。

前面提到,上面这些与数据类型相关的功能只是辅助用户记录对象类属性或者交互类在实际的仿真系统中所代表的意义,但RTI本身并不理解这些数据类型,只是以字符串形式传输具体数据。

3.3.2对象类的创建
       在KY-RTI的bin目录下有1个tracer.fed文件,该文件仅含有一个如下的对象类,可理解为一架飞机在飞行过程中所发布的xPos和yPos二维态势信息;只要订购了该对象类的属性信息的仿真成员都能够接收到该飞机的态势信息,飞机本身不需要关注有哪些仿真成员订购了自己的态势信息。

(class plane
        (attribute xPos reliable timestamp)
        (attribute yPos best_effort timestamp)
      )

在上述定义中,reliable表示使用可靠数据传输机制;best_effort则表示RTI尽可能地把数据传输到目的地。与其他RTI不同,在KY-RTI中,best_effort也使用可靠数据传输。timestamp表示在传输过程中使用HLA的时间管理机制,一个TSO(Time Stamp Order)消息会受到HLA时间的制约;与timestamp相对,receive则表示一个消息不受HLA时间管理机制的制约,通常发送者一发送,接收方就能接收到该消息。另外,可以看出,在fed文件中并没有定义xPos和yPos的数据类型;或者说,如果使用对象模板工具创建fed文件时指定了xPos和yPos的数据类型,该数据类型只有程序员关心,最终并不会出现在fed文件中。

下面是tracer.fed文件的生成过程。

第1步:选择“ObjectRoot”节点,按右键,选择“添加子对象类”;

图3.3 添加子对象类

第2步:输入“plane”对象类名;

图3.4 输入子对象类名

第3步:点击“添加”按钮增加xPos属性;

图3.5 添加按钮

在name字段填入“xPos”;在dataType字段选择xPos的数据类型,譬如选择double,但它不会出现在最终生成的fed文件中。点击“确定”按钮确认输入。另外,下图中的“NA”表示不使用(Not Available),是HLA标准中的术语。

图3.6 添加xPos属性

下图输入xPos属性的其他特性,但对fed文件来说,这些都已经不重要了。

图3.7 添加xPos属性的各个字段的含义

第4步:点击“添加”按钮增加yPos属性,点击“确定”按钮确认输入;

图3.8 添加yPos属性的各个字段的含义

第5步:将文件保存为tracer.xml,同时生成tracer.fed。打开tracer.fed文件,可以看到以前输入的很多选项并没有用,譬如xPos的数据类型vector<long>并没有出现在fed文件中,但这能让程序开发者明白该属性在真实仿真系统中的数据类型。

图3.9 tracer.fed文件内容

3.3.3交互类的创建
       在KY-RTI的bin目录下有1个chat.fed文件,该文件仅含有一个如下的交互类,可理解为大家通过RTI进行聊天,发送给RTI的信息包括发送者名字和说的一句话,2个参数均为字符串类型,它们被封装为chat交互类。

(class chat reliable receive

(parameter name)

(parameter sentence)

)

下面是chat.fed文件的生成过程。

第1步:新建一个文件,选择“InteractionRoot”节点,按右键,选择“添加子交互类”;

图3.10 添加子交互类

第2步:输入“chat”交互类名;

图3.11 输入子交互类名

第3步:点击“添加”按钮增加name参数;

图3.12 添加一个参数

下图输入name参数的各个特性,点击“确定”按钮加以确认;

图3.13 添加name参数

第4步:点击“添加”按钮,添加“sentence”交互;点击“确定”按钮加以确认;

图3.14 添加sentence参数

第5步:将文件保存为chat.xml,同时生成chat.fed。下图是chat.fed文件内容。

图3.15 chat.fed文件内容

3.3.4路由空间的创建
       如果采用HLA的数据分发管理服务,则需要定义路由空间。图3.6用于定义一个属性的特性,其中有1项“space name”,用于选择路由空间;图3.12在新建一个交互类时也要求确认是否使用路由空间(表中的“NA”表示不使用)。要使用路由空间,必须事先进行定义,然后才能够在“space name”处进行选择。

创建1个路由空间的过程如下。

第1步:选择“routingSpace”节点,按右键,选择“添加数据项”;

图3.16 新建路由空间

第2步:输入路由空间名称;

图3.17 输入路由空间名称

第3步:为路由空间添加1个或多个维;这些维构成1个虚拟或真实的空间。下图是一个关于高度height的维,取值范围为闭区间[0, 10000],表示真实世界的0~10000米高空范围,数据类型为long,采用线性归一化函数。

图3.18 定义height维
--------------------- 
作者:sillysunny 
来源:CSDN 
原文:https://blog.csdn.net/sillysunny/article/details/84197686 
版权声明:本文为博主原创文章,转载请附上博文链接!

麒麟KY-RTI分布仿真技术:第三章 KY-OMT对象模型模板工具相关推荐

  1. KY-RTI分布仿真技术:第九章 综合演示

    第九章 综合演示 KY-RTI支持基于不同CPU.不同操作系统.不同程序设计语言.不同HLA服务调用方式开发的仿真成员之间的互操作,本章综合前面章节的内容给出了几个联合测试案例.本章以银河麒麟操作系统 ...

  2. KY-RTI分布仿真技术:附录3 国产化(操作系统+CPUs)

    以操作系统和CPU为代表的国产化是当前仿真系统实现的必然趋势.本章以聊天程序为例,展示了KY-RTI在多种国产操作系统和国产CPU上的运行结果.聊天程序是一个入门程序,本身比较简单,不追求界面的美观. ...

  3. KY-RTI分布仿真技术:前言

    前 言 自从美国国防部建模与仿真办公室(DMSO)首次提出高层体系结构(High Level Architecture,HLA)概念以来,HLA仿真技术得到了迅猛发展,也成为我国计算机仿真领域的重要应 ...

  4. KY-RTI分布仿真技术:附录1 分组聊天(HLA数据分发管理的应用)

    本章从RTI开发者的角度简单地介绍HLA1.3标准中的数据分发管理(DDM,Data Distributed Management)并给出了一个具体的示例.前面介绍了基于各种程序设计语言开发的聊天程序 ...

  5. 麒麟KY-RTI分布仿真技术:前言

    本文为转载文章,一切只为学习方便.原文地址为:https://blog.csdn.net/sillysunny/article/details/84197412 PS:原帖博主人很好,软件找他要就会给 ...

  6. 计算机仿真作业三,计算机仿真技术作业三.doc

    计算机仿真技术作业三.doc 计算机仿真技术作业三 题目:三相桥式全控整流电路仿真 姓名: 班级: 学号: 计算机仿真技术作业三 题目:三相桥式全控整流电路仿真 利用simpowersystems建立 ...

  7. 第三章 计算机网络技术,计算机网络技术第三章习题

    计算机网络技术第三章习题 1.网络协议是指网络数据交换而制定的规责.约定与标准的集合,它由______._______.________三部分组成 2.计算机网络采用_______的体系结构,网络中两 ...

  8. 计算机三级网络技术第三章(第一轮)

    第三章  IP地址规划技术 (选择题8-11    综合题第一题.应用题子网划分(占分值20分) 常考知识点:IP地址分类及子网划分     无类域间路由技术(CIDR)     NAT技术工作原理  ...

  9. 知识图谱 概念与技术 第三章

    知识图谱 概念与技术 肖仰华等编著 中国工信出版集团 电子工业出版社 第三章 词汇挖掘与实体识别 知识图谱中的实体识别基本思路: 当一个词汇在某个上下文表达的是某个预定义概念时,则是一个实体. 例如& ...

  10. 软件工程技术--第三章 需求分析

    第三章 需求分析 需求分析 ​ 需求分析的任务是要准确地定义新系统的目标,准确回答"系统必须做什么"的问题,并用需求规格说明书规范的形式准确地表达用户的需求. ​ 虽然在可行性研究 ...

最新文章

  1. 浅谈python+requests实现接口自动化
  2. python基础5(来自廖雪峰的官方网站)
  3. 随笔(二)-- PyCharm如何更改背景图片
  4. [杭电ACM]1012u Calculate e
  5. 计算机基础术语巧记,报考28个专业术语,你都知道吗?掌握这些才算入门!
  6. VB 几种打开文本文件速度对比
  7. 蓝桥杯 ALGO-91 算法训练 Anagrams问题
  8. Markdown示例
  9. ssm mysql项目实战_ssm项目实战_ssm项目实战教程_ssm项目实战视频教程 _课课家
  10. java pdf转jpg字体问题_java生成pdf字体的坑
  11. 硕士论文中期汇报ppt_做一场合格的中期汇报
  12. word文档太大怎么压缩?
  13. 第七章 DirectX 数学向量,碰撞检测和粒子系统(上)
  14. Dockerfile MAINTAINER和LABEL指令 语法解析
  15. BurpSuit Intruder密码爆破的另类使用——有道词典批量收藏并导出到quizlet
  16. 史上最全面的《软件工程》笔记—— 期末不挂科就看这一篇
  17. Vue导出json数据到Excel电子表格
  18. 线程池的五种状态详解
  19. Labview 串口通信
  20. win7如何删除多余的本地连接2

热门文章

  1. iris流程图_IRIS项目管理流程
  2. 2020版二建教材pdf_2020年二建教材电子版下载
  3. 论文的重复率多少算正常?
  4. 传统博物馆的自救之路,名画也变NFT
  5. 一个有效的面试——善用STAR法则
  6. Ninth season eighth episode,Rachel‘s another sister,how is she???
  7. 单细胞数据挖掘 P 3.1 QC以及细胞周期判断
  8. java导出出行客人到Excel
  9. USB协议详解第29讲(USB设备状态及数据交互条件)
  10. Linux内核网络UDP数据包发送(四)——Linux netdevice 子系统