自定义复合模型(组件) - AWS IoT SiteWise

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自定义复合模型(组件)

当你对特别复杂的工业资产(例如包含许多零件的复杂机器)进行建模时,保持资产模型的井然有序和可维护可能会成为一项挑战。

在这种情况下,您可以将自定义复合模型或组件(如果您使用的是控制台)添加到现有资产模型和组件模型中。它们通过对相关属性进行分组和重复使用子组件定义来帮助您保持井井有条。

有两种类型的自定义复合模型:

  • 内联自定义复合模型定义了一组分组属性,这些属性适用于自定义复合模型所属的资产模型或组件模型。您可以使用它们对相关属性进行分组。它们由名称、描述和一组资产模型属性组成。它们不可重复使用。

  • C omponent-model-based 自定义复合模型引用要包含在资产模型或组件模型中的组件模型。您可以使用它们在模型中包含标准子组件。它们由名称、描述及其引用的组件模型的 ID 组成。它们没有自己的属性;引用的组件模型将其关联属性提供给任何创建的资产。

以下各节说明如何在设计中使用自定义复合模型。

内联自定义复合模型

内联自定义复合模型提供了一种通过对相关属性进行分组来组织资产模型的方法。

例如,假设您要对机器人资产进行建模。该机器人包括伺服马达、电源和电池。这些组成部分中的每一个都有自己的属性,您要将其包含在模型中。您可以定义一个名为的资产模型robot_model,其属性如下所示。

  • robot_model

    • servo_status(整数)

    • servo_position(双)

    • powersupply_status(整数)

    • powersupply_temperature(双)

    • battery_status(整数)

    • battery_charge(双)

但是,在某些情况下,可能有许多子组件,或者子组件本身可能具有许多属性。在这些情况下,可能有太多的属性,以至于在模型根目录的单个平面列表中引用和维护它们变得很麻烦,就像前面的示例一样。

要处理此类情况,您可以使用内联自定义复合模型对属性进行分组。内联自定义复合模型是定义其自身属性的自定义复合模型。例如,你可以像下面这样对机器人进行建模。

  • robot_model

    • servo

      • status(整数)

      • position(双)

    • powersupply

      • status(整数)

      • temperature(双)

    • battery

      • status(整数)

      • charge(双)

在前面的示例中servopowersupply、和battery是在robot_model资产模型中定义的内联自定义复合模型的名称。然后,这些复合模型中的每一个都定义了自己的属性。

注意

在这种情况下,每个自定义复合模型都定义了自己的属性,因此所有属性都是资产模型本身的一部分(在本例robot_model中)。这些属性不会与任何其他资产模型或组件模型共享。例如,如果您创建了其他资产模型,其中也有一个名为的内联自定义复合模型servo,那么对servo内部进行更改robot_model不会影响其他资产模型的servo定义。

如果要实现这样的共享(例如,只有一个伺服系统的定义,所有资产模型都可以共享),则可以改为为其创建一个组件模型,然后创建引用它的component-model-based复合模型。有关详细信息,请参阅以下部分。

有关如何创建内联自定义复合模型的信息,请参见创建自定义复合模型(组件)

C omponent-model-based 自定义复合模型

可以在中创建元件模型 AWS IoT SiteWise 来定义标准的、可重复使用的子组件。创建组件模型后,可以在其他资产模型和组件模型中为其添加引用。为此,您可以将component-model-based 自定义复合模型添加到要引用该组件的任何模型中。您可以从多个模型中添加对元件的引用,也可以在同一个模型中多次添加引用。

通过这种方式,您可以避免在模型之间重复相同的定义。它还可以简化模型的维护,因为您对组件模型所做的任何更改都将反映在使用该模型的所有资产模型中。

例如,假设您的工业设备中有许多类型的设备都使用相同类型的伺服电机。其中一些在一台设备中就有许多伺服电机。您可以为每种设备类型创建资产模型,但不想servo每次都重复其定义。您只想对其建模一次,然后将其用于各种资产模型。如果您稍后更改的定义servo,则将在所有模型和资源中对其进行更新。

要以这种方式对前一个示例中的机器人进行建模,可以将伺服电动机、电源和电池定义为组件模型,如下所示。

  • servo_component_model

    • status(整数)

    • position(双)

  • powersupply_component_model

    • status(整数)

    • temperature(双)

  • battery__component_model

    • status(整数)

    • charge(双)

然后,您可以定义引用这些组件的资产模型robot_model,例如。多个资产模型可以引用同一个组件模型。您还可以在一个资产模型中多次引用同一个组件模型,例如,如果您的机器人中有多个伺服电机。

  • robot_model

    • servo1参考:servo_component_model

    • servo2参考:servo_component_model

    • servo3参考:servo_component_model

    • powersupply参考:powersupply_component_model

    • battery参考:battery_component_model

有关如何创建组件模型的信息,请参见创建组件模型

有关如何在其他模型中引用您的组件模型的信息,请参见创建自定义复合模型(组件)

使用路径引用自定义复合模型属性

在资产模型、组件模型或自定义复合模型上创建属性时,可以从使用其值的其他属性(例如变换指标)中引用该属性。

AWS IoT SiteWise 为您提供了不同的方式来引用您的房产。最简单的方法通常是使用其属性 ID。但是,如果您要引用的属性位于自定义复合模型上,则可能会发现改为按路径引用该属性会更有用。

路径是一个有序的路径段序列,它根据其在资产模型和复合模型中的嵌套复合模型中的位置来指定属性。

获取属性路径

你可以从属性的path字段中获取属性的路径AssetModelProperty

例如,假设您的资产模型robot_model包含一个具有属性的自定义复合模型servoposition。如果您调用 DescribeAssetModelCompositeModelservo,则该position属性将列出一个如下所示的path字段:

"path": [ { "id": "asset model ID", "name": "robot_model" }, { "id": "composite model ID", "name": "servo" }, { "id": "property ID", "name": "position" } ]

使用属性路径

在定义引用其他属性(例如转换或指标)的属性时,可以使用属性路径。

一个属性使用一个变量来引用另一个属性。有关使用变量的更多信息,请参阅在公式表达式中使用变量

在定义变量来引用属性时,可以使用该属性的 ID 或其路径。

要定义使用被引用属性路径的变量,请指定其值的propertyPath字段。

例如,要定义具有通过路径引用属性的指标的资产模型,可以将这样的负载传递给 CreateAssetModel

{ ... "assetModelProperties": [ { ... "type": { "metric": { ... "variables": [ { "name": "variable name", "value": { "propertyPath": [ path segments ] } } ], ... } }, ... }, ... ], ... }