• Tidak ada hasil yang ditemukan

PEMBUATAN REMOTE I/O 16 KANAL DIGITAL OUTPUT MENGGUNAKAN PROTOKOL MODBUS RTU BERBASIS MIKROKONTROLER AT89S51. Moh. Imam Afandi

N/A
N/A
Protected

Academic year: 2021

Membagikan "PEMBUATAN REMOTE I/O 16 KANAL DIGITAL OUTPUT MENGGUNAKAN PROTOKOL MODBUS RTU BERBASIS MIKROKONTROLER AT89S51. Moh. Imam Afandi"

Copied!
14
0
0

Teks penuh

(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

(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

(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

(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

(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

(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

(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

(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

(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

(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

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

(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

(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

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

Gambar

Gambar 1.  Skema Memanggil-Menjawab pada Protokol Modbus RTU
Gambar 2.  Bingkai Prosedur Data pada Protokol Modbus RTU
Gambar 3.  Skema Blok Diagram Alat Remote I/O 16 kanal DO Modbus RTU
Gambar 5.  Diagram Alir Program Remote I/O 16 kanal DO Modbus RTU
+5

Referensi

Dokumen terkait