Modelo de datos AAS para puente grúa: del PLC Siemens al Gemelo Digital
AAS (Asset Administration Shell) es la especificación central de datos del gemelo digital para puentes grúa. Este artículo desarrolla la solución técnica integral completa, desde los registros del PLC de Siemens hasta la plataforma de datos del gemelo digital. Incluye la tabla de mapeo OPC UA, una instancia JSON AAS completa, el diseño de la canalización de la base de datos de series temporales y las API de integración MES/ERP, utilizable directamente como manual de referencia técnica.
En el artículo anterior «Análisis técnico en profundidad del sistema de gemelo digital para puentes grúa» se presentó la arquitectura general del gemelo digital, donde se mencionó repetidamente un término: AAS (Asset Administration Shell). Este artículo se centra exclusivamente en desglosar el modelo de datos AAS, desde las direcciones de los registros del PLC hasta el mapeo OPC UA, pasando por la estructura JSON AAS y la implementación en la base de datos de series temporales, todo en un solo recorrido.
Si está trabajando en un proyecto de digitalización de puentes grúa, este artículo puede utilizarse directamente como manual de referencia técnica.

Norma AAS y modelado de datos para puentes grúa
AAS es la especificación central de datos de la Industria 4.0 (IEC 63278). Puede entenderse como el «DNI digital» de cada equipo. Organiza todos los datos del ciclo de vida del equipo —parámetros de diseño, estado operativo, historial de mantenimiento, índice de salud— en una estructura jerárquica estandarizada, de modo que cualquier sistema (ERP, MES, SCADA, plataforma en la nube) pueda leer y escribir con un método unificado.
1.1 Niveles de la estructura AAS
Crane_AAS(Carcasa de activo)├── Asset Information(Información del activo)│ ├── 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(Subgrupo de modelos)│ ├── TechnicalData(Parámetros Técnicos——Solo lectura,Fijación de fábrica del equipo)│ ├── OperationalData(datos operativos——Actualización en tiempo real,100msPeriodo)│ ├── Maintenance(Datos de mantenimiento——Disparo por evento,Actualización en revisión)│ ├── HealthStatus(Estado de salud——AICálculo,Actualización periódica)│ └── EnvironmentalData(Datos ambientales——Análisis auxiliar)└── Views(Capa de vista) ├── OperatorView(Vista del operador——Estado actual+Alarma) ├── MaintenanceView(Vista de mantenimiento——Vida útil del repuesto+plan de mantenimiento) ├── EngineerView(Vista del ingeniero——Datos brutos completos) └── ManagementView(Vista de gestión——OEE+Informe de consumo energético)
La ventaja de este diseño jerárquico es que cada rol consulta únicamente los datos que necesita, mientras el modelo de datos subyacente es único y compartido: no existen islas de información.
Mapeo completo de PLC a AAS
Una vez expuesta la teoría, pasamos directamente a los datos reales de ingeniería. A continuación se muestra la tabla de mapeo completa de registros PLC a AAS para un puente grúa de doble viga de 32t de Kelude Industrias Pesadas:
| Submodelo AAS·atributo | OPC UA NodeID | PLC DBdirección | tipo de datos | período |
|---|---|---|---|---|
| TechnicalData.ratedCapacity | Crane.Params.RatedCap | DB100.DBD0 | Real | al arranque |
| TechnicalData.span | Crane.Params.Span | DB100.DBD4 | Real | al arranque |
| TechnicalData.workLevel | Crane.Params.WorkLvl | DB100.DBW8 | Int | al arranque |
| 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 Tres ciclos de adquisición de datos
- Nivel de 100 ms (tiempo real): estado operativo, corriente, capacidad de carga, posición — estos datos impulsan la sincronización de la postura en tiempo real del motor 3D; si la latencia es alta, el modelo se entrecorta.
- Nivel de 1 s (tendencias): temperatura, valor eficaz de vibración — se utilizan para análisis de tendencias y juicio de umbrales de alarma, sin necesidad de la velocidad de 100 ms.
- Disparo por eventos (registro): registros de mantenimiento, historial de fallos — solo se actualizan cuando hay cambios, sin ocupar ancho de banda.
3. Ejemplo completo de AAS JSON
A continuación se muestra el AAS JSON completo de un puente grúa de doble viga de 32 t, que incluye 4 submodelos: parámetros técnicos, datos operativos, datos de mantenimiento y datos ambientales. Se puede aplicar directamente a proyectos reales modificando los valores de los 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. Diseño de base de datos de series temporales y canalización de datos
Una vez que los datos ingresan en la estructura AAS, es necesario contar con un lugar donde almacenarlos. Las características de los datos del puente grúa son: alto volumen de escritura (1 registro cada 100 ms), patrones de consulta fijos (agregación por rango de tiempo) y necesidad de conservación prolongada (≥3 años). Las bases de datos de series temporales (InfluxDB / TimescaleDB) son la opción estándar.
4.1 Estrategia de almacenamiento por niveles
El esquema de almacenamiento y el ciclo de diseño para los diferentes tipos de datos son los siguientes:
| nivel de almacenamiento | tiempo de retención | granularidad de muestreo | capacidad de almacenamiento |
|---|---|---|---|
| datos brutos | 7día | 100ms | ≈1.2GB/día |
| agregación por minutos | 90día | 1min | ≈200MB/día |
| agregación por horas | 2año | 1h | ≈35MB/día |
| agregación diaria | 10año | 1d | ≈5MB/día |
4.2 Ejemplo de consulta continua (InfluxQL)
-- 1Agregación por minutos(Corriente de elevación)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:Pasado24Corriente máxima 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)5. Garantía de calidad de datos
Por muy sofisticado que sea el modelo AAS, si los datos subyacentes son imprecisos, el resultado será basura que entra y basura que sale. Los problemas de calidad de datos en entornos industriales son mucho más frecuentes de lo que se podría imaginar: deriva del sensor, interrupciones de comunicación, fluctuaciones en el escaneo del PLC e interferencias de señal. A continuación, presentamos los 5 problemas de calidad de datos más comunes que hemos identificado en nuestra práctica de ingeniería, junto con sus estrategias de tratamiento:
| tipo de problema | Detecciónmétodo | estrategia de tratamiento |
|---|---|---|
| pérdida de datos(brecha>2×período) | verificación de secuencia temporal | relleno por interpolación lineal,quality=1 |
| validación de límites superior e inferior | descartar+alarma,quality=2 | |
| Fijaciónvalor fuera de rango(señal muerta>30s) | detección de tasa de variación | marcar como sospechoso+monitoreocción,quality=3 |
| valor de salto brusco(tasa de variación>5σ) | anomalía estadísticaDetección | sustitución por filtro de mediana,quality=4 |
| anomalía de marca de tiempo | verificación de marca de tiempo | rechazar escritura |
Cada punto de datos incluye un campo quality (0~192). La aplicación de nivel superior puede decidir si confiar en ese dato según el valor de quality: 192 = good, 0 = bad, y los valores intermedios se clasifican por nivel de severidad.
Integración de MES y ERP con puentes grúa
Una vez construido el modelo AAS, los sistemas empresariales como MES, ERP y WMS pueden leer y escribir datos del puente grúa a través de una API REST unificada:
Todas las API devuelven un formato uniforme:
| APIextremo | método | descripción | Frecuencialimitación |
|---|---|---|---|
| /api/v2/cranes/{id}/status | GET | estado de operación en tiempo real | 300veces/min |
| /api/v2/cranes/{id}/telemetry | GET | datos históricos de telemetría | 30veces/min |
| /api/v2/cranes/{id}/alarms | GET | historial de alarmas | 30veces/min |
| /api/v2/maintenance/records | POST | añadir registro de mantenimiento | 10veces/min |
| /api/v2/statistics | GET | informe estadístico | 10veces/min |
Conclusión
El modelo de datos AAS no es una teoría compleja; simplemente es una especificación que permite que los equipos y los sistemas hablen el mismo idioma. Su implementación no es complicada: basta con organizar las direcciones de los registros del PLC, crear la tabla de mapeo de OPC UA y completar la plantilla JSON de AAS. El resto es cuestión de canalización de datos.
Posteriormente, he publicado el artículo Método de calibración de parámetros para modelos de simulación de puentes grúa, donde se explica el proceso de calibración de los modelos cinemáticos y dinámicos a partir de datos de medición reales, así como la optimización de renderizado en tiempo real en el borde. Estén atentos.