1

我开始研究如何在我正在开发的项目中实现HLA,有些东西我不能很好理解。

在联合中,交换的数据在 FOM(联合对象模型)中定义,其中包含所有必要的东西(类、交互等)。没关系。

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

我的问题是:

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

对不起,如果它们是简单的问题,但我是新手,即使我了解 HLA 的编程方面,这些东西背后的逻辑对我来说有点模糊(也许我不完美的英语也有一部分) .

4

2 回答 2

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。

于 2019-08-26T12:25:16.133 回答
-1

我为迟到的答案道歉,我希望这仍然适用。我假设您使用的是 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。
于 2019-03-26T17:09:29.767 回答