Latar Belakang, Alur Data, Aplikasi & Keterbatasan Protocol Modbus
17 April 2011, 17.16
Diposting Oleh: Ari Sulistiono | lokasi Tag: Control System, Komunikasi Data, SCADA
Sub.Category: Control & Automation
Modbus adalah protokol komunikasi serial yang diterbitkan oleh Modicon pada 1979 untuk diaplikasikan pada programmable logic controller (PLC). Kemudian protokol ini telah menjadi standar de facto protokol komunikasi di industri, dan sekarang Modbus merupakan protokol komunikasi dua-arah yang paling umum digunakan sebagai media penghubung dengan perangkat industri atau media elektronik lainnya dengan komputer. Alasan utama penggunaan Modbus secara ekstensif sebagai protokol komunikasi adalah:
- Modbus diterbitkan sebagai open protocol dan bebas royalti
- Modbus relatif mudah untuk digabungkan dengan jaringan industri
- Modbus melakukan transfer data “raw bits” atau “words” tanpa membatasi jenis vendor atau jenis merk pabrikan perangkat industri yang digunakan
Modbus memungkinkan adanya komunikasi dua-jalur antar perangkat yang terhubung ke jaringan yang sama, misalnya suatu sistem yang mengukur suhu dan kelembaban dan mengkomunikasikan hasilnya ke komputer (HMI). Modbus sering digunakan untuk menghubungkan sopervisory computer dengan remote terminal unit (RTU) supervisory control dan sistim akuisisi data ( SCADA ).
Pabrikan atau suplier besar maupun kecil, system integrator, end-user, pengembang open source, dosen dan pihak yang berkepentingan lainnya dapat menjadi anggota Modbus. Beberapa anggota yang menonjol adalah SoftDEL Systems, Precision Digital Corporation, Motor Protection Electronics, FieldServer Technologies dan masih banyak lagi.
Versi-Versi Protokol
Komunikasi dengan menggunakan Protokol Modbus bisa melalui perantara port serial (RS-232, RS-485, FO), bisa juga melalui Ethernet (LAN) dan jaringan lainnya yang mendukung protokol Internet.
Kebanyakan perangkat Modbus berkomunikasi melalui serial EIA-485 physical layer, umumnya pabrikan sensor dan tranducer tipe compact menggunakan ini karena jauh lebih simple dan low-cost. Ada banyak varian protokol Modbus
-
Modbus RTU — digunakan dalam komunikasi serial & menggunakan representasi nilai data biner yang dipadatkan sebagai protokol komunikasi. Format RTU mengikuti request perintah / transfer data dengan cyclic redundancy check checksum sebagai mekanisme pemeriksaan kesalahan (error-check) untuk memastikan keandalan data. Modbus RTU adalah implementasi yang paling umum dari semua versi Modbus yang ada. Sebuah pesan Modbus RTU harus dikirimkan secara terus menerus tanpa jeda antar-karakter. Setiap pesan Modbus dibingkai atau dipisahkan oleh periode-periode saat idle (tanpa komunikasi atau Port komunikasi ditutup atau OFF). Komunikasi via Modbus RTU sering dipakai dalam sistem monitoring skala kecil dimana sensor-sensor dan komputer HMI letaknya tidak sangat jauh.
-
Modbus ASCII — Protokol Modbus jenis ini digunakan pada komunikasi serial dan memanfaatkan karakter ASCII dalam berkomunikasi di dalam satu protokol. Format data ASCII menggunakan sebuah longitudinal redundancy check checksum di dalam memeriksa kesalahan transfer data. Pesan data pada Modbus ASCII dibingkai oleh tanda titik dua atau colon (':') dimuka dan diikuti oleh baris baru (CR/LF). Komunikasi antar perangkat elektronik dengan komputer melalui Protokol Modbus ASCII umumnya digunakan dalam jaringan telepon atau pun Modem GSM apabila tidak tersedia infrastruktur jaringan yang memadai seperti LAN atau jaringan Fiber-Optic disana.
-
Modbus TCP/IP or Modbus TCP — Protokol Modbus varian ini hanya bisa digunakan untuk komunikasi melalui jaringan TCP/IP atau umumnya dikenal dengan jaringan LAN. Modbus TCP/IP tidak memerlukan kalkulasi checksum pada layer terakhir untuk menangani kesalahan transfer data seperti pada komunikasi serial. Modbus TCP/IP lebih cepat dalam melakukan transfer data dibanding dengan Modbus RTU apalagi Modbus ASCII. Pada aplikasi sistem SCADA atau pun Automation yang kompleks dimana digunakan perangkat IED dalam jumlah yang banyak dan beraneka ragam atau dimana tingkat traffic transfer data yang padat, saya lebih menyarankan penggunaan Modbus TCP/IP untuk mencapai tingkat real-time yang lebih tinggi. Tentu saja perangkat IED dengan Port TCP/IP itu sendiri harganya relatif lebih mahal dibanding dengan Port RS-485.
-
Modbus over TCP/IP or Modbus over TCP — Ini adalah varian Modbus yang berbeda dari Modbus TCP dimana digunakan checksum atau kalkulasi kesalahan transfer data (error-check) yang termasuk dalam payload seperti Modbus RTU.
-
Modbus Plus (Modbus+ or MB+) — Modbus Plus (Modbus + atau MB +) juga ada dan merupakan versi ekstensi dari semua versi Modbus, namun hanya eksklusif untuk SCHNEIDER ELECTRIC saja. Modbus ini membutuhkan co-prosesor khusus untuk menangani rotasi token secara cepat seperti HDLC. Modbus jenis ini menggunakan kabel twisted pair pada kecepatan 1 Mbit/s dan termasuk trafo isolasi di setiap node. Antarmuka khusus diperlukan sebagai penghubung Modbus Plus ke komputer, biasanya menggunakan card ISA (SA85), bus PCI atau PCMCIA yang khusus dibuat untuk MB+.
Pemodelan data dan fungsi request data pada ke-empat varian Modbus selain MB+ diatas pada dasarnya adalah identik, hanya enkapsulasi atau fromat frame/bingkainya saja yang berbeda.
Komunikasi dan perangkat
Setiap perangkat yang diinginkan untuk berkomunikasi via protokol Modbus harus diberi alamat yang unik atau tidak boleh sama dengan alamat perangkat lainnya. Dalam komunikasi serial dan jaringan MB+ hanya node yang ditugaskan sebagai Master saja yang dapat memulai perintah, berbeda halnya dengan Ethernet, perangkat manapun dapat mengirimkan perintah Modbus, walaupun biasanya hanya satu perangkat master yang melakukannya.
Perintah Modbus berisi alamat Modbus perangkat yang ingin dituju atau yang ingin diminta berkomunikasi.. Hanya perangkat yang dimaksudkan akan bertindak atas perintah, meskipun perangkat lain mungkin juga menerima pesan/perintah tersebut (pengecualian adalah perintah broadcastable khusus dikirim ke node 0 yang bertindak tapi tidak diakui). Semua perintah pada Modbus mengandung pemeriksaan informasi, untuk memastikan bahwa perintah yang datang tidak rusak atau error. The Perintah dasar pada Modbus dapat memerintahkan sebuah RTU untuk mengubah nilai salah satu kontrol,register atau membaca sebuah port Input/Output, serta sekaligus memerintahkan perangkat untuk mengirimkan kembali satu atau lebih nilai yang terkandung dalam register yang diakses atau dirubah tersebut.
Ada banyak modem dan gateway yang didukung oleh Modbus, karena memang Modbus merupakan protokol yang sangat sederhana dan sering disalin oleh pabrikan-pabrikan perangkat elektronik dan jaringan. Beberapa dari mereka, ada yang secara khusus membuat perangkat yang dirancang untuk protokol ini. Implementasi yang berbeda menggunakan kabel, komunikasi nirkabel dan bahkan SMS atau GPRS. Masalah klasik para desainer sistem monitoring dengan jaringan nirkabel/wireless, SMS dan GPRS adalah bahwa sistem yang mereka buat harus mampu mencakup latensi tinggi dan mengatasi masalah waktu.
Format Frame/Bingkai Data pada Modbus
Semua varian Modbus memilih untuk menggunakan format frame/bingkai data yang berbeda.
Format Frame / Bingkai Data Modbus RTU (Serial) - untuk satu kali transfer data | ||||
---|---|---|---|---|
Nama | Panjang Data | Fungsi Layer / Lapisan Data Biner | ||
Start | 3.5c idle | Setidaknya 3.5 kali karakter antar frame untuk waktu jeda (keheningan/silence) setiap proses transfer data | ||
Address | 8 bits 8 bit | Station Address atau Alamat Perangkat/Slave yang Dituju | ||
Function Code | 8 bits 8 bit | Indikasi Function Codes seperti Read Coil, Read Register, Write Register dsb. | ||
Data | n * 8 bits n * 8 bit | Data + Length, akan terisi bergantung pada jenis pesan yang dikirim/diterima | ||
CRC Check | 16 bits 16 bit | Error checks atau Checksum kesalahan transfer data | ||
End | 3.5c idle | Setidaknya 3.5 kali karakter antar frame untuk waktu jeda (keheningan/silence) setiap proses transfer data |
Format Frame Modbus ASCII | ||||
---|---|---|---|---|
Nama | Panjang Data | Fungsi Layer | ||
Start | 1 char | Dimulai dengan “titik dua” atau colon ( : ), nilai ASCII colon dalam hexadecimal adalah 3A) | ||
Address | 2 chars | Station Address atau Alamat Perangkat/Slave yang Dituju | ||
Function Code | 2 chars | Indikasi Function Codes seperti Read Coil, Read Register, Write Register dsb. | ||
Data | n chars | Data + Length, akan terisi bergantung pada jenis pesan yang dikirim/diterima | ||
LRC Check | 2 chars | Error checks atau checksum kesalahan transmisi data | ||
End | 2 chars | Carriage Return – Line Feed (ditulis: CRLF) pair/sepasang, nilai karakter ASCII ini jika ditulis dalam bilangan hexadecimal adalah 0D & 0A hex |
Modbus TCP Frame Format Modbus TCP Frame Format | ||||
---|---|---|---|---|
Nama | Panjang Data | Fungsi Layer | ||
Transaction Identifier | 2 bytes | Untuk sinkronisasi pesan antara Server dengan Client | ||
Protocol Identifier | 2 bytes | Zero atau 0 untuk MODBUS/TCP | ||
Length Field | 2 bytes | Jumlah byte yang tersisa dalam frame ini | ||
Unit Identifier | 1 byte | Slave Address (“255” jika tidak digunakan) | ||
Function Code | 1 byte | Function codes seperti pada varian Modbus lainnya | ||
Data bytes | n bytes | Data sebagai Response atau Commands Data |
Unit identifier digunakan dengan Modbus / perangkat TCP yang merupakan gabungan dari beberapa perangkat Modbus, misalnya pada Modbus / TCP ke gateway Modbus RTU. In such case, the unit identifier tells the Slave Address of the device behind the gateway. Dalam hal demikian, unit pengenal menceritakan Alamat Slave perangkat di belakang gateway. Natively MODBUS/TCP-capable devices usually ignore the Unit Identifier. Native Modbus / TCP-perangkat mampu biasanya mengabaikan Identifier Unit.
Jenis Function Code yang Terdapat Pada Modbus
- 01 Read Coil Status atau Baca Status Coil
- 02 Read Input Status atau Baca Status Input
- 03 Read Holding Registers atau Baca Register Holding
- 04 Read Input Registers atau Baca Register Input
- 05 Force Single Coil atau Rubah Status Single Coil (0 atau 1)
- 06 Preset Single Register atau Mengisi/Menulis Data pada Single Register
- 07 Read Exception Status
- 08 Diagnostics
- 09 Program 484
- 10 Poll 484
- 11 Fetch Communication Event Counter (Ambil Penghitung Event Komunikasi)
- 12 Fetch Communication Event Log (Ambil Event Log Komunikasi)
- 13 Program Controller
- 14 Poll Controller
- 15 Force Multiple Coils atau Merubah Status Banyak Coils
- 16 Preset Multiple Registers atau Menulis/Mengisi Data Lebih dari Satu Register
- 17 Report Slave ID
- 18 Program 884/M84
- 19 Reset Comm. Link
- 20 Read General Reference
- 21 Write General Reference
- 22 Mask Write 4X Register
- 23 Read/Write 4X Registers
- 24 Read FIFO (First In Fisrt Out) Queue
Function Code / tipe data pada Modbus meliputi beberapa jenis berikut ini. Dan yang paling sering digunakan dalam aplikasi industri ditandai dengan huruf miring.
Implementasi Modbus dalam Transfer Data
Hampir semua implementasi memiliki berbagai jenis variasi dari standar resmi yang ada. Varietas yang berbeda mungkin tidak dapat berkomunikasi dengan baik antar peralatan elektronik dari supliers yang berbeda.
Untuk memahami implementasi Modbus, sebaiknya readers membuka instruction manual peralatan elektronik atau IED masing-masing. Di halaman paling belakang biasanya terlampir Modbus Register Map, dimana nilai dan jenis data pada register yang ada pada peralatan. Perlu diketahui, alamat register beserta nilainya pasti berbeda dari satu merk dengan merk lainnya meski fungsinya sama, misal: sensor tegangan tapi berbeda merk.
Beberapa variasi nilai data register yang paling umum adalah:
Tipe data:
- Floating point IEEE, nilai pengukuran yang lebih presisi dengan pecahan s/d beberapa angka dibelakang koma
- 32-bit integer (bilangan bulat 32-bit, terdiri dari dua buah bilangan hexadecimal yang digabungkan)
- 8-bit data (antara 0 s/d 255 atau 00 s/d FF hex)
- Tipe data campuran (misal: Merk atau nomor seri peralatan)
- Bit fields di dalam integers, nilai bit di dalam bilangan bulat. Misal: Nilai sebaris channel input/output (Status On-Off) PLC seperti: 00100100
- Multipliers atau faktor pengali untuk mengubah data dari nilai integer. 10, 100, 1000, 256 ... 10, 100, 1000, 256 ... Misal: faktor pengali 1000 untuk nilai tegangan 150 (int) maka tegangan yang dimaksud adalah 150.000 Volts atau 150kV
Protocol extensions:
- 16-bit slave addresses
- 32-bit data size (1 address = 32 data dikembalikan)
- Word swapped data
Keterbatasan-Keterbatasan Modbus
- Semenjak Modbus dirancang pada akhir tahun 1970-an untuk dijadikan perantara atau bahasa komunikasi standar untuk programmable logic controller (PLC), jumlah tipe data ini terbatas pada mereka yang mengerti PLC pada saat itu. Sehingga object dengan nilai biner yang besar tidak didukung.
- Tidak ada cara yang standar untuk sebuah node untuk menemukan deskripsi objek data, misalnya, untuk menentukan bahwa nilai register tersebut merupakan perwakilan nilai suhu antara 30 dan 175 derajat. Karena data yang diterima hanyalah berupa nilai desimal, sehingga seorang perancang sistem harus lebih jeli agar tidak salah dalam membaca register dan alamat slave yang dituju.
- Karena Modbus adalah protokol dengan sistem master/slave, slave hanya akan memberikan data atau pesan jika diperintah oleh master saja, sehingga tidak ada jalan bagi perangkat elektronik yang ada di lapangan untuk mengirimkan "report by exception" (kecuali Modbus over Ethernet TCP/IP, dikenal dengan istilah open-mbus). Master node harus secara rutin meminta atau mengumpulkan data (polling data) kepada setiap perangkat yang ada di lapangan, dan mencari adanya perubahan data disana. Tentu saja hal ini akan memakan bandwidth dan waktu pemakaian jaringan yang lebih lama di dalam konteks dimana aplikasi pemakaian bandwidth yang mungkin mahal, seperti pada low-bit-rate radio link, modem GSM dlsb.
- Modbus RTU dan ASCII dibatasi hanya boleh menangani 247 perangkat elektronik (IED) saja pada satu link jaringan, dan tentunya akan membatasi jumlah perangkat lapangan yang mungkin terhubung ke master station (sekali lagi tidak berlaku pada Modbus Ethernet TCP / IP).
- Transmisi Modbus harus bersebelahan yang akhirnya membatasi jenis komunikasi jarak jauh dengan perangkat elektronik dan hanya dapat dilakukan oleh perangkat elektronik yang bisa mem-buffer data untuk menghindari kesenjangan atau gaps dalam transmisi.
- Di dalam Protokol Modbus tidak terdapat security / pengaman terhadap perintah yang tidak sah (unauthorized commands) atau intersepsi data. Faktor terakhir inilah yang membuat banyak industri yang merasa takut atau resah akan adanya pihak-pihak yang tidak bertanggung-jawab dan dengan sengaja merusak sistem operasi dan berdampak pada jumlah kerugian investasi yang sangat besar.
Sehingga munculah standar-standar protokol baru guna menangani segala keterbatasan yang ada pada Modbus namun tetap bersifat open-protocol agar tidak muncul praktek monopoli perdagangan pada satu merk dalam bidang Automation.
Open-Protocol Standar Lainnya
Selain Modbus, tengah diaplikasikan dan dikembangkan juga open-protocol standar jenis baru yang diharapkan mampu menjawab tantangan-tantangan berkaitan dengan security-issue yang ada pada Modbus.
Meskipun demikian, untuk aplikasi protokol baru ini di Indonesia masih sebatas vendor-vendor besar saja dan belum semua sistem integrator dapat mengaplikasikannya sebagai pengganti Modbus. Semakin tinggi tingkat keamanan sebuah protokol tentu saja pemrogrammannya menjadi lebih rumit, dan tidak boleh ada kesalahan. Satu kesalahan saja sistem akan memblokade jalur komunikasi secara otomatis seperti “time-stamp” dan sebagainya.
Protokol-Protokol Standar baru tersebut antara lain adalah sebagai berikut":
- IEC 60870-5 IEC 60870-5
- IEC 60870-5-101 IEC 60870-5-101
- IEC 60870-5-104 IEC 60870-5-104
- IEC 60870-5-103 IEC 60870-5-103
- IEC 61850 IEC 61850
- DNP3 DNP3
Menanggapi feedback-readers yang ingin tahu tentang Modbus, maka saya rilis tulisan ini. Untuk memahami lebih lanjut transmisi data yang terdapat pada Modbus dan memahaminya lebih mendalam lagi fungsi dan cara kerjanya, anda dapat men-dowbload Modbus RTU Tester di website ini dan mempraktekkannya ke perangkat elektronik anda secara langsung. Pastikan anda memiliki:
- Modbus Register Map alat tersebut (biasanya terlampir di buku manual),
- Kabel data serial (apabila port alat adalah RS485),
- RS485-RS232 Converter (apabila port alat adalah RS485),
- Komputer dengan port RS232 (apabila port alat adalah RS485),
- Modbus RTU Tester, dapat di download di website ini
- Dan cukup kabel LAN direct untuk alat dengan port TCP/IP
Terima kasih telah membaca artikel ini, semoga bermanfaat & h’py bloggin’. -Ari Sty-
Turut serta meramaikan COMPFEST 2011
You may share this document under Creative Commons License – Terima kasih telah membaca tulisan ini. © 2011 Ari Sulistiono, Indonesian Electrical Engineer.
Tags: Control System, Komunikasi Data, SCADA