What Is OEE with TofuPilot
Overall equipment effectiveness (OEE) measures how productively a machine or station is used. It combines three factors: availability, performance, and quality. For test stations, OEE reveals how much of your capacity is actually producing good tested units. This guide covers how to calculate OEE for test stations and how to track its components with TofuPilot.
The OEE Formula
OEE = Availability x Performance x Quality
| Factor | What It Measures | Formula |
|---|---|---|
| Availability | How much of planned time the station is running | Run time / Planned production time |
| Performance | How fast it runs compared to ideal | (Ideal cycle time x Total units) / Run time |
| Quality | How many units pass first time | Good units / Total units |
Each factor is a percentage. OEE is their product.
Example
| Factor | Value | Calculation |
|---|---|---|
| Planned time | 8 hours (480 min) | Shift duration |
| Downtime | 45 min (setup + fixture change) | |
| Run time | 435 min | 480 - 45 |
| Availability | 90.6% | 435 / 480 |
| Ideal cycle time | 1 min/unit | |
| Total units tested | 400 | |
| Performance | 92.0% | (1 x 400) / 435 |
| Good units (first pass) | 380 | |
| Quality | 95.0% | 380 / 400 |
| OEE | 79.2% | 90.6% x 92.0% x 95.0% |
World-class OEE is 85%+. Most manufacturing operations run 60-75%.
The Six Big Losses
OEE breaks down into six loss categories. Each maps to one of the three OEE factors:
| Loss | OEE Factor | Test Station Example |
|---|---|---|
| Unplanned stops | Availability | Fixture jam, instrument error, PC crash |
| Setup and adjustments | Availability | Product changeover, calibration, fixture swap |
| Small stops | Performance | Operator absent, DUT loading delay |
| Slow cycles | Performance | Instrument settling, retests, slow communication |
| Production rejects | Quality | Units that fail test and go to scrap |
| Startup rejects | Quality | First units after setup that need retesting |
Prerequisites
- Python 3.10+
- OpenHTF installed (
pip install openhtf) - TofuPilot Python SDK installed (
pip install tofupilot)
Step 1: Capture Test Data
Every test run logged to TofuPilot contributes data to the three OEE factors. The test duration feeds performance. The pass/fail result feeds quality. Station uptime feeds availability.
import openhtf as htf
from openhtf.util import units
@htf.measures(
htf.Measurement("output_voltage_V")
.in_range(minimum=4.9, maximum=5.1)
.with_units(units.VOLT),
htf.Measurement("current_draw_mA")
.in_range(minimum=90, maximum=110)
.with_units(units.MILLIAMPERE),
)
def phase_functional(test):
"""Production functional test."""
test.measurements.output_voltage_V = 5.01
test.measurements.current_draw_mA = 99.2from tofupilot.openhtf import TofuPilot
test = htf.Test(phase_functional)
with TofuPilot(test):
test.execute(test_start=lambda: input("Scan serial: "))Step 2: Track OEE Components in TofuPilot
TofuPilot tracks the data you need for each OEE factor:
| OEE Factor | TofuPilot Data |
|---|---|
| Availability | Station uptime, gaps between test runs |
| Performance | Test duration per unit, throughput per hour |
| Quality | First pass yield per station |
Open the Analytics tab to monitor:
- Station throughput (units per hour) tracks performance
- First pass yield tracks quality
- Test gaps (time between consecutive runs) reveal availability losses
Improving OEE
Focus on the lowest factor first. If availability is 70% but quality is 98%, fixing availability gives the biggest return.
| Low Factor | Where to Look | Action |
|---|---|---|
| Availability below 85% | Downtime log, changeover time | Reduce setup time, improve fixture reliability |
| Performance below 90% | Phase durations in TofuPilot | Optimize instrument settings, reduce settling time |
| Quality below 95% | Failure Pareto in TofuPilot | Fix top failure modes, tighten process controls |
Small improvements compound. Improving each factor by 5% (from 85% to 90%) increases OEE from 61.4% to 72.9%. That's 19% more capacity from the same equipment.