Um gêmeo digital ISA-95 usa a hierarquia de equipamentos da norma ISA-95 (empresa, site, área, linha, célula) como espinha dorsal do modelo do gêmeo e da árvore de topics MQTT que o alimenta. Neste guia você vai aprender como os níveis se mapeiam em objetos do gêmeo e em topics, como nomear tudo de forma consistente, como os dados Sparkplug B se encaixam e como validar se a sua planta realmente publica a estrutura que o seu gêmeo espera.
Por Que Gêmeos Digitais Precisam de uma Hierarquia
O gêmeo de uma única máquina é fácil de organizar. O gêmeo de uma planta com centenas de máquinas, ou de uma empresa com várias plantas, rapidamente vira um emaranhado de nomes improvisados se não houver uma estrutura acordada. Sem ela:
- Cada equipe inventa sua própria nomenclatura, de modo que a mesma prensa é
Press_07,L2-P7epress7em três sistemas. - Os visualizadores do gêmeo precisam de código personalizado para cada fonte de dados.
- Agregações como "OEE de todas as linhas da área de Montagem" exigem tabelas de mapeamento manuais.
A ISA-95 (IEC 62264) já define uma hierarquia de equipamentos amplamente reconhecida para a manufatura. Usá-la no gêmeo significa que o modelo corresponde à forma como o pessoal da planta pensa a operação, e ele fica alinhado com os conceitos de MES e ERP. Para os fundamentos de gêmeos, veja o guia de tecnologia de gêmeo digital.
Os Níveis da Hierarquia de Equipamentos ISA-95
| Nível ISA-95 | Significado | Exemplo | Objeto do gêmeo | Segmento do topic |
|---|---|---|---|---|
| Empresa (Enterprise) | A companhia | Acme Manufacturing | Raiz do gêmeo | acme |
| Site | Um local físico | Planta de Izmir | Gêmeo do site com mapa e KPIs | izmir |
| Área | Uma área funcional do site | Usinagem, Montagem, Utilidades | Visão da área, região da planta baixa | machining |
| Centro de trabalho / Linha | Linha de produção ou grupo de células de processo | Linha 2 | Gêmeo da linha com topologia de fluxo | line2 |
| Unidade de trabalho / Célula | Máquina ou unidade individual | CNC 3, Robô 1 | Gêmeo do ativo com telemetria | cnc3 |
A norma distingue vários tipos de centros de trabalho (linhas de produção, células de processo, unidades de produção, zonas de armazenagem), dependendo do tipo de manufatura. Para topics MQTT, raramente você precisa dessa distinção no caminho; armazene-a como metadado no objeto do gêmeo.
Não confunda a hierarquia de equipamentos com os níveis funcionais da ISA-95 (do Nível 0, processo físico, até o Nível 4, planejamento de negócios). Ambos aparecem em discussões sobre "níveis ISA-95". A hierarquia do gêmeo descrita aqui usa a hierarquia de equipamentos.
Mapeando a Hierarquia em Topics MQTT
O padrão Unified Namespace publica todos os dados da planta em um broker, sob uma árvore de topics que espelha a hierarquia de equipamentos:
<enterprise>/<site>/<area>/<line>/<cell>/<data-type>
acme/izmir/machining/line2/cnc3/telemetry
acme/izmir/machining/line2/cnc3/state
acme/izmir/machining/line2/robot1/telemetry
acme/izmir/utilities/compressors/comp1/energy
Isso dá ao gêmeo três propriedades úteis:
- Estrutura a partir dos topics. Um serviço do gêmeo pode montar sua árvore de objetos analisando os caminhos dos topics, sem configuração separada para cada ativo.
- Escopo por wildcard. Um gêmeo de linha assina
acme/izmir/machining/line2/#; uma visão geral da planta assinaacme/izmir/+/+/+/state. - Endereçamento estável. Cada valor tem um único endereço canônico, compartilhado por dashboards, historiadores e ferramentas de análise.
Para saber mais sobre essa abordagem, leia MQTT Sparkplug B e o Unified Namespace.
Regras de nomenclatura que evitam dor de cabeça depois
- Apenas letras minúsculas, dígitos e hifens. Sem espaços, sem
+ou#. - Um conceito por nível; nunca pule um nível. Se uma máquina não está em uma linha, use um marcador como
general. - Use IDs estáveis (
cnc3) nos topics e mantenha os nomes de exibição (DMG Mori NHX 4000 #3) nos metadados. - Mantenha o tipo de dado como último segmento, com um vocabulário pequeno e fixo:
telemetry,state,alarm,energy,health,command. - Documente a árvore e trate as mudanças como mudanças de código, com revisão.
Como a ConnectMQ Apoia um Gêmeo Digital ISA-95
A ConnectMQ foi construída com essa estrutura em mente. Ela detecta topics ISA-95 e Unified Namespace, e a visão de dispositivos do portal organiza os dispositivos por níveis ISA-95, para que você navegue por empresa, site, área, linha e célula exatamente como o gêmeo fará. O explorador de topics ao vivo mostra a árvore bruta e as mensagens para a resolução de problemas.
Muitos dispositivos de borda usam Sparkplug B, cujos topics seguem um esquema diferente (spBv1.0/<group>/<message-type>/<edge-node>/<device>) e cujos payloads são Protobuf. A ConnectMQ decodifica Sparkplug B (Protobuf ou JSON) e o republica em topics ISA-95. Por exemplo:
spBv1.0/factory1/DDATA/line1/cnc1 -> connectmq/factory1/production/line1/cnc1/telemetry
O seu gêmeo pode assinar o lado ISA-95 sem fazer nenhuma decodificação de Sparkplug por conta própria, enquanto os clientes SCADA compatíveis com Sparkplug continuam usando os topics originais. Isso elimina um dos obstáculos de integração mais comuns ao combinar dispositivos Sparkplug brownfield com um novo gêmeo.
Se você não quer operar essa espinha dorsal por conta própria, um broker MQTT gerenciado cuida da disponibilidade, do TLS e do controle de acesso, deixando sua equipe livre para se concentrar na hierarquia e no gêmeo.
Construindo o Modelo do Gêmeo a Partir dos Topics
O modelo do gêmeo é uma árvore cujos nós carregam metadados e valores ao vivo. Uma representação simples em JSON:
{
"id": "acme/izmir/machining/line2",
"level": "line",
"name": "Line 2 - Housings",
"children": [
{ "id": "acme/izmir/machining/line2/cnc3", "level": "cell", "name": "CNC 3", "type": "cnc" },
{ "id": "acme/izmir/machining/line2/robot1", "level": "cell", "name": "Loading Robot", "type": "robot" }
]
}
Os valores ao vivo se ligam aos nós de célula a partir dos topics telemetry e state. Agregados como o estado da linha ou o OEE da linha são calculados por um serviço do gêmeo e publicados de volta em um topic no nível da linha, por exemplo acme/izmir/machining/line2/kpi, para que todos os visualizadores leiam os mesmos números.
Mão na Massa: Valide Sua Hierarquia de Topics
Antes de construir o gêmeo, verifique se o que os dispositivos publicam corresponde à hierarquia. Este script assina um prefixo no servidor MQTT público (gratuito) e informa os topics que quebram as regras. Use um prefixo exclusivo e dados simulados; a área pública pode ser lida por qualquer pessoa.
import re
import uuid
import paho.mqtt.client as mqtt
PREFIX = "connectmq/demo-isa-3e8f" # seu prefixo de demo exclusivo
LEVELS = ["enterprise", "site", "area", "line", "cell", "datatype"]
DATA_TYPES = {"telemetry", "state", "alarm", "energy", "health", "command", "kpi"}
SEGMENT = re.compile(r"^[a-z0-9-]+$")
seen = set()
def check(topic):
parts = topic[len(PREFIX) + 1 :].split("/")
problems = []
if len(parts) != len(LEVELS):
problems.append(f"expected {len(LEVELS)} levels, got {len(parts)}")
for name, seg in zip(LEVELS, parts):
if not SEGMENT.match(seg):
problems.append(f"{name} '{seg}' has invalid characters")
if parts and parts[-1] not in DATA_TYPES:
problems.append(f"unknown data type '{parts[-1]}'")
return problems
def on_connect(client, userdata, flags, reason_code, properties):
client.subscribe(f"{PREFIX}/#")
print("Validating topics under", PREFIX)
def on_message(client, userdata, msg):
if msg.topic in seen:
return
seen.add(msg.topic)
problems = check(msg.topic)
print(("OK " if not problems else "FAIL ") + msg.topic + ("" if not problems else " -> " + "; ".join(problems)))
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"isa95-check-{uuid.uuid4().hex[:6]}")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=30)
client.loop_forever()
Publique alguns topics de teste para vê-lo funcionando:
mosquitto_pub -h broker.connectmq.com -p 1883 -i isa-pub-1 -t "connectmq/demo-isa-3e8f/acme/izmir/machining/line2/cnc3/telemetry" -m '{"rpm":8000}'
mosquitto_pub -h broker.connectmq.com -p 1883 -i isa-pub-2 -t "connectmq/demo-isa-3e8f/acme/izmir/Machining/cnc3/Telemetry" -m '{"rpm":8000}'
O segundo topic falha por causa das maiúsculas e da ausência do nível de linha. O prefixo da demo tem, de propósito, dois níveis: o servidor MQTT público permite até 8 níveis de topic, e a hierarquia de seis níveis mais um prefixo de dois níveis cabe exatamente. Em um broker privado, você não precisa de prefixo algum.
Checklist de Implementação
- Defina os nomes de empresa, site e área junto com operações e TI.
- Faça o inventário de linhas e células por área; atribua IDs estáveis.
- Fixe o vocabulário de tipos de dados e os esquemas de payload por tipo.
- Configure os gateways de borda ou a republicação de Sparkplug para emitir topics ISA-95.
- Valide os topics com um script e com a visão de dispositivos ISA-95 antes de construir os visuais.
- Monte a árvore do gêmeo a partir dos topics, mais um arquivo de metadados para nomes e tipos.
- Publique os agregados no nível que eles descrevem.
- Versione o documento da hierarquia e revise cada mudança.
A estrutura se aplica diretamente a um gêmeo digital de fábrica e a programas de gêmeo digital na manufatura.
Organize os Dados da Sua Planta com a ConnectMQ
A ConnectMQ reconhece topics ISA-95 e Unified Namespace, decodifica Sparkplug B e oferece uma visão de dispositivos por níveis ISA-95. Cadastre-se em app.connectmq.com no plano Serverless (Free), sem cartão de crédito, e veja sua hierarquia tomar forma à medida que os dispositivos se conectam.
Perguntas frequentes
O que é um gêmeo digital ISA-95?
É um gêmeo digital cujo modelo e cujos topics de dados são organizados de acordo com a hierarquia de equipamentos ISA-95 (empresa, site, área, linha e célula), para que o gêmeo corresponda à estrutura da planta.
ISA-95 é a mesma coisa que Unified Namespace?
Não. A ISA-95 é uma norma que define a hierarquia; o Unified Namespace é um padrão de arquitetura que publica todos os dados em um broker. Um UNS costuma usar a hierarquia ISA-95 em sua árvore de topics.
Dispositivos Sparkplug B podem alimentar um gêmeo ISA-95?
Sim. A ConnectMQ decodifica Sparkplug B e republica os dados em topics ISA-95, para que o gêmeo possa assinar diretamente a árvore ISA-95.
E se uma máquina não pertencer a uma linha?
Use um segmento marcador como general no nível de linha, para que todos os topics mantenham a mesma profundidade e as assinaturas com wildcard continuem funcionando.



