Modbus RTU، ASCII، و TCP باستخدام SerialTool

ما هو Modbus

Modbus هو بروتوكول اتصال تسلسلي تم إنشاؤه في عام 1979 بواسطة Modicon® (الآن جزء من مجموعة Schneider Electric) لربط وحدات التحكم البرمجية القابلة للبرمجة (PLCs). أصبح هذا البروتوكول معيارًا فعليًا في التواصل الصناعي وهو واحد من أكثر بروتوكولات الاتصال انتشارًا على مستوى العالم بين الأجهزة الإلكترونية الصناعية. Modbus هو بروتوكول خالٍ من الرسوم وتم الإعلان عنه كمواصفات على موقع The Modbus Organization.

ببساطة، إنها طريقة تُستخدم لنقل المعلومات عبر خطوط تسلسلية بين الأجهزة الإلكترونية. الجهاز الذي يطلب المعلومات يُسمى Modbus Client والأجهزة التي تقدم المعلومات هي Modbus Servers. في شبكة Modbus القياسية ، هناك عميل واحد وحتى 247 خادمًا ، كل منها بعنوان خادم فريد من 1 إلى 247. يمكن أيضًا للعميل كتابة المعلومات على الخوادم.


تم تصميمه في الأصل للاستخدام الصناعي ، مع مرور الوقت تم استخدام هذا البروتوكول أيضًا في قطاعات أخرى ، مما جعله واحدًا من أكثر البروتوكولات انتشارًا ، وحتى اليوم ، على الرغم من أنه لديه أكثر من 40 عامًا ، يمكن العثور عليه في العديد من الأجهزة ، مثل لوحات العاملين ، وحدات التحكم البرمجية القابلة للبرمجة (PLCs) ، أنظمة الأتمتة المنزلية ، وحتى متكامل في أجهزة بسيطة مثل Arduino.

نقل Modbus RTU و ASCII عبر Serial

عند إنشاء البروتوكول ، كان التواصل مخصصًا ليتم عبر منفذ سلسلي ، ولهذا السبب تم تنفيذه في SerialTool. يُستخدم Modbus في كثير من الأحيان لربط جهاز كمبيوتر للمراقبة بوحدة نهائية بعيدة (RTU) في نظم مراقبة واكتساب البيانات (SCADA). اعتمادًا على التنسيق الذي يتم نقل البيانات به ، ينقسم البروتوكول إلى:

  • MODBUS RTU - يتم نقل البيانات بتنسيق العشري عشري.
  • MODBUS ASCII - تمر البيانات بتنسيق ASCII.

التحكم في الأخطاء يختلف في الحالتين ، في MODBUS RTU يتم استخدام التحقق من الكود الدوري (CRC) ويتم إرساله بعد الأوامر ، بينما في MODBUS ASCII يتم إرسال التحقق من الكود الطولي (LRC) دائمًا بعد الأوامر.

نقل Modbus TCP

في عام 1999 ، تم تطوير "Modbus TCP" ، وهو معيار مخصص للشبكات التي تستفيد من مجموعة بروتوكولات TCP/IP: في الواقع ، هو نسخة من Modbus السلسلي RTU تعتمد على TCP/IP ، مما يتيح التواصل عبر شبكات الإنترنت / الشبكات الداخلية. في السنوات الأخيرة ، أصبحت النسخة TCP/IP أكثر استخدامًا نظرًا لكونها مفتوحة المصدر ، وسهلة التنفيذ ، وتكلفة التطوير المنخفضة ، ودعم الأجهزة الذي يضمن الحد الأدنى حقًا.

التحكم في الأخطاء يختلف في الحالتين ، في MODBUS RTU يتم استخدام التحقق من الكود الدوري (CRC) ويتم إرساله بعد الأوامر ، بينما في MODBUS ASCII يتم إرسال التحقق من الكود الطولي (LRC) دائمًا بعد الأوامر.

يستخدم بروتوكول Modbus TCP/IP ترميزًا ثنائيًا للبيانات وآلية اكتشاف الأخطاء TCP/IP ، على عكس Modbus السلسلي ، تعتمد النسخة TCP/IP على الاتصالات وتسمح بتنفيذها بشكل متزامن على نفس العبد أو على أكثر من جهاز. يستخدم Modbus TCP/IP أيضًا نمط السيد-عبد ؛ تستخدم هذه الاتصالات أربعة أنواع مختلفة من الرسائل.

يتم تحديد ModBus على مستوى 7 في الطبقة التطبيقية لنموذج ISO/OSI (طبقة التطبيق) ، حيث يحدد تنسيق الرسائل المعروف بالتأطير وطريقة نقل البيانات ووظائف التحكم. يتم التواصل من خلال نموذج العميل والخادم. يحدد البروتوكول وحدة بيانات البروتوكول (PDU) التي لا تعتمد على الطبقة السفلية للاتصال. تقدم وحدة بيانات التطبيق (ADU) حقول إضافية لعنونة وتحكم في الأخطاء.

SerialTool Modbus Client

يدعم SerialTool وضعيات النقل RTU و ASCII و Modbus TCP لتقديم أقصى قدر من المرونة المهنية لعميل Modbus.
يقدم SerialTool أيضًا إمكانية إرسال أوامر Raw لتسهيل أي احتياجات للمطور.

لقطة شاشة مع سجل الأوامر المرسلة

شاشة مع الأوامر على مستوى منخفض المرسلة


وظائف Modbus

فيما يلي الوظائف التي يقوم SerialTool بتنفيذها لبروتوكول Modbus.

رمز الوظيفة العملية اسم الجدول
0x01 قراءة Bobines الإخراج التكراري
0x02 قراءة جهات الاتصال الإدخال التكراري
0x03 قراءة سجل الإخراج التكراري التنظيمي
0x04 قراءة سجل الإدخال التناظري
0x05 كتابة واحدة Bobine الإخراج التكراري
0x06 كتابة واحدة سجل الإخراج التنظيمي
0x0F (dec 15) كتابة متعددة Bobines الإخراج التكراري
0x10 (dec 16) كتابة متعددة سجل الإخراج التنظيمي

هياكل بيانات Modbus

يتم تخزين المعلومات في جهاز الخادم في أربع جداول مختلفة. تحتوي جدولان على قيم تكرارية / إيقاف (Bobines) وجدولان على قيم رقمية (سجلات). كل من Bobines والسجلات لديهما جدول للقراءة فقط وجدول للقراءة والكتابة. لكل جدول قيم 9999. كل Bobine أو جهة اتصال هي 1 بت ولديها عنوان بيانات بين 0000 و 270E. كل سجل هو 1 كلمة = 16 بت = 2 بايت ولديه أيضًا عنوان بيانات بين 0000 و 270E.

أرقام Bobine/سجلات عناوين البيانات النوع اسم الجدول
1-9999 0x0000 to 0x270E قراءة/كتابة Bobines الإخراج التكراري
10001-19999 0x0000 to 0x270E قراءة فقط جهات الاتصال الإدخال التكراري
30001-39999 0x0000 to 0x270E قراءة فقط سجل الإدخال التناظري
40001-49999 0x0000 to 0x270E قراءة/كتابة سجل الإخراج التنظيمي