Tartalomjegyzék:

ESP32 Modbus Master TCP: 7 lépés
ESP32 Modbus Master TCP: 7 lépés

Videó: ESP32 Modbus Master TCP: 7 lépés

Videó: ESP32 Modbus Master TCP: 7 lépés
Videó: Работа с Modbus RTU/TCP. Примеры проектов. 2024, November
Anonim
ESP32 Modbus Master TCP
ESP32 Modbus Master TCP

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 és indítsa el a Modbus TCP Slave Simulator -t
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

Készítse elő a számítógépet az eszközhöz való csatlakozáshoz
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á

Készítse elő az eszközt, és csatlakozzon hozzá
Készítse elő az eszközt, és csatlakozzon hozzá
Készítse elő az eszközt, és csatlakozzon hozzá
Készítse elő az eszközt, és csatlakozzon hozzá
Készítse elő az eszközt, és csatlakozzon hozzá
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.

  1. Csatlakoztassa az eszközt a számítógéphez
  2. 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

Töltse fel a Modbus mesterkönyvtárat
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

Csatlakozzon a hálózathoz
Csatlakozzon 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

Inicializálja a kommunikációt a Modbus slave -vel
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

Regiszterek olvasása és írása
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:

  1. read_coils
  2. read_discrete_inputs
  3. read_holding_registers
  4. read_input_registers
  5. write_single_coil
  6. 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: