Kazalo:
- Korak: Prenesite in zaženite Modbus TCP Slave Simulator
- 2. korak: Pripravite računalnik na povezavo z napravo
- 3. korak: Pripravite napravo in se povežite z njo
- 4. korak: Naložite glavno knjižnico Modbus
- 5. korak: Povežite se z omrežjem
- 6. korak: Inicializirajte komunikacijo s pomožnim modulom Modbus
- 7. korak: Branje in pisanje registrov
Video: ESP32 Modbus Master TCP: 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
V tem razredu boste procesor ESP32 programirali za Modbus TCP Master.
Uporabljali bomo dve napravi, ki vsebujeta ta procesor: Moduino ESP32 in Pycom. Obe napravi delujeta v okolju MicroPytthon. Naš Modbus Slave bo osebni računalnik s programsko opremo simulatorja Modbus.
Boste potrebovali:
- Naprava Moduino ESP32 ali Moduino Pycom (na tem spletnem mestu boste izvedeli več o napravi Moduino ESP32 in to za preverjanje naprave Pycom)
- Računalnik z operacijskim sistemom Linux
- Vrata RS-232/RS-485 v računalniku ali pretvornik USB v RS-232/RS-485
Korak: Prenesite in zaženite Modbus TCP Slave Simulator
Prenesite simulator Modbus Slave s spletnega mesta https://www.modbusdriver.com/diagslave.html, nato odprite preneseni arhiv in razpakirajte različico operacijskega sistema Linux.
Zaženite program iz konzole z argumentom -p:
./diagslave -p
je vrata, kjer bo deloval strežnik Modbus Slave. Za protokol Modbus je privzeto 502, lahko pa uporabite drugega.
V vratih Linux pod 1024 programi, ki jih izvajajo običajni uporabniki, ne morejo uporabljati (ne korenskih pravic).
Zapomnite si, katera vrata uporabljate. Ta vrednost bo potrebna kasneje.
2. korak: Pripravite računalnik na povezavo z napravo
Za vzpostavitev povezave z napravo in pošiljanje datotek nanjo potrebujete nekaj programov.
Namestite okolje Python in pip (če ga nimate):
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
Namestite picocom:
apt-get install picocom
Ta program je potreben za povezavo z napravo in izvajanje ukazov na njej. Namestite mpfshell:
pip install mpfshell
Ta program vam omogoča pošiljanje datotek v napravo.
Namestite ga lahko tudi iz virov virov. Oglejte si to stran:
3. korak: Pripravite napravo in se povežite z njo
Za povezavo naprave Moduino ali Pycom z osebnim računalnikom potrebujete vrata ali pretvornik RS-232/RS-485. Preverite različico vaše naprave (katero vrsto vrat uporablja) in poiščite ustrezna vrata ali pretvornik.
- Napravo povežite z računalnikom
- Nato nanj priključite napajalnik
Napravo priključite na računalnik in nato nanjo priključite napajanje. Ethernetni kabel lahko priključite tudi na Moduino ESP32 (če ima ta vrata).
Povezava mora biti takšna kot na zgornjih fotografijah
Poiščite pot za vrata, ki se uporabljajo za povezavo naprave. Lahko je na primer: /dev /ttyS1, /dev /ttyUSB0.
Za pretvornike USB bo pot vsebovala besedo USB.
Na napravo se lahko povežete s programom picocom:
picocom /dev /ttyUSB0 -b 115200
Ukazni poziv naprave je podoben eni od teh spodnjih slik.
Moduino ESP32: poglejte tukaj
Moduino Pycom: Poglejte tukaj
4. korak: Naložite glavno knjižnico Modbus
github.com/pycom/pycom-modbus/ Za komunikacijo z Modbus Slave potrebujete ustrezno knjižnico. Knjižnice za Pycom niso združljive z Moduinom. Preverite navodila, ki ustrezajo vaši napravi.
Pred pošiljanjem datotek zaprite picocom: pritisnite Ctrl+A in nato Ctrl+X.
Knjižnica uModBus za Moduino ESP32 temelji na knjižnici pycom-modbus za Moduino Pycom. Prilagojen je za delo na običajni napravi ESP32. Prav tako ima dodatne metode close () za razrede konektorjev.
1) Moduino ESP32
Prenesite knjižnico s spletnega mesta https://github.com/techbase123/micropython-modbus. Razpakirajte arhiv in pošljite vse 4 datoteke v napravo Moduino.
Za nalaganje uporabite mpfshell. Zaženite ta program v imeniku s temi datotekami.
Povežite se z napravo tako, da izvedete: THIS
ttyUSB0 je ime serijskih vrat, kjer je naprava priključena.
Spremenite imenik v /flash /lib z ukazom:
cd /flash /lib
Vnesite vse datoteke z ukazi:
daj uModBusConst.py
put uModBusFunctions.py put uModBusTCP.py daj uModBusSerial.py
PRIMER
Nato zapustite konzolo z ukazom za izhod in znova zaženite napravo s tipko Ponastavi.
2) Moduino Pycom
Prenesite knjižnico s spletnega mesta https://github.com/pycom/pycom-modbus/. Razpakirajte arhiv in pošljite vsebino imenika uModbus v napravo. Za nalaganje uporabite mpfshell. Zaženite ta program v imeniku s temi datotekami.
Povežite se z napravo tako, da izvedete:
odprite ttyUSB0
ttyUSB0 je ime serijskih vrat, kjer je naprava priključena.
Spremenite imenik v /flash /lib, ustvarite imenik uModbus in ga vnesite z ukazi:
cd /flash /libmd uModbus cd uModbus
Vnesite vse datoteke z ukazi:
daj const.py
put functions.py put tcp.py put serial.py
Nato zapustite konzolo z ukazom za izhod in znova zaženite napravo s tipko Ponastavi.
PRIMER
5. korak: Povežite se z omrežjem
Ukazi za vzpostavitev povezave se med Moduino in Pycom razlikujejo.
Za izvedbo ustreznih ukazov se povežite z napravo s picocom. Napravo Moduino lahko povežete v omrežje po žici ali brezžično. Naslednji primeri predpostavlja, da ima vaše omrežje delujoč strežnik DHCP.
V nasprotnem primeru naprava ne bo dobila naslova IP. ViFi podpora je na voljo v vsakem Moduinu. Vrata Ethernet so možnost in jih nimajo vse naprave.
1) Moduino ESP32
Povezovanje z WiFi
Na napravi izvedite naslednje ukaze:
iz netWiFi uvoz netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()
Zamenjajte ESSID z imenom vašega omrežja WiFi in PASS z geslom.
Po določenem času po izvedbi start () bi morali dobiti naslov IP, ki je bil dodeljen vaši napravi.
Povezava z ethernetnim omrežjem
Napravo povežite z žičnim omrežjem s kablom Ethernet.
Nato izvedite naslednje ukaze:
iz netETH uvoz netETHeth = netETH () eth.start ()
Po določenem času po izvedbi start () bi morali dobiti naslov IP, ki je bil dodeljen vaši napravi.
2) Moduino Pycom
Povežite se z WiFi
Na napravi izvedite naslednje ukaze:
iz uvoza omrežja WLANwlan = WLAN (način = WLAN. STA) mreže = wlan.scan () za mrežo v omrežjih: če je net.ssid == 'ESSID': print ('Omrežje najdeno!') wlan.connect (net.ssid, auth = (net.sec, 'PASS'), časovna omejitev = 5000), medtem ko ni wlan.isconnected (): machine.idle () print ('Povezava WLAN je uspela!') prekinitev
Zamenjajte ESSID z imenom vašega omrežja WiFi in PASS z geslom.
6. korak: Inicializirajte komunikacijo s pomožnim modulom Modbus
Knjižnice Modbus Master so za obe napravi podobne
Pri inicializaciji se razlikujejo.
1) Inicializirajte uModBus na Moduino ESP32
Izvedite:
iz uModBusTCP uvozite uModBusTCP kot TCP
2) Inicializirajte uModBus na Pycomu
Izvedite:
iz uModbus.tcp uvozi TCP
Odprta povezava
Nato odprite povezavo z:
modbus = TCP ('IP', PORT, 60)
kje:
- IP - ip naslov vašega računalnika s simulatorjem Modbus Slave
- PORT - pristanišče Modbus Slave
- 60 je časovna omejitev
Če se med izvajanjem ukazov za branje/pisanje pojavi naslednja napaka: PRIMER
izvrši:
za Moduino ESP32:
modbus.close ()
za Moduino Pycom:
modbus._sock.close ()
in nato znova ustvarite povezavo:
modbus = TCP ('IP', PORT, 60)
To je pomembno, da zaprete vtičnico, preden ponovno ustvarite povezavo. Naprava ima omejeno količino razpoložljive povezave vtičnice.
7. korak: Branje in pisanje registrov
Modbus podpira več funkcij za branje in pisanje registrov.
Knjižnica uModBus ima za vsako funkcijo metodo:
- read_coils
- read_discrete_inputs
- read_holding_registers
- read_input_registers
- write_single_coil
- write_single_register
Najprej zapišemo nekaj vrednosti.
1) Napišite tuljave (func: 5)
Zapišite 1 vrednost v register 200 iz pomožnega 1:
modbus.write_single_coil (1, 200, 0xFF00)
Prvi argument je za slave slave, v našem primeru 1.
Drugi je registrska številka, tretja pa vrednost. Za 1 morate tukaj vnesti 0xFF00. Napišite 0 do 201 register iz pomožnega 1:
modbus.write_single_coil (1, 201, 0)
Ta metoda omogoča zapisovanje samo logičnih vrednosti: 0 ali 1.
2) Zapišite registre (funkc: 6)
Sedaj zapišite nekaj celoštevilčnih vrednosti v več registrov.
Vnesite podpisano vrednost 111, da registrirate 100 iz podrejenega 1:
modbus.write_single_register (1, 100, 111, True)
Prvi argument je pomožni ID, drugi registrski številki in tretji je nova vrednost. Zadnji argument določa, ali je treba vrednost nastaviti kot podpisano številko. Privzeta vrednost zanj je True. Ni vam ga treba nastaviti.
Vpišite 101 -podpisano vrednost -457 v podrejeni register 1:
modbus.write_single_register (1, 101, -457)
Napišite nepodpisano vrednost 50 v register 100 iz podrejenega 3:
modbus.write_single_register (3, 100, 50, False)
Ta metoda omogoča zapisovanje celih števil v en sam register.
Enojni register lahko vsebuje 16 -bitne vrednosti.
Metoda vrne True je vnosna vrednost veljavna in False, če ne. Vrednost je zapisana, tudi če je neveljavna (prevelika za register)
3) Odčitajte tuljave/diskretne vhode
Zdaj pa preberemo zapisane logične vrednosti. Če želite prebrati register s funkcijo 1 branja tuljave, izvedite:
modbus.read_coils (slaveId, register, count) [0: count]
Če želite prebrati register s funkcijo 2, preberite diskretni vnos, izvedite:
modbus.read_discrete_inputs (slaveId, register, count) [0: count]
kje:
- slave -id - ID navideznega podrejenega (simulator pomožnika sprejema vse veljavne ID -je)
- register - registrska številka za branje
- count - količina registrov za branje (na obeh mestih vnesite želeno količino)
Te metode vrnejo niz z logičnimi vrednostmi. Vsaka vrednost ustreza vsakemu registru.
Fragment: [0: count] je potreben, ker ta metoda vrne več vrednosti kot count. Vedno vrne količino vrednosti, ki je deljiva z 8. Dodatne vrednosti so False in ne ustrezajo nobenemu registru.
Preberite naše logične vrednosti z obema metodama:
modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_inputs (1, 200, 2) [0: 2]
Rezultat bo takšen: PRIMER
True se nanaša na 1 vrednost, False na 0.
4) Preberite registre
Zdaj preberite vrednosti iz registrov, napisanih s funkcijo 6.
Če želite brati registre s funkcijo 3, preberite registre zadrževanja, izvedite:
modbus.read_holding_registers (slaveId, register, count, sign = True)
Če želite prebrati registre s funkcijo 4, preberite vhodne registre, izvedite:
modbus.read_input_registers (slaveId, register, count, sign = True)
kje:
- slave -id - ID navideznega sužnja
- register - registrska številka za branje
- count - količina registrov za branje
- podpisano - označuje, ali je treba vrednosti branja obravnavati kot podpisane številke ali ne. Privzeto stanje: True
Vrnjena vrednost je parček z želeno količino registrov.
Preberite registre, nastavljene v prejšnji točki:
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)
Rezultati bi morali izgledati kot na tem posnetku zaslona: EXAMPLE
V naslednji lekciji se boste naučili ustvariti Modbus RTU Master na napravi, ki podpira ESP32.
Priporočena:
DRONE MASTER: 6 korakov
DRONE MASTER: To je tinkercad 3D zasnova robota AI. Usklajevanje in nadzor vseh brezpilotnih letal v programih ali velikih funkcijah ali celo na nogometni tekmi je precej težavno. Za to potrebujemo več usposobljenih upravljavcev brezpilotnih letal. Toda ta AI robot je futurističen. in bo b
Digistump in Modbus RTU: 6 korakov
Digistump in Modbus RTU: Tisti, ki so videli moj pouk o komunikaciji med Modbus RTU in Raspberry Pi, vedo, da načrtujem projekt za avtomatizacijo rastlinjaka. Naredil sem 2 majhna tiskana vezja, ki ju lahko vstavim v škatlo za projekte. Povezavo do tiskanih vezij bom vključil
Komunikacija Modbus TCP med Arduino in industrijskimi napravami: 3 koraki
Komunikacija Modbus TCP med Arduino in industrijskimi napravami: Industrijski način za nadzor plošče Arduino z industrijskim HMI in njeno povezavo z industrijskim omrežjem s komunikacijo Modbus TCP
ESP8266 Termostat Modbus z dotikom: 5 korakov
ESP8266 Termostat Modbus s pritiskom
Merilnik PZEM-004 + ESP8266 & vozlišče platforme IoT-RED & Modbus TCP/IP: 7 korakov
Merilnik PZEM-004 + ESP8266 & Platforma IoT Node-RED & Modbus TCP/IP: Ob tej priložnosti bomo integrirali naš števec aktivne moči ali porabo električne energije, Pzem-004-Peacefair z integracijsko platformo IoT Node-RED, uporabljeno v prejšnjih vajah, kasneje bomo uporabili modul ESP8266, konfiguriran kot pomožni modbus TCP / IP