ModbusSlaveSimulation
تطبيق Windows مستقل يدعم بروتوكولات Modbus RTU وTCP وUDP وASCIIoverRTU للمحاكاة.
تم أيضًا تضمين إصداراتها Mono لنظامي التشغيل Linux وMac OS X، وهي إصدارات VB Net، لذا:
- بالنسبة لنظام التشغيل Linux، سيتعين عليك تثبيت الحزم
mono-complete
mono-vbnc
- قد يكون نظام Mac مختلفًا اعتمادًا على إصدار OS X، وربما يتم تثبيت حزم
mono
mono-basic
إذا تم تمكين جدار الحماية، فقد يطالبك بالسماح لهذا التطبيق بالاتصال على الشبكة:
- عادةً يجب السماح له بالاتصال على الشبكة الخاصة وإلا فقد لا يعمل بشكل صحيح
- لا تسمح بالوصول العام إلا إذا كنت تعرف ما تفعله
- بمجرد الانتهاء من الاختبار، تذكر إزالة هذا التطبيق من قائمة التطبيقات المسموح بها لجدار الحماية
تم تصميم التطبيق للسماح بتشغيل مثيلات متعددة من التطبيق في نفس الوقت، على سبيل المثال:
- استخدم نفس البروتوكول لكل مثيل ولكن بأرقام منافذ مختلفة، على غرار:
- IP 127.0.0.1 منفذ TCP 501 و IP 127.0.0.1 منفذ TCP 502
- استخدم مزيجًا من البروتوكولات المختلفة بمساعدة أدوات أخرى (مثل com0com لبروتوكول RTU على نظام التشغيل Windows)
يجب أن يخدم التطبيق طلبات أي معرف تابع لـ Modbus صالح.
يعتمد كل هذا على مكتبات nModbus .NET 3.5 المعدلة، حقوق الطبع والنشر (ج) لعام 2006 لسكوت ألكساندر:
- يتم تضمينها كمورد لإصدار Windows ولكنها منفصلة لإصدار Mono
مخصص للاستخدام كأداة اختبار سريعة:
- يمكن اختباره مع نظيره ModbusMaster (راجع الفيديو أدناه)
- أو ربما استخدم برنامج AdvancedHMI بدلاً من ذلك لأنه مجاني وفعال للغاية.
لقطة الشاشة
الوظيفة
- يمكن ضبط جميع القيم قبل إنشاء الاتصال - الملفات، والمدخلات المنفصلة، وسجلات الإدخال، والسجلات القابضة.
- تم تعيين عرض شبكة البيانات لإظهار 20 صفًا من العناوين في البداية ولكن يمكن تغييرها ضمن القائمة المنسدلة
Row Count
لإظهار المزيد من الصفوف أو جميعها إذا لزم الأمر. - في عرض شبكة البيانات، المحدد باستخدام القائمة
I/O Address Range
، انقر نقرًا مزدوجًا فوق القيمة لتغييرها:- سوف تنقلب القيم المنطقية بين 0 و1
- تتطلب قيم Uint16 قيمة عددية غير موقعة بين 0 و65535
- توفر المدخلات المنفصلة وسجلات الإدخال إمكانية الوصول
read-only
إلى التطبيق الرئيسي:- يمكن لجهاز MODBUS المعين كـ
Master
فقط إرسال طلبات لقراءة هذه القيم - يجب أن يعالج المستخدم هذه القيم مباشرة في جهاز المحاكاة وإلا فلن تتغير
- توفر الملفات والسجلات القابضة إمكانية الوصول
read/write
إلى التطبيق الرئيسي:- يمكن لجهاز MODBUS المعين على أنه
Master
إرسال طلبات لقراءة هذه القيم بالإضافة إلى إرسال طلبات لتعديل هذه القيم - يمكن أيضًا للمستخدم معالجة هذه القيم مباشرةً في جهاز المحاكاة إذا لزم الأمر
- بالنسبة لبروتوكولات
RTU
و ASCIIoverRTU
، على جهاز كمبيوتر واحد، يمكن لجهاز المحاكاة هذا الاستفادة من المساعدة التالية:- برنامج com0com لنظام التشغيل Windows لتوفير أزواج المنافذ التسلسلية الافتراضية
- برنامج tty0tty لنظام Linux لتوفير أزواج المنافذ التسلسلية الافتراضية
- يتيح TextBox الإضافي الإدخال اليدوي للمنفذ التسلسلي:
- مخصص بشكل أساسي لنظام Linux بحيث يمكن الوصول إلى أزواج المنافذ الافتراضية
tty0tty
، مثل /dev/tnt0
<=> /dev/tnt1
- تمت إزالة هذا المربع في إصدار Mac Mono
- تدعم المكتبة أيضًا Masked Bit Write، رمز الوظيفة 22 (0x16H أو FC22).
الاستخدام
-> لنظام التشغيل Windows
- إما أن تستخدم ملفات Windows القابلة للتنفيذ من مجلد
exe
أو اتبع الإرشادات الموضحة أدناه لإنشائها بنفسك:- قم بتنزيل وتثبيت إصدار مجتمع Visual Studio (من الأفضل أن يكون 2019).
- قم بتنزيل واستخراج الملف المضغوط لهذا المشروع.
- افتح هذا كمشروع موجود في Visual Studio، ومن القائمة، قم بما يلي:
- بناء/إنشاء الحل (أو اضغط على Ctrl-Shift-B).
- التصحيح/بدء التصحيح (أو اضغط على F5) لتشغيل التطبيق.
- حدد موقع ملف EXE الذي تم إنشاؤه في المجلد
/bin/Debug
وانسخه إلى المجلد المفضل لديك أو سطح المكتب
- لاختبار بروتوكولات RTU، استخدم com0com لإنشاء منافذ تسلسلية افتراضية
-> للمونو
- تأكد من تثبيت Mono على جهاز الكمبيوتر الخاص بك:
- كل من الحزم
mono-complete
mono-vbnc
لنظام التشغيل Linux - بالنسبة لنظام التشغيل Mac، قد تحتاج إلى التجربة، ربما الحزم
mono
mono-basic
- قم بتنزيل واستخراج الملف المضغوط لهذا المشروع وحدد موقع أرشيف Mono في المجلد
Mono
. - قم باستخراج 4 ملفات ومن المحتمل إعادة تسمية المجلد و/أو ملف exe الذي تم إنشاؤه حديثًا إلى شيء أقصر إذا كنت ترغب في ذلك (فقط لجعل التنقل في الوحدة الطرفية أسرع).
- افتح الوحدة الطرفية، وانتقل إلى المجلد واكتب:
sudo mono ModbusSlaveSimulation.exe
:- على نظام Mac، قد تحتاج إلى التبديل إلى حساب المستخدم المتميز
su
- لاختبار بروتوكولات RTU، على Linux، يمكنك تثبيت واستخدام منافذ tty0tty الافتراضية بينما يبدو أن إصدارات OS X الأحدث على Mac تحتوي على محطات طرفية زائفة - أزواج من الأجهزة مثل
/dev/ptyp3
و /dev/ttyp3
.
ملاحظة لمستخدمي Mac: تم اختبار ذلك على كمبيوتر iMac G5 PowerPC القديم المزود بإصدار Mono v2.10.2. كانت بعض السلوكيات الغريبة موجودة بمعنى أن التطبيق كان يفقد التركيز وبالتالي تعطل اتصال TCP المستمر. يوجد مربع نص به علامة X حمراء يمكنك النقر فوقه لمحاولة الحفاظ على التركيز (إذا قمت بشيء آخر بعد ذلك، فانقر فوقه مرة أخرى). وبما أنني لا أستطيع اختباره بأي طريقة أخرى، فالأمر متروك لك للتجربة.
فيديو
Modbus.TCP.Communication.mp4
رخصة
مرخص بموجب ترخيص MIT - راجع أيضًا ملف README.txt داخل مجلد الموارد.
العلامات التجارية
أي وجميع العلامات التجارية، سواء بشكل مباشر أو غير مباشر في هذا المشروع، مملوكة لأصحابها.
موارد مفيدة
منتدى موقع AdvancedHMI، وهو مشروع آخر مفتوح المصدر.