PEMBUATAN REMOTE I/O 16 KANAL Moh. Imam Afandi INTISARI · Tegangan power alat mempunyai range...

14
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

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