PEMBUATAN REMOTE I/O 16 KANAL Moh. Imam Afandi INTISARI · Tegangan power alat mempunyai range...
Transcript of PEMBUATAN REMOTE I/O 16 KANAL Moh. Imam Afandi INTISARI · Tegangan power alat mempunyai range...
1
PEMBUATAN REMOTE I/O 16 KANAL DIGITAL OUTPUT 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 output menggunakan protokol modbus RTU
berbasis mikrokontroler AT89S51. Remote I/O yang dibuat ini selanjutnya dapat digunakan sebagai
ekspansi I/O digital output pada PLC (Programmable Logic Controller) dan/atau sistem OPC (Ole for
Process Control) Server 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 membaca dan menulis bit secara satu-satu maupun
bersamaan pada 16 kanal digital output telah berhasil dengan kualitas OPC good/baik tanpa ada
sedikitpun kualitas bad/buruk pada setiap output yang diakses.
Kata kunci : Remote I/O, 16 kanal digital output, protokol modbus RTU, mikrokontroler AT89S51,
ekspansi I/O digital output pada PLC dan/atau OPC Server SCADA.
ABSTRACT The remote I/O has been built with 16 channels of digital output using modbus RTU protocol based on
AT89S51. The remote I/O can be used as I/O ekspansion of digital output 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, single write and multiple
write 16 channels of digital output with good quality OPC for each accessed of digital output.
Keywords : Remote I/O, 16 channels of digital output, modbus RTU protocol, AT89S51 microcontroller,
expansion I/O of digital output for PLC and/or OPC Server 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
2
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 output menggunakan protokol modbus RTU
berbasis mikrokontroler AT89S51. Dalam tulisan makalah ini akan dijelaskan mengenai
pembuatan remote I/O 16 digital output 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 output 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] :
Gambar 1. Skema Memanggil-Menjawab pada Protokol Modbus RTU
Station Number
Function Code
Data Bytes (Flexible)
Error Check
Query/Request from Master
Station Number
Data Bytes (Flexible)
Error Check
Function Code
Response from Slave
3
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 dalam nilai desimal sebagai berikut [1,2] :
• 1 : read DO (Digital Output)
• 2 : read DI (Digital Input)
• 3 : read AO (Analog Output)
• 4 : read AI (Analog Input)
• 5 : write single DO (Digital Output)
• 6 : 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] :
Gambar 2. Bingkai Prosedur Data pada Protokol Modbus RTU
Pada gambar 2 dapat dijelaskan bahwa untuk memulai skema memanggil-
menjawab 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 memanggil-
menjawab untuk membaca digital output pada protokol modbus RTU sebagai berikut :
- Contoh fungsi membaca status digital output [3],
Station Number Function Code Data Error Check End
1 Char 1 Char n Chars 2 Chars 3.5 Chars
Start
3.5 Chars
Silence CRC Silence
4
Misalkan suatu contoh protokol modbus RTU untuk mendapatkan status digital
output coil dari alamat 20 sampai 56 dengan alamat slave 17.
� Memanggil (dari sisi master)
11 01 0013 0025 0E84
11: alamat slave (17 = 11 hex)
01: function code (kode sandi membaca status digital output)
0013: alamat digital output pertama yang dibaca (alamat 20 - 1 = 19 = 13 hex)
0025: jumlah alamat digital output yang dibaca (alamat 20 sampai 56 = 37 = 25
hex)
0E84: algoritma CRC-16 (cyclic redundancy check) untuk cek error data yang
dikirim.
� Menjawab (dari sisi slave)
11 01 05 CD6BB20E1B 45E6
11: alamat slave (17 = 11 hex)
01: function code (kode sandi membaca status digital output)
05: jumlah byte data yang diberikan (37 DI / 8 bits per byte = 5 bytes)
CD: DI 20 - 27 (1100 1101)
6B: DI 28 - 35 (0110 1011)
B2: DI 36 - 43 (1011 0010)
0E: DI 44 - 51 (0000 1110)
1B: DI 52 - 56 (0001 1011)
45E6: algoritma CRC-16 (cyclic redundancy check) untuk cek error data yang
dikirim.
- Contoh fungsi menulis nilai satu bit digital output [4],
Misalkan suatu contoh protokol modbus RTU untuk menulis bit digital output coil
pada alamat 173 menjadi ON dengan alamat slave 17.
� Memanggil (dari sisi master)
11 05 00AC FF00 4E8B
11: alamat slave (17 = 11 hex)
5
05: function code (kode sandi menulis bit pada satu kanal digital output)
00AC: alamat digital output yang mau ditulis (alamat 173 - 1 = 19 = 172 hex)
FF00: status bit yang mau ditulis (FF00 = ON, 0000 = OFF)
4E8B: algoritma CRC-16 (cyclic redundancy check) untuk cek error data yang
dikirim.
� Menjawab (dari sisi slave) (secara normal merupakan echo dari panggilan master
11 05 00AC FF00 4E8B
11: alamat slave (17 = 11 hex)
05: function code (kode sandi menulis bit pada satu digital output)
00AC: alamat digital output yang mau ditulis (alamat 173 - 1 = 19 = 172 hex)
FF00: status bit yang mau ditulis (FF00 = ON, 0000 = OFF)
4E8B: algoritma CRC-16 (cyclic redundancy check) untuk cek error data yang
dikirim.
Untuk contoh fungsi menulis nilai beberapa bit digital output dapat dilihat pada
referensi [5]. Data MSB (Most Significant Byte) dari suatu byte data menandakan
alamat yang lebih tinggi dan data yang dikirim di luar jangkauan dianggap 0.
DESKRIPSI ALAT
Pembuatan remote I/O ini menggunakan mikrokontroler AT89S51 [6] 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
output 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 :
6
Gambar 3. Skema Blok Diagram Alat Remote I/O 16 kanal DO 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 DO 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 output yang berjumlah
16 kanal pin dimana untuk setiap kanal pin dari digital output mempunyai rangkaian
interface output tipe source sehingga dapat mengeluarkan nilai output tegangan
maksimal sebesar 24 Vdc 1A. Tegangan power alat mempunyai range antara 9 – 24
Vdc untuk memenuhi standard industri. Port 2 digunakan sebagai pemilihan alamat
Port 0 Port 1
Port 2 Dip Switch 8 kanal untuk alamat slave modbus RTU
Digital Output Nomor 9 - 16
Digital Output Nomor 1 - 8
AT89S51
MAX 485
Komunikasi Serial RS-485
Pin 3.4 – 3.7 Dip Switch 4 kanal untuk pemilihan baud rate komunikasi serial
Enable (P3.2) Tx Rx
7
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 output 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 output ini dapat dijabarkan
sebagai berikut :
- Digital output : 16 channels
- Output logic level 0 : 0 Vdc
- Output logic level 1 : 5 – 24 Vdc (source type)
- Led output indicator : Yes (Yellow)
- Overvoltage protection : 100 Vdc
- Connector type : scew 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
digunakan compiler SDCC [7] yang mendukung bahasa C dengan editor MIDE-51 [8].
Diagram alir dari program C yang dibuat tersebut dapat diberikan sebagai berikut :
8
Gambar 5. Diagram Alir Program Remote I/O 16 kanal DO 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 2 dan baud rate 9600 melalui
komunikasi serial RS-485. Untuk OPC Server Modbus dipilih setting modbus serial
Mulai
Inisialisasi port
> 3.5 char waktu diam ?
FC = 1 ?
Baca alamat dip switch slave & dip switch baud rate
Jawab char data alamat slave,
FC=1, byte data DO yg dipanggil
& CRC
Looping terus ?
Deteksi kondisi bit DO yang diminta
Selesai
Tunda sisa 3.5 char waktu diam
FC = 5 ? FC = 15 ?
Alamat slave, FC=1 or 5 or 15, byte data 16 DO & CRC benar ?
Deteksi alamat slave, FC, byte data 16 DO & CRC
Jawab echo panggilan dari master
Ubah nilai bit dari satu kanal DO yang diminta
Tunda sisa 3.5 char waktu diam
Ubah nilai bit dari beberapa kanal DO
yang diminta
Tunda sisa 3.5 char waktu diam
Jawab char data alamat slave,
FC=15, jumlah byte data DO yg ditulis & CRC
Y
Y
Y Y Y
Y
T
T T T
T
T
9
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 output dari alamat 00001 sampai
00016 seperti yang diberikan pada gambar berikut :
Gambar 7. Deklarasi Nama Tag Digital Output 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
10
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 output berbasis mikrokontroler
AT89S51 telah berhasil dengan baik dimana ditampilkan dalam kolom quality untuk
masing-masing Item ID digital output memberikan hasil good / baik. Sehingga setiap
perubahan bit secara sinyal elektrik pada digital output 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 :
11
Gambar 9. Bingkai Protokol Komunikasi Untuk Membaca 16 Kanal Digital Output
Kemudian pengujian untuk memberi nilai biner pada salah satu kanal digital
output seperti yang diberikan pada gambar sebagai berikut :
Gambar 10. Pemberian Nilai Bit Pada Salah Satu Kanal Digital Output
12
Dari pemberian nilai bit pada gambar 10 menjadikan perubahan nilai bit pada
tag OPC Quick Client seperti yang diberikan pada gambar sebagai berikut :
Gambar 11. Perubahan Nilai pada Tag
Bingkai protokol komunikasi yang terjadi antara master dengan slave remote I/O
jika memberikan nilai pada salah satu bit dapat diberikan pada gambar sebagai berikut :
Gambar 12. Bingkai Protokol Komunikasi Untuk Memberi Nilai Satu Pada Digital Output
Selanjutnya dilakukan pengujian yang lain dengan memberikan variasi
pengujian pada baud rate 19200, 57600 dan 115200. Kemudian variasi pengujian pada
alamat slave yang lain dan dengan mengurangi nama tag digital output yang
13
dideklarasikan atau deklarasi nama tag hanya diisi sebagian kanal dari jumlah 16 digital
output. Kemudian dilakukan juga variasi pengujian dengan memberikan nilai bit secara
satu-satu dan secara bersamaan Hal ini diperlukan untuk meyakinkan apakah algoritma
komunikasi modbus RTU sudah handal dalam memberikan respon dengan benar untuk
semua kemungkinan pemanggilan yang dilakukan dari sisi master. Hasil dari variasi
tersebut semuanya didapatkan juga kualitas good untuk setiap Item ID digital output
yang dideklarasikan sehingga remote I/O ini sudah siap digunakan sebagai ekspansi I/O
digital output 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 output berbasis mikrokontroler AT89S51 dengan OPC Server Modbus
didapatkan bahwa setiap data tag digital output komunikasi modbus mendapatkan
kualitas good / baik untuk membaca, menulis bit secara satu-satu maupun bersamaan
sehingga alat remote I/O 16 kanal digital output berbasis mikrokontroler AT89S51
sudah siap digunakan sebagai ekspansi I/O digital output 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 Coil Status (FC=01), Simply Modbus Inc. URL: http://www.simplymodbus.ca/FC01.htm [4] ..... , 2008. Force Single Coil (FC=05), Simply Modbus Inc. URL: http://www.simplymodbus.ca/FC05.htm
14
[5] ..... , 2008. Force Multiple Coils (FC=15), Simply Modbus Inc. URL: http://www.simplymodbus.ca/FC15.htm [6] ..... , 2001. ATMEL AT89S51 Datasheet, Atmel Corporation. [7] Sandeep Dutta, 2008. SDCC Compiler User Guide, General Public License.
URL: http://sdcc.sourceforge.net/doc/sdccman.pdf [8] Worapoht Kornkaewwattanakul, 2009. M-IDE Studio for MCS 51, Standard
Edition. URL: http://www.opcube.com/home.html