نموذج بيانات AAS للرافعة العلوية من PLC إلى التوأم الرقمي
تُعدّ AAS (Asset Administration Shell) المواصفة الأساسية للبيانات في التوأم الرقمي للرافعات العلوية، ويعرض هذا المقال حلاً هندسيًا متكاملًا يغطي كامل المسار بدءًا من سجلات PLC في سيمنز وصولًا إلى منصة البيانات المركزية. يشمل المقال جداول تعيين OPC UA، ومثالًا كاملًا لبنية AAS بصيغة JSON، وتصميم خط أنابيب البيانات الزمنية، وواجهات برمجة تطبيقات التكامل مع MES/ERP، ويمكن استخدامه مباشرة كمرجع تقني عملي.
في المقال السابق "تحليل تقني متعمق لنظام التوأم الرقمي للرافعات العلوية"، استعرضنا البنية العامة للتوأم الرقمي، مع تكرار ذكر مفهوم AAS (Asset Administration Shell). نخصص هذا المقال لشرح نموذج بيانات AAS بالتفصيل، بدءًا من عناوين سجلات PLC، مرورًا بتعيينات OPC UA، وصولًا إلى بنية AAS بصيغة JSON وتطبيقها في قواعد البيانات الزمنية، في خطوات عملية متسلسلة.
إذا كنت تعمل حاليًا على مشروع رقمنة للرافعات العلوية، فيمكنك اعتماد هذا المقال كمرجع تقني مباشر.

مواصفة AAS ونمذجة بيانات الرافعة العلوية
تُعد AAS المواصفة الأساسية للبيانات في الصناعة 4.0 (IEC 63278)، ويمكن اعتبارها "بطاقة هوية رقمية" لكل جهاز. فهي تنظّم جميع بيانات دورة حياة المعدات — معاملات التصميم، وحالة التشغيل، وسجلات الصيانة، وتقييم الصحة — في بنية هرمية موحّدة، مما يتيح لأي نظام (ERP، MES، SCADA، منصة سحابية) قراءتها وكتابتها بطريقة موحدة.
1.1 المستويات الهيكلية في AAS
Crane_AAS(هيكل الأصل)├── Asset Information(معلومات الأصل)│ ├── SerialNumber: "KELAND-CR-24001"│ ├── Manufacturer: "كيلود"│ ├── ModelType: "QD-32/5t-22.5m-A7"│ ├── ProductionDate: "2024-06-15"│ └── TechnicalData: {Span:22.5m, SWL:32t, HoistSpeed:6m/min}├── Submodels(النماذج الفرعية)│ ├── TechnicalData(المعلمات التقنية——قراءة فقط,ثابت من المصنع)│ ├── OperationalData(بيانات التشغيل——تحديث لحظي,100msدورة)│ ├── Maintenance(بيانات الصيانة——تشغيل بالحدث,تحديث عند الفحص)│ ├── HealthStatus(الحالة الصحية——AIحساب,تحديث دوري)│ └── EnvironmentalData(بيانات البيئة——تحليل مساعد)└── Views(طبقة العرض) ├── OperatorView(عرض المشغل——الحالة الحالية+إنذار) ├── MaintenanceView(عرض الصيانة——عمر قطعة الغيار+خطة الصيانة) ├── EngineerView(عرض المهندس——جميع البيانات الخام) └── ManagementView(عرض الإدارة——OEE+تقرير استهلاك الطاقة)
تكمن فائدة هذا التصميم الهرمي في أن كل دور يمكنه الاطلاع على البيانات التي يحتاجها فقط، مع بقاء نموذج البيانات الأساسي موحدًا، مما يمنع تكوّن جزر معلومات معزولة.
التعيين الكامل من PLC إلى AAS
بعد استعراض الجانب النظري، ننتقل مباشرة إلى البيانات الهندسية الفعلية. يوضح الجدول التالي التعيين الكامل من سجلات PLC إلى AAS لرافعة علوية ثنائية العارضة من كيلود للصناعات الثقيلة بقدرة 32 طنًا:
| AAS (Asset Administration Shell)نموذج فرعي·خاصية | OPC UA NodeID | PLC DBعنوان | نوع البيانات | دورة |
|---|---|---|---|---|
| TechnicalData.ratedCapacity | Crane.Params.RatedCap | DB100.DBD0 | Real | عند التشغيل |
| TechnicalData.span | Crane.Params.Span | DB100.DBD4 | Real | عند التشغيل |
| TechnicalData.workLevel | Crane.Params.WorkLvl | DB100.DBW8 | Int | عند التشغيل |
| 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 | حدث |
| Maintenance.remainingBrakePadLife_pct | Crane.Maint.BrakePad | DB300.DBD20 | Real | حدث |
| Environmental.ambientTemp_C | Crane.Env.AmbTemp | DB400.DBD0 | Real | 10s |
2.1 دورات جمع البيانات الثلاث
- مستوى 100ms (فوري): حالة التشغيل، التيار، الحمولة، الموقع — هذه البيانات تدفع مزامنة الوضع اللحظي لمحرك 3D، وأي تأخير يسبب تباطؤًا في النموذج
- مستوى 1s (اتجاهي): درجة الحرارة، القيمة الفعالة للاهتزاز — تُستخدم لتحليل الاتجاهات وتحديد عتبات الإنذار، ولا تحتاج إلى سرعة 100ms
- الحدث (تسجيلي): سجلات الصيانة، سجلات الأعطال — تُحدَّث فقط عند حدوث تغيير، ولا تستهلك عرض النطاق
مثال كامل لـ AAS JSON
فيما يلي مثال كامل لـ AAS JSON لرافعة علوية ثنائية العارضة بحمولة 32t، ويتضمن 4 نماذج فرعية: المعلمات التقنية، بيانات التشغيل، بيانات الصيانة، والبيانات البيئية. يمكن تطبيقه مباشرة على المشاريع الفعلية مع تعديل قيم المعاملات فقط.
{ "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": "كيلود"}, {"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"} ] } ]}تصميم قاعدة البيانات الزمنية وخط أنابيب البيانات
بعد دخول البيانات إلى هيكل AAS، يجب تخزينها في مكان مناسب. تتميز بيانات الرافعة العلوية بحجم كتابة كبير (سجل كل 100ms)، ونمط استعلام ثابت (تجميع حسب النطاق الزمني)، وحاجة إلى الاحتفاظ بها لفترة طويلة (≥3 سنوات). تُعد قواعد البيانات الزمنية (InfluxDB / TimescaleDB) الخيار المعياري.
4.1 استراتيجية التخزين متعدد المستويات
يتم تصميم خطط التخزين وفترات الاحتفاظ لكل نوع من أنواع البيانات على النحو التالي:
| مستوى التخزين | مدة الاحتفاظ | دقة أخذ العينات | سعة التخزين |
|---|---|---|---|
| البيانات الأولية | 7يوم | 100ms | ≈1.2GB/يوم |
| تجميع دقائقي | 90يوم | 1min | ≈200MB/يوم |
| تجميع ساعي | 2سنة | 1h | ≈35MB/يوم |
| تجميع يومي | 10سنة | 1d | ≈5MB/يوم |
4.2 مثال استعلام مستمر (InfluxQL)
-- 1تجميع دقيقي(تيار الرفع)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-- استعلام:الماضي24تيار الذروة بالساعةSELECT 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)ضمان جودة البيانات في الأنظمة الصناعية
مهما كان نموذج AAS مثاليًا، فإن البيانات غير الدقيقة في الطبقة السفلية تؤدي إلى مخرجات خاطئة. مشاكل جودة البيانات في البيئات الصناعية أكثر شيوعًا مما تتخيل — انحراف المستشعر، انقطاع الاتصال، تذبذب مسح PLC، وتداخل الإشارات. فيما يلي 5 مشاكل شائعة لجودة البيانات واستراتيجيات معالجتها من خبرتنا الهندسية:
| نوع المشكلة | طريقة الكشف | استراتيجية المعالجة |
|---|---|---|
| فقدان البيانات(فجوة>2×دورة) | فحص التسلسل الزمني | ملء بالاستيفاء الخطي،quality=1 |
| قيمة خارج النطاق | التحقق من الحدود العليا والدنيا | تجاهل+إنذار،quality=2 |
| تثبيتقيمة خارج النطاق(إشارة ميتة>30s) | معدل التغيرالكشف | وضع علامة مشبوه+كشف،quality=3 |
| قيمة قفزية(معدل التغير>5σ) | شذوذ إحصائيالكشف | استبدال بمرشح الوسيط،quality=4 |
| شذوذ الطابع الزمني | تحقق الطابع الزمني | رفض الكتابة |
يحمل كل نقطة بيانات حقل quality (0~192)، وعند قراءة التطبيقات العليا لهذه النقاط يمكنها الاعتماد على قيمة quality لتحديد مدى موثوقية البيانات. القيمة 192 تعني "جيد"، والقيمة 0 تعني "سيئ"، أما القيم الوسطى فتُصنَّف حسب درجة الخطورة.
تكامل MES/ERP مع الرافعات العلوية
بعد بناء نموذج AAS، يمكن لأنظمة المؤسسة مثل MES وERP وWMS قراءة وكتابة بيانات الرافعة العلوية من خلال واجهة REST API الموحدة:
| نظام MES | قراءة حالة التشغيل، أوامر الإنتاج، بيانات الجودة |
| نظام ERP | مزامنة بيانات الأصول، أوامر الصيانة، بيانات المخزون |
| نظام WMS | تحديث مواقع التخزين، بيانات النقل الداخلي |
جميع واجهات API تعيد البيانات بالتنسيق الموحد التالي:
| APIنقطة طرفية | طريقة | وصف | ترددقيد |
|---|---|---|---|
| /api/v2/cranes/{id}/status | GET | حالة التشغيل اللحظية | 300مرة/min |
| /api/v2/cranes/{id}/telemetry | GET | البيانات التاريخية للقياس عن بعد | 30مرة/min |
| /api/v2/cranes/{id}/alarms | GET | سجل الإنذارات | 30مرة/min |
| /api/v2/maintenance/records | POST | إضافة سجل صيانة | 10مرة/min |
| /api/v2/statistics | GET | تقرير إحصائي | 10مرة/min |
{ "code": 200, "message": "success", "data": { /* بيانات الاستجابة */ }, "timestamp": "2026-06-21T14:00:00.000Z", "requestId": "req-001-abc-xyz"}الخلاصة
نموذج بيانات AAS ليس نظرية معقدة، بل هو مواصفة تتيح للمعدات والأنظمة التحدث بلغة مشتركة. تطبيقه ليس بالأمر الصعب —فقط تنظيم عناوين سجلات PLC، وإنشاء جدول تعيين OPC UA، وملء قالب JSON الخاص بـ AAS، وما تبقى هو مجرد مسألة خط أنابيب البيانات.
لاحقًا، كتبنا مقالًا حول طريقة معايرة معاملات نموذج محاكاة الرافعة العلوية، موضحين كيفية استنتاج معاملات المحاكاة من البيانات المقاسة ميدانيًا، وعرض عملية معايرة نماذج الحركة والديناميكا بالتفصيل، بالإضافة إلى حلول تحسين العرض في الوقت الفعلي على الحافة. ترقبوا المزيد.