Thursday, March 21, 2019

Modbus

Modbus adalah protokol komunikasi serial yang dipublikasikan oleh Modicon pada tahun 1979 untuk diaplikasikan ke dalam programmable logic controllers (PLCs). Modbus sudah menjadi standar protokol yang umum digunakan untuk menghubungkan peralatan elektronik industri. Beberapa alasan mengapa protokol ini banyak digunakan, antara lain:
  • Modbus dipublikasikan secara terbuka dan bebas royalti
  • Mudah digunakan dan dipelihara
  • Memindahkan data bit atau word tanpa terlalu banyak membatasi vendor
Modbus digunakan untuk komunikasi antar banyak perangkat dalam satu jaringan, misalnya dalam sebuah sistem yang melakukan pengukuran suhu dan kelembapan dan mengirimkan hasilnya ke sebuah komputer. Modbus sering digunakan untuk menghubungkan komputer pemantau dengan remote terminal unit (RTU) pada sistem supervisory control and data acquisition (SCADA).
Pengembangan dan pembaharuan protokol Modbus berada dalam kuasa Modbus Organization mulai April 2004 semenjak Schneider Electric mengalihkan kuasanya ke organisasi tersebut. Modbus Organization merupakan asosiasi dari pengguna dan produsen perangkat yang kompatibel dengan protokol Modbus. Tujuan dari organisasi ini adalah mendukung kontinuitas penggunaan teknologi Modbus.
Beberapa Jenis Type Modbus
  • Modbus Serial (RTU & ASCII)
  • Modbus TCP/IP
  • Modbus +
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.

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
2.  Input Relay  / input biner / input digital/input diskrit
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.
data tsb disimpan di register   10001  sampai 19999
3. Input Register
Input Regsiter digunakan untuk  menyimpan data analog  dgn range nilai  0 ~ 65535 .  Input register  bersifat read only bagi master.
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
Alamat  register  pd modbus  dan function code yg digunakan untuk mengaksesnya
tabel 1 .  alamat  register  dan function code
Pengorganisasian data modbus 
Gambar dibawah ini memperlihatkan pengorganisasian data pada sebuah slave modbus  yang masing masing mempunyai blok ter pisah antara coil dan register.
Gambar dibawah ini memperlihatkan pengorganisasian data pada sebuah slave modbus  yang hanya mempunayi satu blok untuk  coil dan register.
Frame Data Modbus:
Master atau slave berkomunikasi dgn cara mengirim frame  permintaan dan frame respon . secara umum format frame modbus sbb:
Frame modbus terdiri dari
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):
   Data membaca
 menulis 1 data menulis banyak data no awal reg
 Coil FC01 FC05FC15 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.
4. eror check, CRC
Dua byte terakhir adalah byte CRC , byte ini digunakan untuk mendeteksi jika ada kesalahan pada frame 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.
Perbedaan frame modbus normal dan  saat terjadi exception
Tabel Exception Code
Exception CodeNama exceptionarti
01ILLEGAL FUNCTION function code salah
02ILLEGAL DATA ADDRESSalamat register salah, misal slave punya 100 register maka alamat maximum adalah 99.
03ILLEGAL DATA VALUE mengandung nilai data yg tdk diizinkan untuk slave
04SLAVE DEVICE FAILURESlave gagal melaksanakan perintah master
05ACKNOWLEDGMENTpemberitahuan ke master bahwa pelaksanaan perintah akan memakan waktu yg lama , sehingga bisa time out
06SLAVE DEVICE BUSSYslave sidang sibuk, silahken kirim perintah lain waktu
08MEMORY PARITY ERROR
Specialized use in conjunction with function codes
20 and 21 and reference type 6, to indicate that
the extended file area failed to pass a consistency
check.
frame Respon exception yang akan di kirim oleh slave adalah :
alamat_slave- fuction code   “OR”  80 – exception code- CRC
contoh respon exception:
Untuk lebih memahami protokol modbus  kita bisa perhatikan contoh contoh berikut ini:
contoh 1 : membaca isi input register 30001
sebuah  Master meminta data isi 1 buah  register  input  dari Slave  dgn alamat 1. Fuction code 04 digunakan untuk membaca data register slave.
maka master akan mengirim  query  : 
 01 04 0000 0001 31CA
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
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
Contoh 2 : membaca 2 buah holding register 40108  &  40109
alamat awal  data di register  40108 -40001= 107 atau dlm bilangan hexa 006B
Master mengirim : 11 03 00 6B 00 02  47 B7,
artinya meminta  data isi 2  buah register mulai dari  alamat 006B , alamat  slave 11H. nilai crc 47B7
(misal isi register di slave  : 022b  0064)
Slave mengirim respon : 11 03 04 02 2b  00 64  A9 9B







Share:

2 comments:

ONLINE SHOP : PRODUK AUTOMATION

ONLINE SHOP : PRODUK AUTOMATION
________CITAYAM AUTOMATION________

Followers

View

Translate