Modbus adalah protokol komunikasi yang dikembangkan oleh Modicon pada tahun 1979, untuk digunakan pada Programmable Logic Controller (PLC) yang mereka miliki [1]. Modbus bersifat terbuka (open protocol), yang berarti protokol tersebut didokumentasikan dengan rapi dan disebarkan secara terbuka, sehingga dapat digunakan oleh siapapun secara bebas, atau dengan lisensi tertentu [1]. Pengembangan, pemeliharaan dan pembaharuan dari protokol modbus sendiri dilakukan oleh The Modbus Organization, suatu organisasi yang beranggotakan pengguna dan pengembang alat-alat yang menggunakan protokol modbus agar protokol modbus dapat terus digunakan [2].

Protokol modbus memiliki banyak versi pada serial port, maupun ethernet. Versi yang lazim digunakan adalah versi modbus TCP/IP, modbus RTU, modbus ASCII, modbus Plus, dan modbus UDP [1]. 

Modbus bekerja dengan prinsip master-slave yang berarti hanya perangkat yang menjadi master/server yang dapat menginisiasi komunikasi (dinamakan query) [3]. Master dapat mengirim pesan individual ke slave tertentu atau menginisiasi pesan yang dikirimkan ke semua slave (broadcast query) [3]. Kemudian perangkat yang berperan sebagai slave (yang biasanya adalah perangkat peripheral  seperti transduser I/O dan katup (valve)) akan merespon pesan dengan memberikan data atau melakukan aksi tertentu yang diminta di dalam query. Slave hanya akan merespon pesan dari master yang memiliki address field yang cocok dengan address masing-masing slave itu sendiri. Slave juga hanya akan merespon pesan yang ditujukan secara individual, bukan pesan jenis broadcast [3].

Query dari master terdiri atas slave address, function code yang mendefinisikan aksi yang diminta, data-data yang diperlukan, dan bagian pengecekan eror. Respon dari slave terdiri dari bagian yang mengonfirmasi aksi yang akan dilakukan, data-data yang akan dikirim kembali, dan bagian pengecekan eror [3]. 

Model data modbus memiliki struktur yang dideskripsikan dalam 4 tipe data sebagai berikut [3]:

  1. Discrete input
  2. Coil output
  3. Input register (data masukan)
  4. Holding register (data luaran)

Modbus Protocol Data Unit atau PDU terdiri atas function code (1 byte) dan jumlah bit “data” yang diminta oleh master.

Gambar 1. Contoh struktur pesan modbus

Perangkat modbus biasanya juga terdiri dari register map. Modbus function beroperasi pada register map untuk memonitor, mengonfigurasi, dan mengendalikan modul I/O. Register memori modbus dari suatu perangkat terdiri atas 4 tipe referensi data. Tipe data ini kemudian akan diidentifikasi berdasarkan angka yang ditulis di awal yang digunakan pada alamat memori perangkat [3].

 

Referensi

Deskripsi
0xxxx Read/Write output diskrit atau coil output.

Alamat referensi 0x digunakan untuk mengarahkan data output ke saluran output digital.

1xxxx Read input diskrit.

Status ON/OFF dari alamat referensi 1x dikendalikan oleh saluran input digital terkait.

3xxxx Read register input.

Register referensi 3x memiliki angka 16 bit yang diterima dari sumber eksternal seperti misalnya sinyal analog.

4xxxx Read/Write output atau holding register.

Register 4xxx digunakan untuk menyimpan data numerik 16 bit baik biner maupun desimal, atau untuk mengirimkan data dari CPU ke saluran output.

Catatan: x setelah angka paling depan merepresentasikan lokasi empat digit alamat pada memori data pengguna (user) [3].

Ketika slave modbus mendeteksi adanya eror atau tidak dapat melakukan aksi yang diminta pada query, maka slave akan mengirimkan pesan exception. Pesan exception ini terdiri atas alamat slave, salinan dari function code dengan most significant bit diubah menjadi HIGH, dan kode exception.

Sebagai contoh, jika function code-nya adalah 3 desimal (0000 0011 biner) maka, pada bagian function code dari pesan exception-nya adalah 131 desimal (1000 0011 biner). Kode-kode exception dapat dilihat sebagaimana tabel di bawah [4].

 1 Illegal function Kode function yang diterima di query tidak dikenali oleh slave atau tidak diizinkan oleh slave.
2 Alamat data ilegal Alamat data yang diterima di query bukan alamat yang diizinkan oleh slave.
3 Nilai data ilegal Nilai yang terdapat pada data query tidak bisa diterima oleh slave.
4 Perangkat slave gagal Terjadi error yang tidak bisa diperbaiki ketika slave mencoba melaksanakan aksi yang diminta.
6 Perangkat slave sibuk Slave terlibat dalam memproses perintah jangka panjang. Master harus mencoba ulang kemudian.
10 Gateway path tidak tersedia Penggunaan khusus dalam hubungannya dengan gateway, biasanya berarti terdapat kesalahan konfigurasi atau overload pada gateway.
11 Perangkat target gateway gagal merespon Penggunaan khusus dalam hubungannya dengan gateway, mengindikasikan tidak ada respon yang diterima dari perangkat target.

(Oleh: Petrus Diyos W.P. & Nailia Ziyada)

Referensi

[1]  Wally Gastreich. What is modbus?. Diakses dari  https://realpars.com/modbus/ , 24 Juni 2021.

[2]  Modbus Organization, Inc. Modbus home page. Diakses dari http://www.modbus.org/ , 24 Juni 2021.

[3 ] Bruce Cyburt. Introduction to Modbus. Diakses dari https://www.automation.com/en-us/ articles/2012-1/introduction-to-modbus , 6 Juli 2021.

[4] Control Solutions Minnesota. Modbus 101 – Introduction to Modbus. Diakses dari https://www.csimn.com/CSI_pages/Modbus101.html , 6 Juli 2021.