Fabricación inteligente

Monitorización del desgaste de herramientas con potencia del husillo, vibración y MQTT

Usa la potencia del husillo y la vibración publicadas por MQTT para crear un índice de desgaste por herramienta, comparar cada corte con la referencia de la herramienta nueva y cambiar las herramientas según su condición en lugar de un número fijo de piezas.

Monitorización del desgaste de herramientas en el husillo de una fresadora CNC con gráficos de potencia y vibración transmitidos a un dashboard MQTT en la nube
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

La monitorización del desgaste de herramientas permite a un taller de mecanizado cambiar las herramientas de corte cuando están realmente desgastadas, en lugar de hacerlo tras un número fijo y conservador. Este caso de uso muestra cómo publicar la potencia del husillo y la vibración de cada corte por MQTT, construir un índice de desgaste para cada herramienta y programar los cambios a partir de los datos antes de que una herramienta desgastada produzca chatarra o se rompa.

El problema de la vida útil fija

La mayoría de los talleres CNC gestionan la vida útil de las herramientas con un contador: se cambia el inserto tras un número determinado de piezas o de minutos de corte. El número se elige de forma conservadora, porque una herramienta rota puede arruinar una pieza cara, dañar el husillo o el utillaje y detener la máquina mucho más tiempo que un cambio planificado.

El resultado es un compromiso que falla en ambas direcciones. Cuando el material es blando y las condiciones son buenas, se desechan herramientas a las que les queda vida útil. Cuando un lote de material es más duro, una boquilla de refrigerante está desalineada o un inserto tiene un defecto, la herramienta se desgasta antes de que venza el contador y el daño se produce igualmente. La monitorización del desgaste de herramientas sustituye el contador fijo, o al menos lo complementa, con una medición de cómo se comporta realmente cada herramienta.

Qué señales revelan el desgaste de la herramienta

A medida que un filo se desgasta, roza más y corta de forma menos limpia. Eso se manifiesta de varias formas medibles:

Señal Cómo cambia con el desgaste Cómo obtenerla
Potencia o carga del husillo Aumenta gradualmente para la misma operación Datos del control CNC (porcentaje de carga del husillo), o un transductor de potencia o TC en la alimentación del accionamiento del husillo
Carga de los ejes de avance Aumenta a medida que crecen las fuerzas de corte Datos de carga de ejes del control CNC
Vibración Aumentan el RMS y el contenido de alta frecuencia; puede aparecer chatter Acelerómetro en la carcasa del husillo
Emisión acústica Cambios en la emisión de alta frecuencia de la zona de corte Sensor de EA dedicado, sobre todo en sistemas de gama alta
Calidad de la pieza Las cotas derivan y el acabado superficial empeora Medición en proceso o posterior al proceso

La potencia del husillo es el punto de partida más práctico. Muchos controles modernos exponen la carga del husillo mediante OPC UA, MTConnect o una interfaz del fabricante, y en máquinas más antiguas un medidor de potencia en el accionamiento del husillo proporciona la misma información sin tocar el control. La vibración añade sensibilidad a los astillados y al chatter que la potencia por sí sola puede pasar por alto. El artículo sobre monitorización de máquinas CNC explica cómo extraer datos de distintos controles.

La idea clave: comparar lo comparable

La potencia del husillo en bruto no significa nada por sí sola. Desbastar una cavidad en acero consume mucha más potencia que acabar una cara en aluminio, independientemente del desgaste. Por eso, la monitorización del desgaste de herramientas compara cada corte con la misma operación realizada por la misma herramienta cuando estaba nueva.

Eso exige contexto en cada mensaje:

  • ID de herramienta (número de posición o, mejor, un identificador de herramienta del sistema de gestión de herramientas)
  • ID de operación (programa y rango de bloques, o un nombre de operación)
  • Contador de cortes de la herramienta actual desde su instalación
  • Características del corte: potencia media durante el corte, potencia pico, energía, RMS de vibración

El gateway de edge, que lee el control y los sensores, segmenta la señal en cortes. Un método sencillo es considerar como corte el periodo en que la potencia del husillo supera un umbral de vacío durante una operación conocida y calcular las características solo sobre ese segmento. Se excluyen el corte en vacío y los movimientos rápidos, lo que elimina la mayor parte del ruido.

Flujo de datos y payload

Cada corte completado produce un mensaje:

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
}

Un cambio de herramienta es un evento independiente que reinicia la referencia de esa posición:

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

Publicar por corte, en lugar de transmitir muestras en bruto, mantiene el tráfico bajo y hace que cada mensaje tenga significado. Si más adelante necesitas formas de onda en bruto para análisis, captúralas localmente y publícalas solo bajo demanda.

Servicio de índice de desgaste en Python

El siguiente servicio aprende la potencia media y la vibración de referencia durante los cinco primeros cortes de cada nueva herramienta y operación, y después calcula un índice de desgaste para cada corte posterior como cociente respecto a esa referencia. Cuando el índice suavizado supera un límite de aviso o de cambio, publica una recomendación que un dashboard o el panel del operario pueden mostrar. Usa paho-mqtt 2.x contra el servidor MQTT público gratuito, pensado para pruebas y no para datos de producción.

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 % por encima de la potencia con herramienta nueva
CHANGE_INDEX = 1.35    # recomendar cambio
VIB_WEIGHT = 0.3       # peso de la vibración en el índice combinado
SMOOTH = 3             # mediana de los últimos N cortes

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()

Los mensajes de corte van a .../cnc4/tool/cut, los eventos de cambio a .../cnc4/tool/event y el servicio escribe los resultados en .../cnc4/tool/<tool_id>/wear. Como los resultados son retained, el panel del operario siempre muestra el índice de desgaste actual de cada herramienta, incluso justo después de un reinicio.

Fíjate en el suavizado por mediana: un único corte pesado causado por una pieza fundida con sobrematerial no debería provocar un cambio. En cambio, un salto brusco que persiste durante varios cortes suele indicar un filo astillado y merece atención inmediata. Muchos talleres añaden una regla aparte para ese caso: si el índice salta bruscamente entre dos cortes consecutivos, se genera una alerta independientemente del valor suavizado.

Ajustar los límites

Los valores anteriores son puntos de partida, no constantes universales. Ajústalos por familia de herramientas:

  1. Empieza solo monitorizando. Mantén la vida útil fija existente y limítate a registrar el índice de desgaste durante unas semanas.
  2. Inspecciona las herramientas desgastadas. Cuando se retiren herramientas, mide el desgaste de flanco o valora su estado y anota el índice en el momento de la retirada.
  3. Correlaciona. Encuentra el nivel de índice al que las herramientas alcanzan tu límite de desgaste aceptable y fija el límite de cambio ligeramente por debajo.
  4. Amplía con cuidado. Cuando el índice prediga la condición de forma fiable, permite que las herramientas que siguen en buen estado funcionen más allá del antiguo número fijo, en pasos pequeños.
  5. Mantén un tope máximo. Deja un número máximo holgado como red de seguridad por si falla un sensor o el gateway.

Qué gana el taller

Cuando los cambios de herramienta se basan en la condición, las herramientas que trabajan en condiciones fáciles se usan durante más tiempo, las que se desgastan rápido se retiran antes de romperse y el almacén de herramientas puede planificar las compras a partir del consumo real. Los datos de desgaste por herramienta también alimentan el trabajo de fiabilidad: las paradas relacionadas con herramientas se hacen visibles en tu cálculo de MTBF y MTTR, y las tasas de desgaste anómalas apuntan a problemas de proceso como fallos de refrigerante o variaciones del material. Combinar el índice de desgaste con los datos de un sensor de monitorización de vibraciones en los rodamientos del husillo separa los problemas de herramienta de los problemas de máquina.

Notas de infraestructura

  • La segmentación en el edge mantiene baja la carga del broker: un mensaje por corte en lugar de miles de muestras por segundo.
  • QoS 1 para los mensajes de corte y de cambio de herramienta garantiza que el servicio nunca se pierda un reinicio.
  • Los topics ISA-95 como acme/plant1/machining/cell2/cnc4/... permiten que el portal de ConnectMQ agrupe las máquinas por área y celda en su vista de dispositivos.
  • Broker privado para producción. La demo pública es legible por cualquiera. Usa credenciales del portal y TLS en el puerto 8883.

Un broker MQTT en la nube permite que los mismos datos lleguen al panel de planta, al almacén de herramientas y a un ingeniero de procesos que trabaja en remoto sin abrir puertos entrantes hacia la red de máquinas. Para la arquitectura general, consulta la guía de manufactura inteligente.

Conecta tus máquinas CNC a ConnectMQ

ConnectMQ es un broker MQTT gestionado con MQTT 5, TLS, mensajes retained, un explorador de topics en vivo y alertas por umbral en el portal. Crea un broker en el plan gratuito Serverless en app.connectmq.com, sin tarjeta de crédito, y empieza a registrar datos de desgaste desde tu primera máquina.

Preguntas frecuentes

¿Cuál es la mejor señal para la monitorización del desgaste de herramientas?

La potencia o carga del husillo es la señal más práctica para empezar, porque muchos controles ya la proporcionan. Añadir la vibración del husillo mejora la detección de astillados y chatter.

¿Puede la monitorización del desgaste sustituir por completo la vida útil fija?

Puede alargar o acortar la vida útil de las herramientas según su condición, pero la mayoría de los talleres mantienen un número máximo holgado como red de seguridad por si fallan los sensores o la captura de datos.

¿Por qué comparar cada corte con una referencia de herramienta nueva?

La potencia depende mucho de la operación, el material y la herramienta. Comparar la misma herramienta y operación con su propio estado inicial aísla el cambio causado por el desgaste.

¿Cuántos datos envía esto por MQTT?

Solo un pequeño mensaje por corte más los eventos de cambio de herramienta. Las señales en bruto de alta frecuencia se quedan en el edge, salvo que las necesites explícitamente.

Artículos relacionados

OEE vs TEEP vs OOE: ¿qué indicador deberías usar?

OEE, OOE y TEEP comparten los mismos factores de rendimiento y calidad, pero se miden frente a bases de tiempo distintas. Esta comparativa resuelve un único ejemplo y enumera las señales MQTT que necesita cada indicador.

8 min de lectura

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.