【问题标题】:HLA: FOM vs SOMHLA:FOM 与 SOM
【发布时间】:2019-06-20 20:32:26
【问题描述】:

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

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

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

我的问题是:

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

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

【问题讨论】:

    标签: high-level-architecture


    【解决方案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。

    【讨论】:

      【解决方案2】:

      我为迟到的答案道歉,我希望这仍然适用。我假设您使用的是 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。

      【讨论】:

      • 在 HLA 1516-2010/Evolved 中添加模块不会改变 FOM 和 SOM 之间的关系。您可以在 Evolved 中拥有 FOM 模块和 SOM 模块。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      相关资源
      最近更新 更多