![ESP32 Modbus Mwalimu TCP: Hatua 7 ESP32 Modbus Mwalimu TCP: Hatua 7](https://i.howwhatproduce.com/images/005/image-14055-10-j.webp)
Orodha ya maudhui:
- Hatua ya 1: Pakua na Anza Modbus TCP Slave Simulator
- Hatua ya 2: Andaa Kompyuta yako Kuunganisha kwenye Kifaa
- Hatua ya 3: Andaa Kifaa na Unganisha kwake
- Hatua ya 4: Pakia Maktaba kuu ya Modbus
- Hatua ya 5: Unganisha kwenye Mtandao
- Hatua ya 6: Anzisha Mawasiliano na Mtumwa wa Modbus
- Hatua ya 7: Soma na Andika Sajili
2025 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2025-01-23 15:11
![ESP32 Modbus Mwalimu TCP ESP32 Modbus Mwalimu TCP](https://i.howwhatproduce.com/images/005/image-14055-11-j.webp)
Katika darasa hili, utapanga programu ya ESP32 kuwa Modbus TCP Master.
Tutatumia vifaa viwili, ambavyo vina processor hii: Moduino ESP32 na Pycom. Vifaa vyote vinaendesha katika mazingira ya MicroPytthon. Mtumwa wetu wa Modbus atakuwa kompyuta ya PC na programu ya Modbus simulator inayoendesha juu yake.
Utahitaji:
- Kifaa cha Moduino ESP32 au Moduino Pycom (angalia tovuti hii ili kujua zaidi kuhusu kifaa cha Moduino ESP32 na hii kuangalia kifaa cha Pycom)
- PC na mfumo wa uendeshaji wa Linux
- RS-232 / RS-485 bandari kwenye kompyuta yako au USB hadi RS-232 / RS-485 converter
Hatua ya 1: Pakua na Anza Modbus TCP Slave Simulator
![Pakua na Anza Modbus TCP Slave Simulator Pakua na Anza Modbus TCP Slave Simulator](https://i.howwhatproduce.com/images/005/image-14055-12-j.webp)
Pakua moduli ya Mtumwa wa Modbus kutoka https://www.modbusdriver.com/diagslave.html. Kisha fungua kumbukumbu na upakue toleo la mfumo wa uendeshaji wa Linux.
Endesha programu kutoka kwa kiweko na hoja ya -p:
./diagslave -p
ni bandari ambapo seva ya Modbus Slave itafanya kazi. Kwa itifaki ya Modbus ni kwa default 502, lakini unaweza kutumia nyingine.
Katika bandari za Linux chini ya 1024 haiwezi kutumiwa na programu zinazoendeshwa kutoka kwa mtumiaji wa kawaida (sio upendeleo wa mizizi).
Kumbuka ni bandari gani unayotumia. Thamani hii itakuwa muhimu baadaye.
Hatua ya 2: Andaa Kompyuta yako Kuunganisha kwenye Kifaa
![Andaa Kompyuta yako Kuunganisha kwenye Kifaa Andaa Kompyuta yako Kuunganisha kwenye Kifaa](https://i.howwhatproduce.com/images/005/image-14055-13-j.webp)
Utahitaji programu kadhaa ili kuunganisha kwa kifaa na kutuma faili kwake.
Sakinisha mazingira ya Python na bomba (ikiwa hauna):
pata-apt kufunga python3
pata-pata kufunga python3-dev curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python3 get-pip.py
Sakinisha picocom:
pata-pata picocom
Mpango huu unahitajika kuungana na kifaa na kutekeleza amri juu yake.
bomba funga mpfshell
Programu hii hukuruhusu kutuma faili kwenye kifaa.
Unaweza pia kuiweka vyanzo vya fomu. Rejea ukurasa huu:
Hatua ya 3: Andaa Kifaa na Unganisha kwake
![Andaa Kifaa na Unganisha kwake Andaa Kifaa na Unganisha kwake](https://i.howwhatproduce.com/images/005/image-14055-14-j.webp)
![Andaa Kifaa na Unganisha kwake Andaa Kifaa na Unganisha kwake](https://i.howwhatproduce.com/images/005/image-14055-15-j.webp)
![Andaa Kifaa na Unganisha kwake Andaa Kifaa na Unganisha kwake](https://i.howwhatproduce.com/images/005/image-14055-16-j.webp)
Ili kuunganisha kifaa cha Moduino au Pycom kwenye PC unahitaji RS-232 / RS-485 bandari au kibadilishaji. Angalia toleo la kifaa chako (ni aina gani ya bandari inayotumia) na upate bandari au kibadilishaji kinachofaa.
- Unganisha kifaa kwenye PC
- Kisha unganisha usambazaji wa umeme kwake
Unganisha kifaa kwenye PC na kisha unganisha usambazaji wa umeme kwake. Unaweza pia kuunganisha kebo ya ethernet kwa Moduino ESP32 (ikiwa ina bandari hiyo).
Uunganisho unapaswa kuwa kama kwenye picha hapo juu
Tafuta njia ya bandari, ambayo hutumiwa kwa unganisho la kifaa. Inaweza kuwa kwa mfano: / dev / ttyS1, / dev / ttyUSB0.
Kwa waongofu wa usb, njia itakuwa na neno la USB.
Unaweza kuunganisha kwenye kifaa na programu ya picocom:
picocom / dev / ttyUSB0 -b 115200
Amri ya haraka ya kifaa inaonekana sawa na moja ya picha hizi hapa chini.
Moduino ESP32: Tazama hapa
Moduino Pycom: Tazama hapa
Hatua ya 4: Pakia Maktaba kuu ya Modbus
![Pakia Maktaba kuu ya Modbus Pakia Maktaba kuu ya Modbus](https://i.howwhatproduce.com/images/005/image-14055-17-j.webp)
github.com/pycom/pycom-modbus/ Ili kuwasiliana na Modbus Slave unahitaji maktaba inayofaa. Maktaba za Pycom hazioani na Moduino. Angalia maagizo ambayo yanatii kifaa chako.
Funga picocom kabla ya kutuma faili: bonyeza Ctrl + A na kisha funguo za Ctrl + X.
Maktaba ya uModBus ya besi za Moduino ESP32 kwenye maktaba ya pycom-modbus ya Moduino Pycom. Imebadilishwa kufanya kazi kwenye kifaa cha kawaida cha ESP32. Pia ina njia za ziada za karibu () za madarasa ya kiunganishi.
1) Moduino ESP32
Pakua maktaba kutoka https://github.com/techbase123/micropython-modbus. Ondoa kumbukumbu na tuma faili zote 4 kwa kifaa cha Moduino.
Tumia mpfshell kuzipakia. Endesha programu hii katika saraka na faili hizo.
Unganisha kwenye kifaa kwa kutekeleza: HII
ttyUSB0 ni jina la bandari ya serial ambapo kifaa kimeunganishwa.
Badilisha saraka kuwa / flash / lib na amri:
cd / flash / lib
Weka faili zote na amri:
weka uModBusConst.py
kuweka uModBusFunctions.py kuweka uModBusTCP.py kuweka uModBusSerial.py
MFANO
Kisha ondoka kwa koni na amri ya kutoka na uanze tena kifaa na kitufe cha Rudisha.
2) Moduino Pycom
Pakua maktaba kutoka https://github.com/pycom/pycom-modbus/. Ondoa kumbukumbu na tuma yaliyomo kwenye saraka ya uModbus kwenye kifaa Tumia mpfshell kuzipakia. Endesha programu hii katika saraka na faili hizo.
Unganisha kwenye kifaa kwa kutekeleza:
kufungua ttyUSB0
ttyUSB0 ni jina la bandari ya serial ambapo kifaa kimeunganishwa.
Badilisha saraka kuwa / flash / lib, unda saraka ya uModbus na uiingize kwa amri:
cd / flash / libmd uModbus cd uModbus
Weka faili zote na amri:
weka const.py
weka kazi.py weka tcp.py weka serial.py
Kisha ondoa kiweko na amri ya kutoka na uanze tena kifaa na kitufe cha Rudisha.
MFANO
Hatua ya 5: Unganisha kwenye Mtandao
![Unganisha kwenye Mtandao Unganisha kwenye Mtandao](https://i.howwhatproduce.com/images/005/image-14055-18-j.webp)
Amri za kuanzisha uhusiano hutofautiana kati ya Moduino na Pycom.
Unganisha kwenye kifaa na picocom kutekeleza amri zinazofaa. Unaweza kuunganisha kifaa cha Moduino kwenye mtandao kwa waya au waya. Kufuatia mifano kudhani kuwa mtandao wako una seva ya DHCP inayofanya kazi.
Kwa hali nyingine, kifaa hakitapata anwani ya IP. Usaidizi wa WiFi unapatikana katika kila Moduino. Bandari ya Ethernet ni chaguo na sio vifaa vyote vinavyo.
1) Moduino ESP32
Kuunganisha kwa WiFi
Tekeleza amri zifuatazo kwenye kifaa:
kutoka kwa netWiFi kuagiza netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi. kuanza ()
Badilisha ESSID na jina la mtandao wako wa WiFi, na PASS na nenosiri lake.
Baada ya muda baada ya kutekeleza start () unapaswa kupata anwani ya IP ambayo ilipewa kifaa chako.
Kuunganisha kwa mtandao wa Ethernet
Unganisha kifaa kwenye mtandao wa waya na kebo ya ethernet.
Kisha fanya amri zifuatazo:
kutoka net net kuagiza netETHeth = netETH () eth.start ()
Baada ya muda baada ya kutekeleza start () unapaswa kupata anwani ya IP ambayo ilipewa kifaa chako.
2) Moduino Pycom
Unganisha na WiFi
Tekeleza amri zifuatazo kwenye kifaa:
kutoka kwa uingizaji wa mtandao WLANwlan = WLAN (mode = WLAN. STA) nyavu = wlan.scan () kwa wavu kwenye nyavu: ikiwa net.ssid == 'ESSID': chapisha ('Mtandao umepatikana!') wlan.connect (net.ssid"
Badilisha ESSID na jina la mtandao wako wa WiFi, na PASS na nenosiri lake.
Hatua ya 6: Anzisha Mawasiliano na Mtumwa wa Modbus
![Anzisha Mawasiliano na Mtumwa wa Modbus Anzisha Mawasiliano na Mtumwa wa Modbus](https://i.howwhatproduce.com/images/005/image-14055-19-j.webp)
Maktaba ya Mwalimu wa Modbus ni sawa kwa vifaa vyote viwili
Zinatofautiana katika uanzishaji.
1) Anzisha uModBus kwenye Moduino ESP32
Tekeleza:
kutoka kwa uModBusTCP kuagiza uModBusTCP kama TCP
2) Anzisha uModBus kwenye Pycom
Tekeleza:
kutoka kwa uModbus.tcp kuagiza TCP
Fungua muunganisho
Kisha unganisha uhusiano na:
modbus = TCP ('IP', PORT, 60)
wapi:
- IP - anwani ya IP ya PC yako na Modbus Slave simulator
- PORT - bandari ya Mtumwa wa Modbus
- 60 imekoma
Ikiwa kosa linalofuata linatokea wakati wa kutekeleza amri za kusoma / kuandika: MFANO
kutekeleza:
kwa Moduino ESP32:
modbus karibu ()
kwa Moduino Pycom:
modbus._sock.close ()
na kisha urudie unganisho:
modbus = TCP ('IP', PORT, 60)
Hii ni muhimu kufunga tundu kabla ya kurudisha unganisho. Device imezuia kiwango cha unganisho linalopatikana la tundu.
Hatua ya 7: Soma na Andika Sajili
![Soma na Andika Sajili Soma na Andika Sajili](https://i.howwhatproduce.com/images/005/image-14055-20-j.webp)
Modbus inasaidia kazi kadhaa kusoma na kuandika rejista.
Maktaba ya uModBus ina njia ya kila kazi:
- soma_vikoo
- soma_punguzo_za_pungufu
- kusoma_kushikilia_sajili
- soma_daha_sajili
- andika_silasi_ya moja
- andika_sajili_sawisi
Kwanza, wacha tuandike maadili.
1) Andika koili (func: 5)
Andika thamani 1 kwa rejista 200 kutoka kwa mtumwa 1:
modbus.andika_single_coil (1, 200, 0xFF00)
Hoja ya kwanza ni id ya mtumwa, kwa upande wetu 1.
Pili ni nambari ya usajili na theluthi ni thamani. Kwa 1 lazima uweke 0xFF00 hapa. Andika rejista 0 hadi 201 kutoka kwa mtumwa 1:
modbus.andika_single_coil (1, 201, 0)
Njia hii inaruhusu kufunika maadili ya boolean tu: 0 au 1.
2) Andika rejista (func: 6)
Sasa andika nambari kadhaa kwa rejista kadhaa.
Andika alama 111 iliyosainiwa kusajili 100 kutoka kwa mtumwa 1:
kuandika. sajili_sale_sajili (1, 100, 111, Kweli)
Hoja ya kwanza ni kitambulisho cha mtumwa, nambari ya pili ya usajili na ya tatu ni thamani mpya. Hoja ya mwisho inafafanua ikiwa thamani inapaswa kuwekwa kama nambari iliyosainiwa. Thamani chaguo-msingi kwake ni Kweli. Huna haja ya kuiweka.
Andika thamani -457 iliyosainiwa kwa sajili ya 101 kutoka kwa mtumwa 1:
modbus.andika_single_sajili (1, 101, -457)
Andika usisaini thamani ya 50 kwa rejista 100 kutoka kwa mtumwa 3:
modbus.andika_single_sajili (3, 100, 50, Uongo)
Njia hii inaruhusu kukokotoa nambari kamili kujiandikisha.
Rejista moja inaweza kuwa na maadili 16 kidogo.
Njia inarudi Kweli thamani ya pembejeo ni halali na sio ya kweli ikiwa sio hivyo. Thamani imeandikwa hata ikiwa ni batili (kubwa sana kwa rejista)
3) Soma pembejeo za coil / discrete
Sasa hebu soma maadili yaliyoandikwa ya boolean. Kusoma rejista na coil ya kusoma 1 ya kazi, fanya:
modbus.read_coils (slaveId, rejista, hesabu) [0: hesabu]
Kusoma rejista na kazi 2 soma pembejeo tofauti, fanya:
modbus.read_discrete_ pembejeo (SlaveId, rejista, hesabu) [0: hesabu]
wapi:
- id-slave - id ya mtumwa halisi (simulator ya mtumwa inakubali vitambulisho vyote halali)
- rejista - nambari ya usajili kwa kusoma
- hesabu - kiasi cha sajili za kusomwa (weka kiwango unachotaka katika sehemu zote mbili)
Njia hizi zinarudisha safu na maadili ya boolean. Kila thamani inalingana na kila rejista.
Kipande: [0: hesabu] inahitajika, kwa sababu njia hii inarudisha maadili zaidi, kuliko hesabu. Inarudisha kila wakati idadi ya maadili ambayo inaweza kugawanywa na 8. Thamani za nyongeza ni za uwongo na hazilingani na rejista yoyote.
Soma maadili yetu ya boolean na njia zote mbili:
modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_ pembejeo (1, 200, 2) [0: 2]
Matokeo yatakuwa kama haya: MFANO
Kweli inahusu thamani 1, Uongo kwa 0.
4) Soma rejista
Sasa soma maadili kutoka kwa rejista zilizoandikwa na kazi 6.
Kusoma rejista zilizo na rejista ya kufanya kazi ya kusoma 3, fanya:
modbus.read_holding_sajili (slaveId, rejista, hesabu, saini = Kweli)
Kusoma rejista zilizo na rejista ya kusoma ya kazi ya kusoma 4, fanya:
modbus.read_input_registers (slaveId, rejista, hesabu, saini = Kweli)
wapi:
- mtumwa-id - id ya mtumwa halisi
- rejista - nambari ya usajili kwa kusoma
- hesabu - kiasi cha sajili za kusomwa
- iliyosainiwa - inaonyesha ikiwa maadili ya kusoma yanapaswa kutibiwa kama nambari zilizosainiwa au la. Hali chaguomsingi: Kweli
Thamani ya kurudisha ni Tuple na kiwango cha taka cha sajili.
Soma rejista zilizowekwa katika nukta iliyopita:
modbus.read_holding_sajili (1, 100, 2, Kweli) modbus.read_input_sajili (1, 100, 2, Kweli) modbus. kusoma_kusajili_sajili (3, 100, 1, Uongo) modbus. kusoma_kuingiza_sajili (3, 100, 1, Uongo)
Matokeo yanapaswa kuonekana kama kwenye picha hii ya skrini: MFANO
Katika somo linalofuata utajifunza jinsi ya kuunda Modbus RTU Master kwenye kifaa kinachowezeshwa na ESP32.
Ilipendekeza:
Gardenduino Aka Mwalimu wa Bustani: Hatua 4
![Gardenduino Aka Mwalimu wa Bustani: Hatua 4 Gardenduino Aka Mwalimu wa Bustani: Hatua 4](https://i.howwhatproduce.com/images/012/image-33179-j.webp)
Gardenduino Aka Mwalimu wa Bustani: vizuri haisikii kuchosha kusafisha nyasi zetu, kumwagilia mimea & nini sio! Bustani haswa sio kikombe changu cha chai. hivyo niliamua kutengeneza mfumo wa moja kwa moja wa kutunza bustani yangu! wacha tuanze
Ubunifu wa Mwalimu wa SPI katika VHDL: 6 Hatua
![Ubunifu wa Mwalimu wa SPI katika VHDL: 6 Hatua Ubunifu wa Mwalimu wa SPI katika VHDL: 6 Hatua](https://i.howwhatproduce.com/images/002/image-5866-8-j.webp)
Ubunifu wa Mwalimu wa SPI katika VHDL: Katika hii inayoweza kufundishwa, tutabuni Mwalimu wa Basi wa SPI kutoka mwanzoni mwa VHDL
Haptic Flute Mwalimu: Hatua 10
![Haptic Flute Mwalimu: Hatua 10 Haptic Flute Mwalimu: Hatua 10](https://i.howwhatproduce.com/images/006/image-15234-14-j.webp)
Haptic Flute Mwalimu: Je! Umewahi kuchoka kusahau vidole juu ya gorofa B ya juu na kujiaibisha mbele ya washiriki wenzako wa bendi? Hapana? Mimi pekee? Vizuri kunisaidia kukariri vidole vyangu vya filimbi (badala ya kufanya mazoezi), nilijenga Mwalimu wa Haptic Flute ili anisaidie
RFID Mwalimu - Educacción: 3 Hatua
![RFID Mwalimu - Educacción: 3 Hatua RFID Mwalimu - Educacción: 3 Hatua](https://i.howwhatproduce.com/images/001/image-1553-47-j.webp)
RFID Educator - Educacción: Kujifunza kwa vitendo ni tofauti ya kufundisha ambayo huleta darasani seti ya mikakati ya maana ya ufundishaji; ili kutafuta kwamba mwanafunzi agundue maarifa Kupitia mwingiliano na vitu vya kujifunza, tunaunda mfumo wa media titika ambao
Mwalimu Splice ya waya iliyokamilika kila wakati: Hatua 7 (na Picha)
![Mwalimu Splice ya waya iliyokamilika kila wakati: Hatua 7 (na Picha) Mwalimu Splice ya waya iliyokamilika kila wakati: Hatua 7 (na Picha)](https://i.howwhatproduce.com/preview/how-and-what-to-produce/10963678-master-a-perfect-inline-wire-splice-everytime-7-steps-with-pictures-j.webp)
Buni Splice ya waya iliyokamilika kila wakati: Katika mafunzo haya nitakufundisha jinsi ya kutengeneza laini kamili ya waya iliyowekwa ndani, kila wakati Je! Ni kipande cha ndani? Naam, ikiwa unafanya kazi na aina yoyote ya wiring umeme, na unahitaji kujiunga na vipande 2 vya waya una chaguo 2, pigtail au inlinePigtail s