公司动态

使用 AWS IoT SiteWise 计算整体设备效率 (OEE) 上的物联网 官方博客

使用 AWS IoT SiteWise 计算整体设备有效性 (OEE)

关键要点

在这篇文章中,我们探讨了如何利用 AWS IoT SiteWise 的原生功能来计算整体设备有效性 (OEE),以便为工业系统提供洞察信息。我们将以机场的行李处理系统 (BHS) 为案例,深入分析 OEE 计算的各个步骤和实现自动化的方法。

介绍

本博客文章是使用整体设备有效性 (OEE) 与 AWS IoT SiteWise 的系列文章的第二篇。在此文中,我们将详细说明如何使用 AWS IoT SiteWise 的原生功能来收集、存储、转换和展示 OEE 计算,以实现端到端的解决方案。我们将以机场的行李处理系统 (BHS) 为案例,以便于阐明这个过程。请先阅读系列的第一部分,Industrial Overall Equipment Effectiveness (OEE) guide with AWS IoT SiteWise,以获取更全面的背景信息。

此外,我们还将演示如何自动化 OEE 相关的元素,以简化这一解决方案在其他许多用例中的实施,例如制药、食品和饮料产业的制造生产线。为帮助您将本文中介绍的概念付诸实践,我们还提供了一个代码仓库,您可以利用这个仓库将合成数据流送至 AWS IoT SiteWise,借此创建使用本文中介绍计算公式的 OEE 仪表板。

用例

在深入 OEE 计算之前,让我们定义我们将使用的例子作为参考框架。我们的例子是一个行李处理系统 (BHS),所需的 OEE 计算数据点来自于安装在 BHS 旋转盘上的硬件。该硬件包括四个传感器:两个用于电机监测的振动传感器,一个用于皮带监测的速度传感器,以及一个计数行李吞吐量的光电传感器。

解决方案的架构如下所示:

传感器数据通过 CloudRail,这是一家 AWS 合作伙伴,其解决方案大大简化了将 IIoT 数据收集和流式传输至 AWS IoT SiteWise 的过程。此集成可通过 CloudRail 管理门户 直接配置。该架构还包括其他组件,使传感器数据可供其他 AWS 服务通过 S3 存储桶访问。

AWS IoT SiteWise 前提条件

在将数据发送至 AWS IoT SiteWise 之前,您必须 创建一个模型 并定义其属性。如前所述,我们有四个传感器将合并为一个模型,包含以下测量来自设备的数据流:

模型:Carousel资产名称:CarouselAsset

属性 { 测量:PhotoDistance 测量:SpeedPDV1 测量:VibrationLTemperature 测量:VibrationRTemperature}

除了测量数据外,我们还将为资产模型添加一些 属性静态数据。这些属性代表了我们在 OEE 计算中需要的不同值。

模型:Carousel资产名称:CarouselAsset

属性 { 属性:SerialNumber 属性:PhotodistanceBase 属性:PhotodistanceThold 属性:Speedmaxspeedalarm 属性:Speedminspeedalarm 属性:Vibrationmaxtempcalarm 属性:IdealRunRate5min}

现在,让我们打开并创建代表机场 BHS 的 Carousel 模型和资产。

在左侧导航菜单中,选择 Build Models,然后选择 Create Model 来定义该模型的属性和测量:

有关创建资产模型的更多信息,请参阅 文档。

计算 OEE

让我们看看 OEE 的定义及其组成部分。

标准 OEE 公式为:

组件公式可用性Runtime/(Runtime Downtime)质量Successes / (Successes Failures)性能((Successes Failures) / RunTime) / IdealRunRateOEEAvailability Quality Performance

让我们看一下 BHS 的参数定义。有关 OEE 参数的完整描述,请访问 文档。

理想运行速率:在我们的案例中,理想运行速率为 300 袋/小时,相当于 083333 袋/秒。这个值取决于系统,应该从制造商处获得或基于现场观察性能。

可用性

可用性 = Runtime/(Runtime Downtime)

在 BHS 上我们有 4 个传感器,我们需要定义哪些 测量温度、振动等将被纳入计算之中。来自两个振动传感器的温度摄氏度以及来自速度传感器的旋转盘速度米/秒将决定可用性状态。

正常操作的可接受值基于资产模型的以下属性:

Vibrationmaxtempcalarm = 50Speedminspeedalarm = 28Speedmaxspeedalarm = 32

让我们定义 EquipmentState,一个数据 转换,它提供 BHS 当前状态的数值代码: 1024 机器处于空闲状态 1020 出现故障,例如系统异常运转、高温或速度值不在正常范围 1000 计划停机 1111 正常运行

在这个简化的用例中并未定义 BHS 的空闲状态,然而,可以集成其他数据流到 AWS IoT SiteWise,并记录来自可编程逻辑控制器 (PLC) 或其他系统的信息,供人工操作员判断系统是否空闲。

要添加转换,请在 AWS IoT SiteWise 控制台中访问模型并选择 Edit。向下滚动到转换定义,提供名称、数据类型Double并在相应字段中输入以下公式:

Equipmentstate =if((SpeedPDV1 gtSpeedmaxspeedalarm) or (SpeedPDV1ltSpeedminspeedalarm)or (VibrationLTemperaturegtVibrationmaxtempcalarm) or(VibrationRtemperaturegtVibrationmaxtempcalarm)1020)elif(eq(SpeedPDV10)10001111)

使用 AWS IoT SiteWise 计算整体设备效率 (OEE) 上的物联网  官方博客

输入公式后,监控界面将提供建议,供您选择模型中已定义的属性和测量来构建公式。

定义 EquipmentState 后,创建以下衍生转换以捕获 BHS 的不同状态。转换可以引用其他转换。

继续定义以下 度量,以聚合机器数据。保持每个度量的时间间隔相同。

FaultTime = statetime(Fault) 机器的故障总时间以秒为单位StopTime = statetime(Stop) 机器的计划停机总时间以秒为单位RunTime = statetime(Running) 机器在没有问题时的总运行时间以秒为单位DownTime = IdleTime FaultTime StopTime 机器的总停机时间

以下是模型的度量定义示例:

质量

质量 = Successes / (Successes Failures)

鲸鱼加速器下载时间

在这里,我们需要定义什么构成成功与失败。在这种情况下,我们的生产单位是一个被计数的行李包,所以我们如何定义一个行李什么时候被成功计数,什么时候未被计数呢?我们使用来自 BHS 的四个传感器提供的测量和数据。

行李的计数是通过监测光电传感器提供的距离进行的,因此,当有物体经过传送带时,该传感器会报告的距离将小于“基准”距离。这是一种简单的计算行李通过量的方法,但同时也容易受到多种条件的影响,从而影响测量的准确性。

我们在质量计算中使用以下模型属性:

PhotodistanceBase = 108PhotodistanceThold = 01

PhotodistanceBase 是传感器报告的距离,此时前面没有物体。这个值可能需要定期校准和调整,振动和偏移等因素可能导致误计数。PhotodistanceThold 用于定义传感器的灵敏度阈值,以避免将杂物或小物体如行李附件或传送带计为正常行李。

接着我们建立两个用于计数行李的转换:

BagCount = if(PhotoDistance lt PhotodistanceBase10)DubiousBagCount = if((gt(PhotoDistancePhotodistanceBase(1PhotodistanceThold)) and lt(PhotoDistancePhotodistanceBase095)) or (SpeedPDV1 gtSpeedmaxspeedalarm) or (PhotoDistancegtPhotodistanceBase)10)

Bagcount 将计数所有经过光电传感器的行李,而 DubiousBagCount 将在两种异常条件下计数被检测为行李的物体:

检测到的距离在基线距离的 95 和 90 范围内,考虑到小物体和测量的微小变化,可能是由于振动或传感器未正确固定而导致的指示。计数当旋转盘速度超出定义限制的行李;在这种情况下,传感器可能会漏计相邻靠得太近的行李包。

注意:上述条件是简单规则,基线距离和阈值的正确值需要结合现场数据进行审阅和分析,以寻求更好的结果。

接下来我们将成功与失败定义为度量:

Successes = sum(BagCount) sum(DubiousBagCount)Failures = sum(DubiousBagCount)

最后,我们还将 OEE 可用性定义为度量:

Quality = Successes / (Successes Failures)

记得在所有其他度量定义中使用相同的度量时间间隔。

性能

性能 = ((Successes Failures) / RunTime) / IdealRunRate

我们从质量计算中得到了 Successes 和 Failures,以及来自可用性的 RunTime。因此,我们唯一需要的就是理想运行速率 IdealRunRate5min,在我们的系统中为 300 袋/小时,即 00833333 袋/秒。

OEE 值

有了可用性、质量和性能,我们接下来定义 OEE 的最后一个度量。

OEE = Availability Quality Performance

简化转换和度量定义

作为一种替代方案,OEE 组件可以通过编程方式而非直接使用 AWS 控制台进行定义。这在涉及多个变量的复杂公式例如 EquipmentState 和 DubiousBagCount 转换时特别有用;此外,自动化解决方案比手动解决方案更不容易出错,并且可以在多个环境中一致配置。让我们看看如何使用 AWS SDK for Python (Boto3) 来实现。

首先,识别您将在转换/度量计算中引用的测量和属性的属性 ID,以及模型 ID。

然后定义度量/转换的 JSON。例如,要创建一个新的转换以计算 BHS 的 EquipmentState,我们需要以下属性:

VibrationmaxtempcalarmSpeedmaxspeedalarmSpeedminspeedalarm

以及以下测量:

VibrationLTemperatureVibrationRTemperatureSpeedPDV1

创建一个遵循此结构的文件。记得替换 propertyIds,并将其保存为 equipmentstatejson:

json{ name EquipmentState dataType DOUBLE type { transform { expression if((varspeedpdv1gtvarspeedmaxspeedalarm) or (varspeedpdv1ltvarspeedminspeedalarm) or (varvibrationltemperaturegtvarvibrationmaxtempcalarm) or (varvibrationrtemperaturegtvarvibrationmaxtempcalarm)1020)elif(eq(varspeedpdv10)10001111) variables [ { name varvibrationrtemperature value { propertyId b9554855b50f4b56a5f2572fbd1a8967 } } { name varvibrationltemperature value { propertyId e3f1c4e0a05c4652b6407e3402e8d6a1 } } { name varvibrationmaxtempcalarm value { propertyId f54e16fddd9f46b4b8b2c411cdef79a2 } } { name varspeedpdv1 value { propertyId d17d07c7442d4897911b4b267519ae3d } } { name varspeedminspeedalarm value { propertyId 7a927051a56941c0974f7b7290d7e73c } } { name varspeedmaxspeedalarm value { propertyId 0897a3b41c524e8080fc0a632e09da7e } } ] } }}

主表达式如下:

if((varspeedpdv1 gtvarspeedmaxspeedalarm) or(varspeedpdv1ltvarspeedminspeedalarm) or(varvibrationltemperaturegtvarvibrationmaxtempcalarm) or(varvibrationrtemperaturegtvarvibrationmaxtempcalarm)1020)elif(eq(varspeedpdv10)10001111)

获取 updateassetmodelsitewisepy 脚本及更多关于如何将数据流送至 AWS IoT SiteWise 的信息,请访问 此处 的公共仓库。

然后,运行以下脚本并传入模型 ID 和先前定义的文件名。

bash

python3 updateassetmodelsitewisepy assetModelId [资产模型 ID] propertyfile [定义新属性的 JSON 文件] region [AWS 区域]

在脚本返回成功响应后,可以直接从 AWS 控制台获取创建的新属性 ID,或者使用 AWS CLI 查询更新的模型定义,并使用 jq 工具过滤结果。

bash

aws iotsitewise describeassetmodel assetmodelid [模型 ID] jq assetModelProperties[]