5.7 C
New York
Saturday, March 2, 2024

Calculating General Gear Effectiveness (OEE) with AWS IoT SiteWise


This weblog submit represents the second entry in a collection on utilizing General Gear Effectiveness (OEE) with AWS IoT SiteWise. On this submit, we are going to do a deep dive on easy methods to calculate OEE utilizing AWS IoT SiteWise native capabilities to gather, retailer, rework, and show calculations as an end-to-end answer. We’ll take a look at a Baggage Dealing with System (BHS) positioned at an airport as a use case for example the method.  Please, first learn half 1 of this collection, Industrial General Gear Effectiveness (OEE) information with AWS IoT SiteWise, for extra context on the use case.

Moreover, we are going to present how one can automate OEE components to streamline the implementation of this answer in lots of different use instances, like manufacturing manufacturing strains in pharmaceutical, meals and beverage industries. That will help you put into apply the ideas introduced on this weblog, we additionally present a code repository that permits you to stream artificial knowledge to AWS IoT SiteWise to create an OEE dashboard utilizing the calculations introduced right here.

Use case

Earlier than diving deep into the OEE calculations, let’s outline the instance we will probably be utilizing as a body of reference. Our instance is a BHS and the mandatory knowledge factors for an OEE calculation are gathered from the put in {hardware} on the BHS within the carousel.  The {hardware} consists of 4 sensors: two vibration sensors for motor monitoring, one velocity sensor for conveyor surveillance, and one picture electrical sensor counting the bags throughput.

The structure of the answer is as follows:

Data Ingestion Reference Architecture
Sensor knowledge is collected and formatted through CloudRail, an AWS Accomplice whose answer drastically simplifies the gathering and streaming of IIoT knowledge to AWS IoT SiteWise. This integration is configurable via the CloudRail administration Portal straight.  The structure consists of further parts for making the sensor knowledge accessible to different AWS companies via an S3 bucket.

AWS IoT SiteWise pre-requisites

Earlier than sending knowledge to AWS IoT SiteWise, you need to create a mannequin and outline its properties.  As talked about earlier, we have now 4 sensors that will probably be grouped into one mannequin, with the next measurements (knowledge streams from gear):


Asset Identify: CarouselAsset

Property {

Measurement: Photograph.Distance

Measurement: Pace.PDV1

Measurement: VibrationL.Temperature

Measurement: VibrationR.Temperature


Along with the measurements, we are going to add a couple of attributes (static knowledge) to the asset mannequin. The attributes characterize completely different values that we want within the OEE calculations.


Asset Identify: CarouselAsset

Property {

Attribute: SerialNumber

Attribute: Photograph.distanceBase

Attribute: Photograph.distanceThold

Attribute: Pace.max_speed_alarm

Attribute: Pace.min_speed_alarm

Attribute: Vibration.max_temp_c_alarm

Attribute: Ideal_Run_Rate_5_min


Now, let’s go to the and create the Carousel mannequin and asset that characterize the airport BHS.

Open the navigation menu on the left, select Construct, Fashions, after which select Create Mannequin to outline the attributes and measurements for this mannequin:

IoT SiteWise Model creation

For extra data on creating asset fashions go to the documentation.

Calculating OEE

Let’s check out the OEE definition and its parts.

The usual OEE system is:

Part Components
Availability Run_time/(Run_time + Down_time)
High quality Successes / (Successes + Failures)
Efficiency ((Successes + Failures) / Run_Time) / Ideal_Run_Rate
OEE Availability * High quality * Efficiency

Let’s take a look at the parameter definition for the BHS. For a full description of OEE parameters please go to the documentation.

  • Ideal_Run_Rate:  In our case, the perfect run fee is 300 luggage/hour, which is equal to 0.83333 luggage/second. This worth depends upon the system and ought to be obtained from the producer or primarily based on discipline statement efficiency.


Availability = Run_time/(Run_time + Down_time)

We’ve got 4 sensors on the BHS and we have to outline what measurements (temperature, vibration, and so forth.) from the sensors we need to embody within the calculation.  The temperature coming from the 2 vibration sensors (in Celsius) and the velocity of the carousel coming from the velocity sensor (m/s) will dictate the provision state.

The appropriate values for proper operation are primarily based on the next attributes of the Asset Mannequin.

Vibration.max_temp_c_alarm = 50

Pace.min_speed_alarm = 28

Pace.max_speed_alarm = 32

Let’s outline Equipment_State, an information rework that gives the present state of the BHS in numerical code:
1024 – The machine is idle
1020 – A fault, like an irregular operation of the system, excessive temperature or a velocity worth not throughout the regular vary outlined
1000 – A deliberate cease
1111 – A traditional operation

The idle state of the BHS is just not outlined on this simplified use case, nonetheless, it’s doable to combine different knowledge streams into AWS IoT SiteWise and register data coming from Programmable Logic Controllers (PLCs) or different methods the place a human operator dictates if the system is idle or not.

So as to add a rework, go to the mannequin on the AWS IoT SiteWise console and select Edit. Scroll to the rework definitions and supply a Identify, Information kind (Double) and enter the next system on the respective discipline:

Equipment_state =

if((Pace.PDV1>Pace.max_speed_alarm) or (Pace.PDV1<Pace.min_speed_alarm) or (VibrationL.Temperature>Vibration.max_temp_c_alarm) or (VibrationR.temperature>Vibration.max_temp_c_alarm),1020).elif(eq(Pace.PDV1,0),1000,1111)

Equipment state transform definition for OEE calculation

The system ought to appear to be this as you enter it within the console. The UI will carry recommendations so that you can choose attributes and measurements already outlined within the mannequin to construct the system.

Complete formula for equipment state

As soon as Equipment_State is outlined, create the next derived transforms to seize the completely different states of the BHS. Transforms can reference different transforms.

Defining other transforms for OEE calculation

Proceed to outline the next metrics to combination machine knowledge over time. Preserve the identical interval for every metric.

Fault_Time = statetime(Fault) – The machine’s whole fault time (in seconds)

Stop_Time = statetime(Cease) – The machine’s whole deliberate cease time (in seconds)

Run_Time = statetime(Working) – The machine’s whole time (in seconds) working with out difficulty.

Down_Time = Idle_Time + Fault_Time + Stop_Time – The machine’s whole downtime

The metric definitions of the mannequin ought to appear to be this:

Metric Definitions - OEE Availability

High quality

High quality = Successes / (Successes + Failures)

Right here, we have to outline what constitutes a hit and a failure. On this case our unit of manufacturing is a counted bag, so how will we outline when a bag is counted efficiently and when it’s not?  we use the measurements and knowledge which might be accessible from the BHS’s 4 sensors.

The baggage are counted by trying on the distance the picture electrical sensor is offering, due to this fact when there’s an object passing the band, the sensor will report a distance that’s much less that the “base” distance. This can be a easy approach to calculate the luggage passing, however on the similar time it’s vulnerable to a number of situations that may impression the accuracy of the measurement.

We use these mannequin attributes on the standard calculation:

Photograph.distanceBase = 108

Photograph.distanceThold = 0.1

The Photograph.distanceBase is the gap reported by the sensor, when there are not any objects in entrance of it. This worth may have to be calibrated frequently and adjusted, elements like vibration and misalignment can result in false optimistic counts.
Photograph.distanceThold is used for outlining a threshold for a way delicate is the sensor, to be able to keep away from counting particles or small objects (like bag attachments or belts) as an everyday bag.

We then set up two transforms for bag depend:

Bag_Count = if(Photograph.Distance < Photograph.distanceBase,1,0)

Dubious_Bag_Count = if((gt(Photograph.Distance,Photograph.distanceBase*(1-Photograph.distanceThold)) and lt(Photograph.Distance,Photograph.distanceBase*0.95)) or (Pace.PDV1>Pace.max_speed_alarm) or (Photograph.Distance>Photograph.distanceBase),1,0)

Formula for dubious bag count

Bag_count will account for all luggage passing in entrance of the picture electrical sensor, and Dubious_Bag_Count will depend the objects detected as luggage beneath two irregular situations:

  1. The gap detected is throughout the vary of 95% and 90% of the bottom distance; accounting for small objects and really small variations within the measurements, indications of modifications as a consequence of vibration or a sensor not correctly hooked up.
  2. Luggage counted when the velocity of the carousel is above the restrict outlined; beneath this situation the sensor can miss counting luggage which might be too shut collectively on the carousel.

NOTE: the above situations are easy guidelines and the best values for distance base and thresholds have to be reviewed and analyzed with discipline knowledge for higher outcomes.

Let’s outline successes and failures as metrics:

Successes = sum(Bag_Count) – sum(Dubious_Bag_Count)

Failures = sum(Dubious_Bag_Count)

Lastly we are able to outline OEE Availability as a metric as effectively:

High quality = Successes / (Successes + Failures)

Keep in mind to make use of the identical metric interval as in all different metric definitions.


Efficiency = ((Successes + Failures) / Run_Time) / Ideal_Run_Rate

We’ve got Successes and Failures from our High quality calculation, in addition to Run_Time from Availability. Due to this fact, we simply want to make use of the Ideal_Run_Rate_5_min, which in our system is 300 luggage/hour = 0.0833333 luggage/second.

OEE Worth

Having Availability, High quality, and Efficiency we proceed to outline our final metric for OEE.

OEE = Availability * High quality * Efficiency

Simplify transforms and metric definitions

In its place, the OEE parts outlined as transforms and metrics will be outlined programmatically as an alternative of utilizing the AWS Console. That is notably helpful when there are complicated formulation that contain a number of variables, just like the Equipment_State and Dubious_Bag_Count transforms; additionally, automated options are much less error susceptible than guide ones and will be configured persistently throughout a number of environments. Let’s check out how we are able to do it utilizing the AWS SDK for Python (Boto3).

First, determine the measurements and attributes property IDs that you may be referencing on the rework/metric calculation, in addition to the mannequin ID.

Carousel Model Property IDs

Then outline a JSON for the metric/rework. As an illustration, to create a brand new rework to calculate the Equipment_State of the BHS we want the next attributes:




And the next measurements:




Create a file following this construction. Keep in mind to switch the propertyIds and reserve it as equipment_state.json:

     "identify": "Equipment_State",
     "dataType": "DOUBLE",
     "kind": {
       "rework": {
         "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"

The principle expression is as follows:

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)

Acquire the script update_asset_model_sitewise.py and extra particulars on easy methods to stream knowledge to AWS IoT SiteWise by visiting this public repository.

Then, run the next script passing the mannequin ID and the identify of the file beforehand outlined.

#python3 update_asset_model_sitewise.py --assetModelId [Asset Model ID] --property_file [JSON File defining the new property] --region [AWS Region]

After the script returns a profitable response, the brand new property ID created will be obtained straight from the AWS Console as described earlier than or through the use of the AWS CLI to question the up to date mannequin definition and the jq utility to filter the consequence.

#aws iotsitewise describe-asset-model --asset-model-id [model ID] | jq .'assetModelProperties[] | choose(.identify=="Equipment_State_API")'.id

You may then repeat the method with the opposite transforms and metrics to be able to create all of the required parts for the OEE calculation.

For extra data on updating an AWS IoT SiteWise asset mannequin please go to the API reference.


On this weblog submit, we explored how we are able to use sensor knowledge from a real-life state of affairs to calculate OEE and get insightful data from our bodily system through the use of AWS IoT SiteWise native capabilities. We walked via the method of figuring out the accessible knowledge and we outlined the weather that represent the principle OEE components, Availability, High quality and Efficiency, to lastly take a deep dive into the calculations and the way we are able to automate them.

As a name to motion, we invite you to take the content material introduced right here additional, making use of the OEE calculation course of to your personal use instances, in addition to utilizing the automation instruments offered to simplify and streamline the creation of information that helps monitor your industrial methods with accuracy.

Within the occasion you don’t have accessible knowledge to make use of, we encourage you to observe the steps outlined on this public repository to simply attempt AWS IoT SiteWise with artificial knowledge and uncover the insightful data OEE can provide you.

Concerning the Authors

Juan Aristizabal

Juan Aristizabal

Juan Aristizabal is a Options Architect at Amazon Internet Providers. He helps Canada West greenfield prospects on their journey to the cloud. He has greater than 10 years of expertise working with IT transformations for corporations, starting from Information Heart applied sciences, virtualization and cloud.  On his spare time, he enjoys touring along with his household and taking part in with synthesizers and modular methods.

Syed Rehan

Syed Rehan

Syed Rehan  is a Sr. World IoT Cybersecurity Specialist at Amazon Internet Providers (AWS) working inside AWS IoT Service crew and is predicated out of London. He’s masking world span of consumers working with safety specialists, builders and choice makers to drive the adoption of AWS IoT companies. Syed has in-depth information of cybersecurity, IoT and cloud and works on this function with world prospects starting from start-up to enterprises to allow them to construct IoT options with the AWS Eco system.

Related Articles


Please enter your comment!
Please enter your name here

Latest Articles