Konfigurasi Modbus TCP Antara ESP32 (Server) dan Modbus Client (ModbusPoll) dengan Panduan Step-by-Step.


Pendahuluan

Modbus TCP adalah protokol komunikasi berbasis Ethernet yang banyak digunakan dalam sistem automasi industri dan IoT. Berbeda dengan Modbus RTU yang menggunakan port serial, Modbus TCP memanfaatkan jaringan TCP/IP untuk mengirimkan data. Dalam praktikum ini, Anda akan mempelajari cara mengkonfigurasi ESP32 sebagai Modbus Server dan berkomunikasi dengan software ModbusPoll sebagai Modbus Client.


Teori Dasar Modbus TCP

1. Apa Itu Modbus TCP?

Modbus TCP adalah varian Modbus yang berjalan di atas protokol TCP/IP. Protokol ini menggunakan port 502 sebagai default dan tidak memerlukan checksum seperti Modbus RTU karena keamanan data dijamin oleh lapisan TCP.

2. Komponen Modbus TCP

  • Client: Mengirim permintaan (request) untuk membaca/menulis data (contoh: ModbusPoll, PLC).
  • Server: Merespons permintaan client dengan mengirimkan data (contoh: ESP32, sensor).

3. Keunggulan Modbus TCP

  • Kompatibel dengan jaringan LAN/Wi-Fi.
  • Mendukung komunikasi multi-device.
  • Cocok untuk aplikasi IoT berbasis ESP32/ESP8266.

Alat dan Bahan

  1. ESP32 (dengan kabel USB).
  2. Software ModbusPoll (Modbus Client: Download di sini).
  3. Arduino IDE (terinstall library ModbusServer dari emelianov).
  4. Jaringan Wi-Fi (untuk koneksi ESP32 dan PC).
  5. Kabel jumper (opsional untuk sensor tambahan).

Langkah Praktikum

1. Instalasi Library Modbus pada Arduino IDE

  • Buka Arduino IDE, lalu instal library:
    Sketch > Include Library > Manage Libraries > Cari “modbus-esp8266”

2. Konfigurasi ESP32 sebagai Modbus Server

  • Sambungkan ESP32 ke PC via USB.
  • Upload kode berikut ke ESP32:
    #include <WiFi.h>
    
    #include <ModbusIP_ESP8266.h>
    
    // Konfigurasi WiFi
    
    const char* ssid = "NAMA_WIFI";     // Ganti dengan SSID Wi-Fi
    
    const char* password = "PASSWORD"; // Ganti dengan password Wi-Fi
    
    // Inisialisasi Modbus
    
    ModbusIP mb;  
    
    void setup() {
    
        Serial.begin(115200);
    
       
    
        // Koneksi ke WiFi
    
        WiFi.begin(ssid, password);
    
        Serial.print("Menghubungkan ke WiFi");
    
        while (WiFi.status() != WL_CONNECTED) {
    
            delay(500);
    
            Serial.print(".");
    
        }
    
        Serial.println("\nTerhubung!");
    
        Serial.print("ESP32 Modbus Server IP: ");
    
        Serial.println(WiFi.localIP());
    
        // Tambahkan Holding Register (Alamat 0-9)
    
        for (int i = 0; i < 10; i++) {
    
            mb.addHreg(i);
    
        }
    
    }
    
    void loop() {
    
        mb.task();  // Proses komunikasi Modbus TCP
    
       
    
        // Simulasi perubahan data pada Holding Register
    
        for (int i = 0; i < 10; i++) {
    
            mb.Hreg(i, random(100, 1000));
    
        }
    
       
    
        delay(1000);
    
    }

3. Konfigurasi ModbusPoll sebagai Client

  1. Buka ModbusPoll.
  2. Klik File > New dan pilih TCP/IP.
  3. Isi parameter:
    • IP Address: Masukkan alamat IP ESP32 (lihat di Serial Monitor).
    • Port: 502.
    • Function: 03 (Read Holding Registers).
    • Address: 0.
    • Quantity: 10.
  4. Klik OK dan mulai polling dengan menekan F2.

4. Verifikasi Komunikasi

  • Jika berhasil, ModbusPoll akan menampilkan data acak dari ESP32 di jendela register.
  • Pantau log komunikasi di View > Communication Traffic.

Tugas dan Evaluasi

  1. Ubah Function Code ke 06 (Write Single Register) dan coba tulis nilai ke alamat 40001.
  2. Jelaskan perbedaan respon antara Function 03 dan 06!
  3. Apa yang terjadi jika alamat IP ESP32 dan PC tidak dalam jaringan yang sama?
  4. modifikasi program supaya modbus bisa saling write and read

Analisis Error & Troubleshooting

  • Timeout: Pastikan ESP32 dan PC terhubung ke Wi-Fi yang sama.
  • Connection Refused: Cek firewall atau pastikan port 502 tidak diblokir.
  • Data Tidak Terbaca: Verifikasi alamat register dan konfigurasi library Modbus.

Kesimpulan

Modbus TCP memungkinkan ESP32 berintegrasi dengan sistem industri berbasis Ethernet/Wi-Fi. Dengan library ModbusServer, ESP32 dapat berperan sebagai server yang efisien untuk aplikasi IoT seperti monitoring sensor atau kontrol perangkat.

Ads Jadwal Training bisaioti Offline
NoMateriTanggalWaktuHargaLokasiViewAction
1IOT PLC SCADA Siemens7-8 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
2IOT PLC SCADA Omron14 - 15 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
3IOT PLC SCADA Schneider21-22 Juni 202508.00 -16.002000000SurabayaSilabusDaftar Sekarang
4IOT PLC SCADA Allen Bradley28-29 Juni 202508.00-16.002000000SurabayaSilabusDaftar Sekarang

FAQ (Pertanyaan Umum)

Q: Apa perbedaan Modbus TCP dan RTU?
A: Modbus RTU menggunakan port serial (RS485/RS232) dengan checksum CRC, sedangkan Modbus TCP menggunakan jaringan TCP/IP tanpa checksum.

Q: Bisakah ESP32 menjadi Modbus Client?
A: Ya, gunakan library ModbusClient dan konfigurasi alamat IP server.

Q: Bagaimana cara membaca input register di ESP32?
A: Tambahkan registerInputRegisters() pada kode dan gunakan Function 04 di ModbusPoll.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Daftar Sekarang