

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

# 计算 OEE Amazon IoT SiteWise
<a name="calculate-oee"></a>

本教程提供了一个示例，讲解如何计算制造过程的整体设备效率 (OEE)。因此，您的 OEE 计算或公式可能与此处显示的不同。通常，OEE 被定义为 `Availability * Quality * Performance`。要了解有关计算 OEE 的更多信息，请参阅*维基百科*上的[整体设备效率](https://en.wikipedia.org/wiki/Overall_equipment_effectiveness)。

## 先决条件
<a name="oee-requirements"></a>

要完成本教程，您必须为具有以下三个数据流的设备配置数据引入：
+ `Equipment_State` – 代表机器状态的数字代码，如闲置、故障、计划停止或正常运行。
+ `Good_Count` – 一个数据流，其中每个数据点都包含自上一个数据点以来的成功操作数。
+ `Bad_Count` – 一个数据流，其中每个数据点都包含自上一个数据点以来的不成功操作数。

要配置数据引入，请参阅[将数据摄取到 Amazon IoT SiteWise](industrial-data-ingestion.md)。如果您没有可用的工业运营，您可以编写一个脚本，通过 Amazon IoT SiteWise API 生成并上传示例数据。

## 如何计算 OEE
<a name="how-to-calculate-oee"></a>

在本教程中，您将创建一个资产模型，该模型通过三个数据输入流计算 OEE：`Equipment_State`、`Good_Count` 和 `Bad_Count`。在此示例中，请考虑通用包装机，如用于包装糖、薯片或油漆的包装机。在[Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)中，使用以下度量、转换和指标创建 Amazon IoT SiteWise 资产模型。然后，您可以创建一个资产来表示包装机器，并观察如何 Amazon IoT SiteWise 计算 OEE。

定义以下[测量值](measurements.md)来表示来自包装机的原始数据流。

**测量值**
+ `Equipment_State` – 以数字代码提供包装机当前状态的数据流（或测量值）：
  + `1024` – 机器处于闲置状态。
  + `1020` – 故障，如错误或延迟。
  + `1000` – 计划的停止。
  + `1111` – 正常运行。
+ `Good_Count` – 一个数据流，其中每个数据点都包含自上一个数据点以来的成功操作数。
+ `Bad_Count` – 一个数据流，其中每个数据点都包含自上一个数据点以来的不成功操作数。

使用 `Equipment_State` 测量数据流及其包含的代码，定义以下[转换](transforms.md)（或派生的测量值）。变换 one-to-one与原始测量值有关。

**转换**
+ `Idle = eq(Equipment_State, 1024)` – 包含机器闲置状态的转换后的数据流。
+ `Fault = eq(Equipment_State, 1020)` – 包含机器故障状态的转换后的数据流。
+ `Stop = eq(Equipment_State, 1000)` – 包含机器计划停止状态的转换后的数据流。
+ `Running = eq(Equipment_State, 1111)` – 包含机器正常运行状态的转换后的数据流。

使用原始测量值和转换的测量值，定义在指定时间间隔内聚合机器数据的以下[指标](metrics.md)。定义本节介绍的指标时，为每个指标选择相同的时间间隔。

**Metrics**
+ `Successes = sum(Good_Count)` – 在指定时间间隔内成功填充的包数。
+ `Failures = sum(Bad_Count)` – 在指定时间间隔内未成功填充的包数。
+ `Idle_Time = statetime(Idle)` – 机器在每个指定时间间隔内的总闲置时间（以秒为单位）。
+ `Fault_Time = statetime(Fault)` – 机器在每个指定时间间隔内的总故障时间（以秒为单位）。
+ `Stop_Time = statetime(Stop)` – 机器在每个指定时间间隔内的总计划停止时间（以秒为单位）。
+ `Run_Time = statetime(Running)` – 机器在每个指定时间间隔内的总正常运行时间（以秒为单位）。
+ `Down_Time = Idle_Time + Fault_Time + Stop_Time` – 机器在指定时间间隔内的总停机时间（以秒为单位），计算为除 `Run_Time` 以外的机器状态的时间总计。
+ `Availability = Run_Time / (Run_Time + Down_Time)` – 机器在指定时间间隔内可以运行的正常运行时间，或计划运行时间的百分比。
+ `Quality = Successes / (Successes + Failures)` – 机器在指定时间间隔内成功填充包的百分比。
+ `Performance = ((Successes + Failures) / Run_Time) / Ideal_Run_Rate` – 在指定时间间隔内，您的进程以超出理想运行速率（以秒为单位）的百分比表示的机器性能。

  例如，您的 `Ideal_Run_Rate` 可能是每分钟 60 个包（每秒 1 个包）。如果您的 `Ideal_Run_Rate` 以分钟或小时为单位，则需要除以适当的单位转换系数，因为 `Run_Time` 以秒为单位。
+ `OEE = Availability * Quality * Performance` – 机器在指定时间间隔内的整体设备效率。此公式将 OEE 计算为 1 的比例。

**注意**  
 如果将 OEE 定义为转换，则系统会针对每个输入值计算输出值。由于转换评估会使用公式中所有相关属性的最新可用值，因此可能会生成意想不到的值。对于具有相同时间戳的属性更新，输出值可能会被来自其他传入属性的更新所覆盖。例如，在计算可用性、质量和性能时，OEE 是基于其他两个属性的最新可用数据点计算的。这些用于计算的值共享时间戳，这就导致 OEE 的输出值出现错误。转换计算的顺序无法得到保证。