Sisällysluettelo:
- Vaihe 1: Lataa ja käynnistä Modbus TCP Slave Simulator
- Vaihe 2: Valmistele tietokone yhdistämään laite
- Vaihe 3: Valmistele laite ja muodosta yhteys siihen
- Vaihe 4: Lataa Modbus Master Library
- Vaihe 5: Muodosta yhteys verkkoon
- Vaihe 6: Alusta tiedonsiirto Modbus Slave -laitteen kanssa
- Vaihe 7: Lue ja kirjoita rekisterit
Video: ESP32 Modbus Master TCP: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Tällä luokalla ohjelmoit ESP32 -prosessorin Modbus TCP Master -laitteeksi.
Käytämme kahta laitetta, jotka sisältävät tämän prosessorin: Moduino ESP32 ja Pycom. Molemmat laitteet toimivat MicroPytthon -ympäristössä. Modbus -orjamme on PC -tietokone, jossa on käynnissä Modbus -simulaattoriohjelmisto.
Tarvitset:
- Moduino ESP32- tai Moduino Pycom -laite (tarkista tämä sivusto saadaksesi lisätietoja Moduino ESP32 -laitteesta ja tämä Pycom -laitteen tarkistamisesta)
- PC Linux -käyttöjärjestelmällä
- Tietokoneen RS-232/RS-485-portti tai USB-RS-232/RS-485-muunnin
Vaihe 1: Lataa ja käynnistä Modbus TCP Slave Simulator
Lataa Modbus Slave -simulaattori osoitteesta https://www.modbusdriver.com/diagslave.html. Avaa sitten ladattu arkisto ja pura Linux -käyttöjärjestelmän versio.
Suorita ohjelma konsolista -p -argumentilla:
./diagslave -p
on portti, jossa Modbus Slave -palvelin toimii. Modbus -protokollassa se on oletuksena 502, mutta voit käyttää toista.
Linux -porteissa alle 1024 ei voi käyttää tavallisen käyttäjän suorittamia ohjelmia (ei pääkäyttäjän oikeuksia).
Muista mitä porttia käytät. Tämä arvo on tarpeen myöhemmin.
Vaihe 2: Valmistele tietokone yhdistämään laite
Tarvitset joitain ohjelmia yhteyden muodostamiseen laitteeseen ja tiedostojen lähettämiseen siihen.
Asenna Python -ympäristö ja pip (jos sinulla ei ole sitä):
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
Asenna picocom:
apt-get install picocom
Tätä ohjelmaa tarvitaan yhteyden muodostamiseen laitteeseen ja komentojen suorittamiseen siinä.
pip asenna mpfshell
Tämän ohjelman avulla voit lähettää tiedostoja laitteelle.
Voit asentaa sen myös lähteistä. Katso tämä sivu:
Vaihe 3: Valmistele laite ja muodosta yhteys siihen
Liittääksesi Moduino- tai Pycom-laitteen tietokoneeseen tarvitset RS-232/RS-485-portin tai muuntimen. Tarkista laitteen versio (mitä porttityyppiä se käyttää) ja etsi sopiva portti tai muunnin.
- Liitä laite tietokoneeseen
- Liitä sitten virtalähde siihen
Liitä laite tietokoneeseen ja kytke sitten virtalähde siihen. Voit myös liittää ethernet -kaapelin Moduino ESP32: een (jos siinä on kyseinen portti).
Yhteyden pitäisi olla kuten yllä olevissa kuvissa
Etsi laiteyhteyttä varten käytettävän portin polku, esimerkiksi: /dev /ttyS1, /dev /ttyUSB0.
USB -muuntimien polku sisältää USB -sanan.
Voit muodostaa yhteyden laitteeseen picocom -ohjelmalla:
picocom /dev /ttyUSB0 -b 115200
Laitteen komentorivi näyttää samanlaiselta kuin yksi alla olevista kuvista.
Moduino ESP32: Katso tästä
Moduino Pycom: Katso tästä
Vaihe 4: Lataa Modbus Master Library
github.com/pycom/pycom-modbus/Kommunikoidaksesi Modbus Slaven kanssa tarvitset asianmukaisen kirjaston. Pycom -kirjastot eivät ole yhteensopivia Moduinon kanssa. Tarkista laitteesi mukaiset ohjeet.
Sulje picocom ennen tiedostojen lähettämistä: paina Ctrl+A ja sitten Ctrl+X.
uModBus-kirjasto Moduino ESP32: lle perustuu pycom-modbus-kirjastoon Moduino Pycomille. Se on muutettu toimimaan tavallisella ESP32 -laitteella. Siinä on myös muita close () -menetelmiä liitinluokille.
1) Moduino ESP32
Lataa kirjasto osoitteesta https://github.com/techbase123/micropython-modbus. Pura arkisto pakkauksesta ja lähetä kaikki 4 tiedostoa Moduino -laitteeseen.
Lataa ne mpfshellillä. Suorita tämä ohjelma hakemistossa kyseisten tiedostojen kanssa.
Yhdistä laitteeseen suorittamalla: TÄMÄ
ttyUSB0 on sarjaportin nimi, johon laite on kytketty.
Vaihda hakemistoon /flash /lib komennolla:
cd /flash /lib
Laita kaikki tiedostot komennoilla:
laita uModBusConst.py
laita uModBusFunctions.py laita uModBusTCP.py laita uModBusSerial.py
ESIMERKKI
Poistu sitten konsolista exit -komennolla ja käynnistä laite uudelleen Reset -painikkeella.
2) Moduino Pycom
Lataa kirjasto osoitteesta https://github.com/pycom/pycom-modbus/. Pura arkisto pakkauksesta ja lähetä laitteeseen uModbus -hakemiston sisältö. Lataa ne käyttämällä mpfshelliä. Suorita tämä ohjelma hakemistossa kyseisten tiedostojen kanssa.
Yhdistä laitteeseen suorittamalla:
avaa ttyUSB0
ttyUSB0 on sarjaportin nimi, johon laite on kytketty.
Vaihda hakemistoon /flash /lib, luo uModbus -hakemisto ja anna se komennoilla:
cd /flash /libmd uModbus cd uModbus
Laita kaikki tiedostot komennoilla:
laita const.py
laita toimintoja.py laita tcp.py laita sarja.py
Poistu sitten konsolista exit -komennolla ja käynnistä laite uudelleen Reset -painikkeella.
ESIMERKKI
Vaihe 5: Muodosta yhteys verkkoon
Yhteydet muodostavat komennot eroavat Moduinon ja Pycomin välillä.
Yhdistä laitteeseen picocomilla suorittaaksesi asianmukaiset komennot. Voit yhdistää Moduino -laitteen verkkoon langallisesti tai langattomasti. Seuraavissa esimerkeissä oletetaan, että verkossa on toimiva DHCP -palvelin.
Muussa tapauksessa laite ei saa IP -osoitetta. Wi -Fi -tuki on saatavana jokaisessa Moduinossa. Ethernet -portti on vaihtoehto, eikä kaikilla laitteilla ole sitä.
1) Moduino ESP32
Yhdistetään WiFi -verkkoon
Suorita seuraavat komennot laitteessa:
netWiFi -tuonnista netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()
Korvaa ESSID WiFi -verkon nimellä ja PASS sen salasanalla.
Jonkin ajan kuluttua käynnistyksen () suorittamisesta sinun pitäisi saada laitteellesi määritetty IP -osoite.
Yhteyden muodostaminen Ethernet -verkkoon
Yhdistä laite langalliseen verkkoon ethernet -kaapelilla.
Suorita sitten seuraavat komennot:
netETH -tuonnista netETHeth = netETH () eth.start ()
Jonkin ajan kuluttua käynnistyksen () suorittamisesta sinun pitäisi saada laitteellesi määritetty IP -osoite.
2) Moduino Pycom
Yhdistä WiFi -verkkoon
Suorita seuraavat komennot laitteessa:
verkon tuonnista WLANwlan = WLAN (tila = WLAN. STA) nets = wlan.scan () nettoverkkoon: jos net.ssid == 'ESSID': print ('Network found!') wlan.connect (net.ssid, auth = (net.sec, 'PASS'), timeout = 5000) kun ei wlan.isconnected (): machine.idle () print ('WLAN -yhteys onnistui!') tauko
Korvaa ESSID WiFi -verkon nimellä ja PASS sen salasanalla.
Vaihe 6: Alusta tiedonsiirto Modbus Slave -laitteen kanssa
Modbus Master -kirjastot ovat samanlaisia molemmille laitteille
Ne vaihtelevat alustuksessa.
1) Alusta uModBus Moduino ESP32 -laitteessa
Suorittaa:
uModBusTCP: stä tuo uModBusTCP TCP: nä
2) Alusta uModBus Pycomissa
Suorittaa:
alkaen uModbus.tcp tuonti TCP
Avaa yhteys
Avaa sitten yhteys:
modbus = TCP ('IP', PORT, 60)
missä:
- PC: n IP -osoite Modbus Slave -simulaattorilla
- PORT - Modbus Slave -portti
- 60 on aikakatkaisu
Jos luku-/kirjoituskomentojen suorittamisen aikana tapahtuu seuraava virhe: EXAMPLE
suorittaa:
Moduino ESP32:
modbus.close ()
Moduino Pycomille:
modbus._sock.close ()
ja luo sitten yhteys uudelleen:
modbus = TCP ('IP', PORT, 60)
Tämä on tärkeää sulkea pistorasia ennen yhteyden luomista uudelleen.
Vaihe 7: Lue ja kirjoita rekisterit
Modbus tukee useita toimintoja rekisterien lukemiseen ja kirjoittamiseen.
uModBus -kirjastossa on menetelmä kullekin toiminnolle:
- read_coils
- read_discrete_inputs
- read_holding_registers
- read_input_registers
- write_single_coil
- write_single_register
Kirjoita ensin arvot.
1) Kirjoita kelat (funktio: 5)
Kirjoita 1 arvo 200 rekisteriin orjasta 1:
modbus.write_single_coil (1, 200, 0xFF00)
Ensimmäinen argumentti koskee orjatunnusta, meidän tapauksessamme 1.
Toinen on rekisterinumero ja thirs on arvo. Jos haluat yhden, sinun on laitettava 0xFF00 tähän. Kirjoita 0 - 201 rekisteri orjasta 1:
modbus.write_single_coil (1, 201, 0)
Tämä menetelmä sallii vain boolen arvojen kirjoittamisen: 0 tai 1.
2) Kirjoita rekisterit (func: 6)
Kirjoita nyt joitakin kokonaislukuarvoja useisiin rekistereihin.
Kirjoita allekirjoitettu 111 -arvo rekisteröidäksesi 100 orjasta 1:
modbus.write_single_register (1, 100, 111, tosi)
Ensimmäinen argumentti on orjatunnus, toinen rekisterinumero ja kolmas on uusi arvo. Viimeinen argumentti määrittää, onko arvo asetettava allekirjoitettuun numeroon. Sen oletusarvo on True. Sinun ei tarvitse asettaa sitä.
Kirjoita allekirjoitettu -457 -arvo 101 rekisteriin orjasta 1:
modbus.write_single_register (1, 101, -457)
Kirjoita ei -allekirjoitettu 50 -arvo 100 -rekisteriin orjasta 3:
modbus.write_single_register (3, 100, 50, epätosi)
Tämä menetelmä mahdollistaa kokonaislukuarvojen kirjoittamisen yhteen rekisteriin.
Yksi rekisteri voi sisältää 16 bitin arvoja.
Menetelmä palauttaa True on, että syöttöarvo on kelvollinen ja epätosi, jos ei. Arvo kirjoitetaan, vaikka se olisi virheellinen (liian suuri rekisterille)
3) Lue kelat/erilliset tulot
Nyt luetaan kirjoitetut boolen arvot. Jos haluat lukea rekisterin toiminnon 1 lukukelalla, suorita:
modbus.read_coils (slaveId, register, count) [0: count]
Jos haluat lukea rekisterin toiminnolla 2, lue erillinen tulo, suorita:
modbus.read_discrete_inputs (slaveId, register, count) [0: count]
missä:
- slave -id - virtuaalisen orjan tunnus (orjasimulaattori hyväksyy kaikki kelvolliset tunnukset)
- rekisteri - rekisterinumero lukemista varten
- count - luettavien rekisterien määrä (laita haluttu määrä molempiin paikkoihin)
Nämä menetelmät palauttavat matriisin, jossa on totuusarvot. Jokainen arvo vastaa kutakin rekisteriä.
Fragmentti: [0: count] tarvitaan, koska tämä menetelmä palauttaa enemmän arvoja kuin count. Se palauttaa aina arvojen määrän, joka on jaollinen kahdeksalla. Lisäarvot ovat vääriä eivätkä vastaa mitään rekisteriä.
Lue boolen arvot molemmilla tavoilla:
modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_inputs (1, 200, 2) [0: 2]
Tulos on seuraavanlainen: ESIMERKKI
Tosi viittaa 1 arvoon, epätosi 0: een.
4) Lue rekistereitä
Lue nyt arvot rekistereistä, jotka on kirjoitettu 6 -funktiolla.
Jos haluat lukea rekistereitä, joilla on toiminto 3 lukutilarekisterit, suorita:
modbus.read_holding_registers (slaveId, register, count, Signed = True)
Jos haluat lukea rekisterit, joilla on toiminto 4 lukutulorekisterit, suorita:
modbus.read_input_registers (slaveId, register, count, Signed = True)
missä:
- slave -id - virtuaalisen orjan tunnus
- rekisteri - rekisterinumero lukemista varten
- count - luettavien rekisterien määrä
- allekirjoitettu - osoittaa, pitääkö luetut arvot allekirjoitettuina numeroina vai ei. Oletustila: Totta
Palautusarvo on kortti, jossa on haluttu määrä rekistereitä.
Lue edellisessä kohdassa asetetut rekisterit:
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)
Tulosten pitäisi näyttää tältä kuvakaappaukselta: EXAMPLE
Seuraavalla oppitunnilla opit luomaan Modbus RTU Masterin ESP32-yhteensopivalla laitteella.
Suositeltava:
Teollinen käyttöliittymä ja Arduinos MODBUS RTU: 4 vaihetta
Teollinen käyttöliittymä ja Arduinos MODBUS RTU: Tässä ohjeessa kuvailen esimerkin teollisen käyttöliittymän (COOLMAY MT6070H, 150EUROS), Arduino CLONE DIY (10EUROS) ja Arduino UNO (10EUROS) välisestä viestinnästä. Verkko toimii erityisellä ja vankalla ja teollisella protokollalla
Modbus TCP -yhteys Arduinon ja teollisuuslaitteiden välillä: 3 vaihetta
Modbus TCP -viestintä Arduinon ja teollisuuslaitteiden välillä: Teollinen tapa hallita Arduino -korttia teollisella HMI: llä ja yhdistää se teollisuusverkkoon Modbus TCP -yhteydellä
ESP32: n käytön aloittaminen - ESP32 -levyjen asentaminen Arduino IDE: hen - ESP32 vilkkuva koodi: 3 vaihetta
ESP32: n käytön aloittaminen | ESP32 -levyjen asentaminen Arduino IDE: hen | ESP32 Blink Code: Tässä ohjeessa näemme, kuinka aloittaa työskentely esp32: n kanssa ja miten asennetaan esp32 -levyt Arduino IDE: hen, ja ohjelmoimme esp 32: n suorittamaan vilkkuva koodi käyttämällä arduino ide
TCP/IP -yhteys GPRS: n kautta: Tietojen lähettäminen palvelimelle SIM900A -moduulin avulla: 4 vaihetta
TCP/IP -yhteys GPRS: n kautta: Tietojen lähettäminen palvelimelle SIM900A -moduulin avulla: Tässä opetusohjelmassa kerron sinulle, miten voit lähettää tietoja TCP -palvelimelle sim900 -moduulin avulla. Näemme myös, kuinka voimme vastaanottaa tietoja palvelimelta asiakkaalle (GSM -moduuli)
Mittari PZEM-004 + ESP8266 ja alustan IoT-solmu-PUNAINEN ja Modbus TCP/IP: 7 vaihetta
Mittari PZEM-004 + ESP8266 & Platform IoT-solmu-PUNAINEN ja Modbus TCP/IP: Tässä tilaisuudessa integroimme aktiivisen tehomittarimme tai sähkönkulutuksemme, Pzem-004-Peacefair aiemmissa opetusohjelmissa käytetyn IoT Node-RED -integrointialustan kanssa, Käytämme ESP8266 -moduulia, joka on konfiguroitu Modbus TCP / IP -orjaksi, myöhemmin