Cov txheej txheem:
- Kauj ruam 1: Rub tawm thiab Pib Modbus TCP Slave Simulator
- Kauj Ruam 2: Npaj Koj Lub Khoos Phis Tawj los Txuas rau Lub Ntaus Ntawv
- Kauj Ruam 3: Npaj Ntaus Ntawv thiab Txuas rau Nws
- Kauj Ruam 4: Upload Modbus Master Library
- Kauj ruam 5: Txuas rau Network
- Kauj Ruam 6: Pib Pib Kev Sib Tham Nrog Modbus Qhev
- Kauj Ruam 7: Nyeem thiab Sau Npe
Video: ESP32 Modbus Master TCP: 7 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:27
Hauv chav kawm no, koj yuav teeb tsa ESP32 tus txheej txheem los ua Modbus TCP Master.
Peb yuav siv ob lub cuab yeej, uas muaj cov txheej txheem no: Moduino ESP32 thiab Pycom. Ob lub cuab yeej tau ua haujlwm hauv MicroPytthon ib puag ncig. Peb Modbus Qhev yuav yog PC khoos phis tawj nrog Modbus simulator software khiav ntawm nws.
Koj yuav xav tau:
- Moduino ESP32 lossis Moduino Pycom ntaus ntawv (txheeb xyuas lub vev xaib no kom paub ntau ntxiv txog Moduino ESP32 ntaus ntawv thiab qhov no los tshuaj xyuas Pycom ntaus ntawv)
- PC nrog Linux operating system
- RS-232/RS-485 chaw nres nkoj hauv koj lub computer lossis USB rau RS-232/RS-485 hloov pauv
Kauj ruam 1: Rub tawm thiab Pib Modbus TCP Slave Simulator
Rub tawm Modbus Slave simulator los ntawm
Khiav qhov program los ntawm console nrog -p kev sib cav:
./diagslave -p
yog qhov chaw nres nkoj uas Modbus Slave server yuav ua haujlwm. Rau Modbus raws tu qauv nws yog lub neej ntawd 502, tab sis koj tuaj yeem siv lwm qhov.
Hauv Linux cov chaw nres nkoj qis dua 1024 tsis tuaj yeem siv los ntawm cov haujlwm khiav los ntawm cov neeg siv ib txwm muaj (tsis yog cov cai hauv paus).
Nco ntsoov qhov chaw nres nkoj twg koj siv. Tus nqi no yuav tsim nyog tom qab.
Kauj Ruam 2: Npaj Koj Lub Khoos Phis Tawj los Txuas rau Lub Ntaus Ntawv
Koj yuav xav tau qee cov program los txuas rau lub cuab yeej thiab xa cov ntawv rau nws.
Nruab Python ib puag ncig thiab pip (yog tias koj tsis muaj nws):
apt-tau nruab python3
apt-tau nruab python3-dev curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python3 get-pip.py
Nruab picocom:
apt-tau nruab picocom
Qhov program no xav tau txuas rau lub cuab yeej thiab ua cov lus txib ntawm nws. Nruab mpfshell:
pip nruab mpfshell
Qhov program no tso cai rau koj xa cov ntawv mus rau lub cuab yeej.
Koj tseem tuaj yeem nruab nws daim ntawv los. Xa mus rau nplooj ntawv no:
Kauj Ruam 3: Npaj Ntaus Ntawv thiab Txuas rau Nws
Txhawm rau txuas Moduino lossis Pycom ntaus ntawv rau PC koj xav tau chaw nres nkoj RS-232/RS-485 lossis hloov pauv. Txheeb xyuas version ntawm koj lub cuab yeej (hom chaw nres nkoj twg nws siv) thiab nrhiav chaw nres nkoj lossis hloov pauv uas tsim nyog.
- Txuas lub cuab yeej rau PC
- Tom qab ntawd txuas lub hwj chim rau nws
Txuas lub cuab yeej rau PC thiab txuas lub zog txuas rau nws. Koj tseem tuaj yeem txuas ethernet cable rau Moduino ESP32 (yog tias nws muaj qhov chaw nres nkoj ntawd).
Kev sib txuas yuav tsum zoo li hauv cov duab saum toj no
Nrhiav txoj hauv kev rau chaw nres nkoj, uas yog siv rau kev sib txuas ntaus ntawv nws tuaj yeem piv txwv li: /dev /ttyS1, /dev /ttyUSB0.
Rau usb hloov pauv, txoj hauv kev yuav muaj lo lus USB.
Koj tuaj yeem txuas rau lub cuab yeej nrog picocom program:
picocom /dev /ttyUSB0 -b 115200
Kev hais kom sai ntawm lub cuab yeej zoo ib yam li cov duab hauv qab no.
Moduino ESP32: Saib ntawm no
Moduino Pycom: Saib ntawm no
Kauj Ruam 4: Upload Modbus Master Library
github.com/pycom/pycom-modbus/ Txhawm rau sib tham nrog Modbus Qhev koj xav tau lub tsev qiv ntawv tsim nyog. Cov tsev qiv ntawv rau Pycom tsis sib xws nrog Moduino. Txheeb cov lus qhia uas ua raws koj lub cuab yeej.
Kaw picocom ua ntej xa cov ntaub ntawv: nias Ctrl+A thiab tom qab ntawd Ctrl+X tuav.
uModBus tsev qiv ntawv rau Moduino ESP32 hauv paus ntawm pycom-modbus lub tsev qiv ntawv rau Moduino Pycom. Nws tau hloov kho kom ua haujlwm ntawm ESP32 cov cuab yeej ib txwm muaj. Nws kuj muaj ntxiv kaw () txoj hauv kev rau cov chav kawm txuas.
1) Moduino ESP32
Rub lub tsev qiv ntawv los ntawm https://github.com/techbase123/micropython-modbus. Unpack archive thiab xa tag nrho 4 cov ntaub ntawv mus rau Moduino ntaus ntawv.
Siv mpfshell upload lawv. Khiav qhov program no hauv cov npe nrog cov ntaub ntawv ntawd.
Txuas rau lub cuab yeej los ntawm kev ua tiav: THIS
ttyUSB0 yog lub npe ntawm chaw nres nkoj txuas uas lub cuab yeej txuas nrog.
Hloov cov npe rau /flash /lib nrog hais kom ua:
cd /flash /lib
Muab tag nrho cov ntaub ntawv nrog cov lus txib:
muab uModBusConst.py
muab uModBusFunctions.py tso uModBusTCP.py tso uModBusSerial.py
Piv txwv
Tom qab ntawd tawm console nrog kev hais kom ua tawm thiab rov pib dua lub cuab yeej nrog khawm pib dua.
2) Moduino Pycom
Rub lub tsev qiv ntawv los ntawm https://github.com/pycom/pycom-modbus/. Unpack archive thiab xa cov ntsiab lus ntawm uModbus phau ntawv teev npe mus rau lub cuab yeej siv mpfshell txhawm rau upload lawv. Khiav qhov program no hauv cov npe nrog cov ntaub ntawv ntawd.
Txuas mus rau lub cuab yeej los ntawm kev ua:
qhib ttyUSB0
ttyUSB0 yog lub npe ntawm chaw nres nkoj txuas uas lub cuab yeej txuas nrog.
Hloov cov npe rau /flash /lib, tsim uModbus cov npe thiab sau nws nrog cov lus txib:
cd /flash /libmd uModbus cd uModbus
Muab tag nrho cov ntaub ntawv nrog cov lus txib:
muab const.py
muab functions.py tso tcp.py muab serial.py
Tom qab ntawd tawm console nrog kev hais kom ua tawm thiab rov pib dua lub cuab yeej nrog khawm pib dua.
Piv txwv
Kauj ruam 5: Txuas rau Network
Cov lus txib los tsim kev sib txuas sib txawv ntawm Moduino thiab Pycom.
Txuas rau lub cuab yeej nrog picocom kom ua tiav cov lus txib tsim nyog. Koj tuaj yeem txuas Moduino ntaus ntawv mus rau network los ntawm xaim lossis wireless. Ua raws cov piv txwv xav tias koj lub network tau ua haujlwm DHCP server.
Hauv lwm qhov xwm txheej, lub cuab yeej yuav tsis tau txais IP chaw nyob. WiFi txhawb nqa muaj nyob hauv txhua Moduino. Ethernet chaw nres nkoj yog qhov kev xaiv thiab tsis yog txhua lub cuab yeej muaj nws.
1) Moduino ESP32
Txuas mus rau WiFi
Ua raws li cov lus txib hauv qab no ntawm lub cuab yeej:
los ntawm netWiFi ntshuam netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()
Hloov ESSID nrog lub npe ntawm koj lub network WiFi, thiab PASS nrog tus password ntawm nws.
Tom qab qee lub sijhawm tom qab pib ua haujlwm () koj yuav tsum tau txais tus IP chaw nyob uas tau muab rau koj lub cuab yeej.
Txuas mus rau Ethernet network
Txuas lub cuab yeej rau wired network nrog ethernet cable.
Tom qab ntawd ua cov lus txib hauv qab no:
los ntawm netETH ntshuam netETHeth = netETH () eth.start ()
Tom qab qee lub sijhawm tom qab pib ua haujlwm () koj yuav tsum tau txais IP chaw nyob uas tau muab rau koj lub cuab yeej.
2) Moduino Pycom
Txuas mus rau WiFi
Ua raws li cov lus txib hauv qab no ntawm lub cuab yeej:
los ntawm network ntshuam WLANwlan = WLAN (hom = WLAN. STA) nets = wlan.scan () rau net hauv nets: yog net.ssid == 'ESSID': print ('Network pom!') wlan.connect (net.ssid, auth = (net.sec, 'PASS'), timeout = 5000) thaum tsis wlan.isconnected (): tshuab.idle () luam tawm ('WLAN kev sib txuas ua tiav!') tawg
Hloov ESSID nrog lub npe ntawm koj lub network WiFi, thiab PASS nrog tus password ntawm nws.
Kauj Ruam 6: Pib Pib Kev Sib Tham Nrog Modbus Qhev
Modbus Master cov tsev qiv ntawv zoo sib xws rau ob qho khoom siv
Lawv txawv ntawm qhov pib.
1) Pib uModBus ntawm Moduino ESP32
Ua:
los ntawm uModBusTCP ntshuam uModBusTCP li TCP
2) Pib uModBus ntawm Pycom
Ua:
los ntawm uModbus.tcp ntshuam TCP
Qhib kev twb kev txuas
Tom qab ntawd qhib kev sib txuas nrog:
modbus = TCP ('IP', PORT, 60)
qhov twg:
- IP - tus IP chaw nyob ntawm koj lub PC nrog Modbus Qhev simulator
- PORT - chaw nres nkoj ntawm Modbus Qhev
- 60 yog lub sijhawm tas sijhawm
Yog tias qhov yuam kev hauv qab no tshwm sim thaum ua tiav kev nyeem/sau cov lus txib: EXAMPLE
ua:
rau Moduino ESP32:
modbus.close ()
rau Moduino Pycom:
modbus._sock.close ()
thiab tom qab ntawd rov tsim kev sib txuas:
modbus = TCP ('IP', PORT, 60)
Qhov no yog qhov tseem ceeb kom kaw lub qhov (socket) ua ntej rov txuas dua. Device tau txwv tus nqi ntawm qhov muaj qhov txuas.
Kauj Ruam 7: Nyeem thiab Sau Npe
Modbus txhawb ntau txoj haujlwm los nyeem thiab sau npe.
uModBus tsev qiv ntawv muaj txoj hauv kev rau txhua txoj haujlwm:
- read_ cov
- read_discrete_inputs
- read_holding_registers
- read_input_registers
- write_single_coil
- sau_single_register
Ua ntej tshaj, cia sau qee qhov txiaj ntsig.
1) Sau coils (func: 5)
Sau 1 tus nqi rau 200 rau npe los ntawm qhev 1:
modbus.write_single_coil (1,200, 0xFF00)
Thawj qhov kev sib cav yog rau tus qhev id, hauv peb rooj plaub 1.
Qhov thib ob yog tus lej sau npe thiab thib peb yog tus nqi. Rau 1 koj yuav tsum tso 0xFF00 ntawm no. Sau 0 rau 201 sau npe los ntawm qhev 1:
modbus.write_single_coil (1, 201, 0)
Txoj hauv kev no tso cai rau kev sau ntawv tsuas yog tus nqi boolean: 0 lossis 1.
2) Sau npe (func: 6)
Tam sim no sau qee qhov tseem ceeb rau ntau qhov sau npe.
Sau kos npe 111 tus nqi rau npe 100 los ntawm qhev 1:
modbus.write_single_register (1, 100, 111, Tseeb)
Thawj qhov kev sib cav yog tus lej qhev, tus lej thib ob rau npe thiab tus thib peb yog tus nqi tshiab. Kev sib cav zaum kawg yog tias tus nqi yuav tsum tau teeb tsa raws li tus lej kos npe. Default nqi rau nws yog Tseeb. Koj tsis tas yuav teeb nws.
Sau kos npe -457 tus nqi rau 101 sau npe los ntawm qhev 1:
modbus.write_single_register (1, 101, -457)
Sau tsis kos npe 50 tus nqi rau 100 sau npe los ntawm qhev 3:
modbus.write_single_register (3, 100, 50, Cuav)
Txoj hauv kev no tso cai rau kev sau cov lej sib npaug rau npe ib leeg.
Sau npe nkaus xwb tuaj yeem muaj 16 ntsis qhov tseem ceeb.
Txoj kev rov los Tseeb yog cov nqi nkag tau siv tau thiab Tsis raug yog tias tsis yog. Tus nqi tau sau txawm tias tsis raug (loj heev rau npe)
3) Nyeem coils/cov tswv yim tsis sib xws
Tam sim no cia nyeem sau qhov tseem ceeb boolean. Txhawm rau nyeem sau npe nrog ua haujlwm 1 nyeem cov ntawv, ua:
modbus.read_coils (qhev ID, sau npe, suav) [0: suav]
Txhawm rau nyeem sau npe nrog ua haujlwm 2 nyeem cov tswv yim tsis sib xws, ua:
modbus.read_discrete_inputs (qhev ID, sau npe, suav) [0: suav]
qhov twg:
- qhev -id - tus lej ntawm qhev virtual (Qhev simulator lees paub txhua tus lej siv tau)
- sau npe - tus lej sau rau kev nyeem ntawv
- suav - tus lej sau npe kom nyeem (muab tus lej xav tau hauv ob qho chaw)
Cov txheej txheem no xa rov qab array nrog boolean qhov tseem ceeb. Txhua tus nqi sib raug rau txhua tus rau npe.
Kev faib ua feem: [0: suav] xav tau, vim tias txoj hauv kev no rov qab muaj txiaj ntsig ntau dua li suav. Nws rov qab los ib txwm muaj nuj nqis uas yog faib los ntawm 8. Cov txiaj ntsig ntxiv yog qhov tsis raug thiab tsis sib xws rau ib qho kev sau npe.
Nyeem peb cov txiaj ntsig boolean nrog ob txoj hauv kev:
modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_inputs (1, 200, 2) [0: 2]
Cov txiaj ntsig yuav zoo li no: Piv txwv
Qhov tseeb hais txog 1 tus nqi, tsis raug rau 0.
4) Nyeem cov npe
Tam sim no nyeem qhov tseem ceeb los ntawm cov ntawv sau sau nrog 6 ua haujlwm.
Txhawm rau nyeem cov npe nrog ua haujlwm 3 nyeem tuav cov npe, ua:
modbus.read_holding_registers (qhev ID, sau npe, suav, kos npe = Muaj tseeb)
Txhawm rau nyeem cov npe nrog ua haujlwm 4 nyeem cov ntawv sau npe, ua:
modbus.read_input_registers (qhev ID, sau npe, suav, kos npe = Muaj tseeb)
qhov twg:
- qhev -id - id ntawm qhev virtual
- sau npe - tus lej sau rau kev nyeem ntawv
- suav - tus lej ntawm cov ntawv sau los nyeem
- kos npe - qhia tias yog nyeem qhov tseem ceeb yuav tsum raug kho raws li tus lej kos npe lossis tsis yog. Lub xeev tsis raug: Tseeb
Tus nqi rov qab yog tuple nrog qhov xav tau ntawm cov npe.
Nyeem cov ntawv teev npe teev nyob rau yav dhau los:
modbus.read_holding_registers (1, 100, 2, Tseeb) modbus.read_input_registers (1, 100, 2, Tseeb) modbus.read_holding_registers (3, 100, 1, False) modbus.read_input_registers (3, 100, 1, False)
Cov txiaj ntsig yuav tsum zoo li hauv qhov screenshot no: EXAMPLE
Hauv zaj lus qhia tom ntej no koj yuav kawm paub tsim Modbus RTU Master ntawm ESP32-qhib lub cuab yeej.
Pom zoo:
Muaj HMI thiab Arduinos hauv MODBUS RTU: 4 Cov Kauj Ruam
Muaj HMI thiab Arduinos hauv MODBUS RTU: Hauv qhov kev qhia no kuv yuav piav qhia piv txwv ntawm kev sib txuas lus ntawm kev lag luam HMI (COOLMAY MT6070H, 150EUROS), Arduino CLONE DIY (10EUROS) thiab Arduino UNO (10EUROS). Lub network yuav ua haujlwm nyob rau hauv qhov tshwj xeeb thiab muaj zog thiab muaj kev lag luam
Modbus TCP Kev Sib Txuas Ntawm Arduino thiab Cov Khoom Siv: 3 Cov Kauj Ruam
Modbus TCP Kev Sib Txuas Ntawm Arduino thiab Cov Khoom Siv Khoom: Ib txoj hauv kev los tswj Arduino pawg thawj coj nrog HMI kev lag luam thiab txuas nws mus rau kev lag luam network nrog Modbus TCP kev sib tham
Pib Nrog ESP32 - Txhim kho ESP32 Boards hauv Arduino IDE - ESP32 Blink Code: 3 Cov Kauj Ruam
Pib Nrog ESP32 | Txhim kho ESP32 Boards hauv Arduino IDE | ESP32 Blink Code: Hauv cov lus qhia no peb yuav pom yuav pib ua haujlwm nrog esp32 thiab yuav ua li cas rau nruab esp32 cov laug cam rau hauv Arduino IDE thiab peb yuav ua haujlwm esp 32 kom khiav ntsais muag code siv arduino ide
Kev Sib Txuas TCP/IP hla GPRS: Yuav Xa Cov Ntaub Ntawv Li Cas Rau Cov Neeg Siv Khoom Siv SIM900A Tus Qauv: 4 Kauj Ruam
Kev Sib Txuas TCP/IP hla GPRS: Yuav Ua Li Cas Xa Cov Ntaub Ntawv rau Server Siv SIM900A Module: Hauv qhov kev qhia no kuv yuav qhia koj txog yuav xa cov ntaub ntawv mus rau TCP server siv sim900 module li cas. Tsis tas li peb yuav pom yuav ua li cas peb tuaj yeem tau txais cov ntaub ntawv los ntawm server rau cov neeg siv khoom (GSM module)
Meter PZEM-004 + ESP8266 & Platform IoT Node-RED & Modbus TCP/IP: 7 Kauj Ruam
Meter PZEM-004 + ESP8266 & Platform IoT Node-RED & Modbus TCP/IP: Hauv lub sijhawm no peb yuav suav nrog peb lub zog ntsuas hluav taws xob lossis kev siv hluav taws xob, Pzem-004-Kev sib haum xeeb nrog IoT Node-RED kev koom ua ke siv hauv kev qhia yav dhau los, peb yuav siv ESP8266 tus qauv teeb tsa ua Modbus TCP / IP qhev, tom qab