Pont roulant AAS : des registres PLC au jumeau numérique
L'AAS (Asset Administration Shell) est la spécification centrale de données du jumeau numérique pour ponts roulants. Cet article détaille l'implémentation complète de la chaîne technique, du registre PLC Siemens à la plateforme de données du jumeau numérique. Il couvre la table de mapping OPC UA, une instance JSON AAS complète, la conception du pipeline de base de données temporelle et les API d'intégration MES/ERP — un manuel de référence technique directement exploitable.
Dans l'article précédent « Analyse technique approfondie du système de jumeau numérique pour ponts roulants », nous avons présenté l'architecture globale du jumeau numérique, où le terme AAS (Asset Administration Shell) revenait constamment. Cet article se concentre exclusivement sur le modèle de données AAS : adresses de registres PLC, mapping OPC UA, structure JSON AAS et déploiement en base de données temporelle — le tout pas à pas.
Si vous travaillez actuellement sur un projet de numérisation de pont roulant, cet article peut servir de manuel de référence technique.

I. Norme AAS et modélisation des données de pont roulant pont roulant
L'AAS est la spécification de données clé de l'Industrie 4.0 (IEC 63278). On peut la considérer comme la « carte d'identité numérique » de chaque équipement. Elle organise toutes les données du cycle de vie de l'équipement — paramètres de conception, état de fonctionnement, historique de maintenance, score de santé — dans une structure hiérarchique standardisée, lisible et modifiable par tout système (ERP, MES, SCADA, plateforme Cloud) de manière uniforme.
1.1 Niveaux de structure AAS
Crane_AAS(Coquille d)├── Asset Information(Informations sur l)│ ├── SerialNumber: "KELAND-CR-24001"│ ├── Manufacturer: "Kelude"│ ├── Model Type: "QD-32/5t-22.5m-A7"│ ├── ProductionDate: "2024-06-15"│ └── TechnicalData: {Span:22.5m, SWL:32t, HoistSpeed:6m/min}├── Submodels(Sous-module typeGroupe)│ ├── TechnicalData(Paramètres Techniques——Lecture seule,Fixe en usine)│ ├── OperationalData(données d'exploitation——Actualisation en temps réel,100msPériode)│ ├── Maintenance(Données de maintenance——Déclenchement par événement,Mise à jour lors de l)│ ├── HealthStatus(État de santé——AICalcul,Mise à jour périodique)│ └── EnvironmentalData(Données environnementales——Analyse auxiliaire)└── Views(Couche de visualisation) ├── OperatorView(Vue opérateur——État actuel+Alarme) ├── MaintenanceView(Vue maintenance——Durée de vie des pièces de rechange+plan de maintenance) ├── EngineerView(Vue ingénieur——Toutes les données brutes) └── ManagementView(Vue gestion——OEE+Rapport de consommation d)
L'avantage de cette conception hiérarchique est que chaque rôle n'accède qu'aux données dont il a besoin, tout en partageant le même modèle de données sous-jacent — aucune île d'information.
II. Mapping complet du PLC vers l'AAS
La théorie est suffisante — passons aux données d'ingénierie réelles. Voici le tableau de mapping complet des registres PLC vers l'AAS pour un pont roulant bipoutre de 32t de Kelude :
| AAS (Asset Administration Shell)Sous-modèle·Attribut | OPC UA NodeID | PLC DBAdresse | Type de données | Période |
|---|---|---|---|---|
| TechnicalData.ratedCapacity | Crane.Params.RatedCap | DB100.DBD0 | Real | Au démarrage |
| TechnicalData.span | Crane.Params.Span | DB100.DBD4 | Real | Au démarrage |
| TechnicalData.workLevel | Crane.Params.WorkLvl | DB100.DBW8 | Int | Au démarrage |
| 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 | Événement |
| Maintenance.remainingBrakePadLife_pct | Crane.Maint.BrakePad | DB300.DBD20 | Real | Événement |
| Environmental.ambientTemp_C | Crane.Env.AmbTemp | DB400.DBD0 | Real | 10s |
2.1 Trois cycles d'acquisition de données
- Niveau 100 ms (temps réel) : état de fonctionnement, courant, charge, position — ces données pilotent la synchronisation temps réel du moteur 3D ; un délai trop élevé provoque des saccades dans le modèle
- Niveau 1 s (tendances) : température, valeur efficace des vibrations — utilisées pour l'analyse des tendances et la détermination des seuils d'alarme, sans nécessiter la fréquence de 100 ms
- Déclenchement par événement (enregistrement) : historique de maintenance, journaux de défauts — mise à jour uniquement en cas de changement, sans occupation inutile de bande passante
III. Exemple complet de JSON AAS
Voici un exemple complet de JSON AAS pour un pont roulant bipoutre de 32 t, comprenant quatre sous-modèles : paramètres techniques, données d'exploitation, données de maintenance et données environnementales. Il peut être directement adapté à un projet réel en modifiant les valeurs des paramètres.
{ "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", "value Type": "xs:int", "unit": "t"}, {"idShort": "span", "value": "22.5", "value Type": "xs:double", "unit": "m"}, {"idShort": "workLevel", "value": "A6", "value Type": "xs:string"}, {"idShort": "hoistingHeight", "value": "16", "value Type": "xs:double", "unit": "m"}, {"idShort": "hoistSpeed", "value": "0.8-8.0", "value Type": "xs:string", "unit": "m/min"}, {"idShort": "totalWeight", "value": 38500, "value Type": "xs:int", "unit": "kg"}, {"idShort": "powerSupply", "value": "AC380V 50Hz 3-phase", "value Type": "xs:string"} ] }, { "id": "https://kurude-crane.com/aas/CR-2024-001/sm/operational-data", "idShort": "OperationalData", "submodelElements": [ {"idShort": "runningState", "value": "running", "value Type": "xs:string"}, {"idShort": "currentLoad_pct", "value": 42.5, "value Type": "xs:double"}, {"idShort": "totalRuntime_h", "value": 28650, "value Type": "xs:double"}, {"idShort": "cycleCount", "value": 12580, "value Type": "xs:int"}, {"idShort": "energyConsumption_kWh", "value": 186500, "value Type": "xs:double"}, {"idShort": "hoistMotorCurrent_A", "value": 45.2, "value Type": "xs:double"}, {"idShort": "motorTemp_Hoist_C", "value": 62.5, "value Type": "xs:double"}, {"idShort": "vibration_HoistDrive_mms", "value": 2.8, "value Type": "xs:double"}, {"idShort": "brakeWear_pct", "value": 35.0, "value Type": "xs:double"} ] }, { "id": "https://kurude-crane.com/aas/CR-2024-001/sm/maintenance", "idShort": "Maintenance", "submodelElements": [ {"idShort": "lastInspectionDate", "value": "2025-03-15", "value Type": "xs:date"}, {"idShort": "remainingBrakePadLife_pct", "value": 65.0, "value Type": "xs:double"}, {"idShort": "remainingWireRopeLife_pct", "value": 72.0, "value Type": "xs:double"}, {"idShort": "remainingWheelLife_pct", "value": 82.0, "value Type": "xs:double"}, {"idShort": "mtbf_h", "value": 9548, "value Type": "xs:double"}, {"idShort": "mttr_h", "value": 2.5, "value Type": "xs:double"} ] }, { "id": "https://kurude-crane.com/aas/CR-2024-001/sm/environmental", "idShort": "EnvironmentalData", "submodelElements": [ {"idShort": "ambientTemp_C", "value": 28.0, "value Type": "xs:double"}, {"idShort": "ambientHumidity_pct", "value": 55.0, "value Type": "xs:double"}, {"idShort": "noiseLevel_dBA", "value": 78.5, "value Type": "xs:double"} ] } ]}IV. Conception de la base de données temporelle et pipeline de données
Une fois les données intégrées dans la structure AAS, elles doivent être stockées. Les données du pont roulant se caractérisent par un volume d'écriture élevé (une entrée toutes les 100 ms), un modèle de requête fixe (agrégation par plage temporelle) et une conservation à long terme (≥ 3 ans). Une base de données temporelle (InfluxDB / TimescaleDB) constitue le choix standard.
4.1 Stratégie de stockage hiérarchisé
Les solutions de stockage et les cycles de conservation pour les différents types de données sont les suivants :
| Niveau de stockage | Durée de rétention | Granularité d | Capacité de stockage |
|---|---|---|---|
| Données brutes | 7Jour | 100ms | ≈1.2GB/Jour |
| Agrégation minute | 90Jour | 1min | ≈200MB/Jour |
| Agrégation horaire | 2Année | 1h | ≈35MB/Jour |
| Agrégation journalière | 10Année | 1d | ≈5MB/Jour |
4.2 Exemple de requête continue (InfluxQL)
-- 1Agrégation par minute(Courant de levage)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-- Requête:Passé24Courant de pointe horaireSELECT 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)V. Qualité des données : 5 problèmes fréquents et solutionsnts et solutions
Un modèle AAS aussi performant soit-il ne vaut rien si les données sous-jacentes sont inexactes : des données erronées en entrée produisent des résultats erronés en sortie. Sur le terrain industriel, les problèmes de qualité des données sont bien plus courants qu'on ne l'imagine — dérive des capteurs, interruptions de communication, gigue de balayage des automates, interférences de signaux. Voici les 5 types de problèmes de qualité des données que nous avons identifiés lors de nos projets, accompagnés de leurs stratégies de traitement :
| Type de problème | Méthode de détection | Stratégie de traitement |
|---|---|---|
| Perte de données(Intervalle>2×Période) | Contrôle de séquence temporelle | Remplissage par interpolation linéaire,quality=1 |
| Valeur aberrante(Taux de variation>5σ) hors plage | Supérieurlimite inférieureValidation | Rejet+Alarme,quality=2 |
| FixationValeur hors plage(Signal mort>30s) | Taux de variationDétection | Marquer comme suspect+Détection,quality=3 |
| Valeur aberrante(Taux de variation>5σ) | Anomalie statistiqueDétection | Remplacement par filtre médian,quality=4 |
| Anomalie d | Validation d | Refus d |
Chaque point de données comporte un champ quality (0 à 192). L'application de niveau supérieur peut, lors de la lecture, décider de faire confiance ou non à ce point de données en fonction de cette valeur. 192 = bon, 0 = mauvais, les valeurs intermédiaires étant classées selon leur niveau de gravité.
Intégration MES/ERP : bonnes pratiques
Une fois le modèle AAS établi, les systèmes d'entreprise tels que MES, ERP et WMS peuvent lire et écrire les données du pont roulant via une interface REST API unifiée :
Toutes les API renvoient un format de réponse uniforme :
| APIPoint d | Méthode | Description | FréquenceLimite |
|---|---|---|---|
| /api/v2/cranes/{id}/status | GET | État de fonctionnement en temps réel | 300Fois/min |
| /api/v2/cranes/{id}/telemetry | GET | Données historiques de télémétrie | 30Fois/min |
| /api/v2/cranes/{id}/alarms | GET | Historique des alarmes | 30Fois/min |
| /api/v2/maintenance/records | POST | Ajouter un enregistrement de maintenance | 10Fois/min |
| /api/v2/statistics | GET | Rapport statistique | 10Fois/min |
Conclusion
Le modèle de données AAS n'a rien d'une théorie abstraite : c'est avant tout un ensemble de spécifications qui permet aux équipements et aux systèmes de parler le même langage. Sa mise en œuvre reste simple — il suffit de structurer les registres du PLC, de créer la table de correspondance OPC UA et de renseigner le modèle JSON AAS. Le reste n'est qu'une affaire de pipeline de données.
Nous avons ensuite publié la méthode d'étalonnage des paramètres du modèle de simulation du pont roulant, qui explique comment déduire les paramètres de simulation à partir des données mesurées et clarifie la procédure d'étalonnage des modèles cinématiques et dynamiques, ainsi que la solution d'optimisation du rendu temps réel en périphérie. Restez connectés.