الرئيسية قاعدة المعرفة الشبكات والاتصالات شبكة CAN Bus: العمود الفقري للمركبات والآلات
الشبكات والاتصالات

شبكة CAN Bus: العمود الفقري للمركبات والآلات

ناقل CAN: لغة الآلات الثقيلة والأتمتة

تخيّل أنك داخل حفّارة هيدروليكية ضخمة من كاتربيلر — المحرك، ذراع الحفر، نظام الهيدروليك، لوحة القيادة — كل هذه الأنظمة تتبادل مئات الرسائل في الثانية. البروتوكول الذي يربطها جميعاً؟ CAN Bus.

CAN (Controller Area Network) طوّرته شركة Bosch عام 1986 أصلاً لصناعة السيارات — لتقليل أطوال الكابلات التي كانت تصل إلى 2 كيلومتر في السيارة الواحدة. اليوم يُستخدم في كل شيء: من المعدات الثقيلة إلى الأقمار الصناعية، ومن الأجهزة الطبية إلى خطوط الإنتاج الصناعية.

أساسيات CAN Bus

الطبقة الفيزيائية

CAN يعمل على كابل ثنائي مجدول بخطين:

  • CAN_H (High): الخط المرتفع
  • CAN_L (Low): الخط المنخفض

الإشارة هي فرق الجهد بين الخطين — وهذا يجعل CAN مقاوماً بشكل ممتاز للتداخل الكهرومغناطيسي. حتى لو أثّر ضجيج خارجي على كلا الخطين بالتساوي، فرق الجهد يبقى ثابتاً.

مقاومات الإنهاء (Termination Resistors): يجب وضع مقاومة 120 أوم على كل طرف من طرفي الناقل. بدونهما تحدث انعكاسات إشارة تُفسد البيانات. هذا أكثر خطأ شائع في تركيب CAN.

الحالتين: Dominant و Recessive

الحالة CAN_H CAN_L الفرق القيمة المنطقية
Recessive (سكون) 2.5V 2.5V 0V 1
Dominant (سيطرة) 3.5V 1.5V 2V 0

القاعدة المهمة: Dominant يغلب Recessive دائماً. إذا أرسل جهازان في نفس اللحظة — أحدهما يرسل 0 (Dominant) والآخر يرسل 1 (Recessive) — يفوز الـ Dominant. هذا المبدأ هو أساس نظام التحكيم في CAN.

إطار رسالة CAN (Message Frame)

كل رسالة CAN تُرسل في إطار (Frame) منظم بدقة:

مكونات الإطار القياسي (CAN 2.0A)

الحقل الحجم الوظيفة
SOF (Start of Frame) 1 بت بداية الإطار — Dominant دائماً
معرّف (Identifier) 11 بت هوية الرسالة وأولويتها
RTR 1 بت طلب إرسال بعيد
حقول التحكم 6 بت طول البيانات (DLC)
البيانات (Data) 0-8 بايت الحمولة الفعلية
CRC 15 بت فحص سلامة البيانات
ACK 2 بت تأكيد الاستلام
EOF (End of Frame) 7 بت نهاية الإطار

ملاحظة مهمة: لا يوجد عنوان مُستقبِل. الرسائل في CAN لا تُوجّه لجهاز محدد — كل الأجهزة على الناقل تستقبل كل رسالة، وكل جهاز يقرر بنفسه أي الرسائل تهمّه بناءً على المعرّف.

CAN 2.0A مقابل CAN 2.0B

الخاصية CAN 2.0A (قياسي) CAN 2.0B (ممتد)
حجم المعرّف 11 بت 29 بت
عدد المعرّفات 2,048 536 مليون+
التوافق أبسط يتعايش مع 2.0A
الاستخدام سيارات، آلات صغيرة J1939، معدات ثقيلة

CAN 2.0B (Extended Frame) يستخدم معرّف 29 بت — ضروري في الشبكات الكبيرة مثل المعدات الثقيلة التي تحتوي على عشرات الوحدات الإلكترونية.

التحكيم (Arbitration): ذكاء بدون سيد

في معظم بروتوكولات الاتصال، هناك "سيد" يقرر من يتكلم ومتى. CAN مختلف — أي جهاز يستطيع البدء بالإرسال في أي لحظة. ماذا يحدث إذا أرسل جهازان في نفس اللحظة؟

التحكيم غير المدمّر (Non-Destructive Arbitration):

  1. كلا الجهازين يبدآن بإرسال المعرّف بت بت
  2. كل جهاز يراقب الناقل أثناء الإرسال
  3. إذا أرسل جهاز بت Recessive (1) لكن قرأ Dominant (0) على الناقل — يعرف أن جهازاً آخر بأولوية أعلى يُرسل
  4. الجهاز ذو الأولوية الأقل يتوقف فوراً ويحاول لاحقاً
  5. الرسالة ذات المعرّف الأصغر (أكثر أصفار في البداية) تفوز دائماً

النتيجة: لا تضيع أي رسالة، ولا يضيع أي وقت — الرسالة الأهم تمر فوراً.

تصوّر هذا عملياً: رسالة إنذار ضغط زيت المحرك (معرّف = 0x010) ورسالة تحديث عداد المسافة (معرّف = 0x7F0) — إنذار الزيت يفوز دائماً لأن معرّفه أصغر.

توقيت البت (Bit Timing)

CAN يعمل بسرعات من 10 Kbps إلى 1 Mbps. السرعة تعتمد على طول الكابل:

السرعة أقصى مسافة
1 Mbps 40 متر
500 Kbps 100 متر
250 Kbps 250 متر
125 Kbps 500 متر
50 Kbps 1000 متر

لماذا؟ لأن التحكيم يتطلب أن تنتقل الإشارة من أبعد جهاز وتعود خلال بت واحد. كلما زاد الكابل، يجب أن يكون البت أطول (أي السرعة أبطأ).

كل بت ينقسم إلى أجزاء (Segments): Sync، Propagation، Phase 1، Phase 2. ضبط هذه الأجزاء (Bit Timing Configuration) ضروري لضمان أن جميع الأجهزة تقرأ البت في نفس اللحظة. معظم أدوات التصميم تحسبها تلقائياً.

معالجة الأخطاء: خمسة حراس

CAN يملك نظام كشف أخطاء من أقوى ما يوجد في بروتوكولات الاتصال:

آليات الكشف الخمس

  1. فحص CRC: كل إطار يحتوي 15 بت CRC — احتمال عدم كشف خطأ: أقل من 1 في 10 مليون
  2. فحص الإطار (Form Check): التحقق من بنية الإطار (SOF, EOF, ACK)
  3. فحص التأكيد (ACK Check): إذا لم يؤكد أي جهاز الاستلام، المُرسل يعرف أن هناك مشكلة
  4. حشو البتات (Bit Stuffing): بعد 5 بتات متماثلة متتالية، يُحشر بت معاكس — انتهاك هذه القاعدة يكشف الخطأ
  5. مراقبة البت (Bit Monitoring): المُرسل يقارن ما أرسله بما قرأه من الناقل

حالات الخطأ

كل جهاز CAN يملك عدادَي خطأ: عداد أخطاء الإرسال (TEC) وعداد أخطاء الاستقبال (REC):

الحالة TEC/REC السلوك
Error Active < 128 يشارك بشكل طبيعي، يرسل Error Active Frame
Error Passive 128-255 يشارك لكن بحذر، يرسل Error Passive Frame
Bus Off TEC > 255 ينفصل عن الناقل تماماً

هذا النظام يمنع جهازاً معطوباً من إغراق الشبكة بأخطاء. الجهاز المعطوب "يعزل نفسه" تلقائياً.

بروتوكول J1939: لغة المعدات الثقيلة

SAE J1939 هو بروتوكول يعمل فوق CAN 2.0B (29 بت) وهو المعيار العالمي للمعدات الثقيلة:

  • الشاحنات: Volvo, Mercedes, MAN
  • معدات البناء: Caterpillar, Komatsu, Liebherr
  • المعدات الزراعية: John Deere, CLAAS
  • مولدات الطاقة: Cummins, MTU

بنية معرّف J1939

المعرّف الممتد (29 بت) ينقسم إلى:

الحقل البتات الوظيفة
الأولوية 3 بت 0 (أعلى) إلى 7 (أدنى)
PGN (Parameter Group Number) 18 بت نوع البيانات
عنوان المصدر 8 بت من أرسل الرسالة

مجموعات المعاملات (PGN) موحدة عالمياً — مثلاً PGN 61444 هو سرعة دوران المحرك (RPM) في أي محرك ديزل يدعم J1939.

بروتوكول CANopen: للأتمتة الصناعية

CANopen (EN 50325-4) هو بروتوكول طبقة تطبيق يعمل فوق CAN، صُمّم للأتمتة الصناعية وخاصة التحكم في الحركة:

مفاهيم CANopen الأساسية

  • قاموس الكائنات (Object Dictionary): كل جهاز يحتوي "قاموساً" من المعاملات مرقمة بعناوين (Index + Sub-index)
  • SDO (Service Data Object): لقراءة/كتابة معاملات الجهاز — بطيء لكن موثوق
  • PDO (Process Data Object): لنقل البيانات اللحظية — سريع جداً
  • NMT (Network Management): لإدارة حالة الأجهزة (تشغيل، إيقاف، ما قبل التشغيل)
  • SYNC: رسالة مزامنة دورية تضمن تحديث جميع الأجهزة في نفس اللحظة
  • Heartbeat: رسالة "نبض القلب" — كل جهاز يُعلن دورياً أنه حي

مقارنة J1939 و CANopen

المعيار J1939 CANopen
القطاع معدات ثقيلة، نقل أتمتة صناعية
معرّف CAN 29 بت (ممتد) 11 بت (قياسي)
ملف التعريف إلزامي وموحد مرن عبر EDS/DCF
إدارة الشبكة عنوان + اسم NMT + Heartbeat
نقل البيانات PGN + SPN PDO + SDO
السرعة النموذجية 250 Kbps 125-1000 Kbps

أخطاء شائعة وحلولها

المشكلة السبب المحتمل الحل
لا اتصال نهائياً مقاومة إنهاء مفقودة أضف مقاومة 120 أوم على كل طرف
أخطاء متقطعة كابل طويل جداً للسرعة المختارة قلّل السرعة أو قصّر الكابل
جهاز واحد Bus Off تهيئة Bit Timing خاطئة تأكد أن جميع الأجهزة بنفس السرعة
رسائل مفقودة تحميل زائد على الناقل (>70%) وزّع على ناقلين أو قلّل معدل الإرسال
CAN_H أو CAN_L مقطوع تلف في الكابل افحص بالأوسيلوسكوب — يجب رؤية إشارة تفاضلية

أدوات العمل مع CAN

  • محللات CAN (CAN Analyzers): مثل PCAN-USB من Peak Systems أو CANalyzer من Vector — ضرورية لتشخيص المشاكل
  • أوسيلوسكوب: لفحص جودة الإشارة الفيزيائية
  • برمجيات مفتوحة المصدر: python-can, can-utils (Linux) — ممتازة للتعلم والاختبار

خلاصة

CAN Bus هو أحد أنجح بروتوكولات الاتصال في تاريخ الهندسة — بسيط، متين، وذكي في إدارة الأولويات والأخطاء. J1939 جعله لغة المعدات الثقيلة حول العالم، وCANopen وسّع استخدامه في الأتمتة الصناعية. لأي مهندس يعمل مع معدات ميكانيكية أو خطوط إنتاج، فهم CAN ليس ترفاً — إنه أساس لا غنى عنه.

CAN-bus J1939 CANopen frame arbitration node شبكة CAN بروتوكول J1939 الإطار التحكيم العقدة المعدات الثقيلة