亚马逊云科技精选博客
我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用 亚马逊云科技 IoT SiteWise 计算设备整体效率 (OEE)
简介
这篇博客文章代表了关于在
此外,我们将展示如何实现OEE元素的自动化,以简化该解决方案在许多其他用例中的实施,例如制药、食品和饮料行业的制造生产线。为了帮助您实践本博客中介绍的概念,我们还提供了一个代码存储库,允许您将合成数据流式传输到 亚马逊云科技 IoT SiteWise,从而使用此处提供的计算方法创建 OEE 控制面板。
用例
在深入研究 OEE 计算之前,让我们定义将用作参考框架的示例。我们的示例是 BHS,计算 OEE 所需的必要数据点是从旋转木马中的 BHS 上安装的硬件中收集的。硬件由四个传感器组成:两个用于电机监控的振动传感器,一个用于输送机监控的速度传感器,以及一个用于计算行李吞吐量的光电传感器。
该解决方案的架构如下所示:
传感器数据是通过
亚马逊云科技 IoT SiteWise 的先决条件
在向 亚马逊云科技 IoT SiteWise 发送数据之前,您必须
型号:旋转木马
资产名称:CarouseLasset
财产 {
测量:照片。距离
测量:speed.pdv1
测量:振动。温度
测量:振动、温度
}
除了测量值外,我们还将在资产模型中添加一些
型号:旋转木马
资产名称:CarouseLasset
财产 {
属性:序列号
属性:photo.distanceBase
属性:photo.distancetHold
属性:speed.max_speed_alarm
属性:speed.min_speed_alarm
属性:振动.max_temp_c_alarm
属性:理想运行速度_5_min
}
现在,让我们进入并创建代表机场 BHS 的旋转木马模型和资产。
打开左侧的导航菜单,选择 构建,模型 ,然后选择 创建模型 来定义该模型的属性和测量值:
有关创建资产模型的更多信息,请访问
计算 OEE
让我们来看看 OEE 的定义及其组成部分。
标准的 OEE 公式是:
Component | Formula |
Availability | Run_time/(Run_time + Down_time) |
Quality | Successes / (Successes + Failures) |
Performance | ((Successes + Failures) / Run_Time) / Ideal_Run_Rate |
OEE | Availability * Quality * Performance |
让我们来看看 BHS 的参数定义。有关 OEE 参数的完整描述,请访问
- Ideal_Run_Rate:在我们的例子中,理想的运行速率为 300 袋/小时,相当于 0.83333 袋/秒。该值取决于系统,应从制造商那里获得或基于现场观测性能。
可用性
可用性 = 运行时间/(运行时间 + 停机时间)
我们在BHS上有4个传感器,我们需要定义要在计算中包括传感器的哪些
正确操作的可接受值基于资产模型的以下属性。
振动。max_temp_c_alarm = 50
speed.min_speed_alarm = 28
speed.max_speed_alarm = 32
让我们定义一下 Equipment_State,一种以数字代码提供 BHS 当前状态的数据
24 — 机器处于空闲状态
1020 — 故障,例如系统异常运行、温度过高或速度值不在定义的正常范围内
1000 — 计划停止
1111 — 正常运行
在这个简化的用例中并未定义 BHS 的空闲状态,但是,可以将其他数据流集成到 亚马逊云科技 IoT SiteWise 中,并注册来自可编程逻辑控制器 (PLC) 或其他系统的信息,在这些系统中,由人工操作员决定系统是否处于空闲状态。
要添加转换,请前往 亚马逊云科技 SiteWise 控制台上的模型并选择 编辑。 滚动到转换定义并提供名称、数据类型(双精度),然后在相应的字段中输入以下公式:
设备状态 =
if ((speed.pdv1>speed.max_speed_alarm) 或 (speed.pdv1Vibration.max_temp_c_alarm) 或 (vibrationr.pdv1>vibration.max_temp_c_alarm) ,1000,1111)
在控制台中输入公式时,公式应如下所示。用户界面将提供建议,供您选择模型中已定义的属性和测量值来构建公式。
定义了 Equipment_State 后,创建以下派生变换以捕获 BHS 的不同状态。变换可以引用其他变换。
继续定义以下
Fault_Time = 状态时间(故障)— 计算机的总故障时间(以秒为单位)
STOP_Time = 状态时间(停止)— 计算机的总计划停止时间(以秒为单位)
Run_Time = 状态时间(正在运行)— 计算机正常运行的总时间(以秒为单位)。
停机时间 = 空闲时间 + 故障时间 + 停止时间 — 机器的总停机时间
模型的指标定义应如下所示:
质量
质量 = 成功/(成功+失败)
在这里,我们需要定义什么是成功和失败。在这种情况下,我们的生产单位是已计数的袋子,那么我们如何定义何时成功计算袋子,何时不成功计数呢?我们使用BHS的四个传感器提供的测量结果和数据。
通过观察光电传感器提供的距离来计算袋子,因此,当有物体通过波段时,传感器报告的距离将小于 “基本” 距离。这是计算通过行李的简单方法,但同时它容易出现多种情况,从而影响测量的准确性。
我们在质量计算中使用这些模型属性:
photo.distanceBase = 108
photo.distancetHold = 0.1
Photo.DistanceBase 是传感器在前面没有物体时报告的距离。该值可能需要定期校准和调整,振动和偏差等因素可能会导致误报。
Photo.distancetHold 用于定义传感器的灵敏度阈值,以避免将碎片或小物体(例如行李附件或皮带)计为普通行李。
然后,我们为行李数建立了两个变换:
Bag_Count = if(照片。距离 < photo.distanceBase1,,0)
Dubious_Bag_Count = i f (gt(Photo.distanceBase*,photo.distanceBase*(1-photo.distanceHold))和 lt(照片.distanceBase,photo.distanceBase *0.95)或(speed.pdv1>speed_speed_Alarm)或(photo.distance Base),1,0)
Bag_Count 将考虑通过光电传感器前面的所有行李,Dubious_Bag_Count 将在两种异常条件下将检测到的物体计为行李:
- 检测到的距离在基本距离的95%和90%之间;考虑到小物体和测量结果的极小变化,有由于振动而发生变化的迹象,或者传感器未正确安装。
- 当旋转木马的速度超过规定的极限时,传感器可能会错过计数旋转木马上距离过近的行李。
注意:上述条件是简单的规则,需要使用现场数据检查和分析正确的距离基数值和阈值,以获得更好的结果。
让我们将成功和失败定义为指标:
成功次数 = 总和(行李数)— 总和(Dubious_Bag_Count)
失败次数 = 总和(Dubious_Bag_Count)
最后,我们也可以将 OEE 可用性定义为指标:
质量 = 成功/(成功+失败)
请记住使用与所有其他指标定义相同的指标间隔。
性能
性能 =((成功次数 + 失败次数)/运行时间)/Ideal_Run_Rate
我们从质量计算中得出成功和失败,从可用性中得出 Run_Time。因此,我们只需要使用 Ideal_run_rate_5_min,在我们的系统中,它是 300 袋/小时 = 0.0833333 包/秒。
OEE 价值
有了可用性、质量和性能,我们着手定义 OEE 的最后一个指标。
OEE = 可用性 * 质量 * 性能
简化转换和指标定义
作为替代方案,可以以编程方式定义定义为转换和指标的 OEE 组件,而不必使用 亚马逊云科技 控制台。当存在涉及多个变量的复杂公式时,这尤其有用,例如 Equipment_State 和 Dubious_Bag_Count 变换;而且,与手动解决方案相比,自动解决方案不易出错,并且可以在多个环境中进行一致的配置。让我们来看看如何使用适用于
首先,确定您将在变换/指标计算中引用的测量值和属性属性 ID 以及模型 ID。
然后为指标/转换定义 JSON。例如,要创建新的变换来计算 BHS 的 Equipment_State,我们需要以下属性:
振动.max_temp_c_alarm
速度.max_speed_alarm
Speed.min_speed_alarm
以及以下测量值:
振动。温度
振动 r.温度
Speed.pdv1
按照此结构创建文件。记得替换 propertyID 并将其另存为 equipment_state.json:
{
"name": "Equipment_State",
"dataType": "DOUBLE",
"type": {
"transform": {
"expression": "if((var_speedpdv1>var_speedmax_speed_alarm) or (var_speedpdv1<var_speedmin_speed_alarm) or (var_vibrationltemperature>var_vibrationmax_temp_c_alarm) or (var_vibrationrtemperature>var_vibrationmax_temp_c_alarm),1020).elif(eq(var_speedpdv1,0),1000,1111)",
"variables": [
{
"name": "var_vibrationrtemperature",
"value": {
"propertyId": "b9554855-b50f-4b56-a5f2-572fbd1a8967"
}
},
{
"name": "var_vibrationltemperature",
"value": {
"propertyId": "e3f1c4e0-a05c-4652-b640-7e3402e8d6a1"
}
},
{
"name": "var_vibrationmax_temp_c_alarm",
"value": {
"propertyId": "f54e16fd-dd9f-46b4-b8b2-c411cdef79a2"
}
},
{
"name": "var_speedpdv1",
"value": {
"propertyId": "d17d07c7-442d-4897-911b-4b267519ae3d"
}
},
{
"name": "var_speedmin_speed_alarm",
"value": {
"propertyId": "7a927051-a569-41c0-974f-7b7290d7e73c"
}
},
{
"name": "var_speedmax_speed_alarm",
"value": {
"propertyId": "0897a3b4-1c52-4e80-80fc-0a632e09da7e"
}
}
]
}
}
}
主要表达式如下:
if ((var_speedpdv1>var_speedmax_speedmax_speedmax_speedmax_speed_speed_speed_c_alarm) 或 (var_vibrationmax_temp_c_alarm) ,1000,1111)
然后,运行以下脚本,传递模型 ID 和先前定义的文件名。
#python3 update_asset_model_sitewise.py --assetModelId [Asset Model ID] --property_file [JSON File defining the new property] --region [AWS Region]
脚本返回成功响应后,可以如前所述直接从 亚马逊云科技 控制台获取创建的新属性 ID,也可以使用 亚马逊云科技 CLI 查询更新的模型定义并使用
#aws iotsitewise describe-asset-model --asset-model-id [model ID] | jq .'assetModelProperties[] | select(.name=="Equipment_State_API")'.id
然后,您可以使用其他变换和指标重复该过程,以创建 OEE 计算所需的所有组件。
有关更新 亚马逊云科技 IoT SiteWise 资产模型的更多信息,请访问
结论
在这篇博客文章中,我们探讨了如何使用现实场景中的传感器数据来计算 OEE,并使用 亚马逊云科技 IoT SiteWise 原生功能从物理系统中获取有见地的信息。我们完成了识别可用数据的过程,定义了构成 OEE 主要元素的要素,即可用性、质量和性能,最后深入研究计算以及如何实现计算自动化。
作为行动号召,我们邀请您进一步阅读此处介绍的内容,将 OEE 计算过程应用于您自己的用例,并使用提供的自动化工具来简化和简化数据的创建,从而帮助准确监控您的工业系统。
如果您没有可用数据可供使用,我们鼓励您按照此