Hacer un retrofit de máquinas antiguas para IoT suele ser la forma más rápida de obtener datos reales de producción, porque las máquinas que fabrican la mayoría de tus piezas a menudo tienen décadas y no se van a sustituir pronto. En esta guía aprenderás qué señales no invasivas aprovechar, cómo elegir entre sensores e interfaces del controlador y cómo construir un monitor funcional con pinza amperimétrica que publique el estado de la máquina por MQTT sin cambiar ninguna lógica del PLC.
Por qué hacer un retrofit en lugar de sustituir
Un torno, una prensa o una inyectora de veinte años pueden seguir manteniendo las tolerancias perfectamente. Lo que les falta es un puerto de red, o tienen uno que habla un protocolo que nadie en TI reconoce. Sustituirlos para obtener datos rara vez está justificado. Un retrofit cuesta una fracción y puede hacerse en una ventana de mantenimiento.
El principio rector de un buen retrofit es empezar por lo no invasivo. Cada cambio en la lógica del PLC necesita validación, un plan de vuelta atrás y, a menudo, al integrador original, que quizá ya no exista. Cada sensor que colocas desde fuera no necesita nada de eso. Empieza por señales que puedas leer sin tocar el sistema de control y pasa a la integración con el controlador solo cuando el valor esté demostrado.
Qué medir en una máquina antigua
La mayor parte del valor de un primer retrofit procede de un puñado de señales que responden a la pregunta "¿está la máquina fabricando piezas y, si no, por qué?"
| Señal | Cómo capturarla | Qué te dice | Grado de intrusión |
|---|---|---|---|
| Corriente del cabezal o del motor | Transformador de corriente de núcleo partido (pinza amperimétrica) en una fase | Apagada, en vacío, en marcha, sobrecarga | Ninguno, se abraza a un cable existente |
| Estado de la baliza luminosa | Sensores de luz o contactos secos en la columna de señalización | En marcha, en espera, alarma, tal como lo ve el operario | Muy bajo |
| Recuento de piezas | Sensor de proximidad en un expulsor o un contacto en la señal de fin de ciclo | Producción y tiempo de ciclo | Bajo |
| Vibración | Acelerómetro con montaje magnético, cableado o inalámbrico | Desgaste de rodamientos, desequilibrio, estado de la herramienta | Ninguno |
| Temperatura | Sonda de abrazadera o adhesiva | Motores sobrecalentados, aceite hidráulico, refrigerante | Ninguno |
| Datos del controlador | Lectura Modbus, Ethernet/IP, S7 o serie a través de un gateway | Programa, alarmas, consignas, contadores | Medio, acceso de solo lectura al PLC |
La pinza amperimétrica merece una atención especial. Con un solo sensor por máquina puedes deducir el estado, la utilización e incluso un consumo energético aproximado. No necesita un PLC, ni un puerto de red en la máquina, ni la colaboración del fabricante de la máquina.
Elegir entre sensores e interfaces del controlador
Hay dos grandes vías de retrofit, y se combinan bien.
Los sensores añadidos son independientes del controlador de la máquina. Funcionan en máquinas con lógica de relés, PLC obsoletos o controladores bloqueados. Te dan la verdad física, como si el cabezal giró realmente, pero no el contexto, como el número de programa o el texto de una alarma.
Las interfaces del controlador leen datos que la máquina ya tiene. Muchos PLC antiguos exponen Modbus RTU por un puerto serie, y muchos de las dos últimas décadas admiten Modbus TCP, Ethernet/IP o comunicación S7. Un gateway lee registros o tags en modo de solo lectura y los publica. Nuestras guías de Modbus TCP a MQTT y de conectividad del PLC a la nube recorren ese camino.
Una secuencia práctica es poner primero la pinza, demostrar el valor con datos de utilización y después añadir lecturas del controlador en las máquinas en las que los códigos de alarma y los contadores justifiquen el esfuerzo adicional.
La arquitectura del retrofit
Midas lo que midas, la arquitectura es la misma:
- Los sensores de la máquina producen señales analógicas, digitales o de bus de campo.
- Un dispositivo edge las lee. Puede ser un microcontrolador como un ESP32 para una sola máquina o un gateway edge IIoT para toda una línea.
- El dispositivo edge publica MQTT en un broker, usando una jerarquía de topics como
site/area/line/machine/measurement. - Los consumidores se suscriben: paneles, un gemelo digital 3D de la planta, cálculos de OEE, historiadores, sistemas de mantenimiento.
El broker es lo que hace que esto escale. Añadir la máquina número cincuenta es igual que añadir la primera, y un consumidor nuevo nunca necesita saber cómo se recogieron los datos. Si MQTT en sí es nuevo para ti, empieza por qué es un broker MQTT.
Práctica: un monitor de máquina con pinza amperimétrica y ESP32
Este ejemplo usa un ESP32 y un transformador de corriente de núcleo partido con salida en tensión, como el SCT-013-030, que entrega 1 V RMS a 30 A. La pinza se conecta al GPIO34 a través de un circuito de polarización a punto medio (dos resistencias iguales de 3,3 V a GND con un condensador a masa y la pinza entre el punto medio y el pin del ADC), de modo que la señal alterna oscila alrededor de unos 1,65 V.
La seguridad es lo primero: la pinza se coloca alrededor de un único conductor aislado dentro del armario de la máquina. Ese trabajo debe hacerlo un electricista cualificado con la máquina aislada. Nunca coloques la pinza alrededor de una manguera multipolar que lleve todas las fases, porque los campos se anulan y leerás casi cero.
#include <WiFi.h>
#include <PubSubClient.h>
const char* WIFI_SSID = "plant-iot";
const char* WIFI_PASS = "your-wifi-password";
const char* MQTT_HOST = "broker.connectmq.com";
const int MQTT_PORT = 1883;
// Usa un prefijo único en el broker público; cualquiera puede leerlo
const char* BASE = "connectmq/demo/k7q2x9/factory1/turning/lathe07";
const int CT_PIN = 34;
const float AMPS_PER_VOLT = 30.0; // SCT-013-030: 1 V RMS = 30 A
const float IDLE_AMPS = 1.0; // por debajo, la máquina está apagada
const float RUN_AMPS = 4.0; // por encima, el cabezal está mecanizando
WiFiClient net;
PubSubClient mqtt(net);
String lastState = "";
unsigned long lastReport = 0;
float readAmpsRms() {
const int N = 2000;
static float samples[N];
float sum = 0;
for (int i = 0; i < N; i++) {
samples[i] = analogReadMilliVolts(CT_PIN) / 1000.0;
sum += samples[i];
delayMicroseconds(100); // ventana de ~200 ms, 10 ciclos de red a 50 Hz
}
float mean = sum / N;
float sq = 0;
for (int i = 0; i < N; i++) {
float v = samples[i] - mean;
sq += v * v;
}
return sqrt(sq / N) * AMPS_PER_VOLT;
}
void connectMqtt() {
String clientId = "lathe07-" + String((uint32_t)ESP.getEfuseMac(), HEX);
String stateTopic = String(BASE) + "/state";
while (!mqtt.connected()) {
// El last will marca el monitor como desconectado si se pierde la alimentación o el Wi-Fi
if (mqtt.connect(clientId.c_str(), stateTopic.c_str(), 1, true, "UNKNOWN")) {
lastState = "";
} else {
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
analogSetPinAttenuation(CT_PIN, ADC_11db);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) delay(500);
mqtt.setServer(MQTT_HOST, MQTT_PORT);
connectMqtt();
}
void loop() {
if (!mqtt.connected()) connectMqtt();
mqtt.loop();
float amps = readAmpsRms();
String state = amps < IDLE_AMPS ? "OFF" : (amps < RUN_AMPS ? "IDLE" : "RUNNING");
// Publica el estado al cambiar, retenido para que los paneles lo vean de inmediato
if (state != lastState) {
mqtt.publish((String(BASE) + "/state").c_str(), state.c_str(), true);
lastState = state;
}
// Publica la corriente cada 10 segundos para ver tendencias
if (millis() - lastReport > 10000) {
char buf[64];
snprintf(buf, sizeof(buf), "{\"amps\":%.2f}", amps);
mqtt.publish((String(BASE) + "/current").c_str(), buf);
lastReport = millis();
}
}
Cambia k7q2x9 por tu propia cadena aleatoria, flashea la placa y suscríbete desde un portátil al servidor MQTT público gratuito, que sirve para pruebas y prototipos, nunca para datos de producción:
mosquitto_sub -h broker.connectmq.com -p 1883 -i lathe-watch-$RANDOM \
-t 'connectmq/demo/k7q2x9/#' -v
La ventana de muestreo de unos 200 ms cubre 10 ciclos de red a 50 Hz, como en España, o 12 ciclos a 60 Hz, como en México o Colombia. Calibra los umbrales observando la corriente con la máquina apagada, en vacío con el cabezal parado y mecanizando. Cada máquina tiene su propio consumo en vacío por bombas, ventiladores e hidráulica, así que IDLE_AMPS y RUN_AMPS deben ajustarse por máquina. Para producción, cambia a WiFiClientSecure en el puerto 8883 y usa el nombre de usuario, la contraseña y el client ID de tu portal de ConnectMQ.
Errores habituales en un retrofit
- Umbrales incorrectos. Una máquina cuya bomba hidráulica funciona continuamente parecerá "en marcha" todo el turno si el umbral de marcha es demasiado bajo. Calibra según el comportamiento observado.
- Ruido eléctrico. Los variadores y los contactores inyectan ruido. Mantén corto el cableado de los sensores, usa cable apantallado y promedia las lecturas durante varios ciclos de red, como hace el ejemplo.
- Wi-Fi en armarios de acero. Una placa dentro de un armario cerrado puede perder la conexión. Usa una antena externa o monta la electrónica fuera del armario.
- Sin estado de desconexión. Sin un last will, un monitor que pierde la alimentación muestra el último estado para siempre. El ejemplo publica
UNKNOWNcomo mensaje will retenido para evitarlo. - Topics desestructurados. Elige la jerarquía antes de la segunda máquina. Renombrar cincuenta dispositivos más adelante es muy pesado.
De una máquina a toda la planta
Cuando unas cuantas máquinas ya reportan, las preguntas pasan del cableado a la operación: cuántas conexiones, quién puede leer qué datos, cómo alertar de las paradas. Un broker MQTT gestionado elimina el trabajo de servidores para que puedas centrarte en los sensores. Con ConnectMQ puedes ver cada máquina con retrofit en el explorador de topics en vivo, agruparlas por nivel ISA-95 en la vista de dispositivos y definir reglas de alerta por umbral, por ejemplo cuando la corriente del cabezal supera un límite de sobrecarga. El plan Serverless gratuito admite hasta 25 conexiones, suficiente para una célula piloto. Para el recorrido completo desde el retrofit hasta los datos de toda la planta, lee nuestra guía de IoT industrial con MQTT y el plan de prueba de concepto IIoT.
Empieza con ConnectMQ
Crea un broker Serverless gratuito en app.connectmq.com, sin tarjeta de crédito. Cambia el broker público por tu propio endpoint de ConnectMQ con TLS y tus máquinas con retrofit se convertirán en datos estructurados en vivo a los que cualquier panel o herramienta de analítica podrá suscribirse.
Preguntas frecuentes
¿Puedo hacer un retrofit de máquinas antiguas para IoT sin modificar el PLC?
Sí. Las pinzas amperimétricas, los sensores de baliza luminosa, los sensores de vibración y los sensores de recuento de piezas se instalan al margen de la lógica de control. Te dan el estado y la utilización de la máquina sin ningún cambio en el PLC.
¿Cuál es la forma más barata de monitorizar el estado de una máquina?
Una sola pinza amperimétrica de núcleo partido en la alimentación del motor principal o del cabezal, leída por un pequeño microcontrolador, suele ser la opción de menor coste. El nivel de corriente distingue entre apagada, en vacío y en marcha.
¿Es seguro instalar una pinza amperimétrica en una máquina en funcionamiento?
La instalación de la pinza dentro de un armario eléctrico debe hacerla un electricista cualificado siguiendo los procedimientos de bloqueo y etiquetado. La pinza en sí no interrumpe el circuito, pero el armario contiene partes en tensión.
¿Cuándo debería leer los datos directamente del PLC?
Cuando necesites contexto como códigos de alarma, números de programa o contadores de piezas exactos. Usa un gateway con acceso de solo lectura y empieza después de que los sensores añadidos hayan demostrado el valor de los datos.



