Mündəricat:
- Addım 1: Modbus TCP Slave Simulatorunu yükləyin və işə salın
- Addım 2: Kompüterinizi Cihaza Bağlanmağa Hazırlayın
- Addım 3: Cihazı hazırlayın və ona qoşulun
- Addım 4: Modbus Master Kitabxanasını yükləyin
- Addım 5: Şəbəkəyə qoşulun
- Addım 6: Modbus Slave ilə Əlaqəni Başlayın
- Addım 7: Qeydləri oxuyun və yazın
Video: ESP32 Modbus Master TCP: 7 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu sinifdə ESP32 prosessorunu Modbus TCP Master olaraq proqramlaşdıracaqsınız.
Bu prosessoru ehtiva edən iki cihazdan istifadə edəcəyik: Moduino ESP32 və Pycom. Hər iki cihaz MicroPytthon mühitində işləyir. Modbus Slave, üzərində işləyən Modbus simulator proqramı olan bir kompüter olacaq.
Sizə lazım olacaq:
- Moduino ESP32 və ya Moduino Pycom cihazı (Moduino ESP32 cihazı haqqında daha çox məlumat əldə etmək üçün bu veb saytını yoxlayın və Pycom cihazını yoxlayın)
- Linux əməliyyat sistemi olan kompüter
- Kompüterinizdəki RS-232/RS-485 portu və ya USB-dən RS-232/RS-485 çeviricisi
Addım 1: Modbus TCP Slave Simulatorunu yükləyin və işə salın
Modbus Slave simulatorunu https://www.modbusdriver.com/diagslave.html saytından yükləyin. Sonra Linux əməliyyat sistemi üçün yüklənmiş arxivi açın və paketdən çıxarın.
Proqramı -p argumenti ilə konsoldan işə salın:
./diagslave -p
Modbus Slave serverinin işləyəcəyi bir limandır. Modbus protokolu üçün standart olaraq 502 -dir, ancaq başqa birini istifadə edə bilərsiniz.
Linux -da 1024 -dən aşağı olan portlar adi istifadəçidən işləyən proqramlar tərəfindən istifadə edilə bilməz (kök imtiyazları deyil).
Hansı portdan istifadə etdiyinizi xatırlayın. Bu dəyər daha sonra lazım olacaq.
Addım 2: Kompüterinizi Cihaza Bağlanmağa Hazırlayın
Cihazla əlaqə qurmaq və ona fayl göndərmək üçün bəzi proqramlara ehtiyacınız olacaq.
Python mühitini və pipini quraşdırın (yoxsa):
apt-get python3 quraşdırın
apt-get install python3-dev curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python3 get-pip.py
Picocom quraşdırın:
apt-get picocom qurun
Bu proqram cihaza qoşulmaq və üzərindəki əmrləri yerinə yetirmək üçün lazımdır.
pip mpfshell qurun
Bu proqram faylları cihaza göndərməyə imkan verir.
Mənbə formalarından da quraşdıra bilərsiniz. Bu səhifəyə baxın:
Addım 3: Cihazı hazırlayın və ona qoşulun
Moduino və ya Pycom cihazını PC-yə bağlamaq üçün RS-232/RS-485 portuna və ya çeviriciyə ehtiyacınız var. Cihazınızın versiyasını (istifadə etdiyi port tipini) yoxlayın və uyğun port və ya çeviricini tapın.
- Cihazı PC -yə qoşun
- Sonra ona enerji təchizatı bağlayın
Cihazı PC -yə qoşun və sonra enerji təchizatı bağlayın. Ethernet kabelini Moduino ESP32 -ə də qoşa bilərsiniz (əgər bu port varsa).
Bağlantı yuxarıdakı fotoşəkillərdəki kimi olmalıdır
Cihaz bağlantısı üçün istifadə olunan port üçün yol tapın, məsələn: /dev /ttyS1, /dev /ttyUSB0.
USB çeviriciləri üçün yol USB sözünü ehtiva edir.
Picocom proqramı ilə cihaza qoşula bilərsiniz:
picocom /dev /ttyUSB0 -b 115200
Cihazın əmr istəyi aşağıdakı şəkillərdən birinə bənzəyir.
Moduino ESP32: Bura baxın
Moduino Pycom: Bura baxın
Addım 4: Modbus Master Kitabxanasını yükləyin
github.com/pycom/pycom-modbus/ Modbus Slave ilə ünsiyyət qurmaq üçün müvafiq kitabxanaya ehtiyacınız var. Pycom üçün kitabxanalar Moduino ilə uyğun gəlmir. Cihazınıza uyğun olan təlimatları yoxlayın.
Fayl göndərməzdən əvvəl picocomu bağlayın: Ctrl+A və sonra Ctrl+X düymələrini basın.
Moduino ESP32 üçün uModBus kitabxanası, Moduino Pycom üçün pycom-modbus kitabxanasına əsaslanır. Adi ESP32 cihazında işləmək üçün dəyişdirildi. Bağlayıcı siniflər üçün əlavə yaxın () üsulları da var.
1) Moduino ESP32
Kitabxananı https://github.com/techbase123/micropython-modbus saytından yükləyin. Arxivi açın və bütün 4 faylı Moduino cihazına göndərin.
Yükləmək üçün mpfshell istifadə edin. Bu proqramı həmin fayllarla birlikdə qovluqda işlədin.
İcra edərək cihaza qoşulun: BU
ttyUSB0, cihazın qoşulduğu serial portun adıdır.
Kataloqu /flash /lib olaraq dəyişdirin:
cd /flash /lib
Bütün faylları əmrlərlə yerləşdirin:
uModBusConst.py qoyun
uModBusFunctions.py qoy uModBusTCP.py qoy uModBusSerial.py qoy
NÜMUNƏ
Sonra çıxış əmri ilə konsoldan çıxın və sıfırlama düyməsini istifadə edərək cihazı yenidən başladın.
2) Moduino Pycom
Kitabxananı https://github.com/pycom/pycom-modbus/ saytından yükləyin. Arxivi açın və uModbus kataloqunun məzmununu cihaza göndərin. Yükləmək üçün mpfshell istifadə edin. Bu proqramı həmin fayllarla birlikdə qovluqda işlədin.
İcra edərək cihaza qoşulun:
ttyUSB0 açın
ttyUSB0, cihazın qoşulduğu serial portun adıdır.
Kataloqu /flash /lib olaraq dəyişdirin, uModbus qovluğu yaradın və əmrlərlə daxil edin:
cd /flash /libmd uModbus cd uModbus
Bütün faylları əmrlərlə yerləşdirin:
const.py qoyun
function.py qoyun tcp.py serial.py qoyun
Sonra çıxış əmri ilə konsoldan çıxın və sıfırlama düyməsini istifadə edərək cihazı yenidən başladın.
NÜMUNƏ
Addım 5: Şəbəkəyə qoşulun
Bağlantı qurmaq əmrləri Moduino və Pycom arasında fərqlənir.
Uyğun əmrləri yerinə yetirmək üçün picocom ilə cihaza qoşulun. Moduino cihazını tel və ya simsiz şəbəkəyə qoşa bilərsiniz. Aşağıdakı nümunələr şəbəkənizin DHCP serverinin işlədiyini güman edir.
Digər hallarda, cihaz IP ünvanı almır. Wi -Fi dəstəyi hər Moduinoda mövcuddur. Ethernet portu bir seçimdir və bütün cihazlarda yoxdur.
1) Moduino ESP32
WiFi -yə qoşulur
Cihazda aşağıdakı əmrləri yerinə yetirin:
netWiFi idxalından netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()
ESSID -i WiFi şəbəkənizin adı ilə, PASS -ı isə parolunuzla əvəz edin.
Start () icra etdikdən bir müddət sonra cihazınıza təyin edilmiş bir IP ünvanı almalısınız.
Ethernet şəbəkəsinə qoşulur
Ethernet kabeli ilə cihazı simli şəbəkəyə qoşun.
Sonra aşağıdakı əmrləri yerinə yetirin:
netETH idxalından netETHeth = netETH () eth.start ()
Start () icra etdikdən bir müddət sonra cihazınıza təyin edilmiş IP ünvanını almalısınız.
2) Moduino Pycom
WiFi -yə qoşulun
Cihazda aşağıdakı əmrləri yerinə yetirin:
şəbəkə idxalından WLANwlan = WLAN (mode = WLAN. STA) ağlar = wlan.scan () şəbəkələrdə şəbəkə üçün: əgər net.ssid == 'ESSID': çap etsəniz ('Şəbəkə tapıldı!') wlan.connect (net.ssid), auth = (net.sec, 'PASS'), zaman aşımı = 5000) wlan.isconnected () deyilkən: machine.idle () print ('WLAN bağlantısı uğurlandı!') fasilə
ESSID -i WiFi şəbəkənizin adı ilə, PASS -ı isə parolunuzla əvəz edin.
Addım 6: Modbus Slave ilə Əlaqəni Başlayın
Modbus Master kitabxanaları hər iki cihaz üçün oxşardır
Başlanğıcda fərqlənirlər.
1) Moduino ESP32 -də uModBus -u işə salın
İcra etmək:
uModBusTCP -dən uModBusTCP -ni TCP olaraq idxal edin
2) Pycom -da uModBus -u işə salın
İcra etmək:
uModbus.tcp -dən TCP idxal edin
Açıq əlaqə
Sonra əlaqəni açın:
modbus = TCP ('IP', PORT, 60)
harada:
- Modbus Slave simulyatoru ilə kompüterinizin IP ünvanı
- PORT - Modbus Slave limanı
- 60 bir fasilədir
Oxuma/yazma əmrlərini yerinə yetirərkən aşağıdakı səhv baş verərsə: NÜMUNƏ
icra etmək:
Moduino ESP32 üçün:
modbus.close ()
Moduino Pycom üçün:
modbus._sock.close ()
və sonra əlaqəni yenidən qurun:
modbus = TCP ('IP', PORT, 60)
Əlaqəni yenidən yaratmadan əvvəl yuvanı bağlamaq vacibdir. Cihazın mövcud yuva bağlantısı məhduddur.
Addım 7: Qeydləri oxuyun və yazın
Modbus, qeydləri oxumaq və yazmaq üçün bir neçə funksiyanı dəstəkləyir.
uModBus kitabxanasının hər bir funksiya üçün metodu var:
- read_coils
- oxunan_fərqli_ girişlər
- read_holding_registers
- read_input_registers
- yazmaq_tək_bucaq
- yaz_single_register
Əvvəlcə bəzi dəyərləri yazaq.
1) Bobinlər yazın (funksiya: 5)
Kölə 1 -dən 200 qeydiyyata 1 dəyər yazın:
modbus.write_single_coil (1, 200, 0xFF00)
İlk arqument qul kimliyi üçündür, bizim vəziyyətimizdə 1.
İkincisi, qeyd nömrəsi və susuzluq bir dəyərdir. 1 üçün bura 0xFF00 qoymalısınız. Kölə 1 -dən 0 -a 201 qeydiyyat yazın:
modbus.write_single_coil (1, 201, 0)
Bu üsul yalnız boolean dəyərləri yazmağa imkan verir: 0 və ya 1.
2) Qeydlər yazın (funksiya: 6)
İndi bir neçə registrə bəzi tam ədədlər yazın.
Kölə 1 -dən 100 qeydiyyatdan keçmək üçün imzalanmış 111 dəyər yazın:
modbus.write_single_register (1, 100, 111, Doğru)
Birinci arqument kölə id, ikinci qeyd nömrəsi, üçüncüsü isə yeni dəyərdir. Varsayılan dəyər doğrudur. Bunu təyin etmək lazım deyil.
Kölə 1 -dən 101 qeydiyyata imzalı -457 dəyər yazın:
modbus.write_single_register (1, 101, -457)
Kölə 3 -dən 100 qeydiyyata imzasız 50 dəyər yazın:
modbus.write_single_register (3, 100, 50, False)
Bu üsul, tam ədədlərin tək qeydə yazılmasına imkan verir.
Tək reyestrdə 16 bit dəyər ola bilər.
Metod giriş dəyərinin doğru olduğunu, doğru olmadıqda doğru olduğunu qaytarır. Dəyər etibarsız olsa belə yazılır (qeyd üçün çox böyükdür)
3) Bobinləri/diskret girişləri oxuyun
İndi yazılmış boolean dəyərləri oxuyaq. Oxuma coil funksiyası 1 olan registri oxumaq üçün icra edin:
modbus.read_coils (slaveId, qeydiyyatdan keç, say) [0: say]
2 funksiyası olan qeyd oxumaq üçün diskret girişi oxuyun:
modbus.read_discrete_inputs (slaveId, qeydiyyatdan keç, say) [0: count]
harada:
- slave -id - virtual qulun identifikatoru (Slave simulator bütün etibarlı idləri qəbul edir)
- Qeydiyyat - oxumaq üçün qeydiyyat nömrəsi
- say - oxunacaq qeydlərin sayı (hər iki yerə istədiyiniz məbləği qoyun)
Bu üsullar, boolean dəyərləri olan bir sıra qaytarır. Hər bir dəyər hər bir reyestrə uyğun gəlir.
Fraqment: [0: count] lazımdır, çünki bu metod saymaqdan daha çox dəyər qaytarır. Həmişə 8 -ə bölünən dəyərlərin miqdarını qaytarır. Əlavə dəyərlər Yanlışdır və heç bir reyestrə uyğun gəlmir.
Hər iki üsulla boolean dəyərlərimizi oxuyun:
modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_inputs (1, 200, 2) [0: 2]
Nəticə belə olacaq: NÜMUNƏ
Doğru 1 dəyərə, Yanlış 0 -a aiddir.
4) Qeydləri oxuyun
İndi 6 funksiyası ilə yazılmış qeydlərdən dəyərləri oxuyun.
3 funksiyası olan qeydləri oxumaq üçün qeyd qeydlərini oxumaq üçün icra edin:
modbus.read_holding_registers (slaveId, qeydiyyatdan keç, say, imzalanmış = Doğru)
4 funksiyası olan qeyd qeydlərini oxumaq üçün giriş qeydlərini oxuyun:
modbus.read_input_registers (slaveId, qeydiyyatdan keç, say, imzalanmış = Doğru)
harada:
- slave -id - virtual qulun id
- Qeydiyyat - oxumaq üçün qeydiyyat nömrəsi
- count - oxunacaq qeydlərin sayı
- imzalanmış - oxunan dəyərlərin imzalı nömrələr kimi qəbul edilməli olub -olmadığını göstərir. Varsayılan vəziyyət: Doğrudur
Qayıdış dəyəri, istədiyiniz miqdarda qeydləri olan bir dəstədir.
Əvvəlki nöqtədə qurulmuş qeydləri oxuyun:
modbus.read_holding_registers (1, 100, 2, True) modbus.read_input_registers (1, 100, 2, True) modbus.read_holding_registers (3, 100, 1, Yanlış)
Nəticələr bu ekran görüntüsündə olduğu kimi görünməlidir: ÖRNƏK
Növbəti dərsdə ESP32 ilə işləyən cihazda Modbus RTU Master yaratmağı öyrənəcəksiniz.
Tövsiyə:
MODBUS RTU -da Sənaye HMI və Arduinos: 4 Addım
MODBUS RTU -da Sənaye HMI və Arduinos: Bu təlimatda sənaye HMI (COOLMAY MT6070H, 150EUROS), Arduino CLONE DIY (10EUROS) və Arduino UNO (10EUROS) arasındakı əlaqə nümunəsini təsvir edəcəyəm. Şəbəkə xüsusi və sağlam və sənaye protosu altında işləyəcək
Arduino və Sənaye Cihazları Arasında Modbus TCP Əlaqəsi: 3 Addım
Arduino və Sənaye Cihazları Arasında Modbus TCP Əlaqəsi: Sənaye HMI ilə bir Arduino lövhəsini idarə etməyin və bir Modbus TCP əlaqəsi olan bir sənaye şəbəkəsinə bağlamağın sənaye yolu
ESP32 ilə işə başlayın - Arduino IDE -də ESP32 lövhələrinin quraşdırılması - ESP32 Blink Kodu: 3 addım
ESP32 ilə işə başlayın | Arduino IDE -də ESP32 lövhələrinin quraşdırılması | ESP32 Blink Kodu: Bu təlimatlarda esp32 ilə işləməyə necə başlayacağımızı və esp32 lövhələrini Arduino IDE -yə necə quracağımızı görəcəyik və arduino ide istifadə edərək yanıb -sönmə kodunu işə salmaq üçün esp 32 -ni proqramlaşdıracağıq
GPRS üzərindən TCP/IP Bağlantısı: SIM900A Modulundan istifadə edərək məlumatları serverə necə göndərmək olar: 4 addım
GPRS üzərindən TCP/IP Bağlantısı: SIM900A Modulundan istifadə edərək Məlumatları Serverə Necə Göndərmək olar: Bu təlimatda sizə sim900 modulundan istifadə edərək məlumatları TCP serverinə necə göndərəcəyiniz barədə məlumat verəcəyəm. Serverdən müştəriyə məlumatı necə ala biləcəyimizi də görəcəyik (GSM modulu)
Metr PZEM-004 + ESP8266 və Platform IoT Node-RED & Modbus TCP/IP: 7 addım
Metr PZEM-004 + ESP8266 və Platforma IoT Node-QIRMIZI & Modbus TCP/IP: Bu fürsətdə aktiv güc sayğacımızı və ya elektrik istehlakımızı Pzem-004-Peacefair əvvəlki dərslərdə istifadə olunan IoT Node-RED inteqrasiya platforması ilə birləşdirəcəyik. daha sonra Modbus TCP / IP qulu olaraq konfiqurasiya edilmiş bir ESP8266 modulundan istifadə edəcəyik