Smart Manufacturing

Werkzeugverschleiß-Überwachung mit Spindelleistung, Schwingung und MQTT

Nutzen Sie über MQTT publizierte Spindelleistung und Schwingung, um einen Verschleißindex pro Werkzeug aufzubauen, jeden Schnitt mit der Referenz des neuen Werkzeugs zu vergleichen und Werkzeuge nach Zustand statt nach fester Stückzahl zu wechseln.

Werkzeugverschleiß-Überwachung an einer CNC-Frässpindel mit Leistungs- und Schwingungsdiagrammen in einem Cloud-MQTT-Dashboard
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

Mit einer Werkzeugverschleiß-Überwachung wechselt ein Zerspanungsbetrieb Schneidwerkzeuge dann, wenn sie tatsächlich verschlissen sind, statt nach einer vorsichtig gewählten festen Stückzahl. Dieser Anwendungsfall zeigt, wie Sie Spindelleistung und Schwingung pro Schnitt über MQTT publizieren, für jedes Werkzeug einen Verschleißindex aufbauen und Werkzeugwechsel datenbasiert planen, bevor ein verschlissenes Werkzeug Ausschuss produziert oder bricht.

Das Problem mit fester Standzeit

Die meisten CNC-Betriebe steuern die Standzeit über einen Zähler: Die Wendeschneidplatte wird nach einer festgelegten Anzahl von Teilen oder Minuten im Schnitt gewechselt. Der Wert wird vorsichtig gewählt, denn ein gebrochenes Werkzeug kann ein teures Teil verschrotten, Spindel oder Vorrichtung beschädigen und die Maschine viel länger stillsetzen als ein geplanter Wechsel.

Das Ergebnis ist ein Kompromiss, der in beide Richtungen falsch liegt. Ist das Material weich und sind die Bedingungen gut, werden Werkzeuge mit verbleibender Reststandzeit entsorgt. Ist eine Materialcharge härter, eine Kühlmitteldüse verstellt oder eine Platte fehlerhaft, verschleißt das Werkzeug, bevor der Zähler abläuft, und der Schaden entsteht trotzdem. Die Werkzeugverschleiß-Überwachung ersetzt den festen Zähler – oder ergänzt ihn zumindest – durch eine Messung, wie sich jedes Werkzeug tatsächlich verhält.

Welche Signale Werkzeugverschleiß verraten

Mit zunehmendem Verschleiß reibt eine Schneide stärker und schneidet weniger sauber. Das zeigt sich auf mehreren messbaren Wegen:

Signal Veränderung mit dem Verschleiß Erfassung
Spindelleistung oder -last Steigt bei gleicher Bearbeitung allmählich an Daten der CNC-Steuerung (Spindellast in Prozent) oder Leistungsmessumformer bzw. Stromwandler an der Versorgung des Spindelantriebs
Last der Vorschubachsen Steigt mit wachsenden Schnittkräften Achslastdaten der CNC-Steuerung
Schwingung RMS und hochfrequente Anteile steigen; Rattern kann auftreten Beschleunigungssensor am Spindelgehäuse
Körperschall (Acoustic Emission) Veränderte hochfrequente Emission aus der Schnittzone Eigener AE-Sensor, meist in High-End-Systemen
Teilequalität Maße driften, Oberflächengüte verschlechtert sich Messen im Prozess oder nach dem Prozess

Die Spindelleistung ist der praktikabelste Einstieg. Viele moderne Steuerungen stellen die Spindellast über OPC UA, MTConnect oder eine Herstellerschnittstelle bereit, und an älteren Maschinen liefert ein Leistungsmesser am Spindelantrieb dieselbe Information, ohne die Steuerung zu berühren. Schwingungsdaten erhöhen die Empfindlichkeit für Ausbrüche und Rattern, die die Leistung allein übersehen kann. Der Artikel CNC-Maschinenüberwachung beschreibt, wie Sie Daten aus unterschiedlichen Steuerungen gewinnen.

Der Kerngedanke: Gleiches mit Gleichem vergleichen

Die rohe Spindelleistung sagt für sich genommen nichts aus. Das Schruppen einer Tasche in Stahl zieht weit mehr Leistung als das Schlichten einer Planfläche in Aluminium, unabhängig vom Verschleiß. Die Werkzeugverschleiß-Überwachung vergleicht daher jeden Schnitt mit derselben Bearbeitung, ausgeführt von demselben Werkzeug im Neuzustand.

Dafür braucht jede Nachricht Kontext:

  • Werkzeug-ID (Platznummer oder besser eine Werkzeugkennung aus dem Werkzeugverwaltungssystem)
  • Bearbeitungs-ID (Programm und Satzbereich oder ein Bearbeitungsname)
  • Schnittzähler des aktuellen Werkzeugs seit dem Einsetzen
  • Merkmale des Schnitts: mittlere Leistung im Schnitt, Spitzenleistung, Energie, Schwingungs-RMS

Das Edge-Gateway, das Steuerung und Sensoren ausliest, zerlegt das Signal in Schnitte. Eine einfache Methode: Der Zeitraum, in dem die Spindelleistung während einer bekannten Bearbeitung eine Leerlaufschwelle überschreitet, gilt als Schnitt, und die Merkmale werden nur über dieses Segment berechnet. Luftschnitte und Eilgänge fallen heraus, was den Großteil des Rauschens beseitigt.

Datenfluss und Payload

Jeder abgeschlossene Schnitt erzeugt eine Nachricht. Das Topic folgt der ISA-95-Hierarchie (Unternehmen, Standort, Bereich, Zelle, Maschine) und fügt sich damit direkt in einen Unified Namespace (UNS) ein:

acme/plant1/machining/cell2/cnc4/tool/cut
{
  "ts": "2026-10-16T10:42:18Z",
  "tool_id": "T12-EM10-4F",
  "operation": "OP20-rough-pocket",
  "cut_no": 143,
  "duration_s": 38.2,
  "power_mean_kw": 4.61,
  "power_peak_kw": 6.02,
  "energy_kj": 176.1,
  "vib_rms_g": 0.84
}

Ein Werkzeugwechsel ist ein separates Ereignis, das die Referenz für diesen Platz zurücksetzt:

{"ts": "2026-10-16T11:05:00Z", "event": "tool_changed", "tool_id": "T12-EM10-4F", "reason": "wear_index"}

Wer pro Schnitt publiziert, statt Rohwerte zu streamen, hält den Datenverkehr klein und macht jede Nachricht aussagekräftig. Brauchen Sie später rohe Signalverläufe für Analysen, erfassen Sie diese lokal und publizieren sie nur bei Bedarf.

Verschleißindex-Dienst in Python

Der folgende Dienst lernt über die ersten fünf Schnitte jedes neuen Werkzeugs und jeder Bearbeitung die Referenzwerte für mittlere Leistung und Schwingung und berechnet für jeden weiteren Schnitt einen Verschleißindex als Verhältnis zu dieser Referenz. Überschreitet der geglättete Index eine Warn- oder Wechselgrenze, publiziert er eine Empfehlung, die ein Dashboard oder das Bedienpanel anzeigen kann. Er nutzt paho-mqtt 2.x mit dem öffentlichen MQTT-Broker.

import json
from collections import defaultdict, deque
import paho.mqtt.client as mqtt

PREFIX = "connectmq/demo/e93f10/cnc4"
BASELINE_CUTS = 5
WARN_INDEX = 1.20      # 20 % über der Leistung des neuen Werkzeugs
CHANGE_INDEX = 1.35    # Wechsel empfehlen
VIB_WEIGHT = 0.3       # Anteil der Schwingung am kombinierten Index
SMOOTH = 3             # Median der letzten N Schnitte

baseline = {}                        # (tool, op) -> (power, vib)
learning = defaultdict(list)
recent = defaultdict(lambda: deque(maxlen=SMOOTH))
status = {}

def on_connect(client, userdata, flags, reason_code, properties):
    client.subscribe(f"{PREFIX}/tool/#", qos=1)

def on_message(client, userdata, msg):
    d = json.loads(msg.payload)
    if msg.topic.endswith("/event") and d.get("event") == "tool_changed":
        for key in [k for k in baseline if k[0] == d["tool_id"]]:
            baseline.pop(key)
            recent.pop(key, None)
            status.pop(key, None)
        for key in [k for k in learning if k[0] == d["tool_id"]]:
            learning.pop(key)
        print("reset", d["tool_id"])
        return
    if not msg.topic.endswith("/cut"):
        return

    key = (d["tool_id"], d["operation"])
    if key not in baseline:
        learning[key].append((d["power_mean_kw"], d["vib_rms_g"]))
        if len(learning[key]) >= BASELINE_CUTS:
            p = sorted(x[0] for x in learning[key])[BASELINE_CUTS // 2]
            v = sorted(x[1] for x in learning[key])[BASELINE_CUTS // 2]
            baseline[key] = (p, v)
            print("baseline", key, baseline[key])
        return

    p0, v0 = baseline[key]
    index = (1 - VIB_WEIGHT) * d["power_mean_kw"] / p0 + VIB_WEIGHT * d["vib_rms_g"] / v0
    recent[key].append(index)
    smoothed = sorted(recent[key])[len(recent[key]) // 2]
    level = "change" if smoothed >= CHANGE_INDEX else "warn" if smoothed >= WARN_INDEX else "ok"

    out = {"tool_id": key[0], "operation": key[1], "cut_no": d["cut_no"],
           "wear_index": round(smoothed, 3), "level": level}
    client.publish(f"{PREFIX}/tool/{key[0]}/wear", json.dumps(out), qos=1, retain=True)
    if level != status.get(key):
        status[key] = level
        print("STATUS", out)

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="tool-wear-e93f10")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=60)
client.loop_forever()

Die Schnittnachrichten gehen an .../cnc4/tool/cut, Wechselereignisse an .../cnc4/tool/event, und der Dienst schreibt die Ergebnisse nach .../cnc4/tool/<tool_id>/wear. Da die Ergebnisse als Retained Message gespeichert werden, zeigt das Bedienpanel stets den aktuellen Verschleißindex jedes Werkzeugs an – auch direkt nach einem Neustart.

Beachten Sie die Median-Glättung: Ein einzelner schwerer Schnitt, etwa durch ein Gussteil mit Übermaß, soll keinen Wechsel auslösen. Ein plötzlicher Sprung, der über mehrere Schnitte bestehen bleibt, deutet dagegen oft auf eine ausgebrochene Schneide hin und verdient sofortige Aufmerksamkeit. Viele Betriebe ergänzen für diesen Fall eine eigene Regel: Springt der Index zwischen zwei aufeinanderfolgenden Schnitten stark, wird unabhängig vom geglätteten Wert ein Alarm ausgelöst.

Die Grenzwerte abstimmen

Die obigen Werte sind Startpunkte, keine universellen Konstanten. Stimmen Sie sie pro Werkzeugfamilie ab:

  1. Zunächst nur überwachen. Behalten Sie die bisherige feste Standzeit bei und zeichnen Sie einige Wochen lang lediglich den Verschleißindex auf.
  2. Verschlissene Werkzeuge prüfen. Messen Sie beim Ausbau den Freiflächenverschleiß oder bewerten Sie den Zustand und notieren Sie den Index zum Ausbauzeitpunkt.
  3. Korrelieren. Ermitteln Sie den Indexwert, bei dem Werkzeuge Ihre zulässige Verschleißgrenze erreichen, und legen Sie die Wechselgrenze knapp darunter.
  4. Vorsichtig verlängern. Sobald der Index den Zustand zuverlässig vorhersagt, lassen Sie noch gesunde Werkzeuge in kleinen Schritten über die alte feste Stückzahl hinaus laufen.
  5. Eine harte Obergrenze behalten. Lassen Sie eine großzügige Maximalstückzahl als Sicherheitsnetz bestehen, falls ein Sensor oder das Gateway ausfällt.

Was der Betrieb gewinnt

Werden Werkzeugwechsel nach Zustand gesteuert, laufen Werkzeuge unter günstigen Bedingungen länger, schnell verschleißende Werkzeuge werden vor dem Bruch gezogen, und die Werkzeugausgabe kann Einkäufe nach dem tatsächlichen Verbrauch planen. Verschleißdaten pro Werkzeug fließen außerdem in die Zuverlässigkeitsarbeit ein: Werkzeugbedingte Stopps werden in Ihrer MTBF- und MTTR-Berechnung sichtbar, und auffällige Verschleißraten weisen auf Prozessprobleme wie Kühlmittelfehler oder Materialschwankungen hin. Kombinieren Sie den Verschleißindex mit Daten eines Sensors zur Schwingungsüberwachung an den Spindellagern, trennen Sie Werkzeugprobleme von Maschinenproblemen.

Hinweise zur Infrastruktur

  • Segmentierung am Edge hält die Broker-Last gering: eine Nachricht pro Schnitt statt Tausender Messwerte pro Sekunde.
  • QoS 1 für Schnitt- und Werkzeugwechselnachrichten stellt sicher, dass der Dienst nie ein Zurücksetzen verpasst.
  • ISA-95-Topics wie acme/plant1/machining/cell2/cnc4/... bilden den Unified Namespace ab und erlauben dem ConnectMQ-Portal, Maschinen in seiner Geräteansicht nach Bereich und Zelle zu gruppieren.
  • Privater Broker für die Produktion. Die öffentliche Demo ist für jeden lesbar. Verwenden Sie Zugangsdaten aus dem Portal und TLS auf Port 8883.

Ein Cloud-MQTT-Broker bringt dieselben Daten zum Panel in der Halle, zur Werkzeugausgabe und zu einem Prozessingenieur im Homeoffice, ohne eingehende Ports ins Maschinennetz zu öffnen. Die übergreifende Architektur beschreibt der Smart-Manufacturing-Leitfaden.

Verbinden Sie Ihre CNC-Maschinen mit ConnectMQ

ConnectMQ ist ein vollständig verwalteter MQTT-Broker mit MQTT 5, TLS, Retained Messages, einem Live-Topic-Explorer und Schwellwertalarmen im Portal. Legen Sie im kostenlosen Serverless-Plan unter app.connectmq.com einen Broker an, ohne Kreditkarte, und zeichnen Sie Verschleißdaten Ihrer ersten Maschine auf.

Häufig gestellte Fragen

Welches Signal eignet sich am besten für die Werkzeugverschleiß-Überwachung?

Spindelleistung oder -last ist das praktikabelste Startsignal, weil viele Steuerungen es bereits liefern. Zusätzliche Schwingungsdaten an der Spindel verbessern die Erkennung von Ausbrüchen und Rattern.

Kann die Werkzeugverschleiß-Überwachung die feste Standzeit vollständig ersetzen?

Sie kann die Standzeit je nach Zustand verlängern oder verkürzen, doch die meisten Betriebe behalten eine großzügige Maximalstückzahl als Sicherheitsnetz, falls Sensoren oder die Datenerfassung ausfallen.

Warum wird jeder Schnitt mit der Referenz des neuen Werkzeugs verglichen?

Die Leistung hängt stark von Bearbeitung, Material und Werkzeug ab. Der Vergleich desselben Werkzeugs und derselben Bearbeitung mit dem eigenen Neuzustand isoliert die Veränderung, die der Verschleiß verursacht.

Wie viele Daten werden dabei über MQTT gesendet?

Nur eine kleine Nachricht pro Schnitt plus Werkzeugwechselereignisse. Hochfrequente Rohsignale bleiben am Edge, sofern Sie sie nicht ausdrücklich benötigen.

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.