http://https://www.youtube.com/watch?v=JBGaInI-TG4&feature=youtu.be
-
بنية رسالة بروتوكول Modbus:
تشترك كلُّ رسائل بروتوكول Modbus بالبنيةَ نفسها، وتحوي كلٌّ منها على أربعةِ عناصرَ أساسيَّة، تسلسلُ وترتَّب هذه العناصر عينها لجميعِ الرسائل ممّا يسمحُ بتحليل محتوى رسالة Modbus بسهولةٍ ويُسر.
يبدءُ الاتصال دائمًا بالسّيدِ في شبكة Modbus حيثُ يرسلُ السَّيد (master) في شبكة Modbus رسالةً؛ واعتمادًا على محتوياتِ الرسالة يفسّر التابعُ (salve) الرسالةَ ويستجيبُ لها.
يُستخدمُ العنوانُ الفيزيائيُّ للتابع الموجود في ترويسة الرسالة لتحديد الجهاز التابع الذي يجبُ أن يستجيبَ للرسالة. تتجاهل جميعُ العقد الأخرى على شبكة Modbus الرسالةَ إذا كان حقلُ العنوان لا يتطابق مع عنوانها.
تنفِّذُ تعليماتُ Modbus عملياتِ القراءة والكتابة على مسجّلات الذَّاكرة الدّاخليّة الخاصّة بالتابع، لتهيئة المدخلاتِ والمخرجات الخاصّة بالتابع، ومراقبتها والتحكّم بها.
1.1. أجهزة بروتوكول Modbus:
تتضمَّن أجهزةُ بروتوكول Modbus في العادة، خريطةً للمسجّلات حيث يمكنُ كتابةُ بياناتِ التهيئة والإدخال والإخراج وقراءتها منها. يجب عليك دائمًا الرجوعُ إلى خريطة مسجّلات التّابع، للحصول على فهم أفضلَ لعمله العام.
يحوي نموذجُ بيانات Modbus data model على بنيةِ بسيطة تمَّ وصفُها في أربعة أنواعٍ من البيانات الأساسيَّة:
- المدخلات الرقميَّة Discrete Inputs.
- مخرجات Coils Outputs.
- مسجّلات الدَّخل (معطيات الدَّخل).
- مسجّلات المَسْكِ (معطيات الخَرْج).
1.2. وحدة بيانات بروتوكول (Modbus (PDU:
تتكوَّن وحدةُ بيانات بروتوكول أوال PDU للـ Modbus من:
- رمزِ الوظيفة “function code”
- عدة بايتات من “البيانات” التي يطلبها السّيد.
تُنظّم مسجّلاتُ ذاكرة Modbus الخاصّة بالجهاز تبعاً للأنواع الأربعة الأساسيَّة للمعطيات المرجعيَّة، ويتمّ تحديدُ نوع المعطيات بالرقم الأوَّل المستخدم في عنوان ذاكرة الأجهزة، مثل:
- مسجّل يبدأ بالصفر (0) يشير إلى رسالة لقراءة أو كتابة “مخارج رقميّة أو من نوع coil”.
- مسجّل يبدأ بواحد (1) يشير إلى قراءة “المداخل الرقميَّة”.
- مسجّل يبدأ بثلاثة (3) يشير إلى قراءة “مسجّلات الدخل “.
- مسجّل يبدأ بأربعة (4) يشير إلى القراءة والكتابة إلى “مسجّلات الخرج أو المسك”.
1.2.1. رسالة Modbus حقل “function Code”:
يحدّد حقل “function Code” أيَّ مسجّلات عليه كي يقرأَ منها أو يكتبَ عليها في التّابع.
فمثلاً، الرمز (03) قراءة المسجّلات 40001-40002 يتمّ عنونتُه بشكلِ 0000 في حقل “data address” في الرسالة المرسَلة إلى التّابع.
يعمل رمزُ 03 على المسجّلات ذات العناوين (4xxxx) من مسجّلات التّابع.
تُقسَّمُ الحقول في PDU إلى بايتاتٍ، كلّ منها له اسمٌ.
في الصورة تحتوي رسالةُ الطلب على:
- ” Slave address” 01.
- ” Function code” 03 (اقرأ من المسجّل 4xxxx).
- “عنوان البداية” ممثَّل بالبايتين HI وLO ذي القيمة (0000) والتي تحدّد “مسجّل البداية”.
- “عدد العناوين” لقراءتها من التّابع، البايتات HI وLO ذي القيمة (0003) تحدّد “عدد المسجّلات” التي سيتم قراءتها من التّابع.
مثالٌ على طلب “قراءة” “أوَّل مسجّلَين” من مسجّلات المَسك” من 0 الى 1 (المسجّل 40001 إلى 40002) من جهاز تابع 1 مبين في الأسفل.
يتضّحُ من الصورة السابقة أنّ مسجّلَ المَسك 40108 هو في الواقع، معنّونٌ على أنّه المسجّل 107 في حقل “data” في ال PDU.
وقد درجت تسمياتٌ عديدة من أنواع البيانات تبعاً لعملها. على سبيل المثال: يسمّى الخَرْجُ أحادي البت ” coil” (كالريليه) ، أمّا الدخلُ أحادي البت دخلٌ رقميٌّ ” discrete input”
يحتوي حقلُ “function code” للرسالة على بايت واحدٍ يخبر التّابعَ نوعَ الإجراء المطلوب اتخاذه.
تتراوح الرموزُ الوظيفيَّة الصّالحة من 1 الى 255، ولكن لا يتمُّ تطبيقُ جميع الرموز على تابعٍ معين.
يوجّهُ الجدولُ، في الصّورة أدناه، الضوءَ إلى مجموعةٍ فرعيةٍ من وظائف بروتوكول Modbus القياسيَّة.
1.2.2. حقل “ Data” في رسالة Modbus:
بالإضافة إلى ما سبقَ حقل ” Data” في طلب السّيد يُزود التّابع بأيِّ معلومات إضافيّة مطلوبة من التابع لإكمال الإجراء المحدّد بــ “function code” في طلب السَّيد.
يتضمّن طلب السّيد عادةً ما يلي:
- عنوانَ مسجّلات التّابع.
- عددَ المسجّلات المطلوب تقديمُها في الطلب.
- أيَّ بيانات للكتابة من السَّيد.
-
معالجة خطأ رسالة Modbus:
استجابة التّابع الطبيعية للطلبات تكونُ بإعادة قيمةِ حقل ” function code”، ولكن عندَ وجودِ الخطأ تكون بإرسال قيمة الحقل الأصليّة عينِها مع جعل البت الأكثر أهمية 1.
على سبيل المثال، يحتوي الأمر “قراءة مسجّلات المسك” (03) على 8 بتٍ بترميز ثنائيٍّ 00000011 (3 بالترميز الستة عشري). إذا وافق جهاز التَّابع على الطلب دونَ خطأ، فسيرجع الرمز نفسُه إلى استجابته.
ومع ذلك، إذا حدثَ خطأ فسيعيد الخادم 1 بايت، يحتوي على 8 بتٍ بترميز ثنائيٍّ
10000011 (البت الأكثر أهمية أصبح 1) كما يرسل رمز فريد (رمز استثناء) في حقل “data” لرسالة الاستجابة تخبر الجهازُ السّيد عن نوع الخطأ الذي حدث، أو سبب الخطأ.
-
قيم “ Function Code” الأكثر شيوعًا لـ Modbus RTU:
- رمز 01، رمزُ “قراءة مدخل من النوع “coil” ويستخدم لقراءة المسجّلات من 1 إلى 2000. تحدّد PDU رسالةُ الطّلب عنوانَ المسجّل الأوّل في ذاكرة التّابع وعددَ المداخل المراد قراءتها من التابع.
- رمز 02، رمزُ “قراءة المُدخلات من النوع “discrete” لقراءة حالات من 1 إلى 2000 من المخارج المنطقيَّة للتابع. يحدد PDU الطلب عنوانَ المدخل الأوّل لمسجّلات ذاكرة التابع وعددَ المداخل المطلوب قراءتُها من جهاز التّابع.
- رمز 03، “قراءة مسجّل” لقراءة محتويات كتلةٍ متلاصقة من مسجلات المسك في تابعٍ بعيد. يحدد PDU الطلب عنوانَ مسجل البدء وعددَ المسجلات المطلوب قراءتُها من الجهاز التّابع.
- رمز 04، “قراءةُ مسجّلات الدّخل” لقراءة من 1 إلى 125 مسجلٍ متجاورٍ في جهاز بعيد. يحدد PDU الطلب عنوانَ مسجل البدء وعددَ السجلات.
- رمز 05، “وضع قيمةٍ على مخرج من نوع “coil” ” إمّا تشغيل وإمّا إيقاف في جهاز تابع عن بُعد.
- رمز 06، “كتابة على مسجّل واحد” يُستخدم للكتابة على مسجّل مسك واحد في جهاز تابع عن بُعد. يحدّد PDU الطلب عنوانَ مسجّل ذاكرة التابع المراد الكتابة إليه.
- رمز 15، “كتابة على مجموعة مداخلٍ من نوع “coil”” لإجبار كلِّ مدخل في سلسلة مداخل ليكون إمّا تشغيلًا إمّا إيقافًا في جهاز تابع بعيد.
- يحدّد PDU الطلب عنوانَ ذاكرة الملفات ليتمَّ فرضُه ليكون ON أو OFF.
- رمز 016، “كتابة على مجموعة مسجّلات” لكتابة على مجموعة من المسجّلات المتجاورة من 1 إلى 123 مسجّل في جهاز تابع عن بُعد.
أنَّ رموزَ Modbus ووظائفها تعدُّ أكثر وظائف القراءة والكتابة شيوعًا، ويفضّل أن تراجعَ مواصفات بروتوكول Modbus للحصول على معلومات إضافيّة.
-
برنامج محاكي بروتوكول Modbus:
يمكن تحقيق التواصل مع الأجهزة التابعة أو أجهزة PLC الرئيسة أو أجهزة الكمبيوتر مستعينًا ببرنامج محاكاة Modbus على جهاز الكمبيوتر الشخصي الخاص بك.
يمكنُ أن يكون الاتصال تسلسليًا أو عن طريق إيثرنت وفي شكل سيد، أو تابع. سيسمح لك البرنامج بتنفيذ كلّ رموز “function code”
يمكنك إعداد جهاز كمبيوتر لتشغيل برنامج محاكاة التّابع وجهاز كمبيوتر آخر لتشغيل برنامج المحاكاة كسيد.
يتمّ الاتصالُ بالتابع أوّلاً عن طريق تعيين بارامترات الاتصال لمنفذ COM التسلسليّ الخاصّ بك.
ثم بإدخال عنوانِ التابع في حقل معرّف الجهاز. على سبيل المثال: 1 واختيار رمز 01 لقراءة حالة مدخل في العنوان 0001 وقراءة 100 مدخل.
إضافة إلى ذلك، ثمةَ العديد من الشركات التي تقدم المنتجات والدعم لمساعدتك في الاتّصال بالبروتوكول. تقنيات ProSoft وHMS Industrial Communication و MOX، على سبيل المثال هي فقط القليل منها.
بهذا نختتم مقالَ: “كيف يعمل بروتوكول اتّصال Modbus”. آملينَ أن تكونَ قد تعلمتَ ما هو مطلوب للمضي قُدمًا في إنشاء مشروع التَّحكم في الحركة الخاصّ بك.
ترجمة: | مجد زهرة |
مراجعة: | علي العلي |
تدقيق لغوي: | محمد بابكر |
تحرير: | قحطان غانم |