التمرير الشفاف من المنفذ التسلسلي إلى TCP أم تحويل البروتوكول: ما الذي يحتاجه جهازك؟
اختر بوابة شفافة من المنفذ التسلسلي إلى TCP عندما سيستمر برنامج المضيف في استخدام البروتوكول التسلسلي الحالي للجهاز. واختر تحويل البروتوكول عندما يتوقع المضيف بروتوكول تطبيق مختلفًا، مثل Modbus TCP بدلًا من Modbus RTU. الخيار الأول ينقل البايتات، والثاني يفسّر الرسائل ويعيد بناءها.
يأتي هذا القرار قبل اختيار العتاد. فعبارة «RS485 إلى Ethernet» تصف الواجهات، لكنها لا تثبت توافق البرامج عند الطرفين. ويجب أن يراعي التصميم الناجح أيضًا تأطير الرسائل، والجهة التي تتحكم في الناقل، وإعادة المحاولة، والأمان.
ما الذي تفعله البوابة التسلسلية الشفافة فعليًا؟
في الوضع الشفاف الخام، تمرّر البوابة بايتات الحمولة التسلسلية عبر اتصال TCP وتكتب بايتات حمولة TCP المستلمة إلى منفذها التسلسلي. ويظل التطبيق مسؤولًا عن أوامر الجهاز، والمجاميع الاختبارية، وتحليل الاستجابات، ودلالات الأوامر. تحقّق من الوضع المختار: فقد تضيف أوضاع COM الافتراضي أو التحكم التسلسلي آليات تفاوض خاصة بها، وتتطلب برنامج مضيف متوافقًا معها.
هذه نقطة انطلاق مفيدة لبروتوكول ثنائي خاص أو لتطبيق تسلسلي قائم يمكنه استخدام برنامج تشغيل COM افتراضي مدعوم. تحقّق مما إذا كان التطبيق يعتمد على إشارات التحكم في المودم، أو BREAK، أو توقيت دقيق، أو سلوك برنامج التشغيل التسلسلي المحلي. فقد لا تتمكن بوابة تنقل بايتات البيانات العادية من محاكاة هذه الوظائف.
على سبيل المثال، إذا كانت أداة قياس تستخدم أمرًا موثقًا تسبقه خانة تحدد الطول، فيمكن للمضيف تجميع بايتات TCP إلى أن تتوفر الاستجابة الكاملة للأمر. لا يلزم تعيين السجلات هنا، لكن المضيف يظل بحاجة إلى محلّل بروتوكول أداة القياس.

نقل TCP لا يحافظ على حدود الرسائل التسلسلية
يوفّر TCP تدفق بايتات موثوقًا ومرتبًا. وقد يحصل المستقبِل في عملية قراءة واحدة على جزء من رسالة تطبيق، أو على عدة رسائل معًا. مقاطع TCP وعمليات قراءة المقابس ليست سجلات تطبيق. وهذا يتوافق مع نموذج النقل في RFC 9293.
مثال توضيحي: يرسل جهاز رسالتين، A وB، طول كل منهما ثمانية بايتات. قد يقرأ التطبيق المستقبِل أول خمسة بايتات من A، ثم البايتات الثلاثة المتبقية من A مع البايتات الثمانية كاملةً من B. هذه الحدود بين عمليات القراءة مجرد مثال وليست تنبؤًا بسلوك الشبكة. يجب على المحلّل تخزين البيانات غير المكتملة مؤقتًا واستخراج الرسائل الكاملة باستخدام الطول أو الفاصل أو قواعد التأطير الأخرى الخاصة بالبروتوكول.
يحتاج التوقيت التسلسلي إلى معالجة مستقلة. يستخدم Modbus RTU فترات صمت للفصل بين الإطارات، وله متطلبات زمنية بين المحارف؛ وتحددها مواصفة الخط التسلسلي، القسم 2.5.1.1، بما في ذلك توصية المؤقّت عند معدلات البود الأعلى. كما أن بتات البداية والتكافؤ والتوقف في UART ليست بايتات حمولة TCP عادية.
لا تفترض أن الفواصل بين وصول البيانات عبر الشبكة تعيد إنتاج فترات الصمت التسلسلي. تحتاج البوابة إلى تخزين مؤقت مناسب وقواعد ملائمة للإرسال التسلسلي. ولا تكفي مهل تجميع الحزم وحدها لإثبات بقاء إطار RTU متماسكًا عند الخرج التسلسلي. اختبر المدخلات المجزأة، والبايتات المتأخرة، والطلبات المتتالية مباشرةً.
نقل Modbus RTU عبر نفق يختلف عن Modbus TCP
يستخدم طلب Modbus TCP ترويسة MBAP من سبعة بايتات ووحدة بيانات البروتوكول (PDU). ويستخدم Modbus RTU عنوانًا تسلسليًا ووحدة PDU وقيمة CRC. يمكن لنفق شفاف أن ينقل بايتات RTU كاملةً، بما فيها CRC، داخل TCP، لكن عميل Modbus TCP القياسي يتوقع تنسيق MBAP.
تحلّل بوابة التحويل ترويسة MBAP، وتوجّه معرّف الوحدة (Unit Identifier) إلى الوجهة التسلسلية المضبوطة، وتبني طلب RTU، وتتحقق من CRC الاستجابة، وتربط الرد بمعاملة TCP الأصلية. يدعم طول MBAP تحليل الرسائل، ويربط معرّف المعاملة الطلبات باستجاباتها. راجع دليل تنفيذ Modbus TCP/IP، القسمين 3.1.2–3.1.3.
مثال محلول أُنشئ للتوضيح: قراءة سجلَّي احتفاظ بدءًا من العنوان صفر المرسل ضمن البروتوكول، من الجهاز التسلسلي 7. تتبع الوظيفة 03 والعنونة التي تبدأ من الصفر ضمن البروتوكول مواصفة بروتوكول تطبيق Modbus، القسمين 4.4 و6.3. توضّح هذه البايتات الترميز، ولا تمثّل اختبارًا لمنتج من Obeita أو خريطة سجلات لجهاز حقيقي.
- وحدة PDU للطلب:
03 00 00 00 02. - طلب Modbus TCP:
00 2A 00 00 00 06 07 03 00 00 00 02. معرّف المعاملة هو002A؛ ويشمل الطول0006معرّف الوحدة والبايتات الخمسة لوحدة PDU. - طلب RTU المقابل:
07 03 00 00 00 02 C4 6D. تُرسل قيمة CRC المحسوبة بدءًا بالبايت الأقل أهمية.
تبقى وحدة PDU دون تغيير في هذا المثال. ولا يؤدي تحويل تأطير النقل تلقائيًا إلى ترجمة مجموعة أوامر خاصة، أو استنتاج عوامل التحجيم، أو تحديد ترتيب البيانات الممتدة عبر عدة سجلات. تتطلب هذه الاحتياجات تعيينًا صريحًا.

حدّد الجهة التي تتحكم في الناقل التسلسلي وسياسة إعادة المحاولة
يسمح نموذج الخط التسلسلي في Modbus بجهة رئيسية واحدة تبدأ الاتصال، وبمعاملة واحدة في كل مرة. وإضافة عملاء Ethernet لا تتيح مزيدًا من المعاملات التسلسلية المتزامنة. إذا احتاج عدة مضيفين إلى الوصول، فاشترط وجود مجدول موثق، وحدود للطابور، ومعالجة للمهل الزمنية، وتوجيه للاستجابات. لا توصل جهة رئيسية أخرى تنفّذ استقصاءً نشطًا بالناقل نفسه من دون آلية تحكيم مصممة هندسيًا.
اسأل عما يحدث عندما تنتهي صلاحية طلب في الطابور، أو ينقطع اتصال عميل، أو تصل استجابة تسلسلية متأخرة. يحتاج الخادم الشفاف الذي يقبل عدة مقابس إلى قواعد صريحة لتحديد جهة التحكم؛ فقبول الاتصالات وحده لا يثبت سلامة التشغيل مع عدة عملاء.
سيناريو عطل: ينفّذ جهاز عملية كتابة، لكن الرد يضيع قبل أن يستلمه العميل. وقد تؤدي إعادة المحاولة من التطبيق إلى تنفيذ الكتابة مرة أخرى. إعادة إرسال TCP ضمن الاتصال تختلف عن إصدار طلب تطبيق آخر. ولا يضمن معرّف معاملة Modbus وحده منع التكرار بصورة مستمرة.
صنّف الأوامر حسب آثارها. قد يكون تكرار تعيين قيمة ضبط مقبولًا، بينما قد لا يكون تكرار أمر يبدأ دورة تشغيل مقبولًا. بالنسبة إلى عمليات الكتابة ذات العواقب المهمة، حدّد تحققًا من التسلسل يدعمه الجهاز، أو مطابقة للحالة، أو إجراء استعادة بواسطة المشغّل، بدلًا من إعادة المحاولة بلا شروط.
حدّد الحدود الأمنية للنشر
لا يوفّر TCP غير المؤمّن ولا Modbus TCP التقليدي بطبيعتهما وصولًا إلى التطبيق يجمع بين التشفير والتحقق من الهوية. تحقّق مما تدعمه البوابة والعميل المختاران فعليًا. تحدد Modbus Security استخدام TLS والتحقق من الهوية القائم على الشهادات؛ ويجب أن يتوفر الدعم عند الطرفين، مع التخطيط لتوفير الشهادات وتجديدها.
ضمن قائمة تحقق النشر، احصر إمكانية الوصول إلى البوابة في الأنظمة المعتمدة، واعزل شبكة التحكم، واحمِ الوصول الإداري، وتجنب التعرض المباشر للإنترنت العام. قد تحمي شبكة VPN معتمدة أو بوابة أمنية مسارًا شبكيًا، لكن الجزء المحلي المتبقي وتفويض الوصول إلى الجهاز يظلان بحاجة إلى مراجعة. ولا يحدد التشفير أي عميل جرى التحقق من هويته يجوز له إصدار عملية كتابة.
قائمة تحقق عملية للاختيار والقبول
- حدّد البروتوكولَين. دوّن ما يصدره الجهاز وما يقبله المضيف: بايتات تسلسلية خام، أو RTU-over-TCP، أو Modbus TCP، أو تنسيق آخر موثق.
- تحقّق من المتطلبات الكهربائية المسبقة. راجع استخدام RS232 أو RS485، والتوصيل بسلكين أو أربعة أسلاك، وتوزيع الأطراف، ومعدل البود، والتكافؤ، وبتات التوقف، والتأريض، والعزل، والإنهاء، والانحياز، وفقًا لمتطلبات التركيب.
- حدّد المسؤول عن التأطير. عيّن المكوّن الذي يجمع الرسائل ويلبّي التوقيت التسلسلي، مع تحديد الحد الأقصى لحجم الإطار وسلوكه عند تلقي مدخلات غير سليمة البنية.
- حدّد الوصول والاستعادة. عرّف جهة التحكم في الناقل، وسلوك العملاء المتزامنين، وأذونات الأوامر، والمهل الزمنية، وحدود الطابور، ومعالجة إعادة الاتصال، وإعادة المحاولة الآمنة لعمليات الكتابة.
- تحقّق من الحالات الصعبة. استخدم منصة اختبار لاختبار قراءات TCP الجزئية والمجمّعة، وغياب الأجهزة، والردود المتأخرة، وإعادة الاتصال، وامتلاء الطابور، ورفض الوصول. حدّد معايير النجاح قبل الاختبار.
اختر التمرير الشفاف عندما يكون توافق البروتوكولات قائمًا بالفعل ويمكن التعامل مع التأطير بموثوقية. واختر التحويل عندما يحتاج المضيف إلى تنسيق رسائل مختلف أو نموذج بيانات صريح. إذا كان أحد الطرفين غير موثق، فاجمع الأدلة قبل الالتزام ببنية بوابة محددة.
جهّز متطلبات البوابة لمناقشتها مع Obeita
لإجراء نقاش تقني محدد مع Obeita، جهّز دليل الجهاز بعد حجب المعلومات الحساسة، وإطارات طلب واستجابة تمثيلية، والإعدادات التسلسلية، وبروتوكول المضيف، وعدد الأجهزة، ومتطلبات التوقيت، والسلوك المتوقع عند الأعطال. أزل بيانات الاعتماد ومعرّفات العملاء وبيانات العمليات السرية. تتيح هذه المدخلات تقييم أعمال النقل والتحويل والتحقق المطلوبة.
اطّلع على خدمة ربط الأجهزة القائمة لدى Obeita، وعلى مشروع مواءمة الاتصال التسلسلي مع Ethernet ووحدة DTU الخلوية الذي تم تسليمه (بالإنجليزية) للتعرّف إلى أعمال تكامل ذات صلة. ولمناقشة بروتوكولات جهازك ومضيفك، تواصل مع Obeita.