

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

# 了解接口与资产模型的关系
<a name="interface-asset-model-relationship"></a>

接口和资产模型在互补关系中协同工作：


**接口与资产模型**  

| 方面 | 接口 | 资产模型 | 
| --- | --- | --- | 
| 用途 | 定义标准并应用一致性 | 表示实物或逻辑资产 | 
| 资产创建 | 无法直接创建资产 | 用于创建资产 | 
| Properties | 定义必须在模型中实现的标准属性 | 可以具有界面应用和独特的特性 | 
| 指标 | 定义标准计算 | 实现接口指标并可以有其他指标 | 
| 层次结构 | 为汇总指标定义数据计算层次关系 | 为资产关联定义物理层次关系 | 

将接口应用于资产模型时：
+ 资产模型必须映射界面中定义的所有属性。
+ 属性映射定义了接口属性与资产模型属性的对应方式。
+ 映射的资产模型属性必须与其对应的接口属性保持同步，并且不能以可能导致两者之间不一致的方式进行修改。
+ 未映射的界面属性会在资产模型中自动创建。
+ 除了界面中定义的属性之外，资产模型还可以具有其他属性。
+ 资产模型实现了接口指标。对接口指标的更改会传播到使用该接口的所有资产模型。
+ 接口层次结构用于计算汇总指标。资产模型层次结构可以独立定义，服务将在计算汇总指标时自动映射它们。

这种关系确保了标准化，同时又提供了代表不同设备类型所需的灵活性。

## 标准化现有资产模型
<a name="interface-standardize-existing"></a>

虽然接口在从头开始设计新的资产模型时非常有价值，但在标准化可能随着时间的推移而独立演变的现有资产模型方面，它们同样强大。

在使用现有资产模型时，您可以应用接口来标准化指标和属性：

1. 确定现有资产模型中的常见指标和属性

1. 创建定义这些标准属性和指标的接口

1. 使用属性映射将接口应用于您现有的资产模型

1. 使用汇总指标汇总资产层次结构中的数据

例如，如果现有的 CNC 机床资产模型具有不同的属性名称但数据相似，例如`temp_celsius`、`temperature_c`、`machine_temp`)，则可以：

1. 使用标准化`Temperature-in-C`属性创建 `CNC-INTERFACE`

1. 将此接口应用于每个 CNC 资产模型，将现有温度属性映射到接口的`Temperature-in-C`属性

1. 在界面中定义汇总指标，用于计算所有计算机的统计数据（例如平均温度）

这种方法允许您维护现有的资产模型，同时获得标准化和简化的指标计算的好处。

## 层次关系
<a name="interface-asset-model-hierarchies"></a>

接口层次结构  
定义跨不同接口计算和聚合数据的关系。例如，在出厂设置中，接口层次结构可以连接不同级别的温度监控接口来计算平均温度。例如：机器、生产线和设施。当您定义汇总指标时`AverageTemperature`，接口层次结构决定了该指标如何将数据从较低级别聚合到更高级别。

资产模型层次结构  
代表您的资产的实际物理或逻辑结构。例如，数控机床资产模型可能是生产线资产模型的一部分，而生产线资产模型又属于工厂资产模型。这种层次结构反映了现实世界的关系，有助于以与资产的实际安排或业务结构相匹配的方式组织资产。与接口层次结构结合使用时，资产模型层次结构可帮助系统了解哪些资产应包含在汇总计算中。

这两种层次结构类型协同工作：接口层次结构定义如何计算聚合指标，而资产模型层次结构则定义应在这些计算中包括哪些特定资产。

## 接口指标和汇总计算
<a name="interface-metrics-integration"></a>

接口擅长定义可应用于不同资产模型的标准化指标。这对于汇总来自多个资产的数据的汇总指标特别有价值。

当您在界面中定义指标时，它们会自动应用于实现该接口的所有资产模型。这些指标可以引用界面中定义的属性，使用聚合函数计算跨资产的统计数据，并确保所有实现的资产模型的计算保持一致。例如，您可以在计算运行时间与总时间的比率的接口中定义可用性指标：

```
{
  "name": "Availability",
  "dataType": "DOUBLE",
  "type": {
    "metric": {
      "expression": "Running-time / (Running-time + Down-time) * 100",
      "variables": [
        {
          "name": "Running-time",
          "value": {
            "propertyId": "${Running-time}"
          }
        },
        {
          "name": "Down-time",
          "value": {
            "propertyId": "${Down-time}"
          }
        }
      ],
      "window": {
        "tumbling": {
          "interval": "1h"
        }
      }
    }
  },
  "unit": "Percent"
}
```

将此接口应用于多个资产模型时，即使基础属性名称不同（这要归功于属性映射），也会一致地计算所有资产模型的可用性指标。

有关定义指标和使用聚合函数的更多信息，请参阅[聚合来自属性和其他资产（指标）的数据](metrics.md)。

### 使用接口汇总指标
<a name="interface-rollup-metrics-subsection"></a>

接口还可以定义汇总指标，用于汇总层次结构中跨资产的数据。当您在界面中定义层次结构并将其应用于资产模型时，可以创建汇总子资产数据的指标。

例如，您可以定义一个指标来计算工厂中所有 CNC 机床的平均温度：

```
{
  "name": "AverageTemperature",
  "dataType": "DOUBLE",
  "type": {
    "metric": {
      "expression": "avg(Temperature-in-C)",
      "variables": [
        {
          "name": "Temperature-in-C",
          "value": {
            "propertyId": "${Temperature-in-C}",
            "hierarchyId": "${CNC-machines}"
          }
        }
      ],
      "window": {
        "tumbling": {
          "interval": "1h"
        }
      }
    }
  },
  "unit": "Celsius"
}
```

该指标使用`avg()`聚合函数来计算层次结构中所有 CNC 机床的平均温度。该`hierarchyId`参数指定要使用哪个层次结构进行聚合。

将此接口应用于资产模型时，汇总指标会自动聚合所有与层次结构映射相匹配的子资产的数据。