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 ?
T
Y
Deteksi char data alamat slave, function code, byte data, & CRC
T
Alamat slave, FC, byte 16 DI & CRC benar ? Y
Deteksi kondisi bit 16 kanal digital input yang diminta
T
Sisa waktu diam 3.5 char terpenuhi? Y
Jawab char data alamat slave, FC=1, byte data DI yg diminta, & CRC
Looping terus ?
Y
T
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