HLA接口规范(六大服务)

六大服务

联邦管理

主要内容

联邦管理是指对一个联邦执行的创建、动态控制、修改和删除等过程。

联邦执行是指在联邦(仿真系统)运行过程当中,RTI根据联邦成员的请求,用一个指定的FOM及相关的联邦细节数据,为实现联邦成员之间的互操作而创建的一个虚拟世界。它实际上是一个活动的联邦,因此它是一个和联邦相对应的,具有一定生命周期的动态概念。(个人理解:如同程序和进程的关系)

RTI和其他一些支持软件构成了一个综合的仿真环境。在这个环境内可以运行各种联邦。联邦管理就是为了在这个仿真环境当中动态地创建、修改和删除一个联邦执行。除此之外,还包括联邦成员之间的同步,联邦的保存和恢复等。

基本过程

在一个成员加入一个联邦执行之前,这个联邦执行必须存在。

联邦成员的加入和退出可以按照任何对联邦用户来说有意义的顺序进行。但是,联邦的撤销必须在所有成员都退出之后才能进行。

请添加图片描述

联邦执行的创建与撤销的整个过程都是在RTI的支持下,由联邦成员来推动的。

请添加图片描述

联邦管理服务

HLA接口规范描述的服务,实质上反映了RTI为支持多种类型的仿真联邦而提供给成员的通用服务。HLA只规定这些服务的功能,具体实现就由RTI开发者自己决定。

DMSO HLA 1.3接口规范中共有20个联邦管理服务。带+号的是回调函数

请添加图片描述

第一组:完成联邦执行的创建、撤销,联邦成员的加入和退出。

第二组:联邦成员间的同步。

第三、四组:联邦的保存和恢复。

声明管理

HLA采用“匹配”机制,即数据生产者向RTI声明自己能生产的数据。数据消费者向RTI订购自己所需要的数据。由RTI负责在生产者和消费者之间进行匹配。RTI保证只讲消费者需要的数据传递给它。这种匹配可以在类(对象类或交互类)层次上进行,也可以在实例(属性实例或交互实例)层次上进行。

声明管理(DM,Declaration Management)就为联邦成员提供了类层次上的表达(声明或订购)机制。

数据分发管理(DDM,Data Distribution Management)则提供了实例层次上的表达机制。

联邦成员既可以单独用声明管理,也可以与数据分发管理结合起来进行使用。

基本概念

对象类:在HLA中,对象类是指参与联邦交互的对象实例所属的类。这些类及其继承关系必须记录在HLA相应的对象模型当中,并且不参与联邦交互的对象实例及其所属的类则不需要记录在HLA OM中。

类属性:仿真系统运行过程当中,并不是所有的属性都要在联邦成员之间进行交互。因此,HLA OM中,类属性只指那些需要进行交互的属性。HLA中,对象类仅仅由类属性构成。类属性也叫对象类属性。

已声明属性:一个对象类已列在FED(Federation Execution Data)文件中的属性,这些属性和对象类层次结构中的对象类是相关联的。

可获得属性:一个对象类已声明的属性及该对象类按继承关系集成的属性的集合。A{a,b,c},B{d,e}是A子类,则对象类B的可获得属性就是{a,b,c,d,e}

交互类和交互类参数:HLA中,成员间的互操作既可以通过更新/反射对象类属性值来完成,也可以通过发送/接收交互实例来实现。交互类是由交互参数构成的。交互实例和对象实例的主要差别是他们的可持续性,对象实例可以持续存在,而交互实例不行,它只代表一个瞬间的行为(如“开火”)

已声明参数:同上。(属性改交互参数,对象类改交互类)

可获得参数:同上。

公布:对象类的公布是指将该对象类及其需要公布的对象类属性的标识符作为参数,激活“publish object class”服务的过程。一旦联邦成员公布了某个对象类,那么默认情况下,该联邦成员将负责注册和更新已公布对象类的对象实例。通用,交互类的公布是指将该交互类及其交互参数的标识符作为参数激活“publish interaction class”服务的过程。一旦联邦成员公布了某个交互类,该联邦成员将负责初始化并发送该交互类的交互实例。

HLA中,“公布”是联邦成员向联邦表明自己能力的一种方法。可以公布整个对象类或对象类的部分属性,也可以公布交互类。

订购:一旦联邦成员订购了某个对象类,该联邦成员将会接收到已订购对象类的实例属性的更新值。同样,一旦联邦成员订购了某个交互类,该联邦成员将会接收到已订购交互类的交互实例。

声明管理的作用

用来减少网络通信的数据量

请添加图片描述

仿真运行过程中,联邦成员的公布和订购关系可以动态地进行修改。

声明管理服务

如图是12个声明管理服务。

请添加图片描述

第一组:公布或取消公布对象类和交互类。

第二组:订购或取消订购对象类和交互类。

第三组:一组回调函数,RTI根据联邦中的公布和订购关系来用这组回调函数通知联邦成员是否注册对象实例并更新属性值。或者通知它停止上述操作。

对象管理

HLA对象管理是在声明管理的基础上,实现 对象实例的注册/发现、属性值的更新/反射、交互实例的发送/接收、对象实例的删除等。

基本概念

注册:联邦成员向联邦注册一个已公布对象类的对象实例的过程。

发现:RTI通知联邦成员,其订购的对象类的对象实例已被发现的过程。

更新和反射属性值:联邦成员在运行过程中,当已注册的某个对象实例的属性值发生变化时,联邦成员有义务向联邦更新其实例的属性值。联邦成员向联邦发送实例属性值的过程成为属性值更新。RTI将对象实例的属性值通过回调函数发送给订购了该对象类的联邦成员的过程成为反射属性值。默认情况下,只有注册该对象实例的联邦成员才能更新其属性值。如果实例属性的所有权发生转移,那么就由新的联邦成员进行更新。

交互实例的发送与接收:当联邦成员需要向联邦发送交互事件时,会将交互实例及其所属的交互参数一起发送给RTI,由RTI将收到的交互事件通过回调函数传递给订购了该交互类的其他联邦成员。

对象实例的删除与移走:仿真运行过程中,当某个联邦成员退出联邦执行,或根据仿真结果,某个对象实例不需要继续存在(坦克被消灭),需要从联邦执行中删除该对象实例时,就通过调用RTI的服务来完成,且只能由有权限的联邦成员完成。

对象实例的已知类:如果联邦成员注册了某个对象类X的对象实例W,那么X就是W的已知类,X也成W的已注册类。反之,如果联邦成员发现了某个对象实例,那么该对象实例的已发现类就是该对象实例的已知类。

对象实例的已发现类:若O为联邦成员F发现的对象实例,如果F已经订购了O的已注册类,那么O的已注册类就是O的已发现类。否则,如果F已订购了O的已注册类的最近的超类,那么对象实例O的已注册类的最近的超类就是O的已发现类。

对象管理服务

17个

请添加图片描述

前三组:分别完成注册/发现对象实例、更新/反射属性值、发送/接收交互实例等操作

第四组:删除/移去对象实例

第五组:改变属性和交互类的传输类型(类似TCP,UDP)

第六组:传递RTI控制信息

第七组:请求/提供属性值更新,主要用于请求对外部属性值的更新

第八组:设置对象实例更新开关。

所有权管理

所有权关系是实例属性和链表成员之间的一种关系。如果联邦成员有权更新某个实例属性的值,称该联邦成员拥有该实例属性,这种拥有关系也成所有权关系。

在联邦执行生命周期的任一时刻,一个实例属性最多只能被一个联邦成员拥有,也可以不被任何联邦成员拥有。但是,只有唯一拥有实例属性所有权的联邦成员才有权更新该实例属性的值。

基本内容

联邦成员和RTI将利用所有权管理服务来转移实例属性的所有权,并利用所有权管理服务来支持联邦范围内对对象实例的协同建模。默认情况下,实例属性的所有权和联邦成员在公布实例属性所对应的对象实例的已知类时与是否公布了该实例属性的对应类属性密切相关。

要想拥有实例属性的所有权,在公布对象实例的已知类时,联邦成员必须公布该实例属性的对应类属性。

HLA中,所有权管理的管理对象是联邦中已注册对象实例属性的所有权。

基本内容就是协调和管理联邦范围内实例属性所有权的转移。一类是所有权的转让,另一类是所有权的获取。

所有权的转让

联邦成员有五种方式来获取当前拥有的实例属性的所有权

  1. 激活“Unconditional Attribute Ownership DiveStiture”服务。联邦成员将立即失去该实例属性的所有权。实际上激活该服务之后,所有联邦成员将失去该实例属性的所有权。
  2. 激活“Negotiated Attribute Ownership Divestiture”服务。联邦成员用该服务通知RTI,如果RTI能找到下家(愿意拥有该实例属性的联邦成员),该联邦成员就会将所有权进行转让。RTI可以通过想所有公布了该实例属性对应的对象类属性的联邦成员激活“Request Attribute Ownership Assumption +”服务的方法来找下家。找到后,再用一个回调函数来通知上家已经没有所有权。
  3. 对于已标识的实例属性,如果联邦成员收到RTI的“Request Attribute Ownership Release +”服务,他可以通过“Attribute Ownership Release Response”服务来转让该实例属性的所有权。
  4. 联邦成员可以停止公布其欲转让的实例属性所对应的对象实例的已知类来放弃该实例属性的所有权。停止公布该对象实例的已知类后,实际上所有联邦成员都失去该实例属性的所有权。如果联邦执行中仍然有该已知类的对象实例,且某个成员正在或准备获取该对象实例的某个实例属性,那么联邦成员不能停止公布该对象类。
  5. 成员可以退出联邦执行并带上“Release Attribute”选项。退出后,成员将不在拥有所有实例属性的所有权。

只有第二种方法可以被中途取消。

第一、四、五种将最终导致被转让的实例属性不再被联邦中的任何成员拥有。

第二、三种方法能确保一旦转让实例属性的联邦成员失去了该实例属性的所有权,立即会有其他成员取得该实例的所有权

所有权的获取
  1. 联邦成员激活“Attribute Ownership Acquisition”服务,并通过该服务向RTI声明自己想要获取的实例属性。RTI收到服务后将向拥有该实例属性的联邦成员激活“Request Attribute Ownership Release +”服务,请求它释放该实例属性。
  2. 联邦成员激活“Attribute Ownership Acquisition If Available”服务,并通过该服务向RTI声明自己想要获取的实例属性。同时该服务还表明,仅当联邦成员想要获取的实例属性已经不被其他联邦成员拥有或者正在被其他联邦成员转让的过程中时。该联邦成员才能获取到他想要的实例属性。

仿真运行过程中,一个对象实例可以被一个联邦成员完全拥有(即该联邦成员拥有该对象实例的所有属性),也可以由几个联邦成员共同拥有。在后一种情况下,拥有该对象实例属性的联邦成员负责更新其拥有的实例属性值,但在任何一个给定时刻,一个实例属性只能被一个联邦成员所拥有,当然它也可以不被任何联邦成员拥有,即成为“孤儿”。 成为“孤儿”的实例属性值不能被任何联邦成员更新。

删除对象特权

所有对象类都有一个叫“PrivilegeToDelete”的可获得属性。联邦成员可以通过公布一个对象已知类的这个属性来拥有该实例属性。该实例属性也可以在联邦执行范围内进行转移。拥有一个对象实例的这个实例属性的所有权将给联邦成员从联邦执行中删除这个对象实例的特权。默认情况下只有注册该对象实例的联邦成员才有这个权利。

所有权管理服务

16个

请添加图片描述

一种是push,另一种是pull。

第一组是push。

第二组是pull。

第三组是进行协助权限转移和接收。

时间管理

HLA支持多种时间管理策略。仿真开发过程中,时间管理服务是可选服务。

基本概念

联邦时间轴:单调有序的时间值序列。仿真时间总是沿着联邦时间轴向前流动。

联邦成员时间:一个指定的联邦成员在联邦时间轴上的当前值,也是联邦成员的逻辑时间

消息:HLA时间管理服务协调时间的方式是通过相互发送“消息”来进行的。

联邦成员发送一个消息将导致一个或多个联邦成员接收到对应的消息。这种发送和接收的对应关系要根据前面介绍的公布与订购关系来确定。HLA中,消息也被称为事件。消息发送时可以打上Timestamp,时戳,肖邦成员的仿真时间。以表明该事件或消息发生的时间。

HLA时间管理的任务

联邦运行时可视为一组通过RTI来相互传递消息的成员的集合。成员的运行可视为一系列的计算。其中一部分计算(如激活“update Attribute values” 服务)称为事件。

成员向RTI发送事件(或消息),由RTI将事件传送给感兴趣的成员。理想情况下,模型计算和消息传递引起的时延等于实际系统中相应的时延。

请添加图片描述

联邦成员A的开火事件产生“坦克开火”消息。联邦成员B接收到这个消息后,模拟目标就被摧毁,并同时产生“目标摧毁”消息。联邦成员C接收上述两个消息,但由于网络延时等因素的影响,“目标摧毁”消息比“坦克开火”消息先到达。这样,从观察者的角度来看就出现了事件因果顺序颠倒的情况。此外,还可能出现个不同的仿真器接收同一事件消息顺序不同的情况(如在图2-6中再增加一个观察者,而它收到的两个消息的顺序可能是正常的),这样就会引起仿真执行的其他方面的不一致性,由于网络延时具有一定的随机性,在没有其他服务的支持下,联邦成员接收消息的顺序也将经常不确定,这样则导致产生另外个问题:相同的初始状态和外部输入重复实验产生完全不同的仿真结果,出现了仿真结果的不可信和仿真实验的不可重复,这些都是与仿真的初衷相悖的。

事件管理的目标就是要减少上述不良影响。

事件管理主要面对联邦执行时的两个问题:1.事件应该发生而没有发生。2.事件没有按顺序发生。

HLA的事件管理应当能支持一下不同类型成员间的互操作:

  1. 不同消息传递顺序的成员间的互操作,不如不要求按时戳顺序(TSO,Time Stamp Order)处理事件的DIS类成员和要求按TSO处理事件的ALSP类成员间的互操作。
  2. 使用不同事件推进方式(如独立事件推进、协商时间推进等)的成员间的互操作。
  3. 使用不同事件管理策略的成员间的互操作
  4. 使用保守的事件推进机制与乐观的事件推进机制的成员间的互操作。
  5. 使用不同消息传递顺序与传递方式组合的成员之间的互操作。

HLA时间管理原则

出发点是在保证正确地实现联邦成员间仿真时间的协调推进和数据交换的前提下,定义所需服务的最小集合。

  1. 在HLA联邦中不存在通用和全局的时钟。在联邦执行声明周期内的任何时刻,不同的联邦成员可以具有不同的仿真时间。
  2. 联邦中可以产生“时戳”是“未来”(即事件时戳大于成员当前的逻辑时间)的事件。对象状态的变化,也称事件,包括属性值更新、交互实例的发送、对象实例化和删除等。这些时间由联邦成员产生,并且这些事件的时戳应大于或等于成员当前的逻辑时间。
  3. 使用逻辑时间的成员不能产生过去的事件。
  4. 不要求成员以时戳顺序产生事件。如,可以先产生时戳为10,再产生时戳为8的事件。但事件具体发生的顺序一定是先8后10。

HLA时间管理机制

HLA时间管理关注的是如何在联邦执行时控制时间的推进,但事件推进机制必须与负责传递消息的机制相配合,因为消息可以带时戳,并通过时戳来表明消息发生的事件,而HLA事件管理正是依靠协调带时戳消息的传递,来实现仿真时间的推进。

因此,HLA时间管理机制包括两方面的内容:消息传递机制和时间推进机制。无论是哪种,都与联邦成员的事件管理策略有关。

联邦成员的事件管理策略

时间控制和时间受限。它们描述了联邦成员的逻辑时钟推进与其他联邦成员逻辑时钟推进的关系。因此联邦成员的事件管理有以下四种状态:

  1. 时间控制、时间受限:也称逻辑时钟同步,联邦成员既影响其他联邦成员的事件推进,而本身的事件推进由受其他联邦成员的影响。如ALSP系统。
  2. 不时间控制、不时间受限:也称外部时间同步。联邦成员内部时间推进不使用RTI提供的服务。他们的时间同步是通过外部的时钟来实现的。
  3. 时间受限:也称逻辑时钟被动。时间推进受其他联邦成员的影响,而不影响其他联邦成员的时间推进,如观测器和联邦运行管理工具等。
  4. 时间控制:也称逻辑时钟主动。时间推进影响其他联邦成员而不受其他联邦成员的事件推进的影响。
消息传递机制

一是消息传输方式。二是消息传递顺序。

不同类型的消息传递机制提供不同的可靠性或不同的传递顺序,其代价是资源(如时延、带宽等)的损耗加大。消息的传输方式分为可靠和快速两种。

  1. 接收顺序(Receive Order, RO)

这是时延最小的方式,RTI按接收到消息的顺序将消息传递给成员。FIFO方式对消息进行转发。

  1. 时戳顺序(Time Stamp Order,TSO)

RTI将保障传递到成员的所有消息都是按时戳顺序到达。实现方式是RTI将接收到的消息存在队列中,知道确信没有时戳更小的消息到达,才将这些消息转发给成员。TSO可以保障成员不会收到过去的消息,以及所有从同一事件集中接受消息的成员能以同样的顺序接收消息。目前,HLA通过为成员定义的时间预测量Lookahead来判断有无更小时戳的TSO消息到达。

数据分发管理

防空仿真中,地面雷达只需要知道一定范围内的空情数据,因此代表飞机的仿真成员只需要根据地面雷达的数据需求将指定地域内的数据传递给雷达成员即可,这样可以避免大量无用数据的传输。

HLA中,RTI的生命管理在对象类属性层次上为联邦成员提供了表达发送和接收信息意图的截止,而数据分发管理(DDM,Data Distribution Management)则在实例属性层次上进一步增强了联邦成员精简数据需求的能力。DDM的目的是减少仿真运行过程中无用的数据传输。

基本概念

维(dimension):在HLA中,维是在FED文件中声明的坐标轴。为了给定义在FED文件中所有维提供同样的基,RTI将提供一个由有序值对定义的坐标轴端,这个有序值对的第一部分称为轴下限,第二部分称为轴上线。

路径空间(routing space):路径空间是维的一个命名序列,这个命名序列形成了一个多维坐标系统。FED文件中,通过指定构成路径空间的维来定义一个路径空间。

(spaces

​ (space

​ (dimension )

​ …

​ (dimension )

​ )

​ …

​ (space

​ (dimension )

​ …

​ (dimension )

​ )

)

除了FED文件中显式定义的路径空间外,RTI还隐式定义了一个默认路径空间。

范围(range):是定义在维上的,由有序值对表示的一个取件。第一部分称为下限,第二部分称为上限。

限域(extent):一个有序排列的范围的集合,每一个范围对应于路径空间中的一维,且以维出现在路径空间中的顺序进行排列。

基本原理

根据预先定义的路径空间,数据生产者可以在其中创建区域,并利用HLA的数据分发管理服务向联邦声明它所生产数据的特性。同样,数据消费者也可以创建区域,并利用数据分发管理服务向联邦声明它所需要数据的特性。RTI就根据双方的数据特性,按照一定的规则进行匹配,将生产者的数据发给合适的消费者。这种匹配是在实例层次上,而不是类层次上。

管理对象模型

MOM(Management Object Model)。描述了一种机制,使得对联邦执行的管理和监控信息能够以一种与联邦成员间的交互相一致的方式在联邦执行中传递。联邦成员和RTI可以利用管理对象模型监视各联邦成员和RTI的运行,获取相应的状态信息,同时还可以利用管理对象模型来控制RTI、联邦甚至单个联邦成员的执行。

MOM通过预定义的HLA结构——对象和交互实例,提供了对这种能力的执行。联邦执行时,RTI将公布MOM中的对象类,并注册对象实例,更新对象实例的属性值,同时RTI还将公布和发送MOM中的部分交互类,并订购和接收MOM中的其他交互类。联邦中赋值管理和控制联邦执行的联邦成员可以订购MOM中的对象类,反射更新值,同时还可以公布和发送MOM中的部分交互类,并订购和接收MOM中的其他的交互类。

MOM中的对象类

Manager.Federate和Manager.Federation。

请添加图片描述

虚线表示用户对MOM的扩展

Manager.Federate对象类包含了描述联邦成员状态的属性及。RTI将公布该对象类,并为联邦中的每个成员注册一个对象实例,对象实例的属性包括联邦成员的标识信息、成员的时间状态信息和RTI为联邦成员维护的事件队列的状态信息等。

请添加图片描述
请添加图片描述
请添加图片描述

仿真过程中,RTI将公布对象类Manager.Federation,并为联邦注册一个该对象类的对象实例,但RTI不会自动更新该对象类的实例属性值,联邦成员必须使用Request Attribute Value Update服务以获得实例属性值。

不论是哪个类,对象实例的实例属性所有权都不可以转移。数据类型都是text。

HLA中,所有MOM的对象类均预定义在FED文件中。预定义的对象类不能修改,但可以根据需要对它进行扩展。一种是给MOM预定义的对象类增加子类,另一种是给MOM预定义的对象类增加属性。

MOM中的交互类

请添加图片描述
请添加图片描述

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值