Modbus merupakan salah satu protokol komunikasi yang dirancang untuk memungkinkan pertukaran data antarperangkat dalam sistem otomasi. Protokol ini dapat digunakan untuk komunikasi perangkat ke perangkat (device-to-device), perangkat ke aplikasi (device-to-application), maupun perangkat ke Human Machine Interface (HMI). Karena sifatnya yang sederhana, terbuka (open protocol), dan mudah diimplementasikan, Modbus telah menjadi standar komunikasi yang banyak digunakan di berbagai sektor industri.
Agar lebih mudah dipahami, bayangkan Modbus sebagai bahasa komunikasi yang digunakan oleh berbagai perangkat elektronik. Sama seperti manusia membutuhkan bahasa agar dapat saling bertukar informasi, perangkat elektronik juga memerlukan protokol komunikasi agar dapat mengirim maupun menerima data dengan format yang sama. Dengan menggunakan Modbus, perangkat dari produsen yang berbeda pun dapat saling berkomunikasi selama sama-sama mendukung protokol tersebut. Secara umum, terdapat dua jenis Modbus yang paling sering digunakan, yaitu:
- Modbus RTU dan Modbus ASCII, yang menggunakan media komunikasi serial seperti RS-232, RS-422, atau RS-485.
- Modbus TCP, yang bekerja melalui jaringan Ethernet maupun WiFi menggunakan protokol TCP/IP.
Masing-masing jenis Modbus memiliki karakteristik yang berbeda. Namun, prinsip komunikasi yang digunakan tetap sama, yaitu proses request dan response antara perangkat yang berkomunikasi.
Baca juga: ESP32 dengan MySQL - Cara Menghubungkan ESP32 ke Database MySQL melalui HTTP/HTTPS
Mengapa Menggunakan Modbus?
Sebelum mempelajari implementasi Modbus pada ESP32, mari kita lihat contoh sederhana berikut. Misalkan terdapat dua buah papan ESP32 yang saling berkomunikasi:
- ESP32 #1 terhubung ke sebuah sakelar (switch).
- ESP32 #2 terhubung ke sebuah LED.
- Kedua ESP32 berada pada lokasi yang berjauhan.
- Ketika sakelar pada ESP32 #1 ditekan, LED pada ESP32 #2 harus menyala.
- Ketika sakelar dilepas atau dimatikan, LED pada ESP32 #2 harus kembali mati.
Cara paling sederhana untuk mewujudkan komunikasi tersebut adalah dengan membuat protokol komunikasi sendiri. Sebagai contoh:
- ESP32 #1 mengirimkan 1 byte data untuk menunjukkan perubahan status sakelar.
- Nilai 1 berarti sakelar dalam kondisi ON.
- Nilai 0 berarti sakelar dalam kondisi OFF.
Sedangkan ESP32 #2 akan membaca data yang diterima, kemudian mengambil tindakan sesuai nilai tersebut:
- Jika menerima nilai 1, maka LED dinyalakan.
- Jika menerima nilai 0, maka LED dimatikan.
Pada contoh sederhana ini, komunikasi terlihat sangat mudah karena hanya melibatkan satu sakelar dan satu LED. Namun, pada sistem yang lebih kompleks akan muncul berbagai kebutuhan tambahan. Misalnya:
- ESP32 #1 ingin mengirim beberapa jenis data sekaligus.
- ESP32 #2 ingin mengetahui status beberapa LED secara bersamaan.
- ESP32 #2 ingin membaca nilai sensor yang berada pada ESP32 #1.
- ESP32 #2 ingin mengendalikan beberapa output pada ESP32 #1.
- Terdapat lebih dari dua perangkat yang saling berkomunikasi.
- Sistem memerlukan mekanisme deteksi kesalahan (error checking) agar data yang diterima tetap akurat.
Jika setiap proyek membuat protokol komunikasinya sendiri, maka perangkat dari sistem yang berbeda akan sulit saling berkomunikasi. Selain itu, proses pengembangan juga menjadi lebih rumit karena setiap protokol harus dirancang, diuji, dan dipelihara secara terpisah. Di sinilah Modbus memberikan solusi. Modbus menyediakan standar komunikasi yang telah digunakan secara luas sehingga setiap perangkat tidak perlu lagi membuat format komunikasi dari awal. Selama perangkat mendukung protokol Modbus, keduanya dapat saling bertukar data dengan mekanisme komunikasi yang telah ditetapkan. Beberapa keuntungan menggunakan protokol Modbus antara lain:
- Memiliki standar komunikasi yang baku, sehingga tidak perlu membuat protokol sendiri.
- Mendukung interoperabilitas, yaitu komunikasi antarperangkat dari berbagai produsen.
- Mudah diimplementasikan pada mikrokontroler seperti ESP32 maupun Arduino.
- Skalabel, sehingga cocok digunakan mulai dari proyek sederhana hingga sistem otomasi industri yang kompleks.
- Memudahkan proses pemeliharaan dan pengembangan sistem, karena format komunikasinya telah menjadi standar internasional.
Kapan Harus Menggunakan dan Tidak Harus Menggunakan Modbus?
Meskipun Modbus merupakan protokol komunikasi yang sangat populer, bukan berarti setiap proyek harus menggunakannya. Pada aplikasi yang sederhana, membuat protokol komunikasi sendiri sering kali lebih praktis dan menghasilkan program yang lebih ringan. Sebaliknya, pada sistem yang melibatkan banyak perangkat atau membutuhkan kompatibilitas dengan perangkat industri, penggunaan Modbus menjadi pilihan yang jauh lebih tepat.
Gunakan Modbus apabila sistem memiliki tingkat kompleksitas yang tinggi, dibutuhkan komunikasi yang stabil dan andal, perangkat harus berkomunikasi dengan PLC, HMI, sensor industri, inverter, atau perangkat lain yang mendukung Modbus, serta sistem dirancang agar mudah dikembangkan di masa mendatang. Sebaliknya, Anda tidak harus menggunakan Modbus apabila hanya terdapat dua perangkat sederhana yang saling bertukar beberapa byte data, format komunikasi yang digunakan sangat sederhana dan tidak memerlukan standar tertentu, dan seluruh perangkat dibuat sendiri sehingga tidak memerlukan kompatibilitas dengan perangkat lain.
Dengan mempertimbangkan kebutuhan sistem sejak awal, Anda dapat menentukan apakah penggunaan Modbus memang memberikan keuntungan atau justru menambah kompleksitas yang tidak diperlukan.
Cara Kerja Protokol Modbus
Agar dapat mengimplementasikan Modbus pada ESP32 dengan benar, Anda perlu memahami konsep dasar yang digunakan oleh protokol ini. Meskipun terlihat sederhana, Modbus memiliki mekanisme komunikasi yang terstruktur sehingga perangkat dapat saling bertukar data secara konsisten dan andal. Pada dasarnya, komunikasi Modbus menggunakan model request-response, yaitu satu perangkat mengirimkan permintaan (request), kemudian perangkat lain memproses permintaan tersebut dan mengirimkan balasan (response). Mekanisme ini memastikan bahwa setiap pertukaran data memiliki tujuan yang jelas dan mengurangi kemungkinan terjadinya konflik komunikasi.
Konsep Dasar Modbus
Terdapat beberapa konsep penting yang harus dipahami sebelum mulai membuat program Modbus, yaitu Master dan Slave, Request dan Response, Function Code (FC), dan Address (Alamat Register). Keempat konsep tersebut merupakan dasar dari seluruh komunikasi Modbus, baik pada Modbus RTU, Modbus ASCII, maupun Modbus TCP.
1. Master dan Slave
Dalam sistem Modbus, setiap perangkat memiliki peran tertentu.
- Master merupakan perangkat yang mengendalikan komunikasi. Master bertugas mengirimkan request kepada perangkat lain untuk membaca ataupun menulis data.
- Slave adalah perangkat yang menerima request, memprosesnya, kemudian mengirimkan response kembali kepada Master.
Berbeda dengan komunikasi biasa yang kedua perangkat dapat mengirim data kapan saja, pada Modbus hanya Master yang boleh memulai komunikasi. Slave tidak dapat mengirim data secara spontan, melainkan hanya akan memberikan balasan ketika menerima permintaan dari Master.
Dengan mekanisme ini, komunikasi menjadi lebih teratur dan risiko terjadinya tabrakan data (data collision) dapat diminimalkan.
2. Request dan Response
Setiap komunikasi Modbus selalu terdiri dari dua tahapan utama, yaitu request dan response.
- Request merupakan paket data yang dikirim oleh Master kepada Slave.
- Response merupakan balasan yang dikirim oleh Slave setelah permintaan berhasil diproses.
Secara umum, paket request berisi beberapa informasi penting, antara lain:
- Function Code (FC), yaitu perintah yang harus dijalankan oleh Slave.
- Address, yaitu alamat data atau register yang akan diakses.
- Data, apabila diperlukan, misalnya nilai yang akan ditulis ke register tertentu.
Setelah menerima request, Slave akan memeriksa isi paket tersebut. Jika formatnya benar dan perintah dapat dijalankan, Slave akan mengirimkan response yang berisi data hasil pembacaan atau konfirmasi bahwa proses penulisan data telah berhasil dilakukan.
3. Function Code (FC)
Function Code (FC) adalah kode perintah yang menentukan operasi apa yang harus dilakukan oleh perangkat Slave. Standar Modbus mendefinisikan banyak Function Code, sehingga setiap perangkat memahami arti dari setiap perintah tanpa perlu membuat protokol komunikasi sendiri. Beberapa Function Code yang paling sering digunakan adalah:
- FC 01 (Read Coils) digunakan untuk membaca status Digital Output (Coil).
- FC 02 (Read Discrete Inputs) digunakan untuk membaca status Digital Input.
- FC 03 (Read Holding Registers) digunakan untuk membaca nilai Holding Register.
- FC 04 (Read Input Registers) digunakan untuk membaca nilai Input Register.
- FC 05 (Write Single Coil) digunakan untuk mengubah status satu Digital Output.
- FC 06 (Write Single Register) digunakan untuk menulis nilai pada satu Holding Register.
Pada tutorial ini, contoh yang digunakan adalah FC 01, yaitu membaca status sebuah Digital Output (Coil).
Ketika menggunakan library Modbus pada ESP32, Anda biasanya hanya perlu menentukan:
- Function Code yang akan digunakan.
- Alamat register (Address) yang ingin diakses.
Selanjutnya, library akan membentuk paket komunikasi Modbus secara otomatis.
4. Address (Alamat Register)
Selain Function Code, setiap data dalam Modbus juga memiliki Address atau alamat register. Address digunakan untuk menunjukkan lokasi data yang ingin dibaca atau ditulis oleh Master. Sebagai contoh:
- Alamat tertentu dapat digunakan untuk membaca status LED.
- Alamat lainnya digunakan untuk membaca nilai sensor.
- Address yang berbeda dapat digunakan untuk mengontrol relay, motor, maupun perangkat lainnya.
Dengan adanya sistem pengalamatan ini, satu perangkat Slave dapat menyimpan banyak data sekaligus tanpa terjadi kebingungan saat Master melakukan akses.
Contoh Komunikasi Modbus pada ESP32
Misalkan terdapat dua buah ESP32 dengan konfigurasi berikut:
- ESP32 Master terhubung ke LED #M dan Switch #M.
- ESP32 Slave terhubung ke LED #S dan Switch #S.
Sebagai contoh, Master ingin mengetahui kondisi Switch #S yang berada pada ESP32 Slave. Urutan komunikasi yang terjadi adalah sebagai berikut:
1. ESP32 Master mengirimkan request ke ESP32 Slave menggunakan Function Code yang sesuai untuk membaca status input.
2. Request tersebut juga menyertakan Address yang menunjukkan lokasi data Switch #S.
3. ESP32 Slave menerima request, kemudian membaca status sakelar pada alamat yang diminta.
4. Slave membentuk response yang berisi status terbaru dari Switch #S.
5. ESP32 Master menerima response tersebut, kemudian dapat melakukan tindakan sesuai kebutuhan, misalnya menyalakan atau mematikan LED #M.
Dengan mekanisme ini, Master tidak perlu mengetahui bagaimana Slave memperoleh data. Master hanya perlu mengirimkan request menggunakan Function Code dan Address yang benar, sedangkan seluruh proses pembacaan data dilakukan oleh Slave.
Modbus RTU/ASCII dan Modbus TCP
Seperti telah dijelaskan sebelumnya, terdapat tiga varian Modbus yang paling banyak digunakan, yaitu Modbus RTU, Modbus ASCII, dan Modbus TCP. Ketiga jenis tersebut memiliki mekanisme komunikasi yang sama, tetapi berbeda pada media transmisi dan format data yang digunakan. Perbedaan utama ketiganya terletak pada lapisan komunikasi (communication layer) yang digunakan.
- Modbus RTU bekerja melalui komunikasi serial menggunakan antarmuka seperti RS-232, RS-422, atau RS-485. Format datanya berupa biner sehingga lebih ringkas dan efisien untuk komunikasi industri.
- Modbus ASCII juga menggunakan komunikasi serial, tetapi setiap data dikirim dalam bentuk karakter ASCII. Metode ini lebih mudah dibaca manusia, meskipun membutuhkan bandwidth yang lebih besar dibandingkan Modbus RTU.
- Modbus TCP berjalan di atas jaringan Ethernet maupun WiFi dengan memanfaatkan protokol TCP/IP. Karena menggunakan infrastruktur jaringan komputer, Modbus TCP memiliki kecepatan yang lebih tinggi dan lebih mudah diintegrasikan dengan sistem berbasis Internet maupun Industrial IoT (IIoT).
Secara konseptual, ketiga jenis Modbus tersebut menggunakan Function Code, Address, serta mekanisme Request-Response yang sama. Perbedaannya hanya terletak pada cara paket data dikirimkan melalui media komunikasi yang digunakan.
Library Modbus untuk ESP32 umumnya telah mendukung berbagai jenis Modbus tersebut, sehingga Anda hanya perlu memilih jenis komunikasi yang sesuai dengan kebutuhan proyek. Pada tutorial berikutnya, pembahasan akan difokuskan pada implementasi Modbus menggunakan ESP32 beserta contoh program dan cara pengoperasiannya.
Baca juga: ESP32 Web Server - Panduan Lengkap Membuat Web Server pada ESP32
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino





0 on: "ESP32 Modbus - Pengertian, Fungsi, dan Cara Kerja Protokol Modbus"