
Isi kandungan:
- Langkah 1: Muat turun dan Mulakan Modbus TCP Slave Simulator
- Langkah 2: Sediakan Komputer Anda untuk Menyambung ke Peranti
- Langkah 3: Sediakan Peranti dan Sambungkannya
- Langkah 4: Muat naik Modbus Master Library
- Langkah 5: Sambungkan ke Rangkaian
- Langkah 6: Permulaan Komunikasi Dengan Modbus Slave
- Langkah 7: Baca dan Tulis Daftar
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01

Di kelas ini, anda akan memprogram pemproses ESP32 menjadi Modbus TCP Master.
Kami akan menggunakan dua peranti, yang mengandungi pemproses ini: Moduino ESP32 dan Pycom. Kedua-dua peranti ini berjalan di persekitaran MicroPytthon. Modbus Slave kami akan menjadi komputer PC dengan perisian simulator Modbus berjalan di atasnya.
Anda perlu:
- Moduino ESP32 atau peranti Moduino Pycom (semak laman web ini untuk mengetahui lebih lanjut mengenai peranti Moduino ESP32 dan ini untuk memeriksa peranti Pycom)
- PC dengan sistem operasi Linux
- Port RS-232 / RS-485 di komputer anda atau penukar USB ke RS-232 / RS-485
Langkah 1: Muat turun dan Mulakan Modbus TCP Slave Simulator

Muat turun simulator Modbus Slave dari https://www.modbusdriver.com/diagslave.html. Kemudian buka arkib yang dimuat turun dan bongkar versi untuk sistem operasi Linux.
Jalankan program dari konsol dengan argumen -p:
./diagslave -p
adalah port di mana pelayan Modbus Slave akan berfungsi. Untuk protokol Modbus secara lalai 502, tetapi anda boleh menggunakan yang lain.
Di port Linux di bawah 1024 tidak dapat digunakan oleh program yang dijalankan dari pengguna biasa (bukan hak root).
Ingat port yang anda gunakan. Nilai ini akan diperlukan kemudian.
Langkah 2: Sediakan Komputer Anda untuk Menyambung ke Peranti

Anda memerlukan beberapa program untuk membuat sambungan ke peranti dan menghantar fail ke dalamnya.
Pasang persekitaran dan pip Python (jika anda tidak memilikinya):
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
Pasang picocom:
apt-get pasang picocom
Program ini diperlukan untuk menyambung ke peranti dan melaksanakan perintah padanya. Pasang mpfshell:
memasang pip mpfshell
Program ini membolehkan anda menghantar fail ke peranti.
Anda juga boleh memasangnya dari sumber sumber. Rujuk halaman ini:
Langkah 3: Sediakan Peranti dan Sambungkannya



Untuk menyambungkan peranti Moduino atau Pycom ke PC, anda memerlukan port atau penukar RS-232 / RS-485. Periksa versi peranti anda (jenis port yang digunakannya) dan cari port atau penukar yang sesuai.
- Sambungkan peranti ke PC
- Kemudian sambungkan bekalan kuasa kepadanya
Sambungkan peranti ke PC dan kemudian sambungkan bekalan kuasa ke dalamnya. Anda juga boleh menyambungkan kabel ethernet ke Moduino ESP32 (jika ia mempunyai port tersebut).
Sambungan harus seperti pada gambar di atas
Cari jalan untuk port, yang digunakan untuk sambungan peranti. Contohnya: / dev / ttyS1, / dev / ttyUSB0.
Untuk penukar usb, jalan akan mengandungi perkataan USB.
Anda boleh menyambung ke peranti dengan program picocom:
picocom / dev / ttyUSB0 -b 115200
Perintah arahan peranti kelihatan serupa dengan salah satu gambar berikut.
Moduino ESP32: Lihat di sini
Moduino Pycom: Lihat di sini
Langkah 4: Muat naik Modbus Master Library

github.com/pycom/pycom-modbus/Untuk berkomunikasi dengan Modbus Slave, anda memerlukan perpustakaan yang sesuai. Perpustakaan untuk Pycom tidak serasi dengan Moduino. Periksa arahan yang sesuai dengan peranti anda.
Tutup picocom sebelum menghantar fail: tekan Ctrl + A dan kemudian kekunci Ctrl + X.
Perpustakaan uModBus untuk Moduino ESP32 mendasarkan perpustakaan pycom-modbus untuk Moduino Pycom. Ia diubahsuai untuk berfungsi pada peranti ESP32 biasa. Ia juga mempunyai kaedah tutup () tambahan untuk kelas penyambung.
1) Moduino ESP32
Muat turun perpustakaan dari https://github.com/techbase123/micropython-modbus. Buka bungkusan arkib dan hantarkan semua 4 fail ke peranti Moduino.
Gunakan mpfshell untuk memuat naiknya. Jalankan program ini dalam direktori dengan fail tersebut.
Sambungkan ke peranti dengan melaksanakan: INI
ttyUSB0 adalah nama port bersiri tempat peranti disambungkan.
Tukar direktori ke / flash / lib dengan arahan:
cd / flash / lib
Letakkan semua fail dengan arahan:
letakkan uModBusConst.py
meletakkan uModBusFunctions.py meletakkan uModBusTCP.py meletakkan uModBusSerial.py
CONTOH
Kemudian keluar konsol dengan perintah keluar dan mulakan semula peranti dengan butang Reset.
2) Moduino Pycom
Muat turun perpustakaan dari https://github.com/pycom/pycom-modbus/. Buka bungkusan arkib dan hantar kandungan direktori uModbus ke peranti. Gunakan mpfshell untuk memuat naiknya. Jalankan program ini dalam direktori dengan fail tersebut.
Sambungkan ke peranti dengan melaksanakan:
buka ttyUSB0
ttyUSB0 adalah nama port bersiri tempat peranti disambungkan.
Tukar direktori ke / flash / lib, buat direktori uModbus dan masukkan dengan arahan:
cd / flash / libmd uModbus cd uModbus
Letakkan semua fail dengan arahan:
letakkan const.py
meletakkan functions.py meletakkan tcp.py meletakkan serial.py
Kemudian keluar konsol dengan perintah keluar dan mulakan semula peranti dengan butang Reset.
CONTOH
Langkah 5: Sambungkan ke Rangkaian

Perintah untuk mewujudkan hubungan berbeza antara Moduino dan Pycom.
Sambungkan ke peranti dengan picocom untuk melaksanakan perintah yang sesuai. Anda boleh menyambungkan peranti Moduino ke rangkaian melalui wayar atau tanpa wayar. Contoh berikut menganggap bahawa rangkaian anda mempunyai pelayan DHCP yang berfungsi.
Dalam kes lain, peranti tidak akan mendapat alamat IP. Sokongan WiFi tersedia di setiap Moduino. Port Ethernet adalah pilihan dan tidak semua peranti memilikinya.
1) Moduino ESP32
Menyambung ke WiFi
Jalankan arahan berikut pada peranti:
dari netWiFi import netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()
Gantikan ESSID dengan nama rangkaian WiFi anda, dan LULUS dengan kata laluannya.
Setelah beberapa lama selepas menjalankan permulaan () anda harus mendapatkan alamat IP yang diberikan ke peranti anda.
Menyambung ke rangkaian Ethernet
Sambungkan peranti ke rangkaian berwayar dengan kabel ethernet.
Kemudian jalankan arahan berikut:
dari netETH import netETHeth = netETH () eth.start ()
Setelah beberapa lama selepas menjalankan permulaan () anda harus mendapatkan alamat IP yang diberikan ke peranti anda.
2) Moduino Pycom
Sambungkan ke WiFi
Jalankan arahan berikut pada peranti:
dari rangkaian import WLANwlan = WLAN (mode = WLAN. STA) jaring = wlan.scan () untuk jaring dalam jaring: if net.ssid == 'ESSID': print ('Network found!') wlan.connect (net.ssid, auth = (net.sec, 'PASS'), timeout = 5000) sementara tidak wlan.isconnected (): machine.idle () print ('Sambungan WLAN berjaya!') rehat
Gantikan ESSID dengan nama rangkaian WiFi anda, dan LULUS dengan kata laluannya.
Langkah 6: Permulaan Komunikasi Dengan Modbus Slave

Perpustakaan Modbus Master serupa untuk kedua-dua peranti
Mereka berbeza-beza dalam permulaan.
1) Permulaan uModBus pada Moduino ESP32
Laksanakan:
dari uModBusTCP import uModBusTCP sebagai TCP
2) Permulaan uModBus di Pycom
Laksanakan:
dari uModbus.tcp import TCP
Buka sambungan
Kemudian buka sambungan dengan:
modbus = TCP ('IP', PORT, 60)
di mana:
- Alamat IP - ip PC anda dengan simulator Modbus Slave
- PELABUHAN - pelabuhan Modbus Slave
- 60 adalah tamat masa
Sekiranya kesalahan berikut berlaku semasa melaksanakan arahan membaca / menulis: CONTOH
laksanakan:
untuk Moduino ESP32:
modbus.close ()
untuk Moduino Pycom:
modbus._sock.close ()
dan buat semula sambungan:
modbus = TCP ('IP', PORT, 60)
Ini penting untuk menutup soket sebelum membuat sambungan. Peranti mempunyai jumlah sambungan soket yang tersedia.
Langkah 7: Baca dan Tulis Daftar

Modbus menyokong beberapa fungsi untuk membaca dan menulis daftar.
Perpustakaan uModBus mempunyai kaedah untuk setiap fungsi:
- read_coils
- read_discrete_inputs
- read_holding_registers
- baca_input_register
- tulis_single_coil
- tulis_single_register
Pertama, mari tuliskan beberapa nilai.
1) Tulis gegelung (func: 5)
Tulis 1 nilai hingga 200 daftar dari hamba 1:
modbus.write_single_coil (1, 200, 0xFF00)
Hujah pertama adalah untuk id hamba, dalam kes kita 1.
Yang kedua ialah nombor pendaftaran dan nilai adalah nilai. Untuk 1 anda mesti meletakkan 0xFF00 di sini. Tulis 0 hingga 201 daftar dari hamba 1:
modbus.write_single_coil (1, 201, 0)
Kaedah ini membenarkan menulis nilai boolean sahaja: 0 atau 1.
2) Tulis daftar (fungsi: 6)
Sekarang tuliskan beberapa nilai integer ke beberapa daftar.
Tuliskan nilai 111 yang ditandatangani untuk mendaftarkan 100 dari hamba 1:
modbus.write_single_register (1, 100, 111, Betul)
Argumen pertama adalah id hamba, nombor pendaftaran kedua dan ketiga adalah nilai baru. Argumen terakhir menentukan apakah nilai harus ditetapkan sebagai nombor yang ditandatangani. Nilai lalai untuknya adalah Benar. Anda tidak perlu menetapkannya.
Tuliskan nilai -457 yang ditandatangani ke 101 daftar dari hamba 1:
modbus.write_single_register (1, 101, -457)
Tulis nilai 50 yang tidak ditandatangani hingga 100 daftar dari hamba 3:
modbus.write_single_register (3, 100, 50, Salah)
Kaedah ini membolehkan menulis nilai integer ke daftar tunggal.
Daftar tunggal boleh mengandungi nilai 16 bit.
Kaedah mengembalikan Benar adalah nilai input adalah sah dan Salah jika tidak. Nilai ditulis walaupun tidak sah (terlalu besar untuk mendaftar)
3) Baca gegelung / input diskrit
Sekarang mari baca nilai boolean yang ditulis. Untuk membaca daftar dengan gegelung fungsi 1, jalankan:
modbus.read_coils (slaveId, register, count) [0: hitung]
Untuk membaca daftar dengan fungsi 2 membaca input diskrit, jalankan:
modbus.read_discrete_inputs (slaveId, register, count) [0: hitung]
di mana:
- slave-id - id hamba maya (simulator Slave menerima semua id yang sah)
- daftar - nombor pendaftaran untuk membaca
- kiraan - jumlah daftar yang akan dibaca (masukkan jumlah yang dikehendaki di kedua tempat)
Kaedah ini mengembalikan array dengan nilai boolean. Setiap nilai sesuai dengan setiap daftar.
Fragmen: [0: count] diperlukan, kerana kaedah ini mengembalikan lebih banyak nilai, daripada hitungan. Ia mengembalikan jumlah nilai yang selalu dibahagikan dengan 8. Nilai tambahan adalah Salah dan tidak sesuai dengan daftar apa pun.
Baca nilai boolean kami dengan kedua kaedah:
modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_inputs (1, 200, 2) [0: 2]
Hasilnya akan seperti ini: CONTOH
Benar merujuk kepada 1 nilai, Salah hingga 0.
4) Baca daftar
Sekarang baca nilai dari daftar yang ditulis dengan 6 fungsi.
Untuk membaca register dengan fungsi baca baca 3, jalankan:
modbus.read_holding_registers (slaveId, register, count, ditandatangani = Benar)
Untuk membaca register dengan fungsi input register 4, jalankan:
modbus.read_input_registers (slaveId, register, count, ditandatangani = Benar)
di mana:
- slave-id - id hamba maya
- daftar - nombor pendaftaran untuk membaca
- kiraan - jumlah daftar yang akan dibaca
- ditandatangani - menunjukkan sama ada nilai yang dibaca harus dianggap sebagai nombor yang ditandatangani atau tidak. Keadaan lalai: Benar
Nilai kembali adalah tuple dengan jumlah daftar yang diinginkan.
Baca daftar yang ditetapkan pada titik sebelumnya:
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)
Hasilnya seperti dalam tangkapan skrin ini: CONTOH
Pada pelajaran seterusnya anda akan belajar bagaimana membuat Modbus RTU Master pada peranti berkemampuan ESP32.
Disyorkan:
Gardenduino Aka the Master Master: 4 Langkah

Gardenduino Aka the Garden Master: juga tidak membosankan untuk membersihkan rumput, menyiram tanaman & apa yang tidak! Baik betul berkebun bukan secawan teh saya. jadi memutuskan untuk membuat sistem automatik untuk menjaga kebun saya! Mari kita mulakan
Komunikasi TCP Modbus Antara Peranti Arduino dan Perindustrian: 3 Langkah

Modbus TCP Communication Antara Arduino dan Industrial Devices: Cara industri untuk mengendalikan papan Arduino dengan HMI industri dan menghubungkannya ke rangkaian industri dengan komunikasi Modbus TCP
Bermula dengan ESP32 - Memasang Papan ESP32 di Arduino IDE - Kod Blink ESP32: 3 Langkah

Bermula dengan ESP32 | Memasang Papan ESP32 di Arduino IDE | ESP32 Blink Code: Dalam instruksional ini kita akan melihat bagaimana mula bekerja dengan esp32 dan bagaimana memasang papan esp32 ke Arduino IDE dan kita akan memprogram esp 32 untuk menjalankan blink code menggunakan arduino ide
Sambungan TCP / IP Melalui GPRS: Cara Menghantar Data ke Pelayan Menggunakan SIM900A Modul: 4 Langkah

Sambungan TCP / IP Melalui GPRS: Cara Menghantar Data ke Pelayan Menggunakan SIM900A Modul: Dalam tutorial ini saya akan memberitahu anda tentang cara mengirim data ke pelayan TCP menggunakan modul sim900. Kita juga akan melihat bagaimana kita dapat menerima data dari pelayan ke klien (modul GSM)
Meter PZEM-004 + ESP8266 & Platform IoT Node-RED & Modbus TCP / IP: 7 Langkah

Meter PZEM-004 + ESP8266 & Platform IoT Node-RED & Modbus TCP / IP: Dalam kesempatan ini kami akan menggabungkan meter kuasa aktif atau penggunaan elektrik kami, Pzem-004 - Peacefair dengan platform integrasi IoT Node-RED yang digunakan dalam tutorial sebelumnya, kita akan menggunakan modul ESP8266 yang dikonfigurasi sebagai hamba Modbus TCP / IP, kemudian