Pengetahuan Dasar Protokol Modbus

Jaringan Protokol Modbus

Sebelum membaca artikel ini sebaiknya anda  membaca ttg Protokol komunikasi .

Pengetahuan dasar Prototokol Modbus

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.

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.

modbus transaction

Penyimpanan data pada modbus

Pada protokol modbus terdapat 4 buah  jenis  penyimpanan  data dengan panjang masing2  16 bit.

datatype

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

modbus map adress2

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.

modbusflowquery

Gambar dibawah ini memperlihatkan pengorganisasian data pada sebuah slave modbus  yang hanya mempunayi satu blok untuk  coil dan register.

modbusflowquery2

Frame Data Modbus:

Master atau slave berkomunikasi dgn cara mengirim frame  permintaan dan frame respon . secara umum format frame modbus sbb:

modbusframe

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  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.

fcMAP3

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.

exceptoinrespontransaction

Perbedaan frame modbus normal dan  saat terjadi exception

modbusframeerror

Tabel Exception Code

Exception Code Nama exception arti
01 ILLEGAL FUNCTION  function code salah
02 ILLEGAL DATA ADDRESS alamat register salah, misal slave punya 100 register maka alamat maximum adalah 99.
03 ILLEGAL DATA VALUE  mengandung nilai data yg tdk diizinkan untuk slave
04 SLAVE DEVICE FAILURE Slave gagal melaksanakan perintah master
05 ACKNOWLEDGMENT pemberitahuan ke master bahwa pelaksanaan perintah akan memakan waktu yg lama , sehingga bisa time out
06 SLAVE DEVICE BUSSY slave sidang sibuk, silahken kirim perintah lain waktu
08 MEMORY 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:

exceptionRespon

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

holding_register

Contoh 3. master menset coil

Untuk men set sebuah  coil  nomor 173  pada slave dgn alamat 17 (11H)

11 05 00AC FF00 4E8B

11: alamat slave(17 = 11 hex)
05:  Function Code
00AC: alamat koil  coil. (coil 173 – 1 = 172 = AC hex)
FF00:  ( FF00 = ON,  0000 = OFF )
4E8B: CRC

Respon dari slave

11 05 00AC FF00 4E8B

11:  alamat Slave (17 = 11 hex)
05:  Function Code
00AC: alamat/nomor coil  (coil 173 – 1 = 172 = AC hex)
FF00:  status( FF00 = ON,  0000 = OFF )
4E8B: CRC

Contoh aplikasi penggunaan 4 jenis data modbus  pada AVR microntroller sebagai slave:

contohaplikasimodbus

Penjelasan gambar contoh di atas:

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.

2. Input digital /input diskrit  (read only bagi master)

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.

3.  Input register  (read only bagi master)

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.

hasil konversi ADC chanel 0 (portA.0)  disimpan di input register 30001

hasil konversi ADC chanel 2 (PortA.1) disimpan di input register 30002

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.

Contoh  master   berupa  PC dan slave  microcontroller

master-slave-modbus

master-slave-modbus

Contoh cara menghitung CRC16 untuk di master PC

Contoh cara menghitung CRC16 untuk slave di AVR microcontroller dgn codevision

Contoh Program Master Modbus dengan C#

Contoh Slave Modbus  Microcontroller avr8535 dgn bahas C

Referensi:
http://www.simplymodbus.ca/

Click to access Modbus_Application_Protocol_V1_1b.pdf

http:/www.modbus.org
http://www.modbus.control.com/
http://www.modbus.pl

About pccontrol

Berisi Tutorial Menggunakan PC untuk mengontrol Peralatan dengan cara mudah & praktis untuk pemula.

Posted on 03/06/2011, in Menengah-1. Bookmark the permalink. 13 Comments.

  1. Pusat Bisnis

    kalau artinya data location 2422H saya harus input register di software nya dgn angka decimal brp ? pak, modbus nya di slave 3. termkasih

  2. kalau ngecek modbus server tcp bisa pakai modbus scanner

  3. Mau tanya gan ada gak tool untuk pengecekan komunikasi modbus yang bermasalah

    Thanks

  4. modbus ga bisa. untuk komunikasi multimaster bisa pakai protokol CAN (yg dipakai di mobil2)

  5. kalo komunikasi antar modbus master ke modbus master bisa gx oak?

  6. ada materi mengenai modbus TCP/IP gan? tolong ajarin gan..

  7. Terima kasih sdh berkunjung

  8. terimakasih informasi sangat bermanfaat untuk saya

  9. MODBUS uses a ‘big-Endian’ representation for addresses and data items. This means
    that when a numerical quantity larger than a single byte is transmitted, the most
    significant byte is sent first. So for example 0x1234, the first byte sent is 0x12 then 0x34

  1. Pingback: Pengetahuan Dasar Pemrograman cara mudah control monitoring dgn microcontroller, Modbus RTU dan VB.net | DASAR KOMPUTER BUAT PEMULA

  2. Pingback: Modul Pemrograman Lanjut Pdf | Terbaru 2015

  3. Pingback: Pengetahuan Dasar Function Code Modbus « Mengontrol peralatan dgn Komputer

Komentar ,Saran atau Pertanyaan