IoT e IA

Previsão de Vida Útil Remanescente (RUL) Explicada

Como funciona a previsão de vida útil remanescente, quais famílias de modelos existem, que histórico de dados cada uma exige de ativos conectados via MQTT e como publicar estimativas de RUL com incerteza.

Gráfico de previsão de vida útil remanescente mostrando um índice de saúde crescente, um limiar de falha e uma faixa de previsão com incerteza
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

A previsão de vida útil remanescente estima por quanto tempo um componente ou máquina ainda pode operar antes de atingir uma condição de falha. Em vez de perguntar "há algo errado?", ela pergunta "quanto tempo temos?", que é a pergunta que os planejadores de manutenção realmente precisam ver respondida. Este artigo explica as principais famílias de modelos de RUL, o histórico de dados que cada uma exige de ativos conectados via MQTT e como calcular e publicar uma estimativa com uma incerteza honesta.

O que significa vida útil remanescente

Vida útil remanescente (RUL, de remaining useful life) é o tempo, os ciclos ou as horas de operação que restam até um ativo ultrapassar um limiar de falha definido. Três partes dessa definição merecem atenção:

  • A unidade. O tempo de calendário é fácil de comunicar, mas engana quando o uso varia. Horas de operação, ciclos, golpes ou unidades produzidas costumam acompanhar melhor o desgaste.
  • O limiar de falha. O RUL precisa de um ponto final definido: um nível de vibração em que um rolamento é trocado, uma perda de carga em um filtro a partir da qual a vazão se torna inaceitável, uma capacidade em que uma bateria é aposentada. Sem isso, não há o que prever.
  • A incerteza. Um número único, como "212 horas", esconde o quanto o modelo está confiante. Uma estimativa útil de RUL sempre vem com uma faixa.

A previsão de RUL é um dos enquadramentos da manutenção preditiva com machine learning. Ela se aplica a ativos que se degradam de forma gradual e repetível, como rolamentos, filtros, ferramentas de corte, baterias, correias e vedações. Aplica-se mal a falhas súbitas, como defeitos eletrônicos.

Famílias de modelos para previsão de vida útil remanescente

Abordagem Ideia Dados necessários Ponto forte Ponto fraco
Estatística de confiabilidade (Weibull) Ajustar uma distribuição de vida a partir de tempos de falha anteriores Apenas datas de falha e substituição Não exige sensores Ignora a condição desta unidade específica
Modelos de tendência de degradação Acompanhar um indicador de saúde e extrapolá-lo até um limiar Histórico de condição da unidade atual e um limiar Intuitivo, funciona com poucas falhas Supõe que o formato da tendência se mantém
Modelos baseados em similaridade Comparar a trajetória atual com trajetórias anteriores até a falha Vários históricos completos até a falha Captura caminhos realistas Exige unidades históricas comparáveis
Regressão direta com ML Aprender o RUL a partir de features (gradient boosting, LSTM, CNN) Muitos históricos rotulados até a falha Pode capturar padrões complexos Exige muitos dados, mais difícil de explicar
Modelos baseados em física Modelar mecanismos de desgaste (propagação de trincas, envelhecimento térmico) Conhecimento de engenharia, parâmetros de material Funciona antes de existirem dados Caro de construir para cada tipo de ativo

A maioria dos projetos práticos começa com um modelo de tendência de degradação, porque ele precisa apenas do histórico de uma unidade e de um limiar. Os métodos de similaridade e de ML vêm depois, quando a organização já registrou ciclos de vida completos suficientes.

O histórico de dados que os modelos de RUL exigem

A previsão de RUL é mais exigente quanto ao histórico do que a detecção de anomalias. Planeje estes fluxos de dados desde o início, porque eles não podem ser reconstruídos depois.

  1. Sinais de condição ao longo de toda a vida de cada unidade, não apenas das últimas semanas. Features como RMS de vibração, elevação de temperatura ou perda de carga, amostradas de forma consistente.
  2. Contadores de uso, como horas de operação, ciclos ou volume produzido, para que o RUL possa ser expresso na unidade que gera o desgaste.
  3. Contexto de operação, como carga, velocidade e temperatura ambiente, para separar a degradação das mudanças de condição.
  4. Eventos do ciclo de vida: instalação, substituição, reparo e falha, cada um com timestamp e número de série do componente. Eles definem onde termina uma vida e começa a próxima.
  5. Definições de falha: qual condição conta como fim de vida, registrada por tipo de componente.

Via MQTT, isso normalmente significa um topic de condição, um topic de uso e um topic de eventos por ativo, todos com timestamps de origem e armazenados por um assinante historiador. O guia de rotulagem de dados de sensores em séries temporais mostra como capturar eventos do ciclo de vida e entradas dos operadores junto com a telemetria, para que os registros até a falha fiquem completos.

Construindo um índice de saúde

A maioria dos métodos de RUL trabalha com um único indicador de saúde, e não com muitos sinais brutos. Um índice de saúde (HI) combina features em um único número que muda de forma monotônica à medida que o ativo se degrada. Formas comuns de construí-lo:

  • Usar uma feature com significado físico, como o RMS de vibração do rolamento ou a pressão diferencial do filtro.
  • Combinar features normalizadas com pesos escolhidos pelos engenheiros.
  • Usar o erro de reconstrução de um modelo treinado com dados saudáveis.
  • Usar o primeiro componente principal das features ao longo de históricos que vão do estado saudável à falha.

Bons índices de saúde compartilham três propriedades: são monotônicos (raramente andam para trás), são prognosticáveis (a falha acontece em um nível de HI consistente) e mostram tendência cedo o bastante para serem úteis.

Um exemplo de tendência de degradação em Python

O script a seguir assina um topic de índice de saúde, ajusta um modelo de degradação exponencial ao histórico recente, extrapola até um limiar de falha, estima uma faixa de incerteza por bootstrap e publica o RUL de volta no MQTT. Um simulador embutido publica o índice de saúde, para que você possa executar tudo de ponta a ponta no servidor MQTT público gratuito, usando apenas dados de teste.

import json
import math
import random
import threading
import time
import uuid

import numpy as np
import paho.mqtt.client as mqtt

BROKER = "broker.connectmq.com"
BASE = f"connectmq/demo/{uuid.uuid4().hex[:8]}/plant1/line1/fan2"
THRESHOLD = 4.0        # valor de HI definido como fim de vida (ex.: RMS de vibração em mm/s)
MIN_POINTS = 30
history = []           # (horas_de_operação, hi)


def fit_rul(hours, hi):
    # Ajusta ln(hi - baseline) = a + b * t e resolve para o cruzamento do limiar
    baseline = 0.9 * min(hi)
    y = np.log(np.maximum(np.array(hi) - baseline, 1e-6))
    b, a = np.polyfit(hours, y, 1)
    if b <= 0:
        return None
    t_fail = (math.log(THRESHOLD - baseline) - a) / b
    return t_fail - hours[-1]


def estimate():
    hours = np.array([h for h, _ in history[-120:]])
    hi = np.array([v for _, v in history[-120:]])
    point = fit_rul(hours, hi)
    if point is None:
        return None
    boots = []
    for _ in range(200):
        idx = np.sort(np.random.choice(len(hours), len(hours), replace=True))
        r = fit_rul(hours[idx], hi[idx])
        if r is not None:
            boots.append(r)
    low, high = np.percentile(boots, [10, 90])
    return {"rul_h": round(point, 1), "p10_h": round(low, 1), "p90_h": round(high, 1)}


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


def on_message(client, userdata, msg):
    p = json.loads(msg.payload)
    history.append((p["op_hours"], p["hi"]))
    if len(history) >= MIN_POINTS:
        est = estimate()
        if est:
            est.update({"ts": p["ts"], "threshold": THRESHOLD, "method": "exp-trend-v1"})
            client.publish(f"{BASE}/rul", json.dumps(est), qos=1, retain=True)
            print(est)


def simulate(pub):
    for step in range(400):
        hours = step * 5.0
        hi = 1.0 + 0.05 * math.exp(hours / 600) + random.gauss(0, 0.04)
        body = {"ts": int(time.time() * 1000), "op_hours": hours, "hi": round(hi, 3)}
        pub.publish(f"{BASE}/health", json.dumps(body), qos=0)
        time.sleep(0.5)


client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="rul-" + uuid.uuid4().hex[:8])
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, 1883, keepalive=60)
threading.Thread(target=simulate, args=(client,), daemon=True).start()
client.loop_forever()

Instale com pip install paho-mqtt numpy. No início da execução, a faixa entre p10_h e p90_h é larga; à medida que o índice de saúde se curva para cima, a estimativa se estabiliza e a faixa se estreita. Esse comportamento é normal e importante de comunicar: as estimativas de RUL só se tornam confiáveis quando a degradação está claramente visível.

Publicando estimativas de RUL que outros possam usar

Publique a estimativa como retained message em um topic dedicado por ativo, como .../fan2/rul, para que dashboards e conectores de CMMS recebam o valor mais recente assim que assinarem. Inclua o método e a versão, o limiar usado e a faixa de incerteza. No portal do ConnectMQ você pode acompanhar o topic no explorador de topics em tempo real e adicionar uma regra de alerta por limite, por exemplo quando p10_h cair abaixo de uma janela de planejamento, para que o limite inferior, e não a estimativa pontual, dispare o alerta.

Erros comuns em projetos de RUL

  • Prever dias de calendário para desgaste causado pelo uso. Converta antes para horas de operação ou ciclos.
  • Misturar vidas. Se a substituição de um componente não for registrada, duas vidas se fundem em uma trajetória confusa.
  • Ignorar a incerteza. Um planejador que vê apenas uma estimativa pontual vai confiar demais nela ou ignorá-la.
  • Treinar modelos de ML com um punhado de falhas. Comece com modelos de tendência ou similaridade e avance para ML quando o histórico permitir.
  • Esquecer as mudanças de regime. Mudanças de carga podem deslocar o índice de saúde sem nenhuma degradação; normalize pelo contexto de operação.

Onde o RUL se encaixa na sua stack

A estimativa de RUL fica sobre dados de condição confiáveis, que por sua vez dependem de uma camada de mensageria estável. O ConnectMQ fornece essa camada como um broker MQTT gerenciado, enquanto os modelos rodam como seus próprios clientes. Para técnicas de previsão que complementam a extrapolação de tendências, veja previsão de séries temporais em IoT e, para o panorama geral de modelos trabalhando com dispositivos conectados, o guia de IA e IoT. Estimativas de RUL também são uma camada natural de um gêmeo digital do ativo, seja uma bomba de saneamento ou uma correia transportadora de mineradora.

Comece a coletar dados de ciclo de vida no ConnectMQ

Modelos de RUL são tão bons quanto o histórico por trás deles, então o melhor momento para começar a registrar é agora. Crie um broker Serverless gratuito em app.connectmq.com, sem cartão de crédito, conecte seus ativos com o nome de usuário, a senha e o client ID gerados e comece a armazenar eventos de condição, uso e ciclo de vida por meio de um assinante historiador. Quando sua frota crescer, um plano de broker MQTT na nuvem oferece mais conexões e isolamento sem mudar seus topics.

Perguntas frequentes

O que é previsão de vida útil remanescente?

É a estimativa de quanto tempo de operação, ciclos ou uso um ativo ainda tem antes de atingir uma condição de falha definida, normalmente com base em seus dados de condição e no comportamento de ativos semelhantes.

De quantas falhas preciso para prever o RUL?

Modelos de tendência de degradação podem funcionar com o histórico de uma única unidade e um limiar de engenharia. Modelos baseados em similaridade e de machine learning precisam de vários a muitos históricos completos até a falha para cada tipo de componente.

Por que a estimativa de RUL varia tanto no início?

Antes de a degradação ficar visível, a tendência é dominada pelo ruído e a extrapolação é instável. Reporte uma faixa de incerteza e confie na estimativa quando essa faixa se estreitar.

O RUL deve ser expresso em dias ou em horas de operação?

Use a unidade que gera o desgaste, normalmente horas de operação, ciclos ou volume produzido, e converta para datas de calendário apenas no planejamento, usando a utilização esperada.

Artigos relacionados

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.