سؤال

أنا أكتب بروتوكول RS485 بسيط متعدد الدرجات للاتصالات التسلسلية داخل نظام موزع. أنا أستخدم نموذجًا قابلًا للعنونة حيث يتم إعطاء أجهزة الرقيق نافذة من 20 مللي ثانية للرد. استطلاعات Master UC الأجهزة المتصلة للحصول على التحديثات وهي تستجيب وفقًا لذلك. لقد استخدمت عمليات فحص وأخذ الاحتياطات اللازمة للتغلب على عدم استجابة الأجهزة المتصلة للرسائل المشوهة. أثبتت هذه الطريقة فعاليتها في حوالي 99 ٪ من المواقف ، لكنني أفقد الحزمة إذا تم تقديم جهاز جديد خلال جلسة اتصال. سيكون لتوصيل جهاز جديد "Hot" تأثيرات سلبية على الإشارة التي يتم رصدها بواسطة أجهزة الرقيق ، ولو لفترة قصيرة للغاية. أنا على جانب البرمجيات من الهندسة ، لكن كيف يمكنني تخفيف هذا الموقف دون محاولة إعادة إنشاء TCP؟ نحن نستخدم نموذج الاقتراع لأنه سريع ونقوم بعمل جيد لتطبيقنا ، لا حاجة لوظائف RTOS. لدي وفرة من الدورات على كل وحدة المعالجة المركزية ، فكر في المصطلحات الأساسية.

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

المحلول

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

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

نصائح أخرى

ربما فاتني شيء ما في سؤالك ، لكن ألا يمكنك كتابة السيد فقط بحيث إذا لم يتم مشاهدة الرد من جهاز خلال الوقت المسموح به ، فإنه يعيد تلميع هذا الجهاز؟

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