بروتوكول اتصالات تسلسلي جيد / كومة للأجهزة المضمنة؟ [مغلق

StackOverflow https://stackoverflow.com/questions/1159379

سؤال

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

  • دعم أجهزة متعددة. نود أن نكون قادرين على دعم حافلة RS485.
  • ضمان التسليم. نوع من آلية الاعتراف، وبعض اكتشاف الخطأ البسيط (CRC16 ربما يكون على ما يرام).
  • ليس ماجستير / الرقيق. من الناحية المثالية الرقيق (S) سيكون قادرا على إرسال البيانات غير متزامنة. هذا هو في الغالب فقط لأسباب جمالية، فإن مفهوم الاقتراع لا يشعر كل عبيد أن يشعر لي.
  • استقلال نظام التشغيل. من الناحية المثالية لن تعتمد على بيئة متعددة الاحتياطات وقائية على الإطلاق. أنا على استعداد للتنازل عن هذا إذا كان بإمكاني الحصول على الأشياء الأخرى.
  • ANSI C. نحن بحاجة إلى أن نكون قادرين على تجميعها لعدة بنية مختلفة.

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

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

تحديث
لقد اعتبرت بجدية تنفيذ برنامج التعاون الفني / الملكية الفكرية، لكنه كان يأمل حقا في شيء أكثر خفيفة الوزن. العديد من ميزات TCP / IP هي مبالغة في ما أحاول القيام به. أنا على استعداد لقبول (بمرض) التي ربما تكون الميزات التي أريدها فقط ليست مدرجة في بروتوكولات أخف.

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

تحديث 3.
لذلك يبدو وكأنه حالة الفن في هذا المجال هو:

  • مكدس TCP / IP قد قلصت. ربما تبدأ بشيء مثل lwip. أو UIP..
  • من المحتمل أن يعتمد التنفيذ القائم على الحافلة بشكل كبير، لذلك لن يكون مفيدا في طبقات جسدية أخرى. شيء مثل يمكن أن مهرجان يمكن أن تساعد على طول الطريق.
  • تطبيق HDLC أو SDLC (مثل هذا). ربما هذا هو الطريق الذي سنأخذه.

لا تتردد في نشر المزيد من الإجابات إذا مررت بهذا السؤال.

هل كانت مفيدة؟

المحلول

هل نظرت HDLC. أو SDLC.?

هناك ايضا لاب / د (بروتوكول الوصول إلى الارتباط، D- قناة).

Uyless Black's "بروتوكولات ربط البيانات"هل دائما في مكان قريب على رف الكتب - قد تجد بعض المواد المفيدة هناك أيضا (حتى في حالة حدوث TC & البحث في البروتوكولات المختلفة)

نصائح أخرى

يمكن يلتقي بعدد من معاييرك:

  • دعم أجهزة متعددة: وهو يدعم عددا كبيرا من الأجهزة في حافلة واحدة. غير ذلك، ومع ذلك، متوافق مع RS485.
  • ضمان التسليم: تستخدم الطبقة المادية حشو بت و CRC، يتم تنفيذ كل منها في الأجهزة على عدد متزايد من المعالجات المضمنة الحديثة. إذا كنت بحاجة إلى acknlowedgement، فأنت بحاجة إلى إضافة ذلك على رأس نفسك.
  • ليس ماجستير / الرقيق: لا يوجد أسياد أو عبيد؛ يمكن لجميع الأجهزة نقل كلما أرادوا. تتعامل أجهزة المعالج مع التحكيم والتنافس.
  • نظام التشغيل الاستقلال: لايمكن تطبيقه؛ انها حافلة منخفضة المستوى. ما وضعت فوق هذا الأمر متروك لك.
  • Ansi ج: مرة أخرى، لا ينطبق.
  • سرعة: عادة، ما يصل إلى 1 ميغابت في الثانية تصل إلى 40 م؛ يمكنك اختيار السرعة الخاصة بك لتطبيقك.

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

أعتقد أن نقطة انطلاق معقولة يمكن أن تكون UIP..

(أضف مقالة ويكيبيديا على ميكيب منذ الرابط الأصلي ميت.)

إلقاء نظرة على profibus..

إذا كنت لا تريد السيد / العبد، أعتقد أنك يجب أن تفعل التحكيم مع الأجهزة (يمكن حافلة, flexray.).

هل تفكر في بروتوكول Modbus؟ إنه موجه ماجستير / الرقيق، لذلك لا يمكن أن يبدأ الرقيق في النقل، ولكن خلاف ذلك خفيف الوزن للتنفيذ، مجانا، ودعم جيدا بأدوات عالية المستوى. يجب عليك فقط الحصول على فهم على مصطلحاتهم / مثل تسجيل الدخول، سجل الإدخال، لفائف الإخراج، إلخ).

يمكن أن يكون مستوى PHY RS232، RS485، إيثرنت ...

إلقاء نظرة على شبكة الإنترنت المتحكم (MIN):

https://github.com/min-protocol/min.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top