Anda di halaman 1dari 11

PEMBUATAN REMOTE I/O 16 KANAL DIGITAL INPUT MENGGUNAKAN

PROTOKOL MODBUS RTU BERBASIS MIKROKONTROLER AT89S51


Moh. Imam Afandi
Puslit KIM-LIPI, Kawasan Puspiptek Serpong, Tangerang 15314

INTISARI
Telah dilakukan pembuatan remote I/O 16 kanal digital input menggunakan protokol modbus RTU
berbasis mikrokontroler AT89S51. Remote I/O yang dibuat ini selanjutnya dapat digunakan sebagai
ekspansi I/O digital input pada PLC (Programmable Logic Controller) dan/atau sistem OPC (Ole for
Process Control) SCADA (Supervisory Control and Data Acquisition) yang mendukung protokol
standard industri modbus RTU. Dari hasil pengujian komunikasi alat dengan OPC Server Modbus
didapatkan bahwa komunikasi modbus RTU untuk mengakses/membaca 16 kanal digital input telah
berhasil dengan kualitas OPC good/baik tanpa ada sedikitpun kualitas bad/buruk pada setiap input yang
diakses.

Kata kunci : Remote I/O, 16 kanal digital input, protokol modbus RTU, mikrokontroler AT89S51,
ekspansi I/O digital input pada PLC dan/atau OPC SCADA.

ABSTRACT
The remote I/O has been built with 16 channels of digital input using modbus RTU protocol based on
AT89S51. The remote I/O can be used as I/O ekspansion for PLC (Programmable Logic Controller)
and/or OPC (Ole for Process Control) SCADA (Supervisory Control and Data Acquisition) system that
supported with industrial standard protocol modbus RTU. The testing result of the remote I/O has been
succeed to communicate with Modbus OPC Server in order to read 16 channels of digital input with good
quality OPC for each accessed digital input.

Keywords : Remote I/O, 16 channels of digital input, modbus RTU protocol, AT89S51 microcontroller,
expansion I/O for PLC and/or OPC SCADA.

PENDAHULUAN
Dalam dunia proses industri dan/atau otomasi industri yang berkembang saat ini
membutuhkan banyak sekali sinyal elektrik I/O yang harus diakses dan dikendalikan
untuk menjaga sistem dapat berjalan dengan baik. PLC (Programmable Logic
Controller) yang sering dipakai sebagai kontrol proses dan/atau otomasi industri
seringkali kekurangan slot dalam rack untuk mencukupi I/O yang dibutuhkan. Sehingga
salah satu solusinya adalah mengekspansi I/O tersebut dalam rack yang lain dengan

menggunakan penghubung komunikasi standard industri. I/O dalam rack lain tersebut
dalam dunia industri seringkali dikenal dengan nama remote I/O. Remote I/O juga
mempunyai fungsi juga sebagai I/O yang dapat diletakkan berjauhan dari sisi master.
Remote I/O yang ada di pasaran ternyata juga masih tergolong mahal jika digunakan
untuk industri menengah ke bawah sehingga dibutuhkan solusi murah dalam pengadaan
remote I/O yang menunjang proses industri dan/atau otomasi industri.
Sebagai salah satu solusi murah dari permasalahan di atas, telah dilakukan
pembuatan remote I/O 16 kanal digital input menggunakan protokol modbus RTU
berbasis mikrokontroler AT89S51. Dalam tulisan makalah ini akan dijelaskan mengenai
pembuatan remote I/O 16 digital input menggunakan protokol modbus RTU berbasis
mikrokontroler AT89S51. Penggunaan protokol modbus RTU disamping protokol
tersebut merupakan protokol industri yang open document, protokol tersebut juga
banyak didukung oleh banyak merk PLC. Jumlah digital input sebanyak 16 kanal juga
didasarkan pada 1 word / 16 bit pengiriman data pada protokol modbus RTU.

DASAR TEORI PROTOKOL MODBUS RTU


Modbus adalah suatu protokol komunikasi yang pertama kali dikembangkan
oleh Modicon Systems pada tahun 1979 (yang sekarang Modicon berganti menjadi
Schneider Telemecanique) [1]. Protokol modbus sendiri banyak variasinya, antara lain
protokol modbus ASCII, modbus RTU, modbus plus dan modbus TCP. Pada
kesempatan kali ini hanya dijelaskan dasar teori protokol modbus RTU. Protokol
komunikasi modbus RTU menggunakan sistem polling yaitu sisi master memanggil
(request) dan sisi slave menjawab (response). Dimana bentuk memanggil-menjawab
pada protokol modbus RTU dapat digambarkan sebagai berikut [1,2] :

Query/Request from Master

Station Number

Station Number

Function Code

Function Code

Data Bytes
(Flexible)

Data Bytes
(Flexible)

Error Check

Error Check
Response from Slave

Gambar 1. Skema Memanggil-Menjawab pada Protokol Modbus RTU

Pada gambar 1 dapat dijelaskan bahwa skema memanggil-menjawab pada


protokol modbus RTU selalu berurutan dengan bingkai prosedur yang sama. Station
Number memiliki range antara 1-255 yang merupakan alamat slave yang akan diambil
datanya. Function Code merupakan kode fungsi data yang akan diambil dimana kode
fungsi tersebut dipetakan sebagai berikut[1,2] :

01 : read DO (Digital Output)

02 : read DI (Digital Input)

03 : read AO (Analog Output)

04 : read AI (Analog Input)

05 : write single DO (Digital Output)

06 : write single AO (Analog Output)

15 : write multiple DO (Digital Output)

16 : write multiple AO (Analog Output)

Data bytes merupakan blok data informasi dan Error Check merupakan cek data dari
kesalahan komunikasi.
Selanjutnya khusus untuk protokol modbus RTU, bingkai prosedur data secara
detail dapat digambarkan sebagai berikut[1,2] :
Start

Station Number

Function Code

Data

Error Check

End

3.5 Chars

1 Char

1 Char

n Chars

2 Chars

3.5 Chars

CRC

Silence

Silence

Gambar 2. Bingkai Prosedur Data pada Protokol Modbus RTU

Pada gambar 2 dapat dijelaskan bahwa untuk memulai skema memanggilmenjawab pada protokol modbus RTU harus dimulai dan diakhiri dengan waktu tunda
selama 3.5 karakter dalam baud rate komunikasi yang sudah ditentukan sebelumnya.
Nilai dalam Station Number, Function Code, dan Data yang sudah dijelaskan
sebelumnya harus dideklarasikan dalam nilai biner atau hexadesimal-nya. Untuk Error
Check disini menggunakan algoritma Cyclic Redundancy Check (CRC) tipe 16 bit / 2
Char.
Untuk penjelasan yang lebih detailnya, dapat diberikan contoh memanggilmenjawab untuk membaca digital input pada protokol modbus RTU sebagai berikut [3]
:

Misalkan suatu contoh protokol modbus RTU untuk mendapatkan status digital input
dari alamat 10197 sampai 10218 dengan alamat slave 17.

 Memanggil (dari sisi master)


11 02 00C4 0016 BAA9
11 : alamat slave (17 = 11 hex)
02 : function code (kode fungsi membaca status digital input)
00C4 : alamat digital input pertama yang dibaca
(alamat 10197 - 10001 = 196 = C4 hex)
0016 : jumlah alamat digital input yang dibaca
(alamat 197 to 218 = 22 = 16 hex)
BAA9 : algoritma CRC-16 (cyclic redundancy check) untuk cek error data yang
dikirim.

 Menjawab (dari sisi slave)


11 02 03 ACDB35 2018
11 : alamat slave (17 = 11 hex)
02 : function code (kode fungsi membaca status digital input)
03 : jumlah byte data yang diberikan (22 DI / 8 bits per byte = 3 bytes)
AC : digital input 10197 - 10204 (1010 1100)
DB : digital input 10205 - 10212 (1101 1011)
35 : digital input 10213 - 10218 (0011 0101)
2018: algoritma CRC-16 (cyclic redundancy check) untuk cek error data yang
dikirim.
Data MSB (Most Significant Bit) dari suatu byte data menandakan alamat yang lebih
tinggi dan data yang dikirim di luar jangkauan dianggap bernilai 0.

DESKRIPSI ALAT
Pembuatan remote I/O ini menggunakan mikrokontroler AT89S51 [4] sebagai
inti prosesor-nya karena disamping harganya murah juga kapasitas memori sebesar 4 kb
dan jumlah I/O sebanyak 32 pin sudah mencukupi untuk realisasi 16 kanal digital input
dengan komunikasi serial RS-485 menggunakan protokol modbus RTU. Untuk lebih

detail mengenai skema alat yang dibuat dapat digambarkan dalam bentuk blok diagram
sebagai berikut :
Port 1

Port 0

Digital Input
Nomor 1 - 8

Dip Switch 4
kanal untuk
pemilihan baud
rate komunikasi
serial
Komunikasi
Serial RS-485

Digital Input
Nomor 9 - 16

Pin 3.4 3.7

AT89S51
Port 2

MAX
485

Enable (P3.2)
Tx
Rx

Dip Switch 8
kanal untuk
alamat slave
modbus RTU

Gambar 3. Skema Blok Diagram Alat Remote I/O 16 kanal DI Modbus RTU

Ddari skema blok diagram pada gambar 3, selanjutnya direalisasikan menjadi


suatu rangkaian elektronik PCB seperti yang diberikan pada gambar sebagai berikut :

Gambar 4. Rangkaian Elektronik PCB Remote I/O 16 kanal DI Modbus RTU

Pada gambar 3 dan 4 dapat dijelaskan bahwa untuk port 1 dan port 0 yang
masing-masing mempunyai 8 pin data digunakan sebagai digital input yang berjumlah
16 kanal pin dimana untuk setiap kanal pin dari digital input mempunyai rangkaian
interface untuk mengkondisi sinyal range masukan input dari TTL 5 Vdc sampai 24
Vdc. Tegangan power alat mempunyai range antara 9 24 Vdc untuk memenuhi

standard industri. Port 2 digunakan sebagai pemilihan alamat slave modbus RTU
menggunakan komponen dip switch 8 kanal dan pada port 3 dari pin 3.4 sampai pin 3.7
dipakai sebagai pemilihan baud rate komunikasi serial menggunakan komponen dip
switch 4 kanal, dimana logika pemilihan baud rate dapat dijelaskan sebagai berikut.
Jika pin 3.4 bernilai 1 berarti menggunakan 9600 baud, jika pin 3.5 bernilai 1 berarti
menggunakan 19200 baud, jika pin 3.6 bernilai 1 berarti menggunakan 57600 baud, dan
jika pin 3.7 bernilai 1 berarti menggunakan 115200 baud. Setiap kanal digital input juga
dapat menerima masukan tegangan hingga 24 Vdc. Dimensi dari rangkaian elektronik
PCB ini berukuran 7 x 11 cm dimana nantinya akan dimasukkan dalam box aluminium
din rail yang sudah ada di pasaran. Kemudian selanjutnya yang tak kalah penting dari
alat ini adalah komunikasi serial menggunakan RS485 dimana dipakai IC MAX485
yang merupakan IC yang mendukung RS485 tipe Half Duplex.
Sehingga spesifikasi alat remote I/O 16 kanal digital input yang dibuat ini dapat
dijabarkan sebagai berikut :
- Digital input

: 16 channels

- Input logic level 0

: 0 3 Vdc

- Input logic level 1

: 3.5 24 Vdc

- Led input indicator

: Yes (Green)

- Overvoltage protection

: 100 Vdc

- Connector type

: screw plug-in (ptr 500)

- Power consumption

: 1 W @ 9 24 Vdc

- Supported protocol

: Modbus RTU

- Led comm. status

: Yes

- Selectable baud rate

: 9600, 19200, 57600, 115200

- Modbus address

: up to 255 multi-drop address

Selanjutnya alat tersebut belum dapat digunakan sebagai remote I/O jika belum
dimasukkan program ke dalam mikrokontroler tersebut. Untuk memrogram alat tersebut
yang berbasis mikrokontroler AT89S51 maka digunakan compiler SDCC [5] yang
mendukung bahasa C dengan editor MIDE-51 [6]. Diagram alir dari program C tersebut
dapat diberikan sebagai berikut :

Mulai
Inisialisasi port

Baca alamat dip switch slave


& dip switch baud rate

> sisa 3.5 char


waktu diam ?

Deteksi char data alamat slave,


function code, byte data, & CRC

Alamat slave, FC, byte


16 DI & CRC benar ?
Y

Deteksi kondisi bit 16 kanal


digital input yang diminta

Sisa waktu diam


3.5 char terpenuhi?
Y

Jawab char data alamat slave, FC=1,


byte data DI yg diminta, & CRC

Looping terus ?

Selesai
Gambar 5. Diagram Alir Program Remote I/O 16 kanal DI Modbus RTU

HASIL DAN PEMBAHASAN


Pengujian alat remote I/O dilakukan dengan menggunakan OPC Server Modbus
dimana alat remote I/O diset pada alamat dip switch slave 1 dan baud rate 9600 melalui
komunikasi serial RS-485. Untuk OPC Server Modbus dipilih setting modbus serial
dengan konfigurasi komunikasi COM1, 9600, 8, N, 1 seperti yang diberikan pada
gambar sebagai berikut :

Gambar 6. Setting protokol dan konfigurasi serial pada OPC Server Modbus

Selanjutnya dideklarasikan nama tag digital input dari alamat 10001 sampai
10016 seperti yang diberikan pada gambar berikut :

Gambar 7. Deklarasi Nama Tag Digital Input pada OPC Server Modbus

Setelah semuanya sudah selesai dideklarasikan, maka dapat dilakukan pengujian


komunikasi modbus RTU antara OPC Server Modbus dengan alat remote I/O yang
sudah dibuat. Caranya dengan menjalankan perangkat lunak OPC Quick Client untuk
memonitor kualitas data OPC yang sudah dideklarasikan seperti yang diberikan pada
gambar berikut ini.

Gambar 8. Hasil Pengujian Data Modbus RTU Menggunakan OPC Quick Client

Dari gambar 8 dapat dijelaskan bahwa komunikasi modbus RTU antara OPC
Server Modbus dengan alat remote I/O 16 kanal digital input berbasis mikrokontroler
AT89S51 telah berhasil dengan baik dimana ditampilkan dalam kolom quality untuk
masing-masing Item ID digital input memberikan hasil good / baik. Sehingga setiap
perubahan bit secara sinyal elektrik pada digital input maka secara otomatis akan
mengubah nilai bit yang ada pada OPC Quick Client. Untuk melihat bingkai protokol
komunikasi yang terjadi antara master dengan slave remote I/O dapat dilihat dengan
menggunakan perangkat lunak Free Serial Port Monitor yang dapat diberikan pada
gambar sebagai berikut :

Gambar 9. Hasil Memanggil-Menjawab Modbus RTU untuk 16 Kanal Digital Input

Pengujian

selanjutnya

dilakukan

dengan

memberikan

variasi

dengan

menggunakan baud rate yang lebih tinggi, alamat slave yang lain dan mengurangi nama
tag digital input yang dideklarasikan atau deklarasi nama tag hanya diisi sebagian kanal
dari jumlah 16 digital input. Hal ini diperlukan untuk meyakinkan apakah algoritma
komunikasi modbus RTU sudah handal untuk dapat menjawab sebagian alamat digital
input yang dipanggil dari sisi master. Hasil dari variasi tersebut semuanya juga
mendapatkan kualitas good untuk setiap Item ID digital input yang dideklarasikan
sehingga remote I/O ini sudah siap digunakan sebagai ekspansi I/O digital input pada
PLC dan/atau OPC pada sistem SCADA yang mendukung protokol komunikasi modbus
RTU.

KESIMPULAN
Dari hasil pengujian komunikasi modbus RTU antara alat remote I/O 16 kanal
digital input berbasis mikrokontroler AT89S51 dengan OPC Server Modbus didapatkan
bahwa setiap data tag digital input komunikasi modbus mendapatkan kualitas good /
baik sehingga alat remote I/O 16 kanal digital input berbasis mikrokontroler AT89S51
sudah siap digunakan sebagai ekspansi I/O digital input pada PLC dan/atau OPC pada
sistem SCADA yang mendukung protokol komunikasi modbus RTU.

UCAPAN TERIMAKASIH
Penulis mengucapkan terimakasih kepada saudara Agung Nugroho yang
berprofesi sebagai system integrator PLC / SCADA dimana telah memberikan saran
dan membagi pengalaman mengenai spesifikasi remote I/O yang dibutuhkan dan yang
dapat diterima dalam dunia industri.

DAFTAR PUSTAKA
[1] ..... , 1996. Modicon Modbus Protocol Reference Guide Rev. J, Modicon Inc.
Industrial Automation Systems.
[2] ..... , 2006. Modbus Over Serial Line : Specification and Implementation Guide
V1.02, Modbus Organization..
[3] ..... , 2008. Read Input Status (FC=02), Simply Modbus Inc.
URL: http://www.simplymodbus.ca/FC02.htm
[4] ..... , 2001. ATMEL AT89S51 Datasheet, Atmel Corporation.
[5] Sandeep Dutta, 2008. SDCC Compiler User Guide, General Public License.
URL: http://sdcc.sourceforge.net/doc/sdccman.pdf
[6] Worapoht Kornkaewwattanakul, 2009. M-IDE Studio for MCS 51, Standard
Edition.
URL: http://www.opcube.com/home.html

Anda mungkin juga menyukai