Google+ Facebook Twitter mail SC

Tuesday, 2 September 2014

Tagged Under:

Pengetahuan dasar Prototokol Modbus

By: Rifza On: 20:48
  • Share The Gag
  • 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.

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

    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

    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:

    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

    0 comments:

    Post a Comment