Belajar Membangun Jaringan Industri Mini dengan ESP32 sebagai Modbus Server dan Client.

Pendahuluan
Modbus TCP adalah protokol komunikasi berbasis TCP/IP yang banyak digunakan dalam sistem automasi industri untuk menghubungkan perangkat seperti sensor, PLC, dan mikrokontroler. Dalam praktikum ini, Anda akan mengonfigurasi dua ESP32 untuk berkomunikasi secara client-server menggunakan Modbus TCP. Satu ESP32 berperan sebagai Server (penyedia data), dan satu sebagai Client (peminta data). Simulasi ini relevan untuk aplikasi IoT seperti monitoring sensor, kontrol mesin, atau sistem manajemen energi.
Teori Dasar
1. Modbus TCP
- Protokol open-source yang menggunakan port 502 sebagai default.
- Mengirim data dalam format MBAP Header (Modbus Application Header) dan PDU (Protocol Data Unit).
- Tidak memerlukan checksum karena menggunakan lapisan keamanan TCP/IP.
2. Arsitektur Client-Server
- Server (Slave): Menyimpan data di register (holding/input) dan merespons permintaan client.
- Client (Master): Mengirim permintaan (read/write) ke server.
3. ESP32 dalam Jaringan Modbus TCP
- ESP32 mendukung koneksi Wi-Fi dan Ethernet.
- Cocok untuk aplikasi IoT karena hemat daya dan memiliki dual-core.
Alat dan Bahan
- 2 Unit ESP32Â + Kabel USB.
- Jaringan Wi-Fi (pastikan kedua ESP32 terhubung ke jaringan yang sama).
- Arduino IDE (terinstal library ModbusServer dan ModbusClient oleh emelianov).
- Serial Monitor (untuk debugging).
Langkah Praktikum
1. Instalasi Library Modbus
- Buka Arduino IDE.
- Instal library:
- Sketch > Include Library > Manage Libraries.
- Cari “ModbusServer” dan “ModbusClient” (pilih versi terbaru oleh emelianov).
2. Konfigurasi ESP32 sebagai Server
- Upload kode berikut ke ESP32 Server:
#include <WiFi.h> #include <ModbusServer.h> const char* ssid = "NAMA_WIFI"; const char* password = "PASSWORD_WIFI"; ModbusServer mb; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) delay(500); Serial.print("Server IP: "); Serial.println(WiFi.localIP()); // Inisialisasi 10 Holding Registers (alamat 0-9) mb.registerHoldingRegisters(0, 10); mb.start(502); // Port Modbus TCP default } void loop() { // Simulasi data acak di register 0-9 for (int i = 0; i < 10; i++) { mb.Hreg(i, random(100, 1000)); } delay(1000); }
3. Konfigurasi ESP32 sebagai Client
- Upload kode berikut ke ESP32 Client (gantiÂ
SERVER_IP
 dengan alamat IP Server):#include <WiFi.h> #include <ModbusClient.h> const char* ssid = "NAMA_WIFI"; const char* password = "PASSWORD_WIFI"; const char* serverIP = "192.168.1.100"; // Ganti dengan IP Server ModbusClient mb; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) delay(500); Serial.print("Client IP: "); Serial.println(WiFi.localIP()); mb.begin(serverIP, 502); // Koneksi ke server } void loop() { uint16_t data[10]; // Baca 10 Holding Registers dari alamat 0 if (mb.readHoldingRegisters(0, 10, data)) { Serial.println("Data dari Server:"); for (int i = 0; i < 10; i++) { Serial.printf("Register %d: %d\n", i, data[i]); } } else { Serial.println("Gagal membaca data!"); } delay(2000); }
4. Verifikasi Komunikasi
- Buka Serial Monitor untuk kedua ESP32 (baud rate 115200).
- Pada ESP32 Server, catat alamat IP yang ditampilkan.
- Pada ESP32 Client, pastikan alamat IP server sudah benar.
- Jika berhasil, Client akan menampilkan data acak dari Server setiap 2 detik:
Data dari Server: Register 0: 450 Register 1: 789 ...
Tugas dan Evaluasi
- Modifikasi Kode Client untuk menulis data ke Server menggunakan Function 06 (Write Single Register).
- Ubah Jumlah Register yang dibaca dari 10 menjadi 20, lalu analisis waktu respons.
- Jelaskan mengapa Modbus TCP lebih cocok untuk jaringan LAN/Wi-Fi dibandingkan Modbus RTU!
Analisis Error & Solusi
- Timeout:
- Pastikan kedua ESP32 terhubung ke Wi-Fi yang sama.
- Periksa alamat IP Server di kode Client.
- Data Tidak Terbaca:
- Verifikasi inisialisasi register di Server (
registerHoldingRegisters
). - Pastikan library Modbus terinstal dengan benar.
- Verifikasi inisialisasi register di Server (
- Koneksi Terputus:
- Cek stabilitas jaringan Wi-Fi.
- Kurangi jarak antara ESP32 dan router.
Kesimpulan
Dua ESP32 dapat berkomunikasi secara efisien menggunakan Modbus TCP untuk membangun sistem IoT terdistribusi. Protokol ini ideal untuk aplikasi yang memerlukan skalabilitas dan integrasi dengan infrastruktur jaringan modern.
FAQ
Q: Bisakah ESP32 menjadi client dan server secara bersamaan?
A: Tidak, satu ESP32 hanya bisa berperan sebagai client atau server dalam satu waktu.
No | Materi | Tanggal | Waktu | Harga | Lokasi | View | Action |
---|---|---|---|---|---|---|---|
1 | IOT PLC SCADA Siemens | 7-8 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
2 | IOT PLC SCADA Omron | 14 - 15 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
3 | IOT PLC SCADA Schneider | 21-22 Juni 2025 | 08.00 -16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
4 | IOT PLC SCADA Allen Bradley | 28-29 Juni 2025 | 08.00-16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
Q: Bagaimana cara membaca Input Register?
A: Gunakan registerInputRegisters()
 di Server dan Function 04 di Client.
Q: Apa fungsi MBAP Header?
A: MBAP Header berisi informasi transaksi, protokol, dan panjang data untuk sinkronisasi komunikasi.