جدول المحتويات:
- الخطوة 1: قم بتنزيل وبدء تشغيل Modbus TCP Slave Simulator
- الخطوة 2: قم بإعداد جهاز الكمبيوتر الخاص بك للاتصال بالجهاز
- الخطوة 3: تحضير الجهاز والاتصال به
- الخطوة 4: تحميل مكتبة Modbus Master
- الخطوة 5: الاتصال بالشبكة
- الخطوة 6: بدء الاتصال باستخدام Modbus Slave
- الخطوة 7: قراءة وكتابة السجلات
فيديو: ESP32 Modbus Master TCP: 7 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
في هذه الفئة ، ستقوم ببرمجة معالج ESP32 ليكون Modbus TCP Master.
سنستخدم جهازين يحتويان على هذا المعالج: Moduino ESP32 و Pycom. كلا الجهازين يعملان في بيئة MicroPytthon. سيكون Modbus Slave الخاص بنا عبارة عن كمبيوتر شخصي مع تشغيل برنامج محاكاة Modbus عليه.
سوف تحتاج:
- جهاز Moduino ESP32 أو Moduino Pycom (راجع موقع الويب هذا لمعرفة المزيد عن جهاز Moduino ESP32 وهذا للتحقق من جهاز Pycom)
- كمبيوتر بنظام التشغيل Linux
- منفذ RS-232 / RS-485 في الكمبيوتر أو محول USB إلى RS-232 / RS-485
الخطوة 1: قم بتنزيل وبدء تشغيل Modbus TCP Slave Simulator
قم بتنزيل Modbus Slave simulator من https://www.modbusdriver.com/diagslave.html ثم افتح الأرشيف الذي تم تنزيله وفك ضغط الإصدار لنظام التشغيل Linux.
قم بتشغيل البرنامج من وحدة التحكم مع الوسيطة -p:
./diagslave -p
هو منفذ حيث سيعمل خادم Modbus Slave. بالنسبة لبروتوكول Modbus ، يكون افتراضيًا 502 ، ولكن يمكنك استخدام بروتوكول آخر.
في منافذ Linux التي تقل عن 1024 ، لا يمكن استخدام البرامج التي يتم تشغيلها من مستخدم عادي (وليس امتيازات الجذر).
تذكر المنفذ الذي تستخدمه. ستكون هذه القيمة ضرورية لاحقًا.
الخطوة 2: قم بإعداد جهاز الكمبيوتر الخاص بك للاتصال بالجهاز
ستحتاج إلى بعض البرامج لإجراء الاتصال بالجهاز وإرسال الملفات إليه.
قم بتثبيت بيئة Python و pip (إذا لم يكن لديك):
apt-get install python3
apt-get install python3-dev curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python3 get-pip.py
تثبيت picocom:
apt-get install picocom
هذا البرنامج ضروري للاتصال بالجهاز وتنفيذ الأوامر عليه.
نقطة تثبيت mpfshell
يتيح لك هذا البرنامج إرسال الملفات إلى الجهاز.
يمكنك أيضًا تثبيته من مصادر النموذج. قم بإحالة هذه الصفحة:
الخطوة 3: تحضير الجهاز والاتصال به
لتوصيل جهاز Moduino أو Pycom بجهاز الكمبيوتر ، تحتاج إلى منفذ أو محول RS-232 / RS-485. تحقق من إصدار جهازك (نوع المنفذ الذي يستخدمه) وابحث عن المنفذ أو المحول المناسب.
- قم بتوصيل الجهاز بجهاز الكمبيوتر
- ثم قم بتوصيل مصدر الطاقة به
قم بتوصيل الجهاز بجهاز الكمبيوتر ثم قم بتوصيل مصدر الطاقة به. يمكنك أيضًا توصيل كابل إيثرنت بـ Moduino ESP32 (إذا كان يحتوي على هذا المنفذ).
يجب أن يكون الاتصال كما في الصور أعلاه
ابحث عن مسار للمنفذ ، والذي يستخدم لاتصال الجهاز ، ويمكن أن يكون على سبيل المثال: / dev / ttyS1، / dev / ttyUSB0.
بالنسبة لمحولات USB ، سيحتوي المسار على كلمة USB.
يمكنك توصيل الجهاز ببرنامج picocom:
بيكوكوم / ديف / ttyUSB0 -b 115200
يبدو موجه الأوامر للجهاز مشابهًا لإحدى هذه الصور أدناه.
Moduino ESP32: انظر هنا
Moduino Pycom: انظر هنا
الخطوة 4: تحميل مكتبة Modbus Master
github.com/pycom/pycom-modbus/ للتواصل مع Modbus Slave ، تحتاج إلى مكتبة مناسبة. مكتبات Pycom غير متوافقة مع Moduino. تحقق من التعليمات التي تتوافق مع جهازك.
أغلق picocom قبل إرسال الملفات: اضغط على Ctrl + A ثم Ctrl + X.
مكتبة uModBus لقواعد Moduino ESP32 على مكتبة pycom-modbus لـ Moduino Pycom. تم تعديله ليعمل على جهاز ESP32 العادي. كما أن لديها طرق إغلاق إضافية () لفئات الموصل.
1) Moduino ESP32
قم بتنزيل المكتبة من https://github.com/techbase123/micropython-modbus. قم بفك ضغط الأرشيف وإرسال جميع الملفات الأربعة إلى جهاز Moduino.
استخدم mpfshell لتحميلها. قم بتشغيل هذا البرنامج في الدليل مع تلك الملفات.
الاتصال بالجهاز عن طريق تنفيذ: هذا
ttyUSB0 هو اسم المنفذ التسلسلي حيث يتم توصيل الجهاز.
قم بتغيير الدليل إلى / flash / lib باستخدام الأمر:
قرص مضغوط / فلاش / ليب
ضع كل الملفات مع الأوامر:
ضع uModBusConst.py
ضع uModBusFunctions.py ضع uModBusTCP.py ضع uModBusSerial.py
مثال
ثم اخرج من وحدة التحكم باستخدام أمر الخروج وأعد تشغيل الجهاز باستخدام زر إعادة الضبط.
2) Moduino Pycom
قم بتنزيل المكتبة من https://github.com/pycom/pycom-modbus/. قم بفك ضغط الأرشيف وإرسال محتوى دليل uModbus إلى الجهاز. استخدم mpfshell لتحميلها. قم بتشغيل هذا البرنامج في الدليل مع تلك الملفات.
الاتصال بالجهاز عن طريق تنفيذ:
افتح ttyUSB0
ttyUSB0 هو اسم المنفذ التسلسلي حيث يتم توصيل الجهاز.
قم بتغيير الدليل إلى / flash / lib ، وأنشئ دليل uModbus وأدخله بالأوامر:
cd / flash / libmd uModbus cd uModbus
ضع كل الملفات مع الأوامر:
ضع const.py
ضع function.py وضع tcp.py وضع serial.py
ثم اخرج من وحدة التحكم باستخدام أمر الخروج وأعد تشغيل الجهاز باستخدام زر إعادة الضبط.
مثال
الخطوة 5: الاتصال بالشبكة
تختلف أوامر إنشاء الاتصال بين Moduino و Pycom.
قم بالاتصال بالجهاز باستخدام picocom لتنفيذ الأوامر المناسبة. يمكنك توصيل جهاز Moduino بالشبكة عن طريق السلك أو اللاسلكي. تفترض الأمثلة التالية أن شبكتك لديها خادم DHCP يعمل.
في حالة أخرى ، لن يحصل الجهاز على عنوان IP. يتوفر دعم WiFi في كل Moduino. يعد منفذ Ethernet خيارًا ولا تتوفر به جميع الأجهزة.
1) Moduino ESP32
الاتصال بشبكة WiFi
قم بتنفيذ الأوامر التالية على الجهاز:
من netWiFi import netWiFiwifi = netWiFi (netWiFi. WIFI_STA، 'ESSID'، 'PASS') wifi.start ()
استبدل ESSID باسم شبكة WiFi الخاصة بك ، و PASS بكلمة المرور الخاصة بها.
بعد مرور بعض الوقت على تنفيذ start () ، يجب أن تحصل على عنوان IP الذي تم تعيينه لجهازك.
الاتصال بشبكة إيثرنت
قم بتوصيل الجهاز بشبكة سلكية باستخدام كابل إيثرنت.
ثم قم بتنفيذ الأوامر التالية:
من netETH import netETHeth = netETH () eth.start ()
بعد مرور بعض الوقت على تنفيذ start () ، يجب أن تحصل على عنوان IP الذي تم تعيينه لجهازك.
2) Moduino Pycom
اتصل بشبكة WiFi
قم بتنفيذ الأوامر التالية على الجهاز:
من استيراد الشبكة WLANwlan = WLAN (mode = WLAN. STA) nets = wlan.scan () للشبكات: if net.ssid == 'ESSID': print ('Network found!') wlan.connect (net.ssid ، auth = (net.sec، 'PASS')، timeout = 5000) بينما لم يكن wlan.isconnected (): machine.idle () print ('نجح اتصال WLAN!')
استبدل ESSID باسم شبكة WiFi الخاصة بك ، واستبدل PASS بكلمة المرور الخاصة بها.
الخطوة 6: بدء الاتصال باستخدام Modbus Slave
مكتبات Modbus Master متشابهة لكلا الجهازين
تختلف في التهيئة.
1) تهيئة uModBus على Moduino ESP32
ينفذ:
من uModBusTCP استيراد uModBusTCP كـ TCP
2) تهيئة uModBus على Pycom
ينفذ:
من uModbus.tcp استيراد TCP
فتح الاتصال
ثم افتح الاتصال بـ:
modbus = TCP ('IP'، PORT، 60)
أين:
- IP - عنوان IP لجهاز الكمبيوتر الخاص بك مع Modbus Slave simulator
- المنفذ - ميناء Modbus Slave
- 60 مهلة
في حالة حدوث الخطأ التالي أثناء تنفيذ أوامر القراءة / الكتابة: EXAMPLE
ينفذ:
بالنسبة لـ Moduino ESP32:
modbus.close ()
من أجل Moduino Pycom:
modbus._sock.close ()
ثم أعد إنشاء الاتصال:
modbus = TCP ('IP'، PORT، 60)
هذا مهم لإغلاق المقبس قبل إعادة إنشاء الاتصال. لقد قام الجهاز بتقييد مقدار اتصال المقبس المتاح.
الخطوة 7: قراءة وكتابة السجلات
يدعم Modbus العديد من الوظائف لقراءة السجلات وكتابتها.
مكتبة uModBus لديها طريقة لكل وظيفة:
- قراءة_لفائف
- قراءة_المدخلات المنفصلة
- read_holding_registers
- قراءة_إدخال_سجلات
- write_single_coil
- الكتابة_التسجيل الفردي
أولا ، دعونا نكتب بعض القيم.
1) كتابة ملفات (func: 5)
اكتب 1 قيمة إلى 200 سجل من التابع 1:
modbus.write_single_coil (1 ، 200 ، 0xFF00)
الحجة الأولى لمعرف العبد ، في حالتنا 1.
الثاني هو رقم السجل و thirs قيمة. ل 1 عليك أن تضع 0xFF00 هنا. اكتب من 0 إلى 201 سجل من العبد 1:
modbus.write_single_coil (1، 201، 0)
تسمح هذه الطريقة بكتابة القيم المنطقية فقط: 0 أو 1.
2) كتابة السجلات (func: 6)
اكتب الآن بعض قيم الأعداد الصحيحة لعدة سجلات.
اكتب قيمة 111 موقعة لتسجيل 100 من العبد 1:
modbus.write_single_register (1 ، 100 ، 111 ، صحيح)
الوسيطة الأولى هي معرف الرقيق ورقم السجل الثاني والثالث قيمة جديدة. تحدد الوسيطة الأخيرة ما إذا كان يجب تعيين القيمة كرقم موقّع. القيمة الافتراضية لها هي True. لست بحاجة إلى ضبطه.
اكتب قيمة -457 موقعة إلى 101 سجل من التابع 1:
modbus.write_single_register (1 ، 101 ، -457)
اكتب قيمة 50 غير موقعة إلى 100 سجل من التابع 3:
modbus.write_single_register (3 ، 100 ، 50 ، خطأ)
تسمح هذه الطريقة بكتابة القيم الصحيحة لتسجيل واحد.
يمكن أن يحتوي السجل الفردي على قيم 16 بت.
طريقة إرجاع True هي قيمة الإدخال صحيحة و False إذا لم تكن كذلك. تتم كتابة القيمة حتى لو كانت غير صالحة (كبيرة جدًا للتسجيل)
3) قراءة ملفات / مدخلات منفصلة
الآن دعنا نقرأ القيم المنطقية المكتوبة. لقراءة التسجيل مع الوظيفة 1 ، قم بقراءة الملف ، قم بتنفيذ:
modbus.read_coils (slaveId، register، count) [0: count]
لقراءة التسجيل مع الوظيفة 2 ، اقرأ الإدخال المنفصل ، قم بتنفيذ:
modbus.read_discrete_inputs (slaveId، register، count) [0: count]
أين:
- slave-id - معرف التابع الظاهري (Slave simulator يقبل جميع المعرفات الصالحة)
- تسجيل - رقم التسجيل للقراءة
- العد - عدد السجلات المراد قراءتها (ضع المبلغ المطلوب في كلا المكانين)
هذه الطرق ترجع مصفوفة ذات قيم منطقية. كل قيمة تتوافق مع كل سجل.
الجزء: [0: عدد] مطلوب ، لأن هذه الطريقة ترجع قيمًا أكثر من العدد. تقوم دائمًا بإرجاع مقدار القيم التي يمكن القسمة على 8. القيم الإضافية خاطئة ولا تتوافق مع أي سجل.
اقرأ قيمنا المنطقية بكلتا الطريقتين:
modbus.read_coils (1، 200، 2) [0: 2] modbus.read_discrete_inputs (1، 200، 2) [0: 2]
ستكون النتيجة كما يلي: EXAMPLE
صواب يشير إلى قيمة واحدة ، خطأ إلى 0.
4) قراءة السجلات
اقرأ الآن القيم من السجلات المكتوبة بوظيفة 6.
لقراءة السجلات ذات الوظيفة 3 ، اقرأ سجلات التعليق ، نفِّذ:
modbus.read_holding_registers (slaveId، register، count، موقّع = صحيح)
لقراءة السجلات التي تحتوي على الوظيفة 4 ، اقرأ سجلات الإدخال ، نفِّذ:
modbus.read_input_registers (slaveId، register، count، موقّع = صحيح)
أين:
- slave-id - معرف العبد الظاهري
- تسجيل - رقم التسجيل للقراءة
- العد - عدد السجلات المراد قراءتها
- موقعة - تشير إلى ما إذا كان يجب معاملة القيم المقروءة كأرقام موقعة أم لا. الحالة الافتراضية: صحيح
قيمة الإرجاع هي مجموعة مع المقدار المطلوب من السجلات.
قراءة السجلات المحددة في النقطة السابقة:
modbus.read_holding_registers (1، 100، 2، True) modbus.read_input_registers (1، 100، 2، True) modbus.read_holding_registers (3، 100، 1، False) modbus.read_input_registers (3، 100، 1، False)
يجب أن تبدو النتائج في لقطة الشاشة هذه: EXAMPLE
ستتعلم في الدرس التالي كيفية إنشاء Modbus RTU Master على جهاز يدعم ESP32.
موصى به:
واجهة HMI الصناعية و Arduinos في MODBUS RTU: 4 خطوات
الصناعية HMI و Arduinos في MODBUS RTU: سأصف في هذا الدليل مثالًا على الاتصال بين HMI الصناعية (COOLMAY MT6070H ، 150EUROS) ، و Arduino CLONE DIY (10EUROS) و Arduino UNO (10EUROS). ستعمل الشبكة في ظل بروتو خاص وقوي وصناعي
اتصال Modbus TCP بين Arduino والأجهزة الصناعية: 3 خطوات
اتصال Modbus TCP بين Arduino والأجهزة الصناعية: طريقة صناعية للتحكم في لوحة Arduino باستخدام HMI الصناعية وربطها بشبكة صناعية باستخدام اتصال Modbus TCP
الشروع في استخدام ESP32 - تثبيت لوحات ESP32 في Arduino IDE - كود الوميض ESP32: 3 خطوات
الشروع في استخدام ESP32 | تثبيت لوحات ESP32 في Arduino IDE | كود ESP32 Blink: في هذه التعليمات ، سنرى كيفية بدء العمل مع esp32 وكيفية تثبيت لوحات esp32 في Arduino IDE وسنبرمج esp 32 لتشغيل كود وميض باستخدام arduino ID
اتصال TCP / IP عبر GPRS: كيفية إرسال البيانات إلى الخادم باستخدام وحدة SIM900A: 4 خطوات
اتصال TCP / IP عبر GPRS: كيفية إرسال البيانات إلى الخادم باستخدام وحدة SIM900A: في هذا البرنامج التعليمي سأخبرك عن كيفية إرسال البيانات إلى خادم TCP باستخدام وحدة sim900. سنرى أيضًا كيف يمكننا تلقي البيانات من الخادم إلى العميل (وحدة GSM)
جهاز القياس PZEM-004 + ESP8266 ومنصة IoT Node-RED و Modbus TCP / IP: 7 خطوات
متر PZEM-004 + ESP8266 ومنصة IoT Node-RED و Modbus TCP / IP: في هذه الفرصة سنقوم بدمج عداد الطاقة النشط أو استهلاك الكهرباء ، Pzem-004 - Peacefair مع منصة تكامل IoT Node-RED المستخدمة في البرامج التعليمية السابقة ، سنستخدم وحدة ESP8266 تم تكوينها على أنها Modbus TCP / IP slave ، لاحقًا