CAN Controller Area Network
لمحة تاريخية عن تطور هذا البروتوكول
هو بروتكول يستخدم للتواصل بين المتحكم الدقيق واجزاء السيارات وقد صمم خصيصا هذا البروتوكول لخدمة الانظمة المدمجة في السيارات وتم الاعلان عن هذا البروتوكول سنة 1983 من قبل شركة robert bosch الالمانية وصدر رسميا من جمعية مهندسي السيارات سنة 1986 اصدرت الشركة المنتجة لهذا البروتوكول عدة اصدارات منه كان منها في سنة 1991 CAN2.0 ويتالف هذا الاصدار من جزئين CAN2.0A ويكون فيه عدد بتات التعريف 11 بت والاخر CAN2.0B وكان عدد بتات التعريف فيه 29 بت وهذا الثاني يكون اوسع من الاول في التعامل مع الطرفيات في عام 1993 اصدرت المنظمة الدولة للمعايير (ISO) ثلاث معايير اساسية من هذا البروتوكول وقامت شركة robert bosch باصدار معيار جديد لهذا البروتوكول هو CAN FD ويميزه انه متوافق مع معيار CAN2.0 اي يمكن للاجهزة الجديدة التعايش مع الاجهزة القديمة المصممة ل CAN2.0
التطبيقات لCAN
قد تحتوي السيارة على اكثر من 70 وحدة كل واحدة منها متخصصة بعمل معين كالوسائد الهوائية ونظام المكابح وفتح النوافذ وغلق المرأة وغيرها الكثيرقد تكون هناك انظمة مستقلة بحد ذاتها كعملية شحن البطارية لكن معظم الانظمة تحتاج الى ان تتواصل مع بعضها ولاجل سد حاجة هذه الطرفيات الكثيرة وضع بروتوكول can بسبب قلة تكلفة بعض وحدات تحكم بروتوكول CAN والمعالجات دخل هذا البوروتوكول في الكثير من التطبيقات مثل الطيران والبحرية والطبية والاتمة الصناعية وغيرها
بروتوكول CAN يدعم عدة اجهزة قائد (Master) عندما درسنا بروتوكول SPI وجدنا انه يدعم جهاز قائد واحد هو المسؤل عن التحكم بسير عمل البروتوكول اما هنا فCAN يدعم وجود اكثر من جهاز ويكون مبدء معمارية CAN مبني على اساس العقدة (Nodes) التي يربط البروتوكول على الاقل بين اثنين منها تختلف العقد من حيث درجة التعقيد قد تحتوي مدخلات ومخرجات فقط وقد تحتوي حتى منافذ اتصال بالانترنت او USB حتى اما مبدء النقل فيتم عن طريق رسائل
سرعة هذا البروتوكول نحنا من نقوم بتحديدها عن طريق سرعة العقد والبعد وفي نظام معين تستخدم عدة سرع لهذا البروتوكول واعلى سرعة يمكننا ان نحققها هي 1mbps وان نوع السلك المستخدم له تاثير على السرعة
الاطراف التي يحتاجها البروتوكول هي اربعة طرفي البروتوكول نفسه وطرفي التغذية بالجهد وتوضع مقاومة في كل طرف من اطراف السلكين لمتنع من ارتداد الموجة المنتشرة عبر ناقل البروتوكول
هنا عندما نقول 1 منطقي نقصد به Dominant وعندما نقول 0 منطقي نقصد به Recessive وقد استعملنا مصطلح 0 و1 منطقي للتوضيح والسهولة
معمارية CAN
بروتوكول CAN يدعم عدة اجهزة قائد (Master) عندما درسنا بروتوكول SPI وجدنا انه يدعم جهاز قائد واحد هو المسؤل عن التحكم بسير عمل البروتوكول اما هنا فCAN يدعم وجود اكثر من جهاز ويكون مبدء معمارية CAN مبني على اساس العقدة (Nodes) التي يربط البروتوكول على الاقل بين اثنين منها تختلف العقد من حيث درجة التعقيد قد تحتوي مدخلات ومخرجات فقط وقد تحتوي حتى منافذ اتصال بالانترنت او USB حتى اما مبدء النقل فيتم عن طريق رسائل
مكونات العقدة
1-وحدة معالجة مركزية تقرر ماتعنيه الرسالة الواردة وما الرسائل التي تريد نقل
2-اجهزة استشعار وتحكم ومحركات تربط الى وحدة المعالجة المركزية
3-وحدة تحكم البروتوكول (CAN Controller) يقوم باستلام البتات عن طريق الناقل ويحولها الى وحدة المعالجة عندما تكمل الرسالة كذلك تقوم وحدة المعالجة المركزية بارسال رسائل الى متحكم البروتوكول ليقوم بنشرها عندما يكون الناقل خالي
4- جهاز الارسال والاستقبال يقوم بتحويل البيانات من مستوى CAN Bus الى مستوى تفهمه وحدة تحكم البروتوكول عند الاستلام ويقوم بتحويل البيانات من مستوى وحدة تحكم البروتوكول الى مستوى CAN Bus عند الارسال
كل عقدة قادرة على الارسال او الاستلام لكن ليس بنفس الوقت فكل رسالة تحمل معرف متكون اما من 11 بت او من 29 بت يتم معرفة اولوية الرسالة حسب هذا المعرف
طريقة الارسال والاستلام
كل العقد مربوطة مع بعضها البعض بواسطة ناقل بروتوكول CAN الذي يتكون من سلكين مجدولين واحدا فوق الاخر وهي اما في حالة ارسال او في حالة استلاك وهناك ماينظم هذه العملية في العقدة كما ذكرنا لكن المشكلة هي عندما يقوم جهازين بالارسال في نفس الوقت هنا يجب ان توجد تقنية لتاخير الارسال من قبل العقدة الاقل اهمية وهنا ياتي دور بتات المعرف سناخذ مثال عندما تقوم عقدة بالارسال تمتلك رقم معرف هو 16 وعقدة اخرى تمتلك رقم معرف 15 بنفس الوقت سيتم الارسال من قبل العقدة التي تمتلك الرقم 15 وليس 16 وذلك يتم لان اسبقية ال15 قبل ال16 لناخذ المسالة عمليا وفي نظام العد الثنائي
node 15=00000001111
node 16=00000010000
عندما يبدء الارسال سوف يصدر بت بداية الارسال ثم رقم المعرف سيرسل كل من العقدة 15 و16 نفس الرقم الى حد البت رقم اربعة سترسل العقدة 16 رقم واحد منطقي وترسل العقدة رقم 15 صفر منطقي وعندما تلاحظ العقدة رقم 16 انه تلاشى الواحد المنقي الذي قامت بارساله بسبب التصادم الذي حصل عندها تعلم انه هناك عملية ارسال من عقدة تتفوق عليها بالاسبقية وتوقف ارسال رسالتها الى حين انتهاء تلك العقدة لذا العقدة التي تحمل معرف رقم اقل هي التي تفوز في عملية الارسال دائما يجب ان يكون لكل عقدة معرف خاص بها ولا يجب ان يتكرر الا وسوف تحدث لدينا مشاكل في النظام
node 15=00000001111
node 16=00000010000
عندما يبدء الارسال سوف يصدر بت بداية الارسال ثم رقم المعرف سيرسل كل من العقدة 15 و16 نفس الرقم الى حد البت رقم اربعة سترسل العقدة 16 رقم واحد منطقي وترسل العقدة رقم 15 صفر منطقي وعندما تلاحظ العقدة رقم 16 انه تلاشى الواحد المنقي الذي قامت بارساله بسبب التصادم الذي حصل عندها تعلم انه هناك عملية ارسال من عقدة تتفوق عليها بالاسبقية وتوقف ارسال رسالتها الى حين انتهاء تلك العقدة لذا العقدة التي تحمل معرف رقم اقل هي التي تفوز في عملية الارسال دائما يجب ان يكون لكل عقدة معرف خاص بها ولا يجب ان يتكرر الا وسوف تحدث لدينا مشاكل في النظام
بت التوقيت
هذا البروتوكول هو بروتوكول غير متزامن اي لايحتوي اشارة زمن يعمل بموجبها لذا يجب على كل العقد في هذا البروتوكول ان تعمل بنفس السرعة في التعامل مع البت لكن بسبب الضجيج وزحف الطور وسماحية الهزاز الكرستالي حيث كل عقدة تمتلك هزاز كرستالي خاص بها وقد تكون درجة الحرارة المعرضة لها هذه العقدة متغيرة حسب مكانها مما يؤثر على سرعة الارسال قد لايكون هناك توافق قياسي في بعض الاحيان في التعامل مع البت المرسل وقراءته لذا يجب ايجاد وسيلة لمزامنة العقد كي يعمل النظام بصورة صحيحة ويستخدم لذلك بت المزامنة وهو يتكون من اربعة قطع الاولى قطعة المزامنة والثانية قطعة زمن الانتشار قطعة عازل الطور الاولى وقطعة عازل الطور الثانية كل قطعة مكونة من كمات زمنية محددة طول هذه الوحدة الزمنية الواحدة يحدد عن طريق سرعة تزامن متحكم CAN وكذلك سرعة نقل المقسم الترددي
Tquanta=Fosc/BRB
الدخول في تفاصيل هذا الامر هو طويل نوعا ما لكن عن طريق بت التوقيت يتم حساب فارق الزمن بين العقد لالغاء الفروق الزمنية التي ذكرنا بعض اسبابها
CAN Frame
هذا البروتوكول حاله حال غيره من بروتوكولات الشبكات يمتلك وبروتوكول CAN يعرف في اول طبقتين الذين هما طبقة Data Link وPhysical Layer وهو بروتوكول تفاضلي اي يتعرف على القيم المنطقية من خلال فرق الاشارة بين طرفين احدهما اسمه Can_High والاخر Can_Low ويستعمل في خط النقل سلك مجدول وكلما طال السلك قلت السرعة
سرعة هذا البروتوكول نحنا من نقوم بتحديدها عن طريق سرعة العقد والبعد وفي نظام معين تستخدم عدة سرع لهذا البروتوكول واعلى سرعة يمكننا ان نحققها هي 1mbps وان نوع السلك المستخدم له تاثير على السرعة
الاطراف التي يحتاجها البروتوكول هي اربعة طرفي البروتوكول نفسه وطرفي التغذية بالجهد وتوضع مقاومة في كل طرف من اطراف السلكين لمتنع من ارتداد الموجة المنتشرة عبر ناقل البروتوكول
القيمة المنطقية صفر في هذا البروتوكول تحدث عندما يكون جهد كل من CAN_High و CAN_Low نفس القيمة هي 2.5 فولت وتسمى هذه الحالة ب Recessive والقيمة المنطقية واحد تحدث عندما يكون الجهد في الطرف CAN_High هو 3.5 فولت والجهد في الطرف CAN_Low هو 1.5 فولت وتسمى هذه الحالة بDominant
كما ذكرنا عند بداية المقال ان هنالك معيارين هما CAN2.0A و CAN2.0B وان الاختلاف بينهم في عدد بتات المعرف كذلك في يختلف شكل الرسالة المرسلة في كل واحد منهم اختلافا بسيطا وتوجد اربعة انواع من الرسائل التي ترسل في هذا البروتوكول
1-رسالة البيانات تستخدم لارسال بيانات الفعلية وتوجد منها شكلين كما اسلفنا بسبب المعيارين CAN2.0A And Bهنا عندما نقول 1 منطقي نقصد به Dominant وعندما نقول 0 منطقي نقصد به Recessive وقد استعملنا مصطلح 0 و1 منطقي للتوضيح والسهولة
اول بت هو يدل على بداية ارسال الرسالة
البتات ذات االلون الاخضر هي خاصة بالمعرف وتحدد بموجبها اسبقية الرسائل التي ترسل من العقد ولك عقدة معرف خاص لايمكن ان يكرر في عقدة اخرى وعددها هنا 11 بت
البت باللون الازرق الذي يحدد رسالة المناطق البعيدة وتكون قيمته Dominant اي
1 منطقي في رسالة البيانات
هذا البت الاول من اللون الابيض وظيفته تحديد عدد بتات المعرف هل هي 11 بت ام 29 بت وتكون قيمته Dominant اي 1 منطقي في هذه الحالة حالة 11 بت طول المعرف
البت الثاني من اللون الابيض هو محجوز ويجب ان تكون قيمته 1 منطقي
البتات الاربعة باللون الاصفر وظيفتها تحديد طول البيانات المرسلة من 0 الى 8 بايت
البتات باللون الاحمر تحمل البيانات المرسلة عبر الرسالة
بتات CRC وهي اختبار التكرار الدوري حيث تقوم بالكشف عن الاخطاء الرقمية وتستخدم عادتا في الشبكات ولها طرق حساب رياضية وعدد بتاتها هي 15 بت
بت محدد CRC ويجب ان يكون Recessive
بت التاكد ACK يقوم جهاز الارسال بارساله Recessive وياكده اي جهاز مستلم بDominant
محدد بت التاكد ACK يجب ان يكون Recessive
بتات نهاية الرسالة وعددها 7 ويجب ان تكون Recessive
البتات ذات االلون الاخضر هي خاصة بالمعرف وتحدد بموجبها اسبقية الرسائل التي ترسل من العقد ولك عقدة معرف خاص لايمكن ان يكرر في عقدة اخرى وعددها هنا 11 بت
البت باللون الازرق الذي يحدد رسالة المناطق البعيدة وتكون قيمته Dominant اي
1 منطقي في رسالة البيانات
هذا البت الاول من اللون الابيض وظيفته تحديد عدد بتات المعرف هل هي 11 بت ام 29 بت وتكون قيمته Dominant اي 1 منطقي في هذه الحالة حالة 11 بت طول المعرف
البت الثاني من اللون الابيض هو محجوز ويجب ان تكون قيمته 1 منطقي
البتات الاربعة باللون الاصفر وظيفتها تحديد طول البيانات المرسلة من 0 الى 8 بايت
البتات باللون الاحمر تحمل البيانات المرسلة عبر الرسالة
بتات CRC وهي اختبار التكرار الدوري حيث تقوم بالكشف عن الاخطاء الرقمية وتستخدم عادتا في الشبكات ولها طرق حساب رياضية وعدد بتاتها هي 15 بت
بت محدد CRC ويجب ان يكون Recessive
بت التاكد ACK يقوم جهاز الارسال بارساله Recessive وياكده اي جهاز مستلم بDominant
محدد بت التاكد ACK يجب ان يكون Recessive
بتات نهاية الرسالة وعددها 7 ويجب ان تكون Recessive
2-رسالة البعد للتاكد من وصول البيانات يجاب بها على المرسل وبنفس المعرف
3-رسالة الخطا ترسل من العقدة التي تستلم خطا معين
4-رسالة الامتلاء ترسل من العقدة لوضع تاخير زمني بين الرسائل المرسلة
بالاضافة لوجود متحكمات تدعم بروتوكول CAN كذلك توجد بعض المحيطيات التي تمكن المتحكمات من التواصل مع هذا البروتوكول ومن ضمنها غطاء على الاردينو وهناك عدة شركات منتجة لهذه المحيطيات
رائع تشكر على الموضوع الرائع فقط توجد ملاحظة بسيطة
ردحذف0 هو dominant
1 هو recicive
وليس العكس
رائع تشكر على الموضوع الرائع فقط توجد ملاحظة بسيطة
ردحذف0 هو dominant
1 هو recicive
وليس العكس
شكرا على المعلومات
ردحذفلماذا توصي بعض الشركات (سوزوكي)مثلا بان تكون اسلاك الكان متوازيه وبدون جدل. قبل الافياش او الكونكتر بحوالي 10سم او4انش
مع الشكر
فعلا موضوع رائع ومفيد مشكور يا طيب
ردحذفموضوع رائع تشكر
ردحذف