كيف تتحدث الآلات مع بعضها؟ الشبكات الصناعية
لماذا تحتاج الآلات إلى التواصل؟
في مصنع حديث، قد يكون هناك عشرات أو مئات الـ PLCs والحساسات والمحركات والروبوتات. كل منها يجمع بيانات وينتج معلومات. الشبكة الصناعية تجعل هذه البيانات تتدفق بين الأجهزة ونحو أنظمة المراقبة والإدارة.
بدون شبكة: كل آلة جزيرة معزولة. مع شبكة: نظام متكامل يرى نفسه كاملاً ويتكيّف.
نموذج OSI: سبع طبقات للتواصل
لفهم أي بروتوكول شبكي، يساعد نموذج OSI (Open Systems Interconnection) الذي يُقسّم الاتصال إلى 7 طبقات:
| الطبقة | الاسم | المهمة | مثال |
|---|---|---|---|
| 7 | التطبيق | خدمات المستخدم | HTTP, Modbus, OPC-UA |
| 6 | العرض | تنسيق البيانات | JSON, XML, تشفير |
| 5 | الجلسة | إدارة الاتصال | بدء/إنهاء المحادثة |
| 4 | النقل | موثوقية | TCP (موثوق)، UDP (سريع) |
| 3 | الشبكة | التوجيه | IP addresses |
| 2 | الوصلة | نقل الإطارات | MAC addresses, Ethernet |
| 1 | المادي | الكابلات والإشارات | نحاس، ألياف، لاسلكي |
الاتصال التسلسلي: البداية
RS-232
أقدم معيار (1960) — اتصال نقطة إلى نقطة (1 مُرسِل ↔ 1 مُستقبِل). مسافة قصيرة (15 متر). لا يزال يُستخدم في الأجهزة القديمة والمعدات الطبية.
RS-485
تطور RS-232: يدعم حتى 32 جهازاً على نفس الخط (Multi-drop)، مسافة حتى 1200 متر، مقاوم للتداخل الكهرومغناطيسي. معيار القاعدة لبروتوكول Modbus RTU.
Modbus: البروتوكول الكلاسيكي
طوّرته شركة Modicon عام 1979 — الأكثر انتشاراً في العالم الصناعي حتى اليوم.
بنية البروتوكول
يعمل بنموذج رئيسي/تابع (Master/Slave):
- المتحكم الرئيسي (Master) يُرسل طلبات
- الأجهزة التابعة (Slaves) تستجيب
- كل جهاز له عنوان فريد (1-247)
أنواع البيانات في Modbus
| النوع | القراءة | الكتابة | الوصف |
|---|---|---|---|
| Coil | FC01 | FC05 | بت واحد - قراءة/كتابة |
| Discrete Input | FC02 | - | بت واحد - قراءة فقط |
| Holding Register | FC03 | FC06 | 16 بت - قراءة/كتابة |
| Input Register | FC04 | - | 16 بت - قراءة فقط |
مثال عملي
طلب: اقرأ Holding Register 40001 من الجهاز 3
[3][03][00][01][00][01][CRC_Lo][CRC_Hi]
رد:
[3][03][02][01][5E][CRC_Lo][CRC_Hi]
القيمة = 0x015E = 350 → درجة حرارة = 35.0°C
قراءة مستشعر حرارة عبر Modbus بلغة Rust
use tokio_modbus::prelude::*;
async fn read_temperature(addr: u8) -> Result<f64, Box<dyn std::error::Error>> {
// الاتصال عبر RS-485 على /dev/ttyUSB0
let builder = tokio_serial::new("/dev/ttyUSB0", 9600);
let port = tokio_serial::SerialStream::open(&builder)?;
let mut ctx = rtu::attach_slave(port, Slave(addr));
// قراءة Holding Register 40001 (العنوان = 0)
let response = ctx.read_holding_registers(0x0000, 1).await?;
// تحويل القيمة الخام إلى درجة حرارة
let raw_value = response[0]; // مثال: 350
let temperature = raw_value as f64 / 10.0; // 35.0°C
println!("الجهاز {}: درجة الحرارة = {}°C", addr, temperature);
Ok(temperature)
}
تدفق اتصال Modbus RTU
A[Master يُرسل طلب] --> B{الجهاز موجود؟}
B -->|نعم| C[Slave يستقبل]
B -->|لا| D[Timeout خطأ]
C --> E[Slave يعالج الطلب]
E --> F[Slave يُرسل الرد]
F --> G[Master يتحقق CRC]
G --> H[البيانات جاهزة]
Modbus TCP
نفس البروتوكول لكن فوق شبكة Ethernet/IP بدلاً من RS-485. يُزيل CRC (TCP يتكفّل بالموثوقية).
شبكات Ethernet الصناعية
PROFINET
طوّرته شركة Siemens. يعمل فوق Ethernet القياسية. يدعم الزمن الحقيقي (Real-Time). شائع مع PLCs من Siemens.
EtherNet/IP
طوّرته Rockwell/Allen-Bradley. يستخدم بروتوكول CIP فوق TCP/UDP. شائع في أمريكا الشمالية.
EtherCAT
طوّرته Beckhoff. يصل إلى دقة زمنية < 1 ميكروثانية. مثالي للروبوتات والمحركات عالية الدقة.
OPC-UA: معيار المستقبل
Open Platform Communications Unified Architecture هو المعيار العالمي الذي يحل مشكلة الاتصال بين الموردين المختلفين.
OPC-UA: الحل الحديث
- مستقل عن المنصة: يعمل على Windows، Linux، الأجهزة المدمجة
- آمن: تشفير TLS، مصادقة، صلاحيات
- نموذج معلومات غني: يصف البيانات ومعناها (ليس فقط قيمة عددية)
- يعمل فوق TCP/IP: مرن للتوجيه والجدران النارية
مثال: قارئ حرارة Siemens يتحدث مع نظام SCADA من ABB مع PLC من Mitsubishi — كلهم بـ OPC-UA دون تعديل.
IIoT و MQTT
Industrial Internet of Things هو توسيع الشبكة الصناعية لتشمل السحابة والتحليلات المتقدمة.
MQTT (Message Queuing Telemetry Transport) هو البروتوكول الأشهر في IIoT:
- نموذج Publish/Subscribe: الأجهزة تنشر بيانات على "موضوعات" (Topics)
- الخوادم تُراقب هذه المواضيع وتوزع البيانات على المشتركين
- خفيف جداً: مناسب لأجهزة بموارد محدودة
- يعمل فوق TCP/IP مع اتصال مستمر
مثال:
الحساس ينشر: machines/line1/temperature → "35.2"
نظام SCADA مشترك في: machines/+/temperature
→ يستقبل بيانات كل الحساسات تلقائياً
مقارنة البروتوكولات
| البروتوكول | الوسط | السرعة | المسافة | الاستخدام |
|---|---|---|---|---|
| Modbus RTU | RS-485 | 9.6-115k baud | 1200م | PLCs قديمة |
| Modbus TCP | Ethernet | 100 Mbps+ | - | حديثة مع IP |
| PROFINET | Ethernet | 100 Mbps | - | Siemens |
| EtherNet/IP | Ethernet | 100 Mbps | - | Rockwell |
| EtherCAT | Ethernet | 100 Mbps | - | روبوتات |
| OPC-UA | TCP/IP | يعتمد | - | تكامل أنظمة |
| MQTT | TCP/IP | يعتمد | - | IIoT / سحابة |
أمان الشبكات الصناعية
الأنظمة الصناعية تاريخياً معزولة ("Air Gap") — الآن IIoT يربطها بالإنترنت وهذا يُشكّل مخاطر:
- تقسيم الشبكات (Segmentation): شبكة IT منفصلة عن شبكة OT (Operational Technology)
- جدار حماية صناعي: يُرشّح حركة المرور بين الشبكتين
- تشفير: OPC-UA وMQTTS يدعمان TLS
- تحديثات: تحديث firmware الأجهزة الصناعية منتظماً
الخلاصة
شبكات الاتصال الصناعي هي الجهاز العصبي للمصنع الحديث. من Modbus البسيط للأجهزة القديمة، إلى OPC-UA للتكامل عبر الأنظمة المختلفة، إلى MQTT لنقل البيانات إلى السحابة — كل بروتوكول له مكانه ودوره. فهم هذه الطبقات يُمكّن المهندس من تصميم أنظمة تتواصل بفعالية وأمان.