Modelo de dados AAS para ponte rolante Siemens
O AAS (Asset Administration Shell) é o núcleo da especificação de dados para o Gêmeo Digital de pontes rolantes. Este artigo apresenta a implementação completa do fluxo técnico de ponta a ponta, desde os registradores do PLC Siemens até a plataforma central de dados do Gêmeo Digital. Inclui o mapeamento OPC UA, um exemplo completo de JSON AAS, o pipeline de banco de dados de séries temporais e as APIs de integração MES/ERP — um manual de referência técnica pronto a usar.
No artigo anterior, "Análise Técnica Aprofundada do Sistema de Gêmeo Digital para Pontes Rolantes", apresentámos a arquitetura geral do Gêmeo Digital, onde o termo AAS (Asset Administration Shell) foi referido repetidamente. Este artigo debruça-se especificamente sobre o modelo de dados AAS, abordando passo a passo desde os endereços dos registradores do PLC, passando pelo mapeamento OPC UA, até à estrutura JSON AAS e à implementação num banco de dados de séries temporais.
Se está envolvido num projeto de digitalização de pontes rolantes, este artigo pode ser utilizado diretamente como manual de referência técnica.

Norma AAS e Modelação de Dados para Pontes Rolantes
O AAS é a especificação central de dados da Indústria 4.0 (IEC 63278). Pode ser entendido como o "cartão de identificação digital" de cada equipamento. Organiza todos os dados do ciclo de vida do equipamento — parâmetros de projeto, estado operacional, registos de manutenção, pontuação de saúde — numa estrutura hierárquica padronizada, permitindo que qualquer sistema (ERP, MES, SCADA, Plataforma em Nuvem) leia e escreva de forma uniforme.
1.1 Níveis da Estrutura AAS
Crane_AAS(Casca de ativo)├── Asset Information(Informação do ativo)│ ├── SerialNumber: "KELAND-CR-24001"│ ├── Manufacturer: "Kelude"│ ├── ModelType: "QD-32/5t-22.5m-A7"│ ├── ProductionDate: "2024-06-15"│ └── TechnicalData: {Span:22.5m, SWL:32t, HoistSpeed:6m/min}├── Submodels(Submódulo tipoGrupo)│ ├── TechnicalData(Parâmetros Técnicos——Somente leitura,Fixo de fábrica)│ ├── OperationalData(dados operacionais——Atualização em tempo real,100msPeríodo)│ ├── Maintenance(Dados de manutenção——Acionamento por evento,Atualização durante inspeção)│ ├── HealthStatus(Estado de saúde——AICálculo,Atualização periódica)│ └── EnvironmentalData(Dados ambientais——Análise auxiliar)└── Views(Camada de visualização) ├── OperatorView(Visão do operador——Estado atual+Alarme) ├── MaintenanceView(Visão de manutenção——Vida útil da peça de reposição+plano de manutenção) ├── EngineerView(Visão do engenheiro——Todos os dados brutos) └── ManagementView(Visão de gestão——OEE+Relatório de consumo de energia)
A vantagem deste design hierárquico é que cada perfil acede apenas aos dados de que necessita, mantendo um modelo de dados subjacente único — sem ilhas de informação.
Mapeamento Completo do PLC para o AAS
Chega de teoria — vamos aos dados reais de engenharia. Segue-se a tabela de mapeamento completa dos registradores do PLC para o AAS, referente a uma ponte rolante de dupla viga de 32t da Kelude:
| AAS (norma australiana)submodelo·atributo | OPC UA NodeID | PLC DBendereço | tipo de dados | período |
|---|---|---|---|---|
| TechnicalData.ratedCapacity | Crane.Params.RatedCap | DB100.DBD0 | Real | na inicialização |
| TechnicalData.span | Crane.Params.Span | DB100.DBD4 | Real | na inicialização |
| TechnicalData.workLevel | Crane.Params.WorkLvl | DB100.DBW8 | Int | na inicialização |
| OperationalData.runningState | Crane.Status.State | DB200.DBX0.0 | Word | 100ms |
| OperationalData.currentLoad_pct | Crane.Status.LoadPct | DB200.DBD2 | Real | 100ms |
| OperationalData.hoistMotorCurrent_A | Crane.Status.HoistCurrent | DB200.DBD6 | Real | 100ms |
| OperationalData.motorTemp_Hoist_C | Crane.Status.HoistTemp | DB200.DBD10 | Real | 1s |
| OperationalData.vibration_HoistDrive_mms | Crane.Status.HoistVib | DB200.DBD14 | Real | 1s |
| Maintenance.lastInspectionDate | Crane.Maint.LastInsp | DB300.DBD0 | Date | evento |
| Maintenance.remainingBrakePadLife_pct | Crane.Maint.BrakePad | DB300.DBD20 | Real | evento |
| Environmental.ambientTemp_C | Crane.Env.AmbTemp | DB400.DBD0 | Real | 10s |
2.1 Três ciclos de aquisição de dados
- Nível de 100 ms (tempo real): estado de funcionamento, corrente, capacidade de carga, posição — estes dados orientam a sincronização de postura em tempo real do motor 3D; se a latência for elevada, o modelo fica com atrasos
- Nível de 1 s (tendência): temperatura, valor eficaz de vibração — utilizados para análise de tendências e definição de limiares de alarme, não necessitando da rapidez de 100 ms
- Acionado por evento (registo): registos de manutenção, logs de falhas — atualizados apenas quando há alterações, sem ocupar largura de banda
3. Exemplo completo de AAS JSON
Segue-se o AAS JSON completo de uma ponte rolante de dupla viga de 32t, contendo 4 submodelos: parâmetros técnicos, dados operacionais, dados de manutenção e dados ambientais. Pode ser diretamente aplicado em projetos reais, bastando ajustar os valores dos parâmetros.
{ "administration": { "version": "3.0", "revision": "RC02", "id": "https://kurude-crane.com/aas/CR-2024-001", "idShort": "Crane32t_AAS" }, "assetInformation": { "assetKind": "Instance", "globalAssetId": "https://kurude-crane.com/asset/crane-32t-2024-001", "specificAssetId": [ {"name": "serialNumber", "value": "CRN-2024-001"}, {"name": "manufacturer", "value": "Kelude"}, {"name": "manufacturingDate", "value": "2024-03-15"} ] }, "submodels": [ { "id": "https://kurude-crane.com/aas/CR-2024-001/sm/technical-data", "idShort": "TechnicalData", "semanticId": "https://admin-shell.io/IDT/TechnicalData/3/0", "submodelElements": [ {"idShort": "ratedCapacity", "value": "32", "valueType": "xs:int", "unit": "t"}, {"idShort": "span", "value": "22.5", "valueType": "xs:double", "unit": "m"}, {"idShort": "workLevel", "value": "A6", "valueType": "xs:string"}, {"idShort": "hoistingHeight", "value": "16", "valueType": "xs:double", "unit": "m"}, {"idShort": "hoistSpeed", "value": "0.8-8.0", "valueType": "xs:string", "unit": "m/min"}, {"idShort": "totalWeight", "value": 38500, "valueType": "xs:int", "unit": "kg"}, {"idShort": "powerSupply", "value": "AC380V 50Hz 3-phase", "valueType": "xs:string"} ] }, { "id": "https://kurude-crane.com/aas/CR-2024-001/sm/operational-data", "idShort": "OperationalData", "submodelElements": [ {"idShort": "runningState", "value": "running", "valueType": "xs:string"}, {"idShort": "currentLoad_pct", "value": 42.5, "valueType": "xs:double"}, {"idShort": "totalRuntime_h", "value": 28650, "valueType": "xs:double"}, {"idShort": "cycleCount", "value": 12580, "valueType": "xs:int"}, {"idShort": "energyConsumption_kWh", "value": 186500, "valueType": "xs:double"}, {"idShort": "hoistMotorCurrent_A", "value": 45.2, "valueType": "xs:double"}, {"idShort": "motorTemp_Hoist_C", "value": 62.5, "valueType": "xs:double"}, {"idShort": "vibration_HoistDrive_mms", "value": 2.8, "valueType": "xs:double"}, {"idShort": "brakeWear_pct", "value": 35.0, "valueType": "xs:double"} ] }, { "id": "https://kurude-crane.com/aas/CR-2024-001/sm/maintenance", "idShort": "Maintenance", "submodelElements": [ {"idShort": "lastInspectionDate", "value": "2025-03-15", "valueType": "xs:date"}, {"idShort": "remainingBrakePadLife_pct", "value": 65.0, "valueType": "xs:double"}, {"idShort": "remainingWireRopeLife_pct", "value": 72.0, "valueType": "xs:double"}, {"idShort": "remainingWheelLife_pct", "value": 82.0, "valueType": "xs:double"}, {"idShort": "mtbf_h", "value": 9548, "valueType": "xs:double"}, {"idShort": "mttr_h", "value": 2.5, "valueType": "xs:double"} ] }, { "id": "https://kurude-crane.com/aas/CR-2024-001/sm/environmental", "idShort": "EnvironmentalData", "submodelElements": [ {"idShort": "ambientTemp_C", "value": 28.0, "valueType": "xs:double"}, {"idShort": "ambientHumidity_pct", "value": 55.0, "valueType": "xs:double"}, {"idShort": "noiseLevel_dBA", "value": 78.5, "valueType": "xs:double"} ] } ]}4. Conceção da base de dados de séries temporais e pipeline de dados
Depois de os dados entrarem na estrutura AAS, é necessário armazená-los. As características dos dados da ponte rolante incluem elevado volume de escrita (100 ms/registo), padrões de consulta fixos (agregação por intervalo de tempo) e necessidade de conservação a longo prazo (≥3 anos). As bases de dados de séries temporais (InfluxDB / TimescaleDB) são a escolha padrão.
4.1 Estratégia de armazenamento em camadas
As soluções de armazenamento e os ciclos de retenção para os diferentes tipos de dados são os seguintes:
| nível de armazenamento | tempo de retenção | granularidade de amostragem | capacidade de armazenamento |
|---|---|---|---|
| dados brutos | 7dia | 100ms | ≈1.2GB/dia |
| agregação por minuto | 90dia | 1min | ≈200MB/dia |
| agregação por hora | 2ano | 1h | ≈35MB/dia |
| agregação diária | 10ano | 1d | ≈5MB/dia |
4.2 Exemplo de consulta contínua (InfluxQL)
-- 1Agregação por minuto(Corrente de elevação)CREATE CONTINUOUS QUERY "cq_1min_hoist_current" ON "crane_db"RESAMPLE EVERY 1m FOR 1hBEGIN SELECT mean("value") AS "mean_hoist_current", max("value") AS "max_hoist_current", min("value") AS "min_hoist_current" INTO "crane_1min"."autogen"."hoist_current_agg" FROM "crane_realtime"."autogen"."hoist_current" GROUP BY time(1m), "crane_id"END-- Consulta:Passado24Corrente de pico por horaSELECT max("max_hoist_current") AS "peak_current"FROM "crane_1min"."autogen"."hoist_current_agg"WHERE "crane_id" = CRN-2024-001 AND time >= now() - 24hGROUP BY time(1h)Garantia da qualidade dos dados
Por mais elegante que seja o modelo AAS, se os dados subjacentes não forem fiáveis, o resultado é "lixo entra, lixo sai". Os problemas de qualidade dos dados em ambiente industrial são muito mais frequentes do que se imagina — deriva dos sensores, interrupções de comunicação, oscilações na varredura do PLC e interferência de sinal. Seguem-se cinco tipos de problemas de qualidade dos dados que identificámos na nossa prática de engenharia, juntamente com as respetivas estratégias de tratamento:
| tipo de problema | Detecçãométodo | estratégia de tratamento |
|---|---|---|
| perda de dados(lacuna>2×período) | verificação de sequência temporal | preenchimento por interpolação linear,quality=1 |
| valor fora do intervalo | superiorlimite inferiorvalidação | descarte+alarme,quality=2 |
| Fixaçãovalor fora do intervalo(sinal morto>30s) | taxa de variaçãoDetecção | marcar como suspeito+Detecção,quality=3 |
| valor de salto abrupto(taxa de variação>5σ) | anomalia estatísticaDetecção | substituição por filtro de mediana,quality=4 |
| anomalia de timestamp | validação de timestamp | rejeitar escrita |
Cada ponto de dados inclui um campo quality (0–192), que a aplicação de nível superior pode consultar para decidir se deve confiar nesse ponto. 192 = good, 0 = bad, e os valores intermédios são classificados por gravidade.
Integração MES/ERP na prática
Depois de o modelo AAS estar criado, os sistemas empresariais como MES, ERP e WMS podem ler e escrever dados da ponte rolante através de uma API REST uniforme:
Todas as APIs devolvem um formato uniforme:
| APIponto final | método | descrição | Frequêncialimite |
|---|---|---|---|
| /api/v2/cranes/{id}/status | GET | estado operacional em tempo real | 300vezes/min |
| /api/v2/cranes/{id}/telemetry | GET | dados históricos de telemetria | 30vezes/min |
| /api/v2/cranes/{id}/alarms | GET | histórico de alarmes | 30vezes/min |
| /api/v2/maintenance/records | POST | adicionar registro de manutenção | 10vezes/min |
| /api/v2/statistics | GET | relatório estatístico | 10vezes/min |
{ "code": 200, "message": "success", "data": { /* Dados de resposta */ }, "timestamp": "2026-06-21T14:00:00.000Z", "requestId": "req-001-abc-xyz"}Conclusão
O modelo de dados AAS não é uma teoria complexa — é simplesmente uma especificação que permite que equipamentos e sistemas falem a "mesma língua". A implementação também não é complicada: organize os endereços dos registradores do PLC, crie a tabela de mapeamento OPC UA, preencha o modelo JSON AAS, e o resto fica por conta do pipeline de dados.
Na sequência, escrevi o artigo "Método de Calibração de Parâmetros para Modelo de Simulação de Ponte Rolante", que explica o processo de calibração do modelo cinemático/dinâmico a partir da retroanálise de dados medidos, bem como a "Otimização de Renderização em Tempo Real no Edge". Fique atento para mais novidades.