

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

# 在中创建资产模型 AWS IoT SiteWise
<a name="create-asset-models"></a>

AWS IoT SiteWise 资产模型推动工业数据的标准化。资产模型包含名称、描述、资产属性和资产层次结构定义。例如，您可以使用温度、每分钟旋转次数 (RPM) 和功率属性来定义风力涡轮机模型。然后，可以使用净功率输出属性和风力涡轮机层次结构定义来定义风电场模型。

**注意**  
我们建议您从最低级别的节点开始对运营进行建模。例如，在创建风电场模型之前创建风力涡轮机模型。资产层次结构定义包含对现有资产模型的引用。通过这种方法，您可以在创建模型时定义资产层次结构。
资产模型无法包含其他资产模型。如果必须定义一个可以在另一个模型中作为子装配件引用的模型，则应改为创建一个组件--> 模型。有关更多信息，请参阅 [创建组件模型](create-component-models.md)。

以下各节介绍如何使用 AWS IoT SiteWise 控制台或 API 创建资产模型。以及可用于创建模型的不同类型的资产属性和资产层次结构。

**Topics**
+ [

## 创建资产模型（控制台）
](#create-asset-model-console)
+ [

## 创建资产模型（AWS CLI）
](#create-asset-model-cli)
+ [

## 资产模型示例
](#asset-model-examples)
+ [

# 定义资产模型层次结构
](define-asset-hierarchies.md)

## 创建资产模型（控制台）
<a name="create-asset-model-console"></a>

您可以使用 AWS IoT SiteWise 控制台创建资产模型。 AWS IoT SiteWise 控制台提供各种功能，例如公式 auto 补全，可以帮助您定义有效的资产模型。

**创建资产模型（控制台）**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-models"></a>在导航窗格中，选择**模型**。

1. 选择 “**创建资产模型**”。

1. 在 **创建模型** 页面上，执行以下操作：

   1. 为资产模型输入 **名称**，例如 **Wind Turbine** 或 **Wind Turbine Model**。此名称对于您账户在此区域的所有模型都必须是唯一的。

   1. （可选）为模型添加**外部 ID**。这是用户定义的 ID。有关更多信息，请参阅《AWS IoT SiteWise 用户指南》**中的 [使用外部引用对象 IDs](object-ids.md#external-id-references)。

   1. （可选）为模型添加 **测量值定义**。测量值代表来自您的设备的数据流。有关更多信息，请参阅 [定义来自设备的数据流（测量值）](measurements.md)。

   1. （可选）为模型添加 **转换定义**。转换是将数据从一种表单映射到另一种表单的公式。有关更多信息，请参阅 [转换数据（转换）](transforms.md)。

   1. （可选）为模型添加 **指标定义**。指标是按时间间隔汇总数据的公式。指标可以从关联资产的指标中输入数据，这样您可以计算统计信息，从而提供对整个操作或部分操作的见解。有关更多信息，请参阅 [聚合来自属性和其他资产（指标）的数据](metrics.md)。

   1. （可选）为模型添加 **层次结构定义**。层次结构是资产之间的关系。有关更多信息，请参阅 [定义资产模型层次结构](define-asset-hierarchies.md)。

   1. （可选）为资产模型添加标签。有关更多信息，请参阅 [标记您的 AWS IoT SiteWise 资源](tag-resources.md)。

   1. 选择**创建模型**。

   创建资产模型时， AWS IoT SiteWise 控制台会导航到新模型的页面。在此页面上，您可以查看模型的 **状态**，最初为 **创建**。此页面会自动更新，因此您可以等待模型的状态更新。
**注意**  
复杂模型的资产模型创建流程最多可能需要几分钟时间。在资产模型状态为**活动**后，您可以使用资产模型创建资产。有关更多信息，请参阅 [资产和模型状态](asset-and-model-states.md)。

1. 或者，创建资产模型后，您可以将资产模型配置为边缘。有关 SiteWise Edge 的更多信息，请参阅[在 Edge 上配置 AWS IoT SiteWise 边缘功能](edge-data-collection-and-processing.md)。

   1. 在模型页面上，选择**针对边缘进行配置**。
**注意**  
新客户无法再使用数据处理包（DPP）功能。现有客户可以继续正常使用该服务。有关更多信息，请参阅[数据处理包可用性变更](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html)。

   1. 在模型配置页面上，为您的模型选择边缘配置。这控制了 AWS IoT SiteWise 可以在何处计算和存储与此资产模型关联的属性。有关配置边缘模型的更多信息，请参阅 [在 Edge 中 SiteWise 设置 OPC UA 来源](configure-opcua-source.md)。

   1. 对于**自定义边缘配置**，请选择 AWS IoT SiteWise 要计算和存储每个资产模型属性的位置。
**注意**  
必须为同一位置配置关联的转换和指标。有关配置边缘模型的更多信息，请参阅 [在 Edge 中 SiteWise 设置 OPC UA 来源](configure-opcua-source.md)。

   1. 选择**保存**。在模型页面上，您的**边缘配置**现在应该为**已配置**。

## 创建资产模型（AWS CLI）
<a name="create-asset-model-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 来创建资产模型。

使用 [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) 操作创建具有属性和层次结构的资产模型。此操作需要具有以下结构的负载。

```
{
  "assetModelType": "ASSET_MODEL",
  "assetModelName": "String",
  "assetModelDescription": "String",
  "assetModelProperties": Array of AssetModelProperty,
  "assetModelHierarchies": Array of AssetModelHierarchyDefinition
}
```

**要创建资产模型（AWS CLI），请执行以下操作：**

1. 创建一个名为 `asset-model-payload.json` 的文件，然后将以下 JSON 对象复制到该文件中。

   ```
   {
     "assetModelType": "ASSET_MODEL",
     "assetModelName": "",
     "assetModelDescription": "",
     "assetModelProperties": [
   
     ],
     "assetModelHierarchies": [
   
     ],
     "assetModelCompositeModels": [
   
     ]
   }
   ```

1. 使用首选的 JSON 文本编辑器编辑 `asset-model-payload.json` 文件的以下内容：

   1. 输入资产模型的名称 (`assetModelName`)，如 **Wind Turbine** 或 **Wind Turbine Model**。此名称对于您账户在此 AWS 区域的所有资产模型和组件模型都必须是唯一的。

   1. （可选）输入该资产模型的外部 ID（`assetModelExternalId`）。这是用户定义的 ID。有关更多信息，请参阅《AWS IoT SiteWise 用户指南》**中的 [使用外部引用对象 IDs](object-ids.md#external-id-references)。

   1. （可选）输入资产模型的说明（`assetModelDescription`），或删除 `assetModelDescription` 键/值对。

   1. （可选）定义模型的资产属性 (`assetModelProperties`)。有关更多信息，请参阅 [定义数据属性](asset-properties.md)。

   1. （可选）定义模型的资产层次结构 (`assetModelHierarchies`)。有关更多信息，请参阅 [定义资产模型层次结构](define-asset-hierarchies.md)。

   1. （可选）为模型定义警报。警报会监控其他特性，以便您可以识别何时需要注意设备或流程。每个警报定义都是一个复合模型 (`assetModelCompositeModels`)，用于标准化警报使用的属性集。有关更多信息，请参阅[使用警报监控数据 AWS IoT SiteWise](industrial-alarms.md)和[在中定义资产模型的警报 AWS IoT SiteWise](define-alarms.md)。

   1. （可选）为资产模型添加标签（`tags`）。有关更多信息，请参阅 [标记您的 AWS IoT SiteWise 资源](tag-resources.md)。

1. 运行以下命令，根据 JSON 文件中的定义创建资产模型。

   ```
   aws iotsitewise create-asset-model --cli-input-json file://asset-model-payload.json
   ```

   此操作将返回包含您在创建资产时引用的 `assetModelId` 的响应。响应中还包含模型的状态（`assetModelStatus.state`），最初为 `CREATING`。在传播更改之前，资产模型的状态为 `CREATING`。
**注意**  
复杂模型的资产模型创建流程最多可能需要几分钟时间。要检查资产模型的当前状态，请[DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)通过指定`assetModelId`。在资产模型状态为 `ACTIVE` 后，您可以使用资产模型创建资产。有关更多信息，请参阅 [资产和模型状态](asset-and-model-states.md)。

1. （可选）为您的资产模型创建自定义复合模型。借助自定义复合模型，您可以在模型内对属性进行分组，也可以通过引用组件模型来包含子装配件。有关更多信息，请参阅 [创建自定义复合模型（组件）](create-custom-composite-models.md)。

## 资产模型示例
<a name="asset-model-examples"></a>

本节包含资产模型定义示例，您可以使用这些示例使用 AWS CLI 和创建资产模型 AWS IoT SiteWise SDKs。这些资产模型代表风力涡轮机和风电场。风力涡轮机资产会摄取原始传感器数据并计算功率和平均风速等值。风电场资产计算诸如风电场中所有风力涡轮机的总功率之类的值。

**Topics**
+ [

### 风力涡轮机资产模型
](#example-wind-turbine)
+ [

### 风电场资产模型
](#example-wind-farm)

### 风力涡轮机资产模型
<a name="example-wind-turbine"></a>

以下资产模型表示风电场中的涡轮机。风力涡轮机摄取传感器数据来计算功率和平均风速等值。

**注意**  
此示例模型类似于 AWS IoT SiteWise 演示中的风力涡轮机模型。有关更多信息，请参阅 [使用演 AWS IoT SiteWise 示](getting-started-demo.md)。

```
{
  "assetModelType": "ASSET_MODEL",
  "assetModelName": "Wind Turbine Asset Model",
  "assetModelDescription": "Represents a turbine in a wind farm.",
  "assetModelProperties": [
    {
      "name": "Location",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Renton"
        }
      }
    },
    {
      "name": "Make",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Amazon"
        }
      }
    },
    {
      "name": "Model",
      "dataType": "INTEGER",
      "type": {
        "attribute": {
          "defaultValue": "500"
        }
      }
    },
    {
      "name": "Torque (KiloNewton Meter)",
      "dataType": "DOUBLE",
      "unit": "kNm",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "Wind Direction",
      "dataType": "DOUBLE",
      "unit": "Degrees",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "RotationsPerMinute",
      "dataType": "DOUBLE",
      "unit": "RPM",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "Wind Speed",
      "dataType": "DOUBLE",
      "unit": "m/s",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "RotationsPerSecond",
      "dataType": "DOUBLE",
      "unit": "RPS",
      "type": {
        "transform": {
          "expression": "rpm / 60",
          "variables": [
            {
              "name": "rpm",
              "value": {
                "propertyId": "RotationsPerMinute"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Overdrive State",
      "dataType": "DOUBLE",
      "type": {
        "transform": {
          "expression": "gte(torque, 3)",
          "variables": [
            {
              "name": "torque",
              "value": {
                "propertyId": "Torque (KiloNewton Meter)"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Average Power",
      "dataType": "DOUBLE",
      "unit": "Watts",
      "type": {
        "metric": {
          "expression": "avg(torque) * avg(rps) * 2 * 3.14",
          "variables": [
            {
              "name": "torque",
              "value": {
                "propertyId": "Torque (Newton Meter)"
              }
            },
            {
              "name": "rps",
              "value": {
                "propertyId": "RotationsPerSecond"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Average Wind Speed",
      "dataType": "DOUBLE",
      "unit": "m/s",
      "type": {
        "metric": {
          "expression": "avg(windspeed)",
          "variables": [
            {
              "name": "windspeed",
              "value": {
                "propertyId": "Wind Speed"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Torque (Newton Meter)",
      "dataType": "DOUBLE",
      "unit": "Nm",
      "type": {
        "transform": {
          "expression": "knm * 1000",
          "variables": [
            {
              "name": "knm",
              "value": {
                "propertyId": "Torque (KiloNewton Meter)"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Overdrive State Time",
      "dataType": "DOUBLE",
      "unit": "Seconds",
      "type": {
        "metric": {
          "expression": "statetime(overdrive_state)",
          "variables": [
            {
              "name": "overdrive_state",
              "value": {
                "propertyId": "Overdrive State"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    }
  ],
  "assetModelHierarchies": []
}
```

### 风电场资产模型
<a name="example-wind-farm"></a>

以下资产模型表示由多台风力涡轮机组成的风电场。该资产模型定义了风力涡轮机模型的[层次结构](define-asset-hierarchies.md)。这使风电场能够根据风电场中所有风力涡轮机的数据计算值（例如平均功率）。

**注意**  
此示例模型类似于 AWS IoT SiteWise 演示中的风力发电场模型。有关更多信息，请参阅 [使用演 AWS IoT SiteWise 示](getting-started-demo.md)。

此资产模型依赖于[风力涡轮机资产模型](#example-wind-turbine)。将 `propertyId` 和 `childAssetModelId` 值替换为现有风力涡轮机资产模型中的对应值。

```
{
  "assetModelName": "Wind Farm Asset Model",
  "assetModelDescription": "Represents a wind farm.",
  "assetModelProperties": [
    {
      "name": "Code",
      "dataType": "INTEGER",
      "type": {
        "attribute": {
          "defaultValue": "300"
        }
      }
    },
    {
      "name": "Location",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Renton"
        }
      }
    },
    {
      "name": "Reliability Manager",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Mary Major"
        }
      }
    },
    {
      "name": "Total Overdrive State Time",
      "dataType": "DOUBLE",
      "unit": "seconds",
      "type": {
        "metric": {
          "expression": "sum(overdrive_state_time)",
          "variables": [
            {
              "name": "overdrive_state_time",
              "value": {
                "propertyId": "ID of Overdrive State Time property in Wind Turbine Asset Model",
                "hierarchyId": "Turbine Asset Model"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Total Average Power",
      "dataType": "DOUBLE",
      "unit": "Watts",
      "type": {
        "metric": {
          "expression": "sum(turbine_avg_power)",
          "variables": [
            {
              "name": "turbine_avg_power",
              "value": {
                "propertyId": "ID of Average Power property in Wind Turbine Asset Model",
                "hierarchyId": "Turbine Asset Model"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    }
  ],
  "assetModelHierarchies": [
    {
      "name": "Turbine Asset Model",
      "childAssetModelId": "ID of Wind Turbine Asset Model"
    }
  ]
}
```

# 定义资产模型层次结构
<a name="define-asset-hierarchies"></a>

您可以定义资产模型层次结构，以便在工业运营中的资产模型之间创建逻辑关联。例如，您可以定义由陆上和海上风电场组成的风电场。陆上风电场包含涡轮机和陆上位置。海上风电场包含涡轮机和海上位置。

![\[AWS IoT SiteWise 资产模型之间的风电场层次结构。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/asset-model-hierarchies.png)


当您通过层次将子资产模型与父资产模型关联时，父资产模型的指标可以从子资产模式的指标输入数据。您可以使用资产模型层次结构和指标来计算统计信息，从而提供对整个操作或部分操作的见解。有关更多信息，请参阅 [聚合来自属性和其他资产（指标）的数据](metrics.md)。

每个层次结构定义父资产模型和子资产模型之间的关系。在父资产模型中，您可以为同一个子资产模型定义多个层次结构。例如，如果您的风电场中有两种不同类型的风力涡轮机，其中所有风力涡轮机都由相同的资产模型表示，则可以为每种类型定义一个层次结构。然后，您可以在风电场模型中定义指标，以计算每种风力涡轮机的独立和组合统计数据。

一个父资产模型可以与多个子资产模型相关联。例如，如果您的陆上风电场和海上风电场由两种不同的资产模型表示，则可以将这些资产模型与相同的父风电场资产模型关联起来。

子资产模型也可以与多个父资产模型相关联。例如，如果您有两种不同类型的风电场，其中所有风力涡轮机都由相同的资产模型表示，则可以将风力涡轮机资产模型与不同的风电场资产模型相关联。

**注意**  
定义资产模型层次结构时，子资产模型必须是 `ACTIVE` 或具有之前的 `ACTIVE` 版本。有关更多信息，请参阅 [资产和模型状态](asset-and-model-states.md)。

定义分层资产模型并创建资产后，您可以关联资产以完成父子关系。有关更多信息，请参阅[在中为资产模型创建资产 AWS IoT SiteWise](create-assets.md)和[关联资产和取消关联资产](add-associated-assets.md)。

**Topics**
+ [

## 定义资产模型层次结构（控制台）
](#define-asset-hierarchies-console)
+ [

## 定义资产层次结构（AWS CLI）
](#define-asset-hierarchies-cli)

## 定义资产模型层次结构（控制台）
<a name="define-asset-hierarchies-console"></a>

在 AWS IoT SiteWise 控制台中为资产模型定义层次结构时，需要指定以下参数：
+ **层次结构名称** – 层次结构的名称，如 **Wind Turbines**。
+ **层次模型** – 子资产模型。
+ **层次结构外部 ID**（可选）- 这是用户定义的 ID。有关更多信息，请参阅《AWS IoT SiteWise 用户指南》**中的 [使用外部引用对象 IDs](object-ids.md#external-id-references)。

有关更多信息，请参阅 [创建资产模型（控制台）](create-asset-models.md#create-asset-model-console)。

## 定义资产层次结构（AWS CLI）
<a name="define-asset-hierarchies-cli"></a>

使用 AWS IoT SiteWise API 为资产模型定义层次结构时，需要指定以下参数：
+ `name` – 层次结构的名称，如 **Wind Turbines**。
+ `childAssetModelId` – 层次结构的子资产模型的 ID 或外部 ID。您可以使用该[ListAssetModels](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html)操作来查找现有资产模型的 ID。

**Example 层次结构定义示例**  
以下示例演示一个表示风电场与风力涡轮机的关系的资产模型层次结构。此对象就是一个示例[AssetModelHierarchy](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelHierarchy.html)。有关更多信息，请参阅 [创建资产模型（AWS CLI）](create-asset-models.md#create-asset-model-cli)。  

```
{
  ...
  "assetModelHierarchies": [
    {
      "name": "Wind Turbines",
      "childAssetModelId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE"
    },
  ]
}
```