Tartalomjegyzék:
- 1. lépés: Töltse le és indítsa el a Modbus TCP Slave Simulator -t
- 2. lépés: Készítse elő a számítógépet az eszközhöz való csatlakozáshoz
- 3. lépés: Készítse elő az eszközt és csatlakozzon hozzá
- 4. lépés: Töltse fel a Modbus mesterkönyvtárat
- 5. lépés: Csatlakozás a hálózathoz
- 6. lépés: Inicializálja a kommunikációt a Modbus slave -vel
- 7. lépés: Regiszterek olvasása és írása
Videó: ESP32 Modbus Master TCP: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Ebben az osztályban az ESP32 processzort Modbus TCP mesterre programozza.
Két eszközt fogunk használni, amelyek tartalmazzák ezt a processzort: Moduino ESP32 és Pycom. Mindkét eszköz MicroPytthon környezetben fut. A Modbus Slave PC számítógép lesz, amelyen Modbus szimulátor szoftver fut.
Szükséged lesz:
- Moduino ESP32 vagy Moduino Pycom eszköz (ezen a webhelyen tájékozódhat a Moduino ESP32 eszközről, ezen pedig a Pycom eszközről)
- PC Linux operációs rendszerrel
- RS-232/RS-485 port a számítógépen vagy USB-RS-232/RS-485 átalakító
1. lépés: Töltse le és indítsa el a Modbus TCP Slave Simulator -t
Töltse le a Modbus Slave szimulátort a https://www.modbusdriver.com/diagslave.html webhelyről. Ezután nyissa meg a letöltött archívumot, és csomagolja ki a Linux operációs rendszer verzióját.
Futtassa a programot a konzolról a -p argumentummal:
./diagslave -p
egy port, ahol a Modbus Slave szerver fog működni. A Modbus protokoll alapértelmezés szerint 502, de használhat másikat.
Az 1024 alatti Linux -portokban nem használhatják a rendszeres felhasználóktól futtatott programok (nem root jogosultságok).
Ne feledje, milyen portot használ. Erre az értékre később lesz szükség.
2. lépés: Készítse elő a számítógépet az eszközhöz való csatlakozáshoz
Szüksége lesz néhány programra az eszközhöz való csatlakozáshoz és fájlok küldéséhez.
Telepítse a Python környezetet és a pip -t (ha nincs meg):
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
A picocom telepítése:
apt-get install picocom
Ez a program szükséges ahhoz, hogy csatlakozzon az eszközhöz, és parancsokat hajtson végre rajta. Telepítse az mpfshell fájlt:
pip telepítse az mpfshell parancsot
Ez a program lehetővé teszi fájlok küldését az eszközre.
Forrásokból is telepítheti. Tekintse meg ezt az oldalt:
3. lépés: Készítse elő az eszközt és csatlakozzon hozzá
A Moduino vagy Pycom eszköz PC-hez való csatlakoztatásához RS-232/RS-485 portra vagy átalakítóra van szükség. Ellenőrizze az eszköz verzióját (melyik porttípust használja), és keresse meg a megfelelő portot vagy átalakítót.
- Csatlakoztassa az eszközt a számítógéphez
- Ezután csatlakoztassa a tápegységet
Csatlakoztassa a készüléket a számítógéphez, majd csatlakoztassa a tápegységet. Ethernet -kábelt is csatlakoztathat a Moduino ESP32 -hez (ha rendelkezik ilyen porttal).
A kapcsolatnak olyannak kell lennie, mint a fenti képeken
Keresse meg az eszköz csatlakoztatásához használt port elérési útját. Ez lehet például: /dev /ttyS1, /dev /ttyUSB0.
USB átalakítók esetén az útvonal USB szót tartalmaz.
Az eszközhöz a picocom program segítségével csatlakozhat:
picocom /dev /ttyUSB0 -b 115200
Az eszköz parancssorának megjelenése hasonló az alábbi képek egyikéhez.
Moduino ESP32: Lásd itt
Moduino Pycom: Lásd itt
4. lépés: Töltse fel a Modbus mesterkönyvtárat
github.com/pycom/pycom-modbus/A Modbus Slave kommunikációjához megfelelő könyvtár szükséges. A Pycom könyvtárai nem kompatibilisek a Moduino -val. Ellenőrizze az Ön készülékének megfelelő utasításokat.
Fájlok küldése előtt zárja be a picocom programot: nyomja meg a Ctrl+A, majd a Ctrl+X billentyűket.
Az uModBus könyvtár a Moduino ESP32-hez a pycom-modbus könyvtárra épül a Moduino Pycom számára. Módosították, hogy normál ESP32 eszközön is működjön. Ezenkívül további close () metódusokkal rendelkezik az összekötő osztályokhoz.
1) Moduino ESP32
Töltse le a könyvtárat a https://github.com/techbase123/micropython-modbus webhelyről. Csomagolja ki az archívumot, és küldje el mind a 4 fájlt a Moduino eszközre.
Töltse fel őket az mpfshell használatával. Futtassa ezt a programot a könyvtárban az adott fájlokkal.
Csatlakozzon az eszközhöz a következő végrehajtásával: EZ
A ttyUSB0 annak a soros portnak a neve, amelyhez az eszköz csatlakoztatva van.
Változtassa meg a /flash /lib könyvtárat a következő paranccsal:
cd /flash /lib
Tegye az összes fájlt parancsokkal:
tegye az uModBusConst.py -t
put uModBusFunctions.py put uModBusTCP.py put uModBusSerial.py
PÉLDA
Ezután lépjen ki a konzolból az exit paranccsal, és indítsa újra az eszközt a Reset gombbal.
2) Moduino Pycom
Töltse le a könyvtárat a https://github.com/pycom/pycom-modbus/ webhelyről. Csomagolja ki az archívumot, és küldje el az uModbus könyvtár tartalmát az eszközre. Az mpfshell használatával töltse fel őket. Futtassa ezt a programot a könyvtárban az adott fájlokkal.
Csatlakozzon az eszközhöz a következők végrehajtásával:
nyissa meg a ttyUSB0 -t
A ttyUSB0 annak a soros portnak a neve, amelyhez az eszköz csatlakoztatva van.
Változtassa meg a /flash /lib könyvtárat, hozza létre az uModbus könyvtárat, és írja be a következő parancsokkal:
cd /flash /libmd uModbus cd uModbus
Tegye az összes fájlt parancsokkal:
tedd const.py
put function.py put tcp.py put serial.py
Ezután lépjen ki a konzolból az exit paranccsal, és indítsa újra az eszközt a Reset gombbal.
PÉLDA
5. lépés: Csatlakozás a hálózathoz
A kapcsolat létrehozására vonatkozó parancsok eltérnek a Moduino és a Pycom között.
Csatlakozzon a készülékhez a picocom segítségével a megfelelő parancsok végrehajtásához. A Moduino eszközt vezetékes vagy vezeték nélküli hálózathoz csatlakoztathatja. Az alábbi példák feltételezik, hogy a hálózat működő DHCP -kiszolgálóval rendelkezik.
Más esetben az eszköz nem kap IP -címet. A Wi -Fi támogatás minden modulban elérhető. Az Ethernet -port opció, és nem minden eszköz rendelkezik ezzel.
1) Moduino ESP32
Csatlakozás a WiFi -hez
Végezze el a következő parancsokat a készüléken:
from netWiFi import netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()
Cserélje le az ESSID azonosítót a WiFi hálózat nevére, a PASS kódot pedig jelszavára.
A start () végrehajtása után egy idő után meg kell kapnia az eszközhöz rendelt IP -címet.
Csatlakozás Ethernet hálózathoz
Csatlakoztassa az eszközt vezetékes hálózathoz ethernet kábellel.
Ezután hajtsa végre a következő parancsokat:
from netETH import netETHeth = netETH () eth.start ()
A start () végrehajtása után egy idő után meg kell kapnia az eszközéhez rendelt IP -címet.
2) Moduino Pycom
Csatlakozzon a WiFi -hez
Végezze el a következő parancsokat a készüléken:
a hálózat importálásából WLANwlan = WLAN (mód = WLAN. STA) nets = wlan.scan () a netekben lévő hálóhoz: ha net.ssid == 'ESSID': print ('Hálózat található!') wlan.connect (net.ssid, auth = (net.sec, 'PASS'), timeout = 5000) míg nem wlan.isconnected (): machine.idle () print ('WLAN kapcsolat sikerült!') break
Cserélje le az ESSID azonosítót a WiFi hálózat nevére, a PASS kódot pedig jelszavára.
6. lépés: Inicializálja a kommunikációt a Modbus slave -vel
A Modbus Master könyvtárak mindkét eszköz esetében hasonlóak
Az inicializálás során változnak.
1) Inicializálja az uModBus -t a Moduino ESP32 rendszeren
Végrehajtás:
az uModBusTCP -ből importálja az uModBusTCP -t TCP -ként
2) Inicializálja az uModBus -t a Pycom -on
Végrehajtás:
az uModbus.tcp import TCP -ből
Nyissa meg a kapcsolatot
Ezután nyissa meg a kapcsolatot a következővel:
modbus = TCP ('IP', PORT, 60)
ahol:
- A számítógép IP -címe Modbus Slave szimulátorral
- PORT - Modbus Slave port
- A 60 egy időtúllépés
Ha a következő hiba lép fel az olvasási/írási parancsok végrehajtása közben: PÉLDA
végrehajtani:
a Moduino ESP32 esetében:
modbus.close ()
a Moduino Pycom esetében:
modbus._sock.close ()
majd hozza létre újra a kapcsolatot:
modbus = TCP ('IP', PORT, 60)
Ez fontos, hogy zárja be az aljzatot a kapcsolat újbóli létrehozása előtt. Az eszköz korlátozott számú rendelkezésre álló csatlakozóaljzattal rendelkezik.
7. lépés: Regiszterek olvasása és írása
A Modbus számos funkciót támogat a regiszterek olvasásához és írásához.
Az uModBus könyvtár minden funkcióhoz rendelkezik metódussal:
- read_coils
- read_discrete_inputs
- read_holding_registers
- read_input_registers
- write_single_coil
- write_single_register
Először írjunk néhány értéket.
1) Tekercsek írása (func: 5)
Írjon 1 értéket 200 regiszterbe az 1. szolgaból:
modbus.write_single_coil (1, 200, 0xFF00)
Az első érv a slave id, a mi esetünkben 1.
A második a regiszter száma, a thirs pedig egy érték. 1 -hez ide 0xFF00 -at kell tenni. Írjon 0 -tól 201 -ig regisztert az 1. slave -ből:
modbus.write_single_coil (1, 201, 0)
Ez a módszer csak logikai értékek írását teszi lehetővé: 0 vagy 1.
2) Regiszterek írása (func: 6)
Most írjon be néhány egész értéket több regiszterbe.
Írjon aláírt 111 értéket a 100 regisztrálásához az 1. szolgaból:
modbus.write_single_register (1, 100, 111, igaz)
Az első argumentum a slave id, a második regiszter száma és a harmadik az új érték. Az utolsó argumentum határozza meg, hogy az értéket aláírt számként kell -e beállítani. Alapértelmezett értéke True. Nem kell beállítania.
Írjon aláírt -457 értéket a 101 regiszterbe az 1. szolgaból:
modbus.write_single_register (1, 101, -457)
Írjon alá nem írt 50 értéket 100 -as regiszterbe a slave 3 -ból:
modbus.write_single_register (3, 100, 50, hamis)
Ez a módszer lehetővé teszi egész értékek egyetlen regiszterbe írását.
Egyetlen regiszter 16 bites értékeket tartalmazhat.
A metódus True értéket ad vissza, ha a bemeneti érték érvényes, hamis, hamis. Az érték akkor is íródik, ha érvénytelen (túl nagy a regiszterhez)
3) Tekercsek/diszkrét bemenetek olvasása
Most olvassuk az írásbeli logikai értékeket. A regiszter olvasásához az 1 -es függvény olvasótekercsével hajtsa végre a következőt:
modbus.read_coils (slaveId, register, count) [0: count]
A regiszter olvasásához a 2. funkcióval olvassa el a diszkrét bemenetet:
modbus.read_discrete_inputs (slaveId, register, count) [0: count]
ahol:
- slave -id - a virtuális slave azonosítója (a slave szimulátor minden érvényes azonosítót elfogad)
- regiszter - regiszterszám az olvasáshoz
- szám - az olvasandó regiszterek mennyisége (mindkét helyre írja be a kívánt mennyiséget)
Ezek a módszerek tömböt adnak vissza logikai értékekkel. Minden érték megfelel minden regiszternek.
A töredék: [0: count] szükséges, mert ez a módszer több értéket ad vissza, mint a count. Mindig olyan értékeket ad vissza, amelyek oszthatók 8 -cal. A további értékek hamisak, és nem felelnek meg egyetlen regiszternek sem.
Olvassa el logikai értékeinket mindkét módszerrel:
modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_inputs (1, 200, 2) [0: 2]
Az eredmény a következő lesz: PÉLDA
Az igaz 1 értékre vonatkozik, a hamis 0 -ra.
4) Regiszterek olvasása
Most olvassa be az értékeket a 6 funkcióval írt regiszterekből.
Ha be szeretné olvasni a regisztereket a 3. funkciójú olvasástartó regiszterekkel, hajtsa végre a következőket:
modbus.read_holding_registers (slaveId, regiszter, szám, aláírt = igaz)
Ha be szeretné olvasni a regisztereket a 4. funkcióval, akkor hajtsa végre a következőket:
modbus.read_input_registers (slaveId, regiszter, szám, aláírt = igaz)
ahol:
- slave -id - virtuális slave azonosítója
- regiszter - regiszterszám az olvasáshoz
- count - az olvasandó regiszterek mennyisége
- aláírt - jelzi, hogy az olvasott értékeket aláírt számként kell -e kezelni vagy sem. Alapértelmezett állapot: Igaz
A visszatérési érték egy sor, a kívánt regiszterek mennyiségével.
Olvassa el az előző pontban beállított regisztereket:
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)
Az eredményeknek a következőképpen kell kinézniük a képernyőképen: EXAMPLE
A következő leckében megtudhatja, hogyan hozhat létre Modbus RTU Master-t ESP32-kompatibilis eszközön.
Ajánlott:
Ipari HMI és Arduinos a MODBUS RTU -ban: 4 lépés
Ipari HMI és Arduinos a MODBUS RTU -ban: Ebben az oktatható fejezetben az ipari HMI (COOLMAY MT6070H, 150EUROS), az Arduino CLONE DIY (10EUROS) és az Arduino UNO (10EUROS) közötti kommunikációra mutatok be példát. A hálózat speciális, robusztus és ipari protokoll alatt fog működni
Modbus TCP kommunikáció az Arduino és az ipari eszközök között: 3 lépés
Modbus TCP kommunikáció az Arduino és az ipari eszközök között: Ipari módszer az Arduino kártya vezérlésére ipari HMI -vel, és összekapcsolása egy ipari hálózattal Modbus TCP kommunikációval
Első lépések az ESP32 -vel - ESP32 táblák telepítése Arduino IDE - -be ESP32 villogó kód: 3 lépés
Első lépések az ESP32 -vel | ESP32 táblák telepítése Arduino IDE | -be ESP32 villogó kód: Ebben az utasításban látni fogjuk, hogyan kell elkezdeni az esp32 -vel való munkát, és hogyan kell telepíteni az esp32 táblákat az Arduino IDE -be, és beprogramozzuk az esp 32 -et, hogy futtassa a villogó kódot az arduino ide használatával
TCP/IP kapcsolat GPRS -en keresztül: Hogyan lehet adatokat küldeni a szerverre a SIM900A modul használatával: 4 lépés
TCP/IP kapcsolat GPRS -en keresztül: Hogyan lehet adatokat küldeni a szerverre a SIM900A modul használatával: Ebben az oktatóanyagban arról fogok beszélni, hogyan lehet adatokat küldeni a TCP szerverre a sim900 modul használatával. Azt is látni fogjuk, hogyan fogadhatunk adatokat szerverről ügyfélre (GSM modul)
PZEM-004 + ESP8266 mérő és platform IoT csomópont-Vörös és Modbus TCP/IP: 7 lépés
PZEM-004 + ESP8266 mérő és Platform IoT Node-RED & Modbus TCP/IP: Ebben a lehetőségben integráljuk aktív teljesítménymérőnket vagy elektromos fogyasztásunkat, Pzem-004-Peacefair a korábbi oktatóanyagokban használt IoT Node-RED integrációs platformmal, később ESP8266 modult fogunk használni, amely Modbus TCP / IP slave -ként van konfigurálva