IoT industrial

Como Fazer o Retrofit de Máquinas Legadas para IoT Sem Mexer no CLP

Máquinas antigas ainda produzem a maior parte das peças em muitas plantas. Este guia mostra como fazer o retrofit de máquinas legadas para IoT com alicates de corrente, sensores adicionais e um gateway, publicando o estado da máquina via MQTT sem tocar em uma linha do código do CLP.

Torno antigo equipado com alicate de corrente e gateway sem fio, mostrando como fazer o retrofit de máquinas legadas para IoT
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

Fazer o retrofit de máquinas legadas para IoT costuma ser o caminho mais rápido para obter dados reais de produção, porque as máquinas que fabricam a maior parte das suas peças muitas vezes têm décadas de uso e não serão substituídas tão cedo. Neste guia você vai aprender quais sinais não invasivos capturar, como escolher entre sensores e interfaces do controlador e como montar um monitor funcional com alicate de corrente que publica o estado da máquina via MQTT sem alterar nenhuma lógica de CLP.

Por Que Fazer Retrofit em Vez de Substituir

Um torno, uma prensa ou uma injetora de vinte anos, seja em uma planta em Joinville ou em Manaus, ainda pode manter tolerâncias perfeitamente. O que falta é uma porta de rede, ou ela existe mas fala um protocolo que ninguém do lado da TI reconhece. Substituir a máquina para obter dados raramente se justifica. O retrofit custa uma fração disso e pode ser feito em uma janela de manutenção.

O princípio orientador de um bom retrofit é começar pelo não invasivo. Toda mudança na lógica do CLP exige validação, um plano de contingência e muitas vezes o integrador original, que pode nem existir mais. Todo sensor que você prende pelo lado de fora não exige nada disso. Comece pelos sinais que você consegue ler sem tocar no sistema de controle e só avance para a integração com o controlador quando o valor estiver comprovado.

O Que Medir em uma Máquina Legada

A maior parte do valor de um primeiro retrofit vem de um punhado de sinais que respondem à pergunta "a máquina está produzindo peças e, se não está, por quê?"

Sinal Como capturar O que ele informa Invasividade
Corrente do spindle ou do motor Transformador de corrente de núcleo dividido (alicate de corrente) em uma fase Desligada, ociosa, em operação, sobrecarga Nenhuma, o alicate envolve um cabo existente
Estado da torre de sinalização Sensores de luz ou contatos secos na torre luminosa Em operação, aguardando, alarme, como o operador vê Muito baixa
Contagem de peças Sensor de proximidade em um ejetor ou contato no sinal de fim de ciclo Produtividade e tempo de ciclo Baixa
Vibração Acelerômetro com base magnética, com ou sem fio Desgaste de rolamentos, desbalanceamento, condição da ferramenta Nenhuma
Temperatura Sonda de fixação por abraçadeira ou adesiva Motores superaquecidos, óleo hidráulico, fluido de corte Nenhuma
Dados do controlador Leitura Modbus, Ethernet/IP, S7 ou serial por um gateway Programa, alarmes, setpoints, contadores Média, acesso somente leitura ao CLP

O alicate de corrente merece atenção especial. Com um sensor por máquina você consegue derivar o estado, a utilização e até um consumo aproximado de energia. Ele não precisa de CLP, nem de porta de rede na máquina, nem da cooperação do fabricante.

Escolhendo Entre Sensores e Interfaces do Controlador

Há dois grandes caminhos de retrofit, e eles se combinam bem.

Sensores adicionais são independentes do controlador da máquina. Funcionam em máquinas com lógica a relé, CLPs obsoletos ou controladores bloqueados. Eles fornecem a verdade física, como se o spindle realmente girou, mas nenhum contexto, como o número do programa ou o texto do alarme.

Interfaces do controlador leem dados que a máquina já tem. Muitos CLPs mais antigos expõem Modbus RTU por uma porta serial, e muitos das últimas duas décadas suportam Modbus TCP, Ethernet/IP ou comunicação S7. Um gateway lê registradores ou tags em modo somente leitura e os publica. Os nossos guias de Modbus TCP para MQTT e de conectividade do CLP para a nuvem percorrem esse caminho.

Uma sequência prática é começar pelo alicate, comprovar o valor com dados de utilização e depois acrescentar leituras do controlador nas máquinas em que códigos de alarme e contadores justificam o esforço extra.

A Arquitetura do Retrofit

Seja o que for que você meça, a arquitetura continua a mesma:

  1. Sensores na máquina produzem sinais analógicos, digitais ou de fieldbus.
  2. Um dispositivo de borda os lê. Pode ser um microcontrolador como o ESP32 para uma única máquina, ou um gateway de borda IIoT para uma linha inteira.
  3. O dispositivo de borda publica em MQTT para um broker, usando uma hierarquia de topics como site/area/line/machine/measurement.
  4. Os consumidores assinam: dashboards, cálculos de OEE, historiadores, sistemas de manutenção e um gêmeo digital da linha.

O broker é o que mantém isso escalável. Adicionar a quinquagésima máquina é igual a adicionar a primeira, e um novo consumidor nunca precisa saber como os dados foram coletados. Se o próprio MQTT é novidade, comece por o que é um broker MQTT.

Mão na Massa: Monitor de Máquina com Alicate de Corrente e ESP32

Este exemplo usa um ESP32 e um transformador de corrente de núcleo dividido com saída em tensão, como o SCT-013-030, que fornece 1 V RMS a 30 A. O alicate é ligado ao GPIO34 por um circuito de polarização no ponto médio (dois resistores iguais de 3,3 V ao GND com um capacitor para o terra, e o alicate entre o ponto médio e o pino do ADC), de modo que o sinal AC oscile em torno de aproximadamente 1,65 V.

Segurança em primeiro lugar: o alicate envolve um único condutor isolado dentro do painel da máquina. Esse trabalho deve ser feito por um eletricista qualificado (no Brasil, habilitado conforme a NR-10), com a máquina desenergizada. Nunca envolva um cabo multipolar que carrega todas as fases, porque os campos se cancelam e você vai ler algo próximo de zero.

#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;
// Use um prefixo único no broker público; ele pode ser lido por todos
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;        // abaixo disso a máquina está desligada
const float RUN_AMPS = 4.0;         // acima disso o spindle está cortando

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);          // janela de ~200 ms, 10 ciclos da rede 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()) {
    // O last will marca o monitor como offline se a energia ou o Wi-Fi caírem
    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 o estado quando muda, retido para que os dashboards o vejam na hora
  if (state != lastState) {
    mqtt.publish((String(BASE) + "/state").c_str(), state.c_str(), true);
    lastState = state;
  }
  // Publica a corrente a cada 10 segundos para tendência
  if (millis() - lastReport > 10000) {
    char buf[64];
    snprintf(buf, sizeof(buf), "{\"amps\":%.2f}", amps);
    mqtt.publish((String(BASE) + "/current").c_str(), buf);
    lastReport = millis();
  }
}

Troque k7q2x9 pela sua própria string aleatória (o servidor MQTT público pode ser lido por qualquer pessoa e serve apenas para testes), grave a placa e assine a partir de um notebook:

mosquitto_sub -h broker.connectmq.com -p 1883 -i lathe-watch-$RANDOM \
  -t 'connectmq/demo/k7q2x9/#' -v

Calibre os limites observando a corrente com a máquina desligada, ociosa com o spindle parado e cortando. Cada máquina tem seu próprio consumo em vazio por causa de bombas, ventiladores e sistemas hidráulicos, então IDLE_AMPS e RUN_AMPS precisam ser ajustados por máquina. Em produção, mude para WiFiClientSecure na porta 8883 e use o nome de usuário, a senha e o client ID do seu portal da ConnectMQ.

Armadilhas Comuns no Retrofit

  • Limites errados. Uma máquina cuja bomba hidráulica funciona continuamente vai parecer "em operação" o turno inteiro se o limite de operação for baixo demais. Calibre com base no comportamento observado.
  • Ruído elétrico. Inversores de frequência e contatores injetam ruído. Mantenha a fiação dos sensores curta, use cabo blindado e faça a média das leituras ao longo de vários ciclos da rede, como o exemplo faz.
  • Wi-Fi em painéis de aço. Uma placa dentro de um painel fechado pode perder a conexão. Use uma antena externa ou monte a eletrônica fora do painel.
  • Sem estado offline. Sem um last will, um monitor que perde energia mostra o último estado para sempre. O exemplo publica UNKNOWN como mensagem will retida para evitar isso.
  • Topics sem estrutura. Defina a hierarquia antes da segunda máquina. Renomear cinquenta dispositivos depois é doloroso.

Escalando de Uma Máquina para Todo o Chão de Fábrica

Quando algumas máquinas já estão reportando, as perguntas deixam de ser sobre fiação e passam a ser sobre operação: quantas conexões, quem pode ler quais dados, como alertar sobre paradas. Um broker MQTT gerenciado elimina o trabalho com servidores para que você possa se concentrar nos sensores. Com a ConnectMQ você acompanha cada máquina com retrofit no explorador de topics ao vivo, agrupa-as por nível ISA-95 na visão de dispositivos e define regras de alerta por limite, por exemplo quando a corrente do spindle ultrapassa um limite de sobrecarga. O plano Serverless gratuito suporta até 25 conexões, o suficiente para uma célula piloto. Para a jornada completa do retrofit até os dados de toda a planta, leia o nosso guia de IoT industrial com MQTT e o plano de prova de conceito IIoT.

Comece a Usar a ConnectMQ

Crie um broker Serverless gratuito em app.connectmq.com, sem cartão de crédito. Troque o servidor MQTT público pelo seu próprio endpoint ConnectMQ com TLS, e suas máquinas com retrofit passam a gerar dados estruturados ao vivo que qualquer dashboard ou ferramenta de analytics pode assinar.

Perguntas frequentes

Posso fazer o retrofit de máquinas legadas para IoT sem modificar o CLP?

Sim. Alicates de corrente, sensores de torre de sinalização, sensores de vibração e sensores de contagem de peças são todos instalados fora da lógica de controle. Eles fornecem o estado e a utilização da máquina sem nenhuma mudança no CLP.

Qual é a forma mais barata de monitorar o estado de uma máquina?

Um único alicate de corrente de núcleo dividido na alimentação do motor principal ou do spindle, lido por um pequeno microcontrolador, costuma ser a opção de menor custo. O nível de corrente distingue desligada, ociosa e em operação.

É seguro instalar um alicate de corrente em uma máquina em funcionamento?

A instalação do alicate dentro de um painel elétrico deve ser feita por um eletricista qualificado, seguindo os procedimentos de bloqueio e etiquetagem. O alicate em si não interrompe o circuito, mas o painel contém partes energizadas.

Quando devo ler os dados diretamente do CLP?

Quando você precisa de contexto, como códigos de alarme, números de programa ou contadores exatos de peças. Use um gateway com acesso somente leitura e comece depois que os sensores adicionais tiverem comprovado o valor dos dados.

Artigos relacionados

Cliente MQTT no CODESYS: Publicando Variáveis do CLP em um Broker

Configure a biblioteca IIoT MQTT Client do CODESYS para publicar variáveis do CLP em JSON, verifique-as no servidor MQTT público broker.connectmq.com e depois migre para um broker privado com credenciais e TLS.

8 min de leitura

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.