Sebelum membaca artikel ini sebaiknya anda membaca ttg Protokol komunikasi .
Protocol modbus dibuat oleh perusahaan PLC bernama Modicon tahun 1979 dan sampai
sekarang menjadi salah satu prtotocol komunikasi standar yg dipakai dalam Automatisasi
pengelolaan Gedung, Proses Industri dll.
Pada Artikel ini kita hanya akan membahas Modbus Serial RTU disebabkan mudah
implementasinya .
Protokol komunikasi Modbus Serial mengatur cara-cara dan format komunikasi serial (rs232
atau rs485) antara master dengan Slave ( master atau slave dpt berupa PLC ,microcontroller,
smart device dll) .Jaringan Modbus terdiri dari Master dan beberapa Slave, Master yang
berinisiatif memulai komunikasi antara lain menulis data,membaca data,dan mengetahui status
SLave . Permintaan master disebut juga sebagai request atau query. Slave hanya bersifat
pasif/menunggu atau dgn kata lain Slave hanya me respon jika ada permintaan/query dari
Master.
Jumlah Slave dalam protokol Modbus bisa sebanyak 247 slave. Slave dapat berupa PLC,
peralatan elektronik, controller, sensor dll.
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
Penyimpanan data pada modbus
Pada protokol modbus terdapat 4 buah jenis penyimpanan data dengan panjang masing2 16
bit.
1. Coil
Pada mulanya jenis data ini digunakan untuk mengaktifkan coil relay . nilai jenis data ini ON
atau OFF . Coil mempunyai panjang 16 bit, sehingga untuk mengaktifkan/ON dgn cara
memberi nilai FF00H dan 0000H untuk OFF. data FF00 dan 00 disimpan di register 00000
sampai 09999
kebalikan dengan coil, input relay digunakan untuk mengetahui status relay apakah sedang ON
atau OFF. Input relay bersifat read only bagi master dan hanya bisa dirubah oleh slave saja.
3. Input Register
Input Regsiter digunakan untuk menyimpan data analog dgn range nilai 0 ~ 65535 . Input
register bersifat read only bagi master.
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
data ini disimpan di register ber nomor 30001 sampai 39999
4. Holding Register
Holding register digunakan untuk menyimpan nilai dgn range 0~65535 .register ini
mempunyai alamat register 40001 sampai 49999
Gambar dibawah ini memperlihatkan pengorganisasian data pada sebuah slave modbus yang
masing masing mempunyai blok ter pisah antara coil dan register.
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
Gambar dibawah ini memperlihatkan pengorganisasian data pada sebuah slave modbus yang
hanya mempunayi satu blok untuk coil dan register.
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
Frame Data Modbus:
Master atau slave berkomunikasi dgn cara mengirim frame permintaan dan frame respon .
secara umum format frame modbus sbb:
1. Alamat slave
Byte pertama sebagai Alamat slave terdiri dari 1 byte . alamat slave ditentukan hanya 1 ~ 247.
alamat 0 digunakan master untuk ditujukan kepada semua slave.
2. Function Code
Byte kedua berupa Function Code , perintah dari master yang harus dilakukan oleh slave berikut
ini daftar kode perintah perintah tsb (function code):
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
Data membaca menulis 1 data menulis banyak data no awal reg
Coil FC01 FC05 FC15 00001
input diskrit/digital FC02 10001
Input register FC04 30001
Holding Register FC03 FC06 FC16 40001
*keterangan: FC15 maksudnya adalah function code 15 desimal atau 0F dlm hexa.
3. Byte Data
Jumlah Byte Data bervariasi tergantung jumlah data yg akan di tuliskan ke slave. Byte data
berisi alamat register, jumlah data, dan data yg akan ditulis. alamat register akan di jelaskan
kemudian.
Dua byte terakhir adalah byte CRC , byte ini digunakan untuk mendeteksi jika ada kesalahan
pada frame modbus .
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
Respon MODBUS Exception
Respon exeception adalah respon dari slave ketika terjadi keadaan tidak normal/error. Slave
menerima query , tetapi Slave tidak dapat menangani perintah tersebut, Slave akan mengirimkan
sebuah respon exception. frame respon jika terjadi kesalahan berbeda dgn frame dlm keadaan
normal.
Exception
Nama exception arti
Code
01 ILLEGAL FUNCTION function code salah
ILLEGAL DATA alamat register salah, misal slave punya 100
02
ADDRESS register maka alamat maximum adalah 99.
ILLEGAL DATA mengandung nilai data yg tdk diizinkan untuk
03
VALUE slave
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
SLAVE DEVICE
04 Slave gagal melaksanakan perintah master
FAILURE
pemberitahuan ke master bahwa pelaksanaan
05 ACKNOWLEDGMENT perintah akan memakan waktu yg lama ,
sehingga bisa time out
slave sidang sibuk, silahken kirim perintah
06 SLAVE DEVICE BUSSY
lain waktu
Specialized use in conjunction with function
codes
20 and 21 and reference type 6, to indicate
MEMORY PARITY
08 that
ERROR
the extended file area failed to pass a
consistency
check.
Untuk lebih memahami protokol modbus kita bisa perhatikan contoh contoh berikut ini:
sebuah Master meminta data isi 1 buah register input dari Slave dgn alamat 1. Fuction code
04 digunakan untuk membaca data register slave.
01 = Alamat Slave
04 = Function Code 04 (Perintah Membaca register input)
0000 = Alamat awal Data di register yg diminta (30001-30001=0)
0001 = Jumlah register yg datanya diminta
31CA = Nilai CRC
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
Slave dgn alamat 1 akan merespon dengan mengirim data ke master sbb:
01 04 02 0032 E4D2
artinya:
01 = Alamat dirinya / Slave 1
04 = Function Code 04
02 = jumlah byte data yg akan diberikan .
00 = data pertama
32 = data kedua
E4= CRC byte 2
D2 =CRC byte 1
alamat awal data di register 40108 -40001= 107 atau dlm bilangan hexa 006B
artinya meminta data isi 2 buah register mulai dari alamat 006B , alamat slave 11H. nilai crc
47B7
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
Contoh 3. master menset coil
Untuk men set sebuah coil nomor 173 pada slave dgn alamat 17 (11H)
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
FF00: status( FF00 = ON, 0000 = OFF )
4E8B: CRC
Contoh aplikasi penggunaan 4 jenis data modbus pada AVR microntroller sebagai slave:
1. coil
disini digunakan untuk mengaktifkan relay dengan cara menulis FF00H register 00001 dan
register 00008 . Untuk mematikan relay dgn cara menuliskan 0000H ke kedua register tsb.
Untuk mengetahui status apakah relay sedang menyala atau sedang mati kita bisa membaca
register 00001 dan register 00008.
untuk input digital master hanya bisa mengetahui statusnya dan tdk bisa menulis ke input digital.
artinya pada contoh ini master tdk bisa memerintahkan slave untuk mengaktifkan switch. untuk
mengetahui status swtich sedang on atau off dengan cara membaca register 20001 dan 20002.
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/
Pada contoh ini input register digunakan untuk menyimpan data hasil konversi ADC . Hasil
konversi bisa dibaca oleh master dan master tdk bisa merubah data register ini.
dan seterusnya.
4. Holding Register
Pada contoh ini holsing register di gunakan untuk menyimpan input dari port B ketika port B
sbg input.
Holding register juga bisa digunakan untuk mengeluarkan data ke portB saat portB sebagai
output.
https://pccontrol.wordpress.com/2011/06/03/protokol‐modbus/