تضمين مع Elliot: Lin IS for Hackers

سيارة كومة تدحرج مئات من مئات المستوكبين هذه الأيام – فقط اسأل أي ميكانيكي Greybeard وسيبدأ “المكربن”. جميع هذه الأنظمة والأنظمة الفرعية تحتاج إلى التحدث مع بعضها البعض في بيئة معادية كهربائية، وهي ليست مبالغة في القول أن سوء التواصل، أو حتى التواصل المتأخر، يمكن أن يكون لها عواقب وخيمة كبيرة. الشبكات داخل السيارة هي الأعمال الرئيسية. إن الإنتاج الضخم للسيارات يجعل العديد من أجهزة الإرسال والاستقامة ذات الصلة منخفضة التكلفة لقلب الأجهزة غير السيارات. فلماذا لا نرى المزيد من مشاريع القراصنة أكثر تستفيد من قاعدة الموارد الرائعة هذه؟

العمود الفقري لشبكة السيارة هي شبكة منطقة التحكم (CAN). هاكاداي [إريك فينتشيك] عبارة عن قراصنة سيارة extroordinaire، وكتب الكثير من كل ما تريد معرفته حول حافلة CAN في سلسلة متعددة الأجزاء التي ترغب بالتأكيد في الإشارة المرجعية للقراءة في وقت لاحق. يمكن للمحرك والفرامل والأبواب وجميع مراجعات بيانات الأجهزة (التفاضلية). انها موثوقية سريعة وعالية. كما أنها معقدة ومكلفة بعض الشيء لتنفيذها.

في أواخر عام 1990، كان لدى العديد من المنتجين بروتوكولات حافلات الملكية الخاصة بهم يعمل جنبا إلى جنب مع الأجزاء غير الحرجة من شبكة السيارات: كيف تتحدث وحدة التحكم التي شنت بها الأبواب إلى محركات السائق وقفل الباب ومحركات النافذة، على سبيل المثال. لا يستحق تشوش الحافلة الرئيسية مع الاتصالات غير الحرجة والمحلية من هذا القبيل، لذلك تم نسج الشبكات الفرعية من العلبة الرئيسية. لم تحتاج هذه إلى ضمانات السرعة أو الموثوقية للشبكة الرئيسية، ولأسباب التكلفة يجب أن تكون سهلة التنفيذ. يجب أن يكفي أصغر متحكم أن يكفي لفة نافذة صعودا وهبوطا، أليس كذلك؟

في أوائل 2000s، مواصفات شبكة الاتصالات المحلية (LIN) المحلية (LIN) طريقة واحدة لهذه الشبكات الفرعية، مع التركيز على تكلفة التنفيذ المنخفضة، والسرعة المتوسطة وإعادة التكوين، والسلوك القابل للتنبؤ بالاتصال بين ميكروكماني ماستر واحد وعدد صغير من العبيد مجموعة. رخيصة، بسيطة، وقابلة للتنفيذ على مستودعات صغيرة، والأفضل فقط للمشاريع متوسطة الحجم؟ حلم القراصنة! لماذا لا تستخدم لين في مشاريعك المتعددة الصغيرة؟ دعنا نحفر ويمكنك معرفة ما إذا كان أي من هذا مفيد لك.

بروتوكول لين

يتكون A LIN “الكتلة”، وهو ما يسمى بالشبكة الصغيرة المحلية في Jargon، من متحكم سيد واحد وعدد من العبيد. يبدأ LIN باسم المسلسل 8N1 التقليدي UART، وعادة ما تكون في 19200 باود، وتزيل أسلاك واحدة. بعد ذلك، يضيف بروتوكولا يسمح باستخدام هذا السلك الفردي كحافلة مشتركة بين عبيد متعددة. إذا حاولت لفة بروتوكول الشبكة الخاصة بك لسهولة الاتصالات التسلسلية UART، فسوف ينتهي بك الأمر مع شيء مثل لين. الذهاب جلب نسخة من المواصفات (PDF) وقراءة على طول!

كل معاملة لين هي نفسها بشكل أساسي: يرسل السيد الرأس رأس يتضمن معرف محمي (PID)، والذي يحدد المهمة المراد تنفيذها. المهام يمكن أن تكون شيء مثل “تقرير درجة الحرارة الاستشعار 2” أو “SET SERVO 3 موضع”. اعتمادا على المهمة، يتبع بين واحد وثماني بايت من البيانات، مع اختباري ثنائي البايت. يجب على العبيد معرفة المهام التي تستجيب بها، وكيفية الرد. لذلك إذا تم إرسال “SET SET SERVO 3 OFF”، يحتاج الرقيق Servo 3 إلى الاستماع إلى البايتات التالية والتفاعل وفقا لذلك. جميع العبيد الذين لا يستجيبون للقيادة يمكن أن يتجاهل البيانات حتى الديباجة القادمة.

في حالة “استشعار درجة الحرارة الإبلاغ 2″، يرسل الرقيق مع مستشعر درجة الحرارة بياناته على الفور بعد تلقي الأمر. نظرا لأن طول البايت معروف مقدما، فإن المستشعر 2 فقط يسمح للرد بهذه المهمة، يعرف السيد الاستماع بالضبط، على سبيل المثال، أربعة بايتات في رد الفعل وتعرف كم من الوقت يجب أن تأخذ.

يضمن نظام الاقتراع هذا مع رؤوس الإرسال الرئيسية والعبيد ردود الفعل إرسال أي شيء من الأجهزة الوصول إلى الحافلة في نفس الوقت، لذلك يحصل LIN مع خط RX / TX واحد فقط. يشتمل الديباجة على مزامنة بايت (0x55) تساعد العبيد في قفل على مدار الساعة الرئيسية، وبالتالي يمكن أن تعمل العبيد على مصادر RC منخفضة أقل تكلفة والاختاف التلقائي.

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

تلك هي الأساسيات. يرسل الرئيسي PIDS، ويتبع سلسلة من بايت البيانات. كل شيء مريح UART، اتصل بالاستجابة والاستجابة، وتكييفها ببساطة قدر الإمكان لإنشاء شبكة صغيرة.

إضافات

Gui Lin Configuration App من VI مفيدديو.
إبقاء الشبكة التي تتطلب سهولة أن يتفق كل سيد وعبيد جميعها على مجموعة الأوامر وأطوال التفاعل الصحيحة. هذا الكثير من المعلومات اللازمة لعملية لين للعمل، من حيث المبدأ. ساعد الأمور على الأمور إلى حد ما، هناك شكل تقليدي لتذليل كل هذا الموضح في المواصفات لين.

هناك أيضا API التقليدية ل C أن كل من ماجستير وحواسكي الرقيق التي يمكن أن تستخدمها لإجراء سلوك الترميز في مجموعة لين. مجتمعة، وهذا يجعل سير عمل تقليدي لتحديد وتنفيذ حافلات لين – مفيدة للغاية لصناعة السيارات، وليس عديمة الفائدة للمتسللين أيضا.

هناك أيضا حالة من النوم والسلوك المحدد للحافلة، مع إشارات النوم والاستيقاظ المرتبطة. يجب أن تستجيب جميع العبيد لإشارة النوم، ويجب أن يذهب أي منهم تلقائيا إلى النوم بعد مهلة أربع ثوان إذا لم يسمعوا من السيد. يمكن لأي عقدة أو عبدا أو ماجستير، إرسال أمر الاستيقاظ، وبعد ذلك يجب أن يعود الماجستير إلى جدول الاقتراع العادي.

تضمن Lin الإصدار 2.0 عددا من أنواع الإطارات الاختيارية التي تجعل الشبكة أكثر مرونة. على وجه الخصوص، جعل “الإطارات المتفرقة” تفاعل الرقيق اختياري إذا لم تحصل على أي بيانات جديدة لأن التحديث الأخير. “الحدث الذي أثار الإطارات” يشبه الإطارات المتقطعة، باستثناء أنه يمكن أن يستجيب بالإضافة إلى أي عقدة عبدة تحتوي على بيانات جديدة.

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

يمكن أن يكون لدى السيد أيضا جداول متعددة، والتبديل بينها. العبيد لا يهتم – أنها تستمع فقط للمهام ذات الصلة بهم على أي حال. لا يوجد سبب للماجستير لإرسال بيانات موقع Servo كل فترة إذا لم يتغير، على سبيل المثال، حتى لو كان يجعل الأمور أكثر بساطة. مكالمتك.

هناك حتى مواصفات حمل اختيارية متوافقة مع CAN Bus وتجعلها أكثر بساطة لدمج كتلة لين المحلي مع الشبكة الأكبر. باختصار، لين يعتقد تماما من خلال بروتوكول حافلات UART مع تبني الصناعة الجيدة. ستجد تعليمات تعليمية جيدة من كل بائع من أجهزة الإرسال والاستقبال Lin. (إليك مقدمة رائعة من الصكوك الوطنية.)

الأجهزة – الطبقة المادية

تتصدر كل هذا البروتوكول اليقط عبارة عن مجموعة واسعة من رقائق الإرسال والاستقبال لين تتراوح من 0.25 دولار إلى 0.50 دولارا للسرورين الإرسال والاستقبال العادي، على ما يصل إلى أعلى رقائق باك أو اثنين لرقائق “أساس النظام” مع منظمات الجهد المتكامل. هذه هي بقعة خاصة، لأن الإرسال والاستقبال يمكن أن يهتم بمنطق النوم / الاستيقاظ وتحويل مزود الطاقة إلى متحكم الخاص بك وإيقاف تشغيله. هذا يجعل دمج عقدة الرقيق التي تعمل في 3.3 V بسيطة للغاية.

رقاقة صغيرة تشتري لك كثيرا.
نظرا لأن حافلة لين تم تطويرها للسيارات، فمن الوصي عادة على 12 فولت لأن هذه هي الدورات التدريبية عبر الأوردة من تسخير الأسلاك في سيارتك. يجب أن تكون أجهزة Lin Transceiver لتكون قادرا على استيعاب الفولتية العالية، لأن أنظمة كهرباء السيارات يمكن أن تكون بيئات مظلمة. يتعين عليهم أيضا التعامل مع خلاف الحافلات، عندما قد يحاول رقاقة الإرسال والاستقبال سحب خط لين أسفل بينما يحاول شخص آخر سحبه، لذلك هناك حماية مكموم في درجة الحرارة المدمجة أيضا. لين الإرسال والاستقبال عبارة عن وحشيات صغيرة قوية.

على النقيض من خطوط I2C، التي يتم سحبها مع مقاومات Puny، يتم سحب حافلة Lin Automotive تصل إلى 12 V مع مقاوم 1 Kω. لسحب هذا الخط بسرعة بدرجة كافية، يجب أن يكون Lin Prectceivers قادرا على إجراء عشرات Milliamps، لذلك لديهم ترانزستورات صغيرة (ل ICS) التي تم بناؤها في. مزيج من الجهد العالي الحالي الحالي يتضمن أن مواصفات السيارات Lin Bus هو جيد لمدة 40 مترا، بدلا من الأمتار التي يمنحك i2c دون اللجوء إلى السائقين. إذا كنت بحاجة إلى المسافة أو مناعة الضوضاء، LIN هناك من أجلك.

ولكن لا شيء يجبرك على تشغيل الحافلة الخاصة بك في 12 V، حتى أجهزة الإرسال والاستقبال. جهاز الإرسال والاستقبال Microchip الذي رأيته إلى 5.5 فولت، في حين أن تلك من NXP و Melexis يتم تشغيلها أسفل في Arduino-Compatible 5 V.

ولا شيء يجبرك على استخدام أجهزة الإرسال والاستقبال على الإطلاق! يمكنك ببساطة توصيل الترانزستور PNP (أو P-Channel Mosfet) إلى خط الحافلات وقيادة ذلك مع UART TX، وأخذ عينات الحافلة مع خط RX. هذا لديه عيب الصدى المحلي، ولكن يمكن التعامل معها في البرمجيات. أو، مع عدد قليل فقط من الأجزاء، هناك هذه الخدمة التي رأيناها من قبل. لم أستطع العثور على أي مشاريع المتسلل تنفذ Lin Textcepers من نقطة الصفر. ربما هذا لأن الصناعة الصناعية رخيصة جدا.

نقاط القوة والضعف

لا توجد حافلة مثالية لجميع المناسبات، و LIN ليست استثناء. لين ليس سريعا بشكل خاص، يجري تطويره حوالي 19،200 باود UART. التحديثات تأتي بشكل غير منتظم إلى حد ما من وجهة نظر متحكم. معاملة كاملة الطويلة، مع مهلة، يستغرق حوالي عشرة مللي ثانية. إذا استطلاعات الرأي الرئيسية في ستة عشر جهازا، فهذا هو معدل التحديث حوالي سبع حالات أسوأ هيرتز. بالطبع، لا يحتاج السيد إلى استدعاء كل جهاز في كل مرة، والعديد من الأوقات التي ستكون فيها الرسائل نصف هذا الطول، لكنك لن تحصل على أكثر من 200 هرتز. من ناحية أخرى، فإن معدل التحديث ثابت بسبب القدرة على تنفيذ مهلة ضيقة لأجهزة Flaky، وهو أمر رائع بالنسبة للموثوقية والبساطة، وليس ذلك أبطأ بكثير من I2C.

هناك إصدارات رئيسيتان من لين ستراه في البرية، 1.x و 2.x. بالإضافة إلى أنواع الإطار الاختياري الذي تمت مناقشته أعلاه، يحتوي الإصداران على صيغ المجموع الاختباري المختلفة – والآخر في 2.x غريب حقا – يستلزم حاسبة قائمة على الويب للتأكد من أنك تقوم بذلك بشكل صحيح. بدلا من إضافة MOD-256، فإنها تطرح 255 من أي قيمة 256 أو أكبر. انها مثل الفائض 8 بت يلف إلى 1 بدلا من 0. هل هذا هو الشعور بأي منكم؟

لا تنتج عن أجهزة LIN خارج صناعة السيارات مثل I2C أو SPI، بتسديدة طويلة، لذلك ربما لم تتم إجبارك على التعامل مع البروتوكول. ولكن إذا كنت ترغب في تضمين عدد صغير من الوحدات النمطية المستندة إلى ميكروكسونرولر، بثمن بخس، فاستخدم سلك واحد فقط (بالإضافة إلى الأرض)، من الصعب التفكير في أي شيء أسهل. كتابة رمز الرقيق I2C ليس بالتأكيد نزهة. كتابة التعليمات البرمجية للاستماع للحصول على بايت معين على خط UART ثم الرد لا يمكن أن يكون أبسط.

هل ترغب في تحويل عادي الفانيليا UART إلى حافلة؟ خذ صفحة أو اثنين من كتاب لين! هل فعلت ذلك بالفعل؟ اعرض لنا!

Leave a Reply

Your email address will not be published. Required fields are marked *