Modbus network linking a controller with distributed field devices

Modbus: Protokol Fieldbus Industri Asli

Modbus remains widely deployed because its data model is simple, not because every implementation is simple. This guide explains frames, register mapping, ti...

Fieldbus adalah protokol komunikasi yang digunakan dalam jaringan industri untuk menghubungkan perangkat lapangan ke pengendali industri. Fieldbus mengurangi jumlah kabel yang diperlukan antara pengendali dan perangkat karena beberapa perangkat dapat terhubung ke pasangan kabel yang sama.

Ada sejumlah teknologi fieldbus populer, termasuk Modbus, Profibus, Foundation Fieldbus, ControlNet, DeviceNet, dan banyak lainnya.

Pada tahun 1979, Modicon memperkenalkan protokol baru yang memanfaatkan lapisan aplikasi model OSI, khususnya untuk digunakan dengan PLC-nya. Protokol ini disebut Modbus dan menjadi fieldbus pertama yang digunakan secara luas dalam sejarah otomasi.

 

PLC yang terhubung ke perangkat lapangan melalui fieldbus

Gambar 1. PLC yang terhubung ke perangkat lapangan 

 

Pengantar Modbus

Modbus dirancang untuk menghubungkan perangkat lapangan ke pengendali industri. Pada saat ditemukan, sebagian besar perangkat menggunakan representasi tegangan atau arus sebagai sarana untuk mengomunikasikan status perangkat. Modbus dapat menangani bit diskret yang mencerminkan keadaan tinggi/rendah sensor dan aktuator, serta register yang menyimpan nilai bilangan bulat yang setara dengan nilai proses analog.

Peralihan yang lambat ke teknologi fieldbus menyebabkan Modbus menjadi salah satu protokol paling sederhana, dan versi-versi baru telah ditambahkan selama bertahun-tahun.

Awalnya, Modbus diimplementasikan melalui koneksi komunikasi serial, yaitu RS-232/RS-485. Variasi ini masih umum digunakan dengan nama Modbus RTU dan ASCII. Pada akhirnya, protokol ini diadaptasi untuk digunakan melalui TCP/IP dan Ethernet. Ini umumnya disebut Modbus TCP dan merupakan implementasi Modbus yang paling umum dalam instalasi modern.

 

Model Komunikasi

Modbus menggunakan model master/slave untuk komunikasi (klien/server dalam Modbus TCP). Master Modbus mengirimkan permintaan kepada slave Modbus, yang melakukan tindakan dan merespons master. Dalam skenario ini, master sering kali berupa PLC, sedangkan perangkat lapangan berperan sebagai slave. 

Bingkai pesan dalam Modbus terdiri dari unit data aplikasi (ADU) dan unit data protokol (PDU). ADU berbeda-beda tergantung pada jenis Modbus yang digunakan, sedangkan PDU tidak bergantung pada metode komunikasi.

PDU biasanya terdiri dari kode fungsi dan sejumlah data. Ini dienkapsulasi dalam ADU dengan alamat dan kode pemeriksaan kesalahan. Modbus TCP menggunakan header MBAP (Modbus Application Protocol) dalam ADU.

 

Gambar 2. ADU dan PDU Modbus untuk Modbus ASCII/RTU (atas) dan Modbus TCP (bawah). Gambar diadaptasi dari Modbus.org

 

Agar PDU tetap tidak bergantung pada lapisan komunikasi yang mendasarinya, PDU harus mematuhi batas ukuran spesifikasi serial asli. Ukuran tersebut adalah 256 byte untuk ADU melalui RS-485. Oleh karena itu, kita harus memperhitungkan ADU – 1 byte alamat dan 2 byte pemeriksaan kesalahan – sehingga PDU dibatasi hingga total 253 byte. Perhatikan bahwa alamat dalam ADU sebenarnya adalah ID perangkat slave pada jaringan Modbus.

Bagian data PDU akan berisi bidang khusus untuk kode fungsi, beserta data aktual yang sedang ditransmisikan. Bidang-bidang ini akan dibahas secara mendetail nanti dalam artikel.

 

Representasi Data

Modbus klasik memiliki dua mode transmisi: ASCII dan RTU.

Dalam mode ASCII, data dikirim sebagai karakter ASCII 0-9 dan A-F, sedangkan dalam mode RTU, data direpresentasikan dalam biner 8-bit. Data dan alamat dikodekan dalam urutan big-endian, sehingga byte paling signifikan dikirim terlebih dahulu.

Data Modbus terdiri dari empat jenis utama:

  • Input diskret
  • Koil (output)
  • Register input
  • Register penahan

Input diskret merepresentasikan satu bit data dan hanya dapat dibaca. Koil juga merepresentasikan satu bit, tetapi dapat dibaca maupun ditulis. Register input merepresentasikan data 16-bit yang hanya dapat dibaca, sedangkan register penahan adalah data 16-bit yang dapat dibaca dan ditulis.

 

Gambar 3. Diambil dari Spesifikasi Protokol Modbus

 

Untuk setiap jenis, maksimal 2^16 (65536) item data dapat berada di memori perangkat. Terdapat kode fungsi khusus untuk mengakses setiap jenis data yang berbeda, dan setiap jenis biasanya memiliki blok memorinya sendiri.

Untuk menangani suatu item data, master cukup menggunakan rentang 0-65535. Item data 1 akan berada di alamat 0x0000. Item data 2 akan berada di alamat 0x0001. Item data 65536 akan ditemukan di 0xFFFF. Perlu diingat bahwa perangkat tidak diwajibkan memiliki seluruh 65536 item data; bahkan, sebagian besar terminal I/O jarak jauh yang menggunakan Modbus akan memiliki jumlah yang jauh di bawah batas maksimum ini.

 

Transaksi Modbus

Dengan memahami cara data direpresentasikan dalam Modbus, kita kini dapat memeriksa transaksi secara mendetail. Pembahasan ini akan dilihat dari perspektif PDU, karena PDU tidak bergantung pada lapisan komunikasi.

Transaksi Modbus menggunakan instruksi karakter heksadesimal, dengan satu byte 8-bit berformat 0x00, dengan rentang 0-F untuk setiap karakter. Dengan demikian, register 16-bit setara dengan dua byte, yang direpresentasikan dalam format 0x0000. 

Spesifikasi Modbus mendefinisikan tiga jenis PDU:

  • Permintaan Modbus
  • Respons Modbus
  • Respons Pengecualian Modbus

Master memulai permintaan dengan menggunakan kode fungsi, sedangkan slave mengirimkan respons sebagai tanggapan atas permintaan tersebut. Respons yang berhasil menggemakan kode fungsi yang dikirimkan kepadanya oleh master. Respons pengecualian membalas dengan kode fungsi yang sama, tetapi msb (bit paling signifikan) disetel tinggi untuk menunjukkan bahwa terjadi kesalahan. 

Ada sejumlah kode fungsi yang ditetapkan oleh spesifikasi Modbus. Kode fungsi 0x01 adalah fungsi Read Coils.

Gambar 4 menampilkan contoh seperti apa permintaan dan respons Pembacaan Coil. Master Modbus mengirimkan permintaan dengan kode fungsi 0x01 (Read Coils), dimulai dari item data pertama (alamat 0x0000) dan hanya membaca satu coil. Fungsi Read Coils dapat digunakan untuk membaca hingga 2000 (0x7D0) coil sekaligus. 

 

Gambar 4. Transaksi Pembacaan Coil

 

Jika berhasil, slave merespons dengan kode fungsi yang sama dan jumlah coil yang dikirim dalam respons. Status coil akan memiliki lebar n byte, dengan setiap bit menunjukkan apakah coil tersebut ON (1) atau OFF (0).

Dalam kasus ini, coil pada alamat 0x0000 berada dalam keadaan ON. Jika permintaan tidak berhasil, respons pengecualian akan berisi kode fungsi dengan msb disetel tinggi (0x81), disertai kode pengecualian yang menjelaskan masalahnya. Kode pengecualian 0x02 berarti alamat data ilegal telah digunakan, yaitu tidak ada coil pada 0x0000 di memori slave ini. 

Contoh berikutnya mengilustrasikan transaksi Penulisan Register Tunggal (kode fungsi 0x06). Di sini, master meminta penulisan data 0xA0A0 ke alamat 0x00FF. Respons slave hanyalah gema dari permintaan tersebut.

Contoh respons pengecualian di sini menampilkan kode fungsi dengan msb disetel tinggi, disertai kode pengecualian 0x04. Kode ini berarti bahwa terjadi kesalahan yang tidak dapat dipulihkan saat slave berusaha menjalankan permintaan tersebut. 

 

Gambar 5. Transaksi Penulisan Register Tunggal 

 

Semua kode fungsi Modbus mengikuti pola yang serupa dengan dua contoh yang ditunjukkan di atas.

Gambar 6 menampilkan daftar kode fungsi umum beserta kode pengecualian untuk respons pengecualian. Untuk informasi lebih lanjut, lihat spesifikasi Modbus. 

 

Gambar 6. Kode Fungsi dan Kode Pengecualian

 

Kesimpulan

Modbus memungkinkan PLC berkomunikasi dengan berbagai jenis unit jarak jauh, termasuk bank I/O, unit terminal, dan pengontrol lainnya, dengan mengandalkan metode standar untuk membaca dan menulis informasi diskret maupun bilangan bulat, yang mencakup hampir setiap skenario yang melibatkan transfer data digital.

Modbus merupakan standar industri saat ini dan menjadi protokol industri bebas royalti yang paling luas penggunaannya hingga saat ini, meskipun sudah ada sebelum sebagian besar sistem kontrol modern. Modbus dapat ditemukan di berbagai pabrik dan fasilitas industri di seluruh dunia, dan meskipun telah digunakan dalam waktu lama, protokol ini dipastikan akan tetap relevan di industri selama bertahun-tahun mendatang.

 

Artikel asli diterbitkan pada 2019

Modbus: Protokol Fieldbus Industri Asli

Modbus remains widely deployed because its data model is simple, not because every implementation is simple. This guide explains frames, register mapping, timing, diagnostics, and the design limits...

Fieldbus adalah protokol komunikasi yang digunakan dalam jaringan industri untuk menghubungkan perangkat lapangan ke pengendali industri. Fieldbus mengurangi jumlah kabel yang diperlukan antara pengendali dan perangkat karena beberapa perangkat dapat terhubung ke pasangan kabel yang sama.

Ada sejumlah teknologi fieldbus populer, termasuk Modbus, Profibus, Foundation Fieldbus, ControlNet, DeviceNet, dan banyak lainnya.

Pada tahun 1979, Modicon memperkenalkan protokol baru yang memanfaatkan lapisan aplikasi model OSI, khususnya untuk digunakan dengan PLC-nya. Protokol ini disebut Modbus dan menjadi fieldbus pertama yang digunakan secara luas dalam sejarah otomasi.

 

PLC yang terhubung ke perangkat lapangan melalui fieldbus

Gambar 1. PLC yang terhubung ke perangkat lapangan 

 

Pengantar Modbus

Modbus dirancang untuk menghubungkan perangkat lapangan ke pengendali industri. Pada saat ditemukan, sebagian besar perangkat menggunakan representasi tegangan atau arus sebagai sarana untuk mengomunikasikan status perangkat. Modbus dapat menangani bit diskret yang mencerminkan keadaan tinggi/rendah sensor dan aktuator, serta register yang menyimpan nilai bilangan bulat yang setara dengan nilai proses analog.

Peralihan yang lambat ke teknologi fieldbus menyebabkan Modbus menjadi salah satu protokol paling sederhana, dan versi-versi baru telah ditambahkan selama bertahun-tahun.

Awalnya, Modbus diimplementasikan melalui koneksi komunikasi serial, yaitu RS-232/RS-485. Variasi ini masih umum digunakan dengan nama Modbus RTU dan ASCII. Pada akhirnya, protokol ini diadaptasi untuk digunakan melalui TCP/IP dan Ethernet. Ini umumnya disebut Modbus TCP dan merupakan implementasi Modbus yang paling umum dalam instalasi modern.

 

Model Komunikasi

Modbus menggunakan model master/slave untuk komunikasi (klien/server dalam Modbus TCP). Master Modbus mengirimkan permintaan kepada slave Modbus, yang melakukan tindakan dan merespons master. Dalam skenario ini, master sering kali berupa PLC, sedangkan perangkat lapangan berperan sebagai slave. 

Bingkai pesan dalam Modbus terdiri dari unit data aplikasi (ADU) dan unit data protokol (PDU). ADU berbeda-beda tergantung pada jenis Modbus yang digunakan, sedangkan PDU tidak bergantung pada metode komunikasi.

PDU biasanya terdiri dari kode fungsi dan sejumlah data. Ini dienkapsulasi dalam ADU dengan alamat dan kode pemeriksaan kesalahan. Modbus TCP menggunakan header MBAP (Modbus Application Protocol) dalam ADU.

 

Gambar 2. ADU dan PDU Modbus untuk Modbus ASCII/RTU (atas) dan Modbus TCP (bawah). Gambar diadaptasi dari Modbus.org

 

Agar PDU tetap tidak bergantung pada lapisan komunikasi yang mendasarinya, PDU harus mematuhi batas ukuran spesifikasi serial asli. Ukuran tersebut adalah 256 byte untuk ADU melalui RS-485. Oleh karena itu, kita harus memperhitungkan ADU – 1 byte alamat dan 2 byte pemeriksaan kesalahan – sehingga PDU dibatasi hingga total 253 byte. Perhatikan bahwa alamat dalam ADU sebenarnya adalah ID perangkat slave pada jaringan Modbus.

Bagian data PDU akan berisi bidang khusus untuk kode fungsi, beserta data aktual yang sedang ditransmisikan. Bidang-bidang ini akan dibahas secara mendetail nanti dalam artikel.

 

Representasi Data

Modbus klasik memiliki dua mode transmisi: ASCII dan RTU.

Dalam mode ASCII, data dikirim sebagai karakter ASCII 0-9 dan A-F, sedangkan dalam mode RTU, data direpresentasikan dalam biner 8-bit. Data dan alamat dikodekan dalam urutan big-endian, sehingga byte paling signifikan dikirim terlebih dahulu.

Data Modbus terdiri dari empat jenis utama:

  • Input diskret
  • Koil (output)
  • Register input
  • Register penahan

Input diskret merepresentasikan satu bit data dan hanya dapat dibaca. Koil juga merepresentasikan satu bit, tetapi dapat dibaca maupun ditulis. Register input merepresentasikan data 16-bit yang hanya dapat dibaca, sedangkan register penahan adalah data 16-bit yang dapat dibaca dan ditulis.

 

Gambar 3. Diambil dari Spesifikasi Protokol Modbus

 

Untuk setiap jenis, maksimal 2^16 (65536) item data dapat berada di memori perangkat. Terdapat kode fungsi khusus untuk mengakses setiap jenis data yang berbeda, dan setiap jenis biasanya memiliki blok memorinya sendiri.

Untuk menangani suatu item data, master cukup menggunakan rentang 0-65535. Item data 1 akan berada di alamat 0x0000. Item data 2 akan berada di alamat 0x0001. Item data 65536 akan ditemukan di 0xFFFF. Perlu diingat bahwa perangkat tidak diwajibkan memiliki seluruh 65536 item data; bahkan, sebagian besar terminal I/O jarak jauh yang menggunakan Modbus akan memiliki jumlah yang jauh di bawah batas maksimum ini.

 

Transaksi Modbus

Dengan memahami cara data direpresentasikan dalam Modbus, kita kini dapat memeriksa transaksi secara mendetail. Pembahasan ini akan dilihat dari perspektif PDU, karena PDU tidak bergantung pada lapisan komunikasi.

Transaksi Modbus menggunakan instruksi karakter heksadesimal, dengan satu byte 8-bit berformat 0x00, dengan rentang 0-F untuk setiap karakter. Dengan demikian, register 16-bit setara dengan dua byte, yang direpresentasikan dalam format 0x0000. 

Spesifikasi Modbus mendefinisikan tiga jenis PDU:

  • Permintaan Modbus
  • Respons Modbus
  • Respons Pengecualian Modbus

Master memulai permintaan dengan menggunakan kode fungsi, sedangkan slave mengirimkan respons sebagai tanggapan atas permintaan tersebut. Respons yang berhasil menggemakan kode fungsi yang dikirimkan kepadanya oleh master. Respons pengecualian membalas dengan kode fungsi yang sama, tetapi msb (bit paling signifikan) disetel tinggi untuk menunjukkan bahwa terjadi kesalahan. 

Ada sejumlah kode fungsi yang ditetapkan oleh spesifikasi Modbus. Kode fungsi 0x01 adalah fungsi Read Coils.

Gambar 4 menampilkan contoh seperti apa permintaan dan respons Pembacaan Coil. Master Modbus mengirimkan permintaan dengan kode fungsi 0x01 (Read Coils), dimulai dari item data pertama (alamat 0x0000) dan hanya membaca satu coil. Fungsi Read Coils dapat digunakan untuk membaca hingga 2000 (0x7D0) coil sekaligus. 

 

Gambar 4. Transaksi Pembacaan Coil

 

Jika berhasil, slave merespons dengan kode fungsi yang sama dan jumlah coil yang dikirim dalam respons. Status coil akan memiliki lebar n byte, dengan setiap bit menunjukkan apakah coil tersebut ON (1) atau OFF (0).

Dalam kasus ini, coil pada alamat 0x0000 berada dalam keadaan ON. Jika permintaan tidak berhasil, respons pengecualian akan berisi kode fungsi dengan msb disetel tinggi (0x81), disertai kode pengecualian yang menjelaskan masalahnya. Kode pengecualian 0x02 berarti alamat data ilegal telah digunakan, yaitu tidak ada coil pada 0x0000 di memori slave ini. 

Contoh berikutnya mengilustrasikan transaksi Penulisan Register Tunggal (kode fungsi 0x06). Di sini, master meminta penulisan data 0xA0A0 ke alamat 0x00FF. Respons slave hanyalah gema dari permintaan tersebut.

Contoh respons pengecualian di sini menampilkan kode fungsi dengan msb disetel tinggi, disertai kode pengecualian 0x04. Kode ini berarti bahwa terjadi kesalahan yang tidak dapat dipulihkan saat slave berusaha menjalankan permintaan tersebut. 

 

Gambar 5. Transaksi Penulisan Register Tunggal 

 

Semua kode fungsi Modbus mengikuti pola yang serupa dengan dua contoh yang ditunjukkan di atas.

Gambar 6 menampilkan daftar kode fungsi umum beserta kode pengecualian untuk respons pengecualian. Untuk informasi lebih lanjut, lihat spesifikasi Modbus. 

 

Gambar 6. Kode Fungsi dan Kode Pengecualian

 

Kesimpulan

Modbus memungkinkan PLC berkomunikasi dengan berbagai jenis unit jarak jauh, termasuk bank I/O, unit terminal, dan pengontrol lainnya, dengan mengandalkan metode standar untuk membaca dan menulis informasi diskret maupun bilangan bulat, yang mencakup hampir setiap skenario yang melibatkan transfer data digital.

Modbus merupakan standar industri saat ini dan menjadi protokol industri bebas royalti yang paling luas penggunaannya hingga saat ini, meskipun sudah ada sebelum sebagian besar sistem kontrol modern. Modbus dapat ditemukan di berbagai pabrik dan fasilitas industri di seluruh dunia, dan meskipun telah digunakan dalam waktu lama, protokol ini dipastikan akan tetap relevan di industri selama bertahun-tahun mendatang.

 

Artikel asli diterbitkan pada 2019

Tinggalkan komentar

Harap diperhatikan, komentar perlu disetujui sebelum dipublikasikan.