Smart Manufacturing

OEE berechnen: Verfügbarkeit, Leistung und Qualität mit Rechenbeispielen

Eine klare Anleitung, wie Sie OEE berechnen: die drei Faktoren, ein vollständiges Schichtbeispiel, die Fehler, die die Kennzahl aufblähen, und Python-Code, der OEE aus MQTT-Nachrichten zum Maschinenzustand berechnet.

Illustration zum Thema OEE berechnen mit Balken für Verfügbarkeit, Leistung und Qualität, die sich zu einem Wert der Gesamtanlageneffektivität multiplizieren
Probieren Sie es auf Ihrem eigenen MQTT-Broker ausHolen Sie sich im Free-Tarif einen privaten, verwalteten MQTT-Broker und starten Sie mit fertigen Codebeispielen.
Kostenlos testen Codebeispiele Keine Kreditkarte erforderlich

Wer OEE berechnen will, sollte die Berechnung korrekt beherrschen – das ist wichtiger als die Zahl selbst, denn kleine Definitionsentscheidungen können das Ergebnis um viele Prozentpunkte verschieben. Dieser Leitfaden erklärt die drei Faktoren, rechnet ein vollständiges Schichtbeispiel durch, listet die Fehler auf, die die OEE unbemerkt aufblähen, und zeigt Python-Code, der sie aus per MQTT veröffentlichten Maschinenzustandsnachrichten berechnet. Am Ende können Sie die OEE von Hand und aus Live-Daten ermitteln und jede Eingangsgröße begründen.

Was die OEE misst

Die Gesamtanlageneffektivität (Overall Equipment Effectiveness, OEE) vergleicht, was eine Maschine tatsächlich produziert hat, mit dem, was sie in der eingeplanten Laufzeit hätte produzieren können. Sie beantwortet eine Frage: Welcher Anteil der geplanten Produktionszeit wurde genutzt, um Gutteile mit idealer Geschwindigkeit herzustellen?

Die OEE fasst drei Verlustarten zusammen:

  • Verfügbarkeit erfasst Stillstände: Störungen, Umrüstungen und Wartezeiten.
  • Leistung erfasst die Geschwindigkeit: langsameres Laufen als ideal und Kurzstopps, die nicht als Stillstand erfasst werden.
  • Qualität erfasst Fehler: Ausschuss und Nacharbeit.

Das Produkt der drei Faktoren ergibt die OEE. Eine Maschine mit perfekter Verfügbarkeit und Qualität, die aber nur mit halber Geschwindigkeit läuft, hat eine OEE von 50 Prozent – genau das Signal, das Sie sehen wollen.

Die OEE-Formel

Faktor Formel Benötigt
Verfügbarkeit Laufzeit / Geplante Produktionszeit Stillstandsdauern
Leistung (Ideale Taktzeit x Gesamtstückzahl) / Laufzeit Stückzahl und ideale Taktzeit
Qualität Gutstückzahl / Gesamtstückzahl Gut- und Ausschusszahlen
OEE Verfügbarkeit x Leistung x Qualität Alle drei

Eine gleichwertige Kurzform lautet OEE = (Gutstückzahl x ideale Taktzeit) / geplante Produktionszeit. Sie liefert dasselbe Ergebnis und eignet sich gut zur Kontrolle Ihrer Rechnung. Die Version mit drei Faktoren lohnt sich trotzdem, weil sie zeigt, wo die Verluste liegen.

Definitionen, die vor dem Start feststehen müssen:

  • Geplante Produktionszeit ist die Schichtzeit abzüglich geplanter Stopps wie Pausen und geplanter Wartung. Ob Umrüstungen als geplant oder ungeplant gelten, entscheidet jedes Werk selbst; die meisten Lean-Praktiker werten sie als Verfügbarkeitsverlust, damit sie sichtbar bleiben.
  • Laufzeit ist die geplante Produktionszeit abzüglich aller ungeplanten Stillstandszeiten.
  • Ideale Taktzeit ist die kürzeste Zeit, in der die Maschine das Teil zuverlässig herstellen kann, meist aus der Anlagenauslegung oder einer nachgewiesenen Bestleistung – nicht der Vorgabewert aus der Kalkulation.
  • Gesamtstückzahl umfasst Gut- und Ausschussteile.

Rechenbeispiel: eine Schicht an einer Abfüllmaschine

Nehmen wir eine Achtstundenschicht (480 Minuten) mit zwei Pausen von je 15 Minuten.

  1. Geplante Produktionszeit = 480 - 30 = 450 Minuten.
  2. Stillstände während der Schicht: eine Umrüstung von 25 Minuten und eine Störung von 20 Minuten, also 45 Minuten Stillstand.
  3. Laufzeit = 450 - 45 = 405 Minuten.
  4. Ideale Taktzeit ist 1,0 Sekunde pro Einheit, die ideale Rate also 60 Einheiten pro Minute.
  5. Gesamtstückzahl = 21.000 Einheiten.
  6. Ausschuss = 420 Einheiten, also Gutstückzahl = 20.580.

Nun die Faktoren:

  • Verfügbarkeit = 405 / 450 = 0,900 (90,0 Prozent)
  • Leistung = (1,0 s x 21.000) / (405 x 60 s) = 21.000 / 24.300 = 0,864 (86,4 Prozent)
  • Qualität = 20.580 / 21.000 = 0,980 (98,0 Prozent)
  • OEE = 0,900 x 0,864 x 0,980 = 0,762 (76,2 Prozent)

Kontrolle mit der Kurzform: (20.580 x 1,0 s) / (450 x 60 s) = 20.580 / 27.000 = 0,762. Beide Methoden stimmen überein.

Was sagt das dem Team? Der größte Einzelverlust ist die Leistung: In 405 Minuten Laufzeit hat die Maschine 3.300 Einheiten weniger hergestellt, als sie gekonnt hätte. Dieser Verlust besteht aus Mikrostopps und reduzierter Geschwindigkeit, die in einem manuellen Protokoll selten auftauchen. Der Artikel zur Überwachung von Verpackungslinien zeigt, wie Sie Leistungsverluste weiter aufschlüsseln.

Häufige Fehler beim OEE-Berechnen

Diese Fehler lassen die OEE besser aussehen, als sie ist, oder machen Maschinen unvergleichbar:

  1. Eine zu langsame ideale Taktzeit verwenden. Ist das „Ideal“ der Planungswert mit Puffer, kann die Leistung 100 Prozent übersteigen oder künstlich hoch wirken. Verwenden Sie die echte Auslegungs- oder nachgewiesene Bestleistung.
  2. Umrüstungen ausklammern. Wer jede Umrüstung als „geplant“ einstuft, nimmt eine große Verbesserungschance aus dem Blickfeld.
  3. In der Leistung nur Gutteile zählen. Die Leistung verwendet die Gesamtstückzahl. Wer die Gutstückzahl verwendet, zählt den Qualitätsverlust doppelt.
  4. OEE-Prozentwerte über Maschinen mitteln. Eine kleine und eine große Maschine sollten nicht gleich gewichtet werden. Summieren Sie die zugrunde liegenden Zeiten und Stückzahlen und rechnen Sie dann.
  5. An jeder Station einer Linie zählen. Für eine Linie sollte die OEE die Ausbringung der letzten Station und die ideale Rate des Engpasses verwenden.
  6. Produkte mit unterschiedlichen Taktzeiten vermischen. Berechnen Sie die Idealzeit pro Produkt (Stückzahl x ideale Taktzeit je Produkt) und summieren Sie sie, statt eine Rate für die ganze Schicht zu verwenden.

Bei Schichten mit mehreren Produkten bewältigt die Kurzform den Mix sauber: OEE = Summe über alle Produkte von (Gutstückzahl x ideale Taktzeit) / geplante Produktionszeit.

Die ideale Taktzeit wählen

Die ideale Taktzeit ist die am häufigsten umstrittene Eingangsgröße und hat den größten Einfluss auf die Leistung. Drei Quellen sind üblich:

  • Typenschild- oder Auslegungsrate des Anlagenherstellers. Ehrlich, aber für ein bestimmtes Produkt manchmal unerreichbar.
  • Nachgewiesene Bestleistung, der schnellste Takt, den die Maschine über einen aussagekräftigen Zeitraum mit diesem Produkt gehalten hat. Praxisnah und gut begründbar.
  • Standardrate aus Kalkulation oder Planung. Meist mit Puffer versehen und daher die falsche Wahl für die OEE.

Wählen Sie die Auslegungsrate oder die nachgewiesene Bestleistung, hinterlegen Sie sie pro Produkt und Maschine und ändern Sie sie nur über eine bewusste Überprüfung. Wenn Sie solche Stammdaten in einer Retained Message pro Maschine halten (zum Beispiel auf einem config-Topic auf Ihrem ConnectMQ-Broker), lesen alle Berechnungsdienste und Dashboards denselben Wert, und eine Änderung ist sofort für alle sichtbar.

OEE aus MQTT-Maschinendaten berechnen

Für eine Schulung genügt die Handrechnung, in der Praxis sollte die OEE aber aus Maschinensignalen kommen. Ein typischer Aufbau veröffentlicht pro Maschine zwei Arten von Nachrichten an einen MQTT-Broker:

connectmq/demo/<your-id>/plant1/line2/filler/state   {"state": "RUNNING", "ts": 1792130400}
connectmq/demo/<your-id>/plant1/line2/filler/counts  {"total": 21000, "reject": 420, "ts": 1792159200}

Zustandsnachrichten werden bei jeder Änderung veröffentlicht; Stückzahlen sind für die Schicht kumuliert und werden periodisch veröffentlicht. In einem Unified Namespace (UNS) bildet der Topic-Pfad die ISA-95-Hierarchie ab (Werk → Linie → Maschine), sodass sich OEE-Werte ohne Zusatzlogik auf Linien- und Werksebene verdichten lassen. Die folgende Funktion berechnet die OEE für ein Zeitfenster aus einer Liste von Zustandsereignissen sowie den Stückzahlen zu Beginn und Ende. PLANNED_STOP wird aus der geplanten Zeit herausgerechnet, jeder andere Zustand außer RUNNING zählt als Stillstand.

from dataclasses import dataclass


@dataclass
class StateEvent:
    ts: float      # Unix-Sekunden
    state: str     # RUNNING, DOWN, IDLE, SETUP, PLANNED_STOP


def calculate_oee(events, window_start, window_end, total_count, reject_count, ideal_cycle_s):
    """Return availability, performance, quality and OEE for one window."""
    events = sorted(events, key=lambda e: e.ts)
    planned_stop = 0.0
    run_time = 0.0

    for i, ev in enumerate(events):
        start = max(ev.ts, window_start)
        end = events[i + 1].ts if i + 1 < len(events) else window_end
        end = min(end, window_end)
        if end <= start:
            continue
        duration = end - start
        if ev.state == "PLANNED_STOP":
            planned_stop += duration
        elif ev.state == "RUNNING":
            run_time += duration

    planned_time = (window_end - window_start) - planned_stop
    if planned_time <= 0 or run_time <= 0 or total_count <= 0:
        return {"availability": 0.0, "performance": 0.0, "quality": 0.0, "oee": 0.0}

    availability = run_time / planned_time
    performance = min((ideal_cycle_s * total_count) / run_time, 1.0)
    quality = (total_count - reject_count) / total_count
    return {
        "availability": round(availability, 4),
        "performance": round(performance, 4),
        "quality": round(quality, 4),
        "oee": round(availability * performance * quality, 4),
    }


if __name__ == "__main__":
    t0 = 0
    shift = [
        StateEvent(t0, "RUNNING"),
        StateEvent(t0 + 120 * 60, "PLANNED_STOP"),   # Pause
        StateEvent(t0 + 135 * 60, "SETUP"),          # Umrüstung 25 min
        StateEvent(t0 + 160 * 60, "RUNNING"),
        StateEvent(t0 + 300 * 60, "PLANNED_STOP"),   # Pause
        StateEvent(t0 + 315 * 60, "RUNNING"),
        StateEvent(t0 + 400 * 60, "DOWN"),           # Störung 20 min
        StateEvent(t0 + 420 * 60, "RUNNING"),
    ]
    print(calculate_oee(shift, t0, t0 + 480 * 60, 21000, 420, 1.0))

Die Ausführung reproduziert das Rechenbeispiel: Verfügbarkeit 0,9, Leistung 0,8642, Qualität 0,98, OEE 0,7622. Beachten Sie die Begrenzung min(..., 1.0) bei der Leistung. Greift sie regelmäßig, ist die ideale Taktzeit falsch; korrigieren Sie dann die Stammdaten, statt sich auf die Begrenzung zu verlassen.

Um daraus einen Live-Wert zu machen, abonnieren Sie die Zustands- und Stückzahl-Topics, halten die Ereignisse der aktuellen Schicht im Speicher und rechnen jede Minute neu. Das Tutorial zur Echtzeit-OEE-Überwachung baut genau diesen Dienst, und der Vergleich von OEE und TEEP erklärt, was sich ändert, wenn Sie gegen die Kalenderzeit statt gegen die geplante Zeit messen.

Auf einem echten Broker ausprobieren

Sie können den Nachrichtenfluss ohne Hardware mit dem kostenlosen Öffentlichen MQTT-Broker unter broker.connectmq.com testen. Veröffentlichen Sie einen Zustandswechsel von Hand:

mosquitto_pub -h broker.connectmq.com -p 1883 -i oee-test-h4v7 -t "connectmq/demo/h4v7/plant1/line2/filler/state" -m '{"state":"RUNNING","ts":1792130400}' -r

Denken Sie daran, dass der öffentliche Bereich für jeden lesbar ist. Für echte Produktionsdaten bietet Ihnen ConnectMQ einen privaten verwalteten MQTT-Broker mit Zugangsdaten, TLS und einem Portal, in dem Sie die Topics live verfolgen. Wie die OEE mit anderen Werkskennzahlen zusammenspielt, zeigt der Leitfaden zu Smart Manufacturing.

Starten Sie mit ConnectMQ

Erstellen Sie einen kostenlosen Serverless-Broker unter app.connectmq.com ohne Kreditkarte, veröffentlichen Sie Ihre Maschinenzustände und Stückzahlen und berechnen Sie die OEE aus echten Daten statt aus Schätzungen zum Schichtende.

Häufig gestellte Fragen

Was ist ein guter OEE-Wert?

Das hängt vom Prozess ab und davon, wie streng Sie die Eingangsgrößen definieren. Nutzen Sie die OEE, um Verbesserungen an derselben Maschine mit festen Definitionen zu verfolgen, statt sie mit allgemeinen Benchmarks zu vergleichen.

Kann die Leistung über 100 Prozent liegen?

Nicht, wenn die ideale Taktzeit stimmt. Eine Leistung über 100 Prozent bedeutet, dass die ideale Taktzeit zu langsam angesetzt ist und korrigiert werden sollte.

Sollten Umrüstungen die Verfügbarkeit belasten?

Die meisten Verbesserungsprogramme werten sie als Verfügbarkeitsverlust, damit die Rüstzeitreduzierung sichtbar bleibt. Was auch immer Sie wählen: Wenden Sie es über Maschinen und Schichten hinweg einheitlich an.

Wie berechne ich die OEE für eine ganze Linie?

Verwenden Sie die Ausbringung der letzten Station, die ideale Rate der Engpassmaschine und die Stillstandszeit auf Linienebene. Mitteln Sie nicht die OEE der einzelnen Maschinen.

Verwandte Artikel

OEE vs. TEEP vs. OOE: Welche Kennzahl sollten Sie verwenden?

OEE, OOE und TEEP teilen sich die Faktoren Leistung und Qualität, beziehen sich aber auf unterschiedliche Zeitbasen. Dieser Vergleich rechnet ein Beispiel durch und listet die MQTT-Signale, die jede Kennzahl benötigt.

7 Min. Lesezeit

Alle Artikel →

Ihr privater MQTT-Broker ist nur wenige Klicks entfernt

Konto anlegen, Broker-Zugangsdaten erhalten und das erste Gerät verbinden — ohne Server, die installiert, gepatcht oder skaliert werden müssen.