HLA:FOM与SOM

时间:2019-01-27 19:03:00

标签: hla high-level-architecture

我开始研究如何在正在开发的项目中实施HLA,有些事情我不太了解。

在联盟中,交换的数据在FOM(联盟对象模型)中定义,该模型包含所有必要的内容(类,交互等)。没关系。

我还阅读到每个联盟都需要发布自己的SOM(模拟对象模型),这是对联盟发布并为其订阅的数据的描述。

我的问题是:

  • 谁需要加载FOM文件?每个联邦?必须从RTI Manager中读取吗?
  • 如果FOM已经可用,为什么联邦需要发布SOM?如果FOM定义了可以交换的所有结构,那么SOM会复制FOM的子部分,而联邦成员只需要它?
  • 谁读取了联盟发送的SOM?
  • 哪些数据存储在SOM中?在FOM中定义了一些结构的深层副本,在FOM中有指向它们的链接吗?
  • SOM可以包含FOM中未定义的类,交互等吗?
  • 如果每个联盟发布有关SOM使用的对象的数据,为什么我们需要FOM?

很抱歉,如果它们只是简单的问题,但是我对此并不陌生,即使我了解HLA的编程方面,这些东西背后的逻辑对我来说还是有点晦涩(也许我不太熟练的英语也参与其中) )。

2 个答案:

答案 0 :(得分:1)

Yserbius描述了FOM和SOM之间的区别。

我已经对您的直接问题添加了一些回复。

  
      
  • 谁需要加载FOM文件?每个联邦?必须从RTI Manager中读取吗?
  •   

RTI使用FOM文件。创建联盟时,必须提供。只有第一个联盟需要提供它。

  
      
  • 如果FOM已经可用,为什么联邦需要发布SOM?如果FOM定义了可以交换的所有结构,那么SOM会复制FOM的子部分,而联邦成员只需要它?
  •   

在执行联盟时,在运行时不需要SOM。 SOM可以看作是描述模拟器功能的文档。

  
      
  • 谁读取了联盟发送的SOM?
  •   

运行时不需要SOM。

  
      
  • 哪些数据存储在SOM中?在FOM中定义了一些结构的深层副本,在FOM中有指向它们的链接吗?
  •   

SOM是FOM的子集。

  
      
  • SOM可以包含FOM中未定义的类,交互等吗?
  •   

是的,但是除非将它们添加到FOM中,否则它们不能在运行时使用。

  
      
  • 如果每个联盟发布有关SOM使用的对象的数据,为什么我们需要FOM?
  •   

好问题。通常是相反的方式,联邦在运行时提供FOM,并且不存在描述该联邦的SOM。

答案 1 :(得分:0)

很抱歉,我的回答很晚,希望仍然适用。我假设您使用的是HLA 1.3或HLA 1516,因为HLA 1516-2010 / Evolved中的术语SOM已被FOM模块取代。

  1. 创建联邦的第一个联邦使用FOM文件(1.3中的Lisp变体和后续版本中的XML)进行此操作。然后,该FOM可供加入的每个新联盟使用。各个联盟不需要拥有FOM文件的副本。
  2. 您的任何软件实际上都不需要SOM。它只是FOM的一部分。它的主要用途是用于合规性检查和验证,因此在部署联盟之前,它可以验证每个联盟可以使用和不能使用的对象和交互。在运行联盟时,可以忽略SOM(除非您正在运行某种动态的通用联盟,而无需通过换出SOM来重新编译其活动,就可以修改其活动)。
  3. 1.3和1516 SOM不能包含FOM中没有的任何内容。 1516-2010引入了FOM模块的概念。联盟可以用一个较小的FOM文件构建一个FOM,而不是一个大的FOM文件。每个加入1516-2010的联邦都可以有自己的模块以添加到FOM。