Indholdsfortegnelse:
- Trin 1: Download og start Modbus TCP Slave Simulator
- Trin 2: Forbered din computer til at oprette forbindelse til enheden
- Trin 3: Forbered enheden og opret forbindelse til den
- Trin 4: Upload Modbus Master Library
- Trin 5: Opret forbindelse til netværket
- Trin 6: Initialiser kommunikation med Modbus Slave
- Trin 7: Læs og skriv registre
Video: ESP32 Modbus Master TCP: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
I denne klasse programmerer du ESP32 -processoren til at være Modbus TCP Master.
Vi vil bruge to enheder, der indeholder denne processor: Moduino ESP32 og Pycom. Begge enheder kører i MicroPytthon -miljø. Vores Modbus Slave bliver en pc -computer med Modbus -simulatorsoftware, der kører på den.
Du får brug for:
- Moduino ESP32 eller Moduino Pycom -enhed (tjek dette websted for at finde ud af mere om Moduino ESP32 -enhed og dette for at kontrollere Pycom -enheden)
- PC med Linux operativsystem
- RS-232/RS-485-port i din computer eller USB til RS-232/RS-485-konverter
Trin 1: Download og start Modbus TCP Slave Simulator
Download Modbus Slave -simulator fra https://www.modbusdriver.com/diagslave.html. Åbn derefter det downloadede arkiv, og udpak versionen til Linux -operativsystemet.
Kør programmet fra konsol med -p argument:
./diagslave -p
er en port, hvor Modbus Slave -serveren fungerer. For Modbus -protokollen er den som standard 502, men du kan bruge en anden.
I Linux -porte under 1024 kan ikke bruges af programmer, der køres fra almindelig bruger (ikke root -privilegier).
Husk hvilken port du bruger. Denne værdi er nødvendig senere.
Trin 2: Forbered din computer til at oprette forbindelse til enheden
Du skal bruge nogle programmer for at oprette forbindelse til enheden og sende filer til den.
Installer Python -miljø og pip (hvis du ikke har det):
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
Installer picocom:
apt-get installer picocom
Dette program er nødvendigt for at oprette forbindelse til enheden og udføre kommandoer på den. Installer mpfshell:
pip installer mpfshell
Dette program giver dig mulighed for at sende filer til enheden.
Du kan også installere det fra formkilder. Se denne side:
Trin 3: Forbered enheden og opret forbindelse til den
For at forbinde Moduino- eller Pycom-enheden til pc skal du bruge en RS-232/RS-485 port eller en konverter. Kontroller versionen af din enhed (hvilken porttype den bruger), og find den passende port eller konverter.
- Tilslut enheden til pc'en
- Tilslut derefter strømforsyningen til den
Tilslut enheden til pc'en, og slut derefter strømforsyningen til den. Du kan også slutte ethernetkabel til Moduino ESP32 (hvis den har den port).
Forbindelsen skal være som på billederne ovenfor
Find sti til port, der bruges til enhedsforbindelse. Det kan for eksempel være: /dev /ttyS1, /dev /ttyUSB0.
For usb -omformere vil stien indeholde USB -ord.
Du kan oprette forbindelse til enheden med picocom -program:
picocom /dev /ttyUSB0 -b 115200
Kommandoprompt på enheden ligner et af disse billeder herunder.
Moduino ESP32: Se her
Moduino Pycom: Se her
Trin 4: Upload Modbus Master Library
github.com/pycom/pycom-modbus/ For at kommunikere med Modbus Slave har du brug for et passende bibliotek. Biblioteker til Pycom er ikke kompatible med Moduino. Kontroller instruktioner, der overholder din enhed.
Luk picocom, før du sender filer: tryk på Ctrl+A og derefter på Ctrl+X -tasterne.
uModBus bibliotek til Moduino ESP32 baserer sig på pycom-modbus bibliotek til Moduino Pycom. Det er ændret til at fungere på en almindelig ESP32 -enhed. Det har også yderligere close () metoder til connector klasser.
1) Moduino ESP32
Download bibliotek fra https://github.com/techbase123/micropython-modbus. Pak arkivet ud, og send alle 4 filer til Moduino -enheden.
Brug mpfshell til at uploade dem. Kør dette program i biblioteket med de filer.
Opret forbindelse til enheden ved at udføre: DETTE
ttyUSB0 er et navn på en seriel port, hvor enheden er tilsluttet.
Skift bibliotek til /flash /lib med kommando:
cd /flash /lib
Sæt alle filer med kommandoer:
sætte uModBusConst.py
put uModBusFunctions.py put uModBusTCP.py put uModBusSerial.py
EKSEMPEL
Afslut derefter konsollen med exit -kommando, og genstart enheden med knappen Nulstil.
2) Moduino Pycom
Download bibliotek fra https://github.com/pycom/pycom-modbus/. Pak arkivet ud, og send indholdet af uModbus -biblioteket til enheden. Brug mpfshell til at uploade dem. Kør dette program i biblioteket med de filer.
Opret forbindelse til enheden ved at udføre:
åben ttyUSB0
ttyUSB0 er et navn på en seriel port, hvor enheden er tilsluttet.
Skift bibliotek til /flash /lib, opret uModbus -bibliotek og indtast det med kommandoer:
cd /flash /libmd uModbus cd uModbus
Sæt alle filer med kommandoer:
sætte const.py
put functions.py put tcp.py put serial.py
Afslut derefter konsollen med exit -kommando, og genstart enheden med knappen Nulstil.
EKSEMPEL
Trin 5: Opret forbindelse til netværket
Kommandoer for at etablere forbindelse er forskellige mellem Moduino og Pycom.
Opret forbindelse til enheden med picocom for at udføre passende kommandoer. Du kan slutte Moduino -enheden til netværket via tråd eller trådløst. Følgende eksempler forudsætter, at dit netværk har en fungerende DHCP -server.
I andre tilfælde får enheden ikke IP -adresse. Wi -Fi -understøttelse er tilgængelig i alle Moduino. Ethernet -port er en mulighed, og ikke alle enheder har det.
1) Moduino ESP32
Opretter forbindelse til WiFi
Udfør følgende kommandoer på enheden:
fra netWiFi import netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()
Erstat ESSID med navnet på dit WiFi -netværk, og PASS med adgangskoden til det.
Efter et stykke tid efter start () skulle du få en IP -adresse, der blev tildelt din enhed.
Opretter forbindelse til Ethernet -netværk
Tilslut enheden til et kablet netværk med ethernet -kabel.
Udfør derefter følgende kommandoer:
fra netETH import netETHeth = netETH () eth.start ()
Efter et stykke tid efter start af start () skulle du få den IP -adresse, der blev tildelt din enhed.
2) Moduino Pycom
Opret forbindelse til WiFi
Udfør følgende kommandoer på enheden:
fra netværksimport WLANwlan = WLAN (mode = WLAN. STA) net = wlan.scan () for net i net: hvis net.ssid == 'ESSID': print ('Netværk fundet!') wlan.connect (net.ssid, auth = (net.sec, 'PASS'), timeout = 5000), mens den ikke er wlan.isconnected (): machine.idle () print ('WLAN -forbindelse lykkedes!') pause
Erstat ESSID med navnet på dit WiFi -netværk, og PASS med adgangskoden til det.
Trin 6: Initialiser kommunikation med Modbus Slave
Modbus Master -biblioteker ligner begge enheder
De varierer i initialisering.
1) Initialiser uModBus på Moduino ESP32
Udfør:
fra uModBusTCP importere uModBusTCP som TCP
2) Initialiser uModBus på Pycom
Udfør:
fra uModbus.tcp importere TCP
Åben forbindelse
Åbn derefter forbindelsen med:
modbus = TCP ('IP', PORT, 60)
hvor:
- IP - ip -adresse på din pc med Modbus Slave -simulator
- PORT - havn i Modbus Slave
- 60 er en timeout
Hvis følgende fejl opstår under udførelse af læse/skrive kommandoer: EKSEMPEL
udføre:
til Moduino ESP32:
modbus.close ()
til Moduino Pycom:
modbus._sock.close ()
og genskab derefter forbindelsen:
modbus = TCP ('IP', PORT, 60)
Dette er vigtigt at lukke stikket, før forbindelsen genskabes. Enheden har begrænset mængden af tilgængelig stikforbindelse.
Trin 7: Læs og skriv registre
Modbus understøtter flere funktioner til at læse og skrive registre.
uModBus bibliotek har metode til hver funktion:
- læs_spoler
- read_discrete_inputs
- read_holding_registers
- read_input_registers
- write_single_coil
- write_single_register
Lad os for det første skrive nogle værdier.
1) Skriv spoler (func: 5)
Skriv 1 værdi til 200 register fra slave 1:
modbus.write_single_coil (1, 200, 0xFF00)
Det første argument er for slave -id, i vores tilfælde 1.
For det andet er registreringsnummer, og thirs er en værdi. For 1 skal du sætte 0xFF00 her. Skriv 0 til 201 register fra slave 1:
modbus.write_single_coil (1, 201, 0)
Denne metode tillader kun at skrive boolske værdier: 0 eller 1.
2) Skriv registre (func: 6)
Skriv nu nogle heltalsværdier til flere registre.
Skriv signeret 111 -værdi for at registrere 100 fra slave 1:
modbus.write_single_register (1, 100, 111, True)
Første argument er slave -id, andet registernummer og tredje er ny værdi. Sidste argument definerer, om værdien skal angives som et signeret nummer. Standardværdien for den er True. Du behøver ikke at indstille det.
Skriv signeret -457 værdi til 101 register fra slave 1:
modbus.write_single_register (1, 101, -457)
Skriv ikke signeret 50 værdi til 100 register fra slave 3:
modbus.write_single_register (3, 100, 50, falsk)
Denne metode gør det muligt at skrive heltalsværdier til et enkelt register.
Enkelt register kan indeholde 16 bit værdier.
Metode returnerer True er inputværdien gyldig og Falsk hvis ikke. Værdien skrives, selvom den er ugyldig (for stor til registrering)
3) Læs spoler/diskrete indgange
Lad os nu læse skrevne boolske værdier. For at læse register med funktion 1 læsespole, skal du udføre:
modbus.read_coils (slaveId, register, count) [0: count]
For at læse register med funktion 2 læs diskret input, udfør:
modbus.read_discrete_inputs (slaveId, register, count) [0: count]
hvor:
- slave -id - id for virtuel slave (Slave -simulator accepterer alle gyldige id'er)
- register - registrer nummer til læsning
- count - mængde registre, der skal læses (sæt ønsket mængde begge steder)
Disse metoder returnerer array med boolske værdier. Hver værdi svarer til hvert register.
Fragmentet: [0: count] er påkrævet, fordi denne metode returnerer flere værdier end count. Den returnerer altid mængden af værdier, som er delelig med 8. Yderligere værdier er False og svarer ikke til noget register.
Læs vores boolske værdier med begge metoder:
modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_inputs (1, 200, 2) [0: 2]
Resultatet vil være sådan: EKSEMPEL
Sand refererer til 1 værdi, Falsk til 0.
4) Læs registre
Læs nu værdier fra registre skrevet med 6 funktion.
For at læse registre med funktion 3 læse holderegistre skal du udføre:
modbus.read_holding_registers (slaveId, register, count, signed = True)
For at læse registre med funktion 4 læse input -registre skal du udføre:
modbus.read_input_registers (slaveId, register, count, signed = True)
hvor:
- slave -id - id for virtuel slave
- register - registrer nummer til læsning
- count - mængden af registre, der skal læses
- signeret - angiver, om læste værdier skal behandles som underskrevne numre eller ej. Standardtilstand: True
Returværdien er en tuple med den ønskede mængde registre.
Læs registre, der er angivet i forrige punkt:
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)
Resultaterne skal se ud på dette skærmbillede: EKSEMPEL
I den næste lektion lærer du, hvordan du opretter Modbus RTU Master på ESP32-aktiveret enhed.
Anbefalede:
Industriel HMI og Arduinos i MODBUS RTU: 4 trin
Industrial HMI og Arduinos i MODBUS RTU: I denne instruktive vil jeg beskrive et eksempel på kommunikation mellem en industriel HMI (COOLMAY MT6070H, 150EUROS), en Arduino CLONE DIY (10EUROS) og en Arduino UNO (10EUROS). Netværket vil køre under et særligt og robust og industrielt proto
Modbus TCP -kommunikation mellem Arduino og industrielle enheder: 3 trin
Modbus TCP -kommunikation mellem Arduino og industrielle enheder: En industriel måde at styre et Arduino -kort med industriel HMI og koble det til et industrielt netværk med en Modbus TCP -kommunikation
Kom godt i gang med ESP32 - Installation af ESP32 -plader i Arduino IDE - ESP32 Blink -kode: 3 trin
Kom godt i gang med ESP32 | Installation af ESP32 -plader i Arduino IDE | ESP32 Blink -kode: I denne instruks kan vi se, hvordan man begynder at arbejde med esp32, og hvordan man installerer esp32 -kort i Arduino IDE, og vi vil programmere esp 32 til at køre blinkkode ved hjælp af arduino ide
TCP/IP -forbindelse via GPRS: Sådan sender du data til serveren ved hjælp af SIM900A -modul: 4 trin
TCP/IP -forbindelse via GPRS: Sådan sendes data til server ved hjælp af SIM900A -modul: I denne vejledning vil jeg fortælle dig, hvordan du sender data til TCP -server ved hjælp af sim900 -modul. Vi vil også se, hvordan vi kan modtage data fra server til klient (GSM -modul)
Meter PZEM-004 + ESP8266 & Platform IoT Node-RED & Modbus TCP/IP: 7 trin
Meter PZEM-004 + ESP8266 & Platform IoT Node-RED & Modbus TCP/IP: I denne mulighed integrerer vi vores aktive effektmåler eller elforbrug, Pzem-004-Peacefair med IoT Node-RED integrationsplatformen, der blev brugt i tidligere tutorials, vi vil bruge et ESP8266 -modul, der er konfigureret som Modbus TCP / IP -slave, senere