Агуулгын хүснэгт:
- Алхам 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 11:03
Энэ ангид та ESP32 процессорыг Modbus TCP Master програмчлах болно.
Бид энэ процессорыг агуулсан хоёр төхөөрөмжийг ашиглах болно: Moduino ESP32 ба Pycom. Хоёр төхөөрөмж хоёулаа MicroPytthon орчинд ажилладаг. Манай Modbus Slave бол Modbus симулятор програм хангамж бүхий PC компьютер байх болно.
Танд хэрэгтэй болно:
- Moduino ESP32 эсвэл Moduino Pycom төхөөрөмж (энэ вэбсайтаас Moduino ESP32 төхөөрөмжийн талаар илүү ихийг олж мэдэхийн тулд Pycom төхөөрөмжийг шалгах боломжтой)
- Линукс үйлдлийн системтэй компьютер
- Таны компьютер дээрх RS-232/RS-485 порт эсвэл USB-ээс RS-232/RS-485 руу хөрвүүлэгч
Алхам 1: Modbus TCP Slave Simulator татаж аваад эхлүүлнэ үү
Modbus Slave симуляторыг https://www.modbusdriver.com/diagslave.html дээрээс татаж аваад дараа нь Linux үйлдлийн системийн татаж авсан архивыг нээж, задлаарай.
Програмыг консолоос -p аргументаар ажиллуулна уу.
./diagslave -p
нь Modbus Slave сервер ажиллах порт юм. Modbus протоколын хувьд энэ нь анхдагчаар 502 байдаг, гэхдээ та өөр нэгийг ашиглаж болно.
Линукс дээр 1024 -аас доош портууд нь ердийн хэрэглэгчээс ажилладаг програмуудад ашиглагддаггүй (root эрх биш).
Та ямар порт ашиглаж байгаагаа санаарай. Энэ утга хожим шаардлагатай болно.
Алхам 2: Компьютерээ төхөөрөмжид холбоход бэлтгэ
Төхөөрөмжийг холбох, түүнд файл илгээхэд танд зарим програм хэрэгтэй болно.
Python орчин ба пипийг суулгаарай (хэрэв танд байхгүй бол):
apt-get python3 суулгана уу
apt-get install python3-dev curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python3 get-pip.py
Пикоком суулгах:
apt-get picocom суулгах
Энэ програм нь төхөөрөмжид холбогдох, командыг ажиллуулахад шаардлагатай.
pip суулгах mpfshell
Энэ програм нь төхөөрөмж рүү файл илгээх боломжийг олгодог.
Та мөн үүнийг эх сурвалж хэлбэрээр суулгаж болно. Энэ хуудсыг үзнэ үү:
Алхам 3: Төхөөрөмжийг бэлтгэж, түүнд холбоно уу
Moduino эсвэл Pycom төхөөрөмжийг компьютерт холбохын тулд танд RS-232/RS-485 порт эсвэл хөрвүүлэгч хэрэгтэй. Төхөөрөмжийнхөө хувилбарыг (аль портын төрлийг ашигладаг) шалгаж, тохирох порт эсвэл хөрвүүлэгчийг олоорой.
- Төхөөрөмжийг компьютерт холбоно уу
- Дараа нь цахилгаан тэжээлийг түүнд холбоно уу
Төхөөрөмжийг компьютерт холбоод дараа нь тэжээлийн хангамжийг холбоно уу. Та Ethernet кабелийг Moduino ESP32 -тэй холбож болно (хэрэв энэ порт байгаа бол).
Холболт нь дээрх зураг дээрх шиг байх ёстой
Төхөөрөмжийн холболтод ашиглагддаг портын замыг хайж олох, жишээ нь: /dev /ttyS1, /dev /ttyUSB0.
USB хөрвүүлэгчийн хувьд зам нь USB үгийг агуулсан болно.
Та төхөөрөмжөө picocom програмаар холбож болно.
picocom /dev /ttyUSB0 -b 115200
Төхөөрөмжийн командын мөр нь доорх зургуудын аль нэгтэй төстэй харагдаж байна.
Moduino ESP32: Эндээс үзнэ үү
Moduino Pycom: Эндээс үзнэ үү
Алхам 4: Modbus Master номын санг байршуулах
github.com/pycom/pycom-modbus/ Modbus Slave-тэй холбогдохын тулд танд зохих номын сан хэрэгтэй. Pycom -ийн номын сан нь Moduino -тэй нийцдэггүй. Таны төхөөрөмжид нийцсэн зааврыг шалгана уу.
Файл илгээхээсээ өмнө пикокомыг хаах: Ctrl+A, дараа нь Ctrl+X товчлууруудыг дарна уу.
Moduino ESP32-д зориулсан uModBus номын сан нь Moduino Pycom-ийн pycom-modbus номын санд суурилдаг. Үүнийг ердийн ESP32 төхөөрөмж дээр ажиллахаар өөрчилсөн. Энэ нь холбогч ангиудад нэмэлт close () аргуудыг агуулдаг.
1) Moduino ESP32
Номын санг https://github.com/techbase123/micropython-modbus дээрээс татаж аваарай. Архивыг задалж, бүх 4 файлыг Moduino төхөөрөмж рүү илгээнэ үү.
Тэднийг байршуулахын тулд mpfshell ашиглана уу. Энэ програмыг энэ файлуудын лавлахад ажиллуулна уу.
Үүнийг гүйцэтгэх замаар төхөөрөмжид холбогдоно уу: ЭНЭ
ttyUSB0 бол төхөөрөмж холбогдсон цуваа портын нэр юм.
Лавлахыг /flash /lib болгон өөрчлөх:
cd /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 тавих
put functions.py тавих tcp.py тавих serial.py
Дараа нь гарах командыг ашиглан консолоос гараад төхөөрөмжийг дахин тохируулах товчийг дарна уу.
ЖИШЭЭ
Алхам 5: Сүлжээнд холбогдоно уу
Moduino болон Pycom хоёрын хооронд холбоо тогтоох тушаал өөр байна.
Тохирох тушаалуудыг гүйцэтгэхийн тулд пикокомтой төхөөрөмжтэй холбогдоно уу. Та Moduino төхөөрөмжийг сүлжээнд утас эсвэл утасгүй холбож болно. Дараах жишээнүүд нь таны сүлжээнд DHCP сервер ажиллаж байна гэж үзнэ.
Бусад тохиолдолд төхөөрөмж IP хаяг авахгүй бөгөөд Wi -Fi дэмжлэгийг Moduino болгонд ашиглах боломжтой. Ethernet порт нь сонголт бөгөөд бүх төхөөрөмжид байдаггүй.
1) Moduino ESP32
WiFi сүлжээнд холбогдож байна
Төхөөрөмж дээр дараах тушаалуудыг ажиллуулна уу.
netWiFi импортоос netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()
ESSID -ийг WiFi сүлжээнийхээ нэрээр, PASS -ийг нууц үгээр солино уу.
Start () ажиллуулсны дараа хэсэг хугацааны дараа та төхөөрөмждөө өгсөн IP хаягийг авах ёстой.
Ethernet сүлжээнд холбогдож байна
Ethernet кабелиар төхөөрөмжийг утастай сүлжээнд холбоно уу.
Дараа нь дараах тушаалуудыг гүйцэтгэнэ.
netETH импортоос netETHeth = netETH () eth.start ()
Start () ажиллуулсны дараа хэсэг хугацааны дараа та төхөөрөмждөө өгсөн IP хаягийг авах ёстой.
2) Moduino Pycom
WiFi сүлжээнд холбогдоно уу
Төхөөрөмж дээр дараах тушаалуудыг ажиллуулна уу.
сүлжээний импортоос WLANwlan = WLAN (горим = WLAN. STA) тор = wlan.scan () сүлжээнд сүлжээний хувьд: хэрэв net.ssid == 'ESSID': хэвлэх ('Сүлжээ олдсон!') wlan.connect (net.ssid), auth = (net.sec, 'PASS'), timeout = 5000) wlan.isconnected () биш байхад: machine.idle () хэвлэх ('WLAN холболт амжилттай боллоо!') завсарлага
ESSID -ийг WiFi сүлжээнийхээ нэрээр, PASS -ийг нууц үгээр солино уу.
Алхам 6: Modbus Slave ашиглан харилцаа холбоог эхлүүлэх
Modbus Master номын сан нь хоёр төхөөрөмжийн хувьд ижил төстэй байдаг
Тэд эхлүүлэхдээ өөр өөр байдаг.
1) Moduino ESP32 дээр uModBus -ийг эхлүүлэх
Гүйцэтгэх:
uModBusTCP -ээс uModBusTCP -ийг TCP хэлбэрээр импортлох
2) Pycom дээр uModBus -ийг эхлүүлэх
Гүйцэтгэх:
uModbus.tcp -ээс TCP импортлох
Нээлттэй холболт
Дараа нь дараах холболтыг нээнэ үү.
modbus = TCP ('IP', PORT, 60)
хаана:
- Modbus Slave симулятор бүхий таны компьютерийн IP хаяг
- ПОРТ - Модбус боолын боомт
- 60 бол завсарлага юм
Унших/бичих командыг гүйцэтгэх явцад дараах алдаа гарвал: ЖИШЭЭ
гүйцэтгэх:
Moduino ESP32 -ийн хувьд:
modbus.close ()
Moduino Pycom -ийн хувьд:
modbus._sock.close ()
дараа нь холболтыг дахин үүсгэх:
modbus = TCP ('IP', PORT, 60)
Энэ нь холболтыг дахин үүсгэхээс өмнө залгуурыг хаах нь чухал юм.
Алхам 7: Бүртгэлийг унших, бичих
Modbus нь бүртгэлийг унших, бичих хэд хэдэн функцийг дэмждэг.
uModBus номын сан нь функц тус бүрт зориулсан аргатай байдаг:
- уншсан_ ороомог
- тусдаа_оруулгыг унших
- унших_холдинг_бүртгүүлэгчид
- унших_оруулах_бүртгэлүүд
- бичих_сингл_ ороомог
- бичих_сингл_бүртгүүлэх
Нэгдүгээрт, зарим утгыг бичье.
1) Ороомог бичих (функц: 5)
Боол 1 -ээс 200 бүртгэлд 1 утга бичнэ үү:
modbus.write_single_coil (1, 200, 0xFF00)
Эхний аргумент нь боолын id -д зориулагдсан болно, бидний тохиолдолд 1.
Хоёрдугаарт регистрийн дугаар, цангах нь утга юм. 1 -ийн хувьд та энд 0xFF00 -ийг оруулах ёстой. Боол 1 -ээс 0 -ээс 201 хүртэлх бүртгэлийг бичнэ үү:
modbus.write_single_coil (1, 201, 0)
Энэ арга нь зөвхөн логик утгыг бичих боломжийг олгодог: 0 эсвэл 1.
2) Бүртгэл бичих (функц: 6)
Одоо хэд хэдэн регистрт бүхэл тоон утгыг бичээрэй.
Боол 1 -ээс 100 бүртгүүлэхийн тулд гарын үсэг зурсан 111 утгыг бичнэ үү:
modbus.write_single_register (1, 100, 111, Үнэн)
Эхний аргумент нь slave id, хоёр дахь регистрийн дугаар, гурав дахь нь шинэ утга юм. Анхдагч утга нь үнэн юм. Та үүнийг тохируулах шаардлагагүй.
Боол 1 -ээс 101 бүртгэлд гарын үсэг зурсан -457 утгыг бичнэ үү:
modbus.write_single_register (1, 101, -457)
Боол 3 -аас 100 бүртгэлд гарын үсэг зураагүй 50 утгыг бичнэ үү:
modbus.write_single_register (3, 100, 50, Худал)
Энэ арга нь бүхэл тоон утгыг нэг бүртгэлд бичих боломжийг олгодог.
Нэг бүртгэл нь 16 битийн утгыг агуулж болно.
Арга нь True бол оролтын утга хүчинтэй, хэрэв үгүй бол False буцаана. Утга хүчингүй байсан ч бичигдсэн байдаг (бүртгүүлэхэд хэт том)
3) Ороомог/салангид оролтыг уншина уу
Одоо бичсэн логик утгыг уншъя. 1 функцтэй унших ороомогтой бүртгэлийг уншихын тулд дараах зүйлийг хийнэ үү.
modbus.read_coils (slaveId, бүртгүүлэх, тоолох) [0: тоолох]
2 функцтэй бүртгэлийг уншихын тулд дискрет оролтыг уншина уу.
modbus.read_discrete_inputs (slaveId, бүртгүүлэх, тоолох) [0: тоолох]
хаана:
- slave -id - виртуал боолын ID (Slave симулятор нь хүчинтэй бүх id -ийг хүлээн авдаг)
- бүртгүүлэх - унших бүртгэлийн дугаар
- тоолох - унших бүртгэлийн тоо
Эдгээр аргууд нь логик утгатай массивыг буцаана. Утга бүр нь бүртгэл бүрт тохирч байна.
[0: count] фрагмент хэрэгтэй, учир нь энэ арга нь тоолохоос илүү утгыг буцаана. Энэ нь 8 -д хуваагдах утгуудын үргэлж хэмжээг буцаана. Нэмэлт утгууд нь Худал бөгөөд ямар ч бүртгэлтэй тохирохгүй байна.
Манай логик утгыг хоёр аргаар уншаарай.
modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_inputs (1, 200, 2) [0: 2]
Үр дүн нь иймэрхүү байх болно: ЖИШЭЭ
Үнэн гэдэг нь 1 утгыг илэрхийлдэг, худал бол 0.
4) Бүртгэлийг уншина уу
Одоо 6 функцээр бичигдсэн регистрүүдийн утгыг уншаарай.
3 функцтэй регистрүүдийг уншихын тулд хадгалах бүртгэлийг уншина уу.
modbus.read_holding_registers (slaveId, бүртгүүлэх, тоолох, гарын үсэг зурсан = Үнэн)
4 функцтэй регистрүүдийг уншихын тулд оролтын регистрүүдийг уншина уу.
modbus.read_input_registers (slaveId, бүртгүүлэх, тоолох, гарын үсэг зурсан = Үнэн)
хаана:
- slave -id - виртуал боолын ID
- бүртгүүлэх - унших бүртгэлийн дугаар
- тоолох - унших бүртгэлийн тоо
- гарын үсэг зурсан - уншсан утгыг гарын үсэг зурсан тоо гэж үзэх ёстой эсэхийг заана. Анхдагч төлөв: Үнэн
Буцах утга нь хүссэн тооны бүртгэл бүхий багц юм.
Өмнөх хэсэгт заасан бүртгэлүүдийг уншина уу:
modbus.read_holding_registers (1, 100, 2, Үнэн) modbus.read_input_registers (1, 100, 2, Үнэн) modbus.read_holding_registers (3, 100, 1, Худал)
Үр дүн нь энэ дэлгэцийн агшинд харагдах ёстой: EXAMPLE
Дараагийн хичээлээр та ESP32-ийг идэвхжүүлсэн төхөөрөмж дээр Modbus RTU Master-ийг хэрхэн бүтээх талаар сурах болно.
Зөвлөмж болгож буй:
MODBUS RTU дахь үйлдвэрлэлийн HMI ба Arduinos: 4 алхам
MODBUS RTU дахь Industrial HMI ба Arduinos: Энэхүү зааварчилгаанд би үйлдвэрлэлийн HMI (COOLMAY MT6070H, 150EUROS), Arduino CLONE DIY (10EUROS) ба Arduino UNO (10EUROS) хоорондын харилцааны жишээг тайлбарлах болно. Сүлжээ нь тусгай, хүчирхэг, үйлдвэрлэлийн протоколоор ажиллах болно
Arduino болон үйлдвэрийн төхөөрөмжүүдийн хооронд Modbus TCP холбоо: 3 алхам
Arduino ба үйлдвэрлэлийн төхөөрөмжүүдийн хооронд Modbus TCP холбоо: Arduino самбарыг үйлдвэрлэлийн HMI -тэй удирдах, Modbus TCP холболттой аж үйлдвэрийн сүлжээнд холбох үйлдвэрлэлийн арга
ESP32 -ийг ашиглаж эхлэх нь - Arduino IDE дээр ESP32 хавтанг суулгах - ESP32 анивчих код: 3 алхам
ESP32 -ийг ашиглаж эхлэх нь | Arduino IDE дээр ESP32 самбарыг суулгах | ESP32 Blink Code: Энэхүү зааварчилгаанд бид esp32 -тэй хэрхэн ажиллах, esp32 самбарыг Arduino IDE -д хэрхэн суулгах, мөн esp 32 -ийг arduino ide ашиглан анивчих кодыг ажиллуулах програмчлах болно
GPRS дээр TCP/IP холболт: SIM900A модулийг ашиглан өгөгдлийг сервер рүү хэрхэн илгээх вэ: 4 алхам
GPRS -ээр дамжуулан TCP/IP холболт: SIM900A модулийг ашиглан өгөгдлийг сервер рүү хэрхэн илгээх вэ: Энэхүү гарын авлагад би sim900 модулийг ашиглан TCP сервер рүү өгөгдөл илгээх талаар танд хэлэх болно. Мөн бид серверээс үйлчлүүлэгч рүү хэрхэн өгөгдөл хүлээн авахыг харах болно (GSM модуль)
PZEM-004 + ESP8266 тоолуур ба платформ IoT зангилаа-RED ба Modbus TCP/IP: 7 алхам
PZEM-004 + ESP8266 тоолуур ба платформ IoT зангилаа-RED & Modbus TCP/IP: Энэ боломжийг ашиглан бид өмнөх эрчим хүчний тоолуур эсвэл цахилгаан хэрэглээ болох Pzem-004-Peacefair-ийг IoT Node-RED интеграцийн платформтой өмнөх хичээлд ашиглах болно. бид дараа нь Modbus TCP / IP боол болгон тохируулсан ESP8266 модулийг ашиглах болно