Bagaimana mesin berkomunikasi: protokol Modbus


Protokol Modbus adalah protokol industri yang paling umum untuk komunikasi M2M . Ini adalah standar de facto dan didukung oleh hampir semua produsen peralatan industri.

Karena keserbagunaan dan keterbukaannya, standar ini memungkinkan integrasi peralatan dari berbagai produsen. Modbus digunakan untuk mengumpulkan bacaan dari sensor, mengendalikan relai dan pengontrol, pemantauan, dll.

Dalam artikel ini kita akan menganalisis implementasi protokol Modbus, format data, perangkat lunak untuk bekerja dengan protokol. Mari kita coba membaca data dari perangkat dalam praktiknya.

Sejarah Modbus


Modbus diperkenalkan pada 1979 oleh Modicon (sekarang Schneider Electric). Itu adalah standar terbuka yang beroperasi pada antarmuka RS-232. Kemudian, implementasi protokol untuk antarmuka RS-485 dan Modbus TCP muncul. Protokol dengan cepat mendapatkan popularitas, dan banyak produsen mulai menerapkannya di perangkat mereka.

Kemudian, hak atas protokol dipindahkan ke organisasi nirlaba Modbus Organization , yang hingga saat ini memiliki standar.

Standar Modbus menggunakan terminologi yang berasal dari logika tangga . Jadi, misalnya, beberapa register disebut koil (koil bahasa Inggris).

Tingkat fisik




  • RS-232/422/485 adalah antarmuka serial yang banyak digunakan dalam industri. Antarmuka RS-422/485 menyediakan jangkauan sinyal hingga 1.200 meter. Protokol Modbus RTU / ASCII digunakan
  • Jaringan TCP / IP - antarmuka ethernet apa pun dapat menjadi saluran transmisi data fisik. Menggunakan protokol TCP Modbus

Tingkat logika



Perbedaan Protokol Modbus

Modbus ASCII


Data dikodekan dengan karakter dari tabel ASCII dan dikirim dalam format heksadesimal. Awal setiap paket ditandai dengan titik dua, dan akhir dengan carriage return dan line feed. Ini memungkinkan protokol untuk digunakan pada saluran dengan penundaan lebih lama dan peralatan dengan penghitung waktu yang kurang akurat.

Modbus RTU


Dalam protokol RTU Modbus, data dikodekan dalam format biner, dan interval waktu berfungsi sebagai pemisah paket. Protokol ini sangat penting untuk penundaan dan tidak dapat berfungsi, misalnya, pada jalur modem. Pada saat yang sama, overhead untuk transfer data kurang dari pada Modbus ASCII, karena panjang pesan lebih sedikit.

Modbus TCP


Struktur paket mirip dengan Modbus RTU, data juga dikodekan dalam format biner, dan dikemas dalam paket TCP biasa untuk transmisi melalui jaringan IP. Pemeriksaan integritas yang digunakan dalam Modbus RTU tidak diterapkan, karena TCP sudah memiliki mekanisme kontrol integritasnya sendiri.

Format paket



Format Paket untuk Berbagai Implementasi Modbus

Semua perangkat Modbus berkomunikasi mengikuti model master-slave. Permintaan hanya dapat dimulai oleh perangkat master, budak hanya dapat menanggapi permintaan, dan tidak dapat memulai transfer data sendiri. Tergantung pada implementasi protokol, header paket berbeda. Berikut adalah komponen utama dari paket yang penting untuk diketahui:

ADU (Application Data Unit) - seluruh paket Modbus, dengan semua header, PDU, checksum, alamat, dan token. Ini berbeda tergantung pada implementasi protokol.

PDU (unit data protokol) - bagian utama dari paket, sama untuk semua implementasi protokol. Berisi payload itu sendiri.

Alamat perangkat - alamat penerima, yaitu perangkat budak. Hingga 247 perangkat dapat ditemukan di satu segmen jaringan Modbus. Hanya budak yang memiliki alamat berbeda, master tidak memiliki alamat. Alamat "0" digunakan untuk permintaan siaran dari master, sementara budak tidak bisa menanggapi paket siaran ini.

Checksum - algoritma integritas paket. Modbus RTU dan ASCII menggunakan 2 byte checksum. Modbus RTU menggunakan algoritma CRC16, sedangkan Modbus ASCII menggunakan LRC8 yang lebih sederhana dan kurang dapat diandalkan. Dalam Modbus TCP, checksum tidak ditambahkan ke ADU karena integritas diperiksa pada tingkat TCP.

Kami tidak akan menganalisis tajuk tambahan khusus untuk setiap implementasi protokol individual, karena ini tidak signifikan ketika bekerja dengan protokol di tingkat aplikasi.

Register dan Fungsi Modbus


Dalam bentuk yang disederhanakan, struktur permintaan Modbus terdiri dari kode fungsi (baca / tulis), dan data yang perlu dibaca atau ditulis. Pada saat yang sama, kode fungsi berbeda untuk tipe data yang berbeda. Kami akan menganalisis apa itu register dan fungsi untuk bekerja dengannya.


  • Input Diskrit - Input diskrit perangkat hanya baca. Rentang alamat register: dari 10001 hingga 19999. Mereka memiliki fungsi "02" - membaca sekelompok register
  • Coils - output diskrit perangkat, atau nilai internal. Tersedia untuk membaca dan menulis. Kisaran alamat register adalah dari 20001 hingga 29999. Ini memiliki fungsi: "01" - membaca sekelompok register, "05" - menulis satu register, "15" - menulis sekelompok register
  • Input Register - Input perangkat 16-bit. Baca saja. Rentang alamat register: dari 30001 hingga 39999. Punya fungsi: "04" - baca sekelompok register
  • Holding Registers - Output perangkat 16-bit, atau nilai internal. Tersedia untuk membaca dan menulis. Kisaran alamat register: dari 40001 hingga 49999. Memiliki

Terlepas dari namanya, input dan output sebenarnya bisa menjadi variabel internal, menyimpan counter, bendera, atau menjadi pemicu kontrol. Ada juga rentang register lain, tetapi di sebagian besar perangkat mereka tidak digunakan, jadi kami akan mempertimbangkan empat jenis register utama. Perangkat yang berbeda dapat menggunakan rentang register yang berbeda, atau sekaligus.

Contoh kerja


Untuk contoh bekerja dengan protokol Modbus TCP, kita akan menggunakan utilitas konsol modbus-cli paling sederhana, yang ditulis dalam Ruby. Itu membuatnya mudah untuk membaca dan menulis data ke register Modbus.

Mari kita coba membaca status penghitung paket yang ditransmisikan pada sakelar industri Advantech EKI-5524SSI. Pertama, Anda perlu menentukan alamat register yang menyimpan informasi yang diperlukan, untuk ini, lihat dokumentasi perangkat. Deskripsi register terdapat di bagian Tabel Pemetaan Modbus:


Deskripsi nilai register dalam dokumentasi switch EKI

Dapat dilihat bahwa nilai paket yang ditransmisikan untuk satu port disimpan dalam empat register, dan untuk port pertama ini adalah register 38193 hingga 38197. Deskripsi juga diberikan dari format penyimpanan data, yang kemudian diikuti oleh jumlah integer paket yang ditransmisikan disimpan dalam format heksadesimal, dan nilai paket 11223344 akan disimpan. ditulis sebagai 0xAB4130, dari kanan ke kiri.

Buat permintaan:

$ modbus read 192.168.0.17 38193 4 38193 0x0000 38194 0x0000 38195 0x0000 38196 0x3459 

baca adalah perintah baca . Program itu sendiri memahami perintah baca mana yang harus digunakan tergantung pada alamat register, dalam kasus kami perintah "04" akan digunakan untuk membaca register 16-bit.

192.168.0.17 - Alamat IP perangkat.

38193 - Alamat awal register.

4 - offset relatif ke alamat awal. Kami membaca empat register untuk port 1, sebagai berikut dari lembar data.

Kami mendapatkan jawaban yang berisi nilai-nilai dari empat register. Kami melihat bahwa jumlah paket kecil: 0x3459, yaitu 13401, - sakelar dihidupkan baru-baru ini.

Kerugian Protokol Modbus


Dalam keadilan, ada baiknya menyebutkan kekurangan protokol. Sejak dikembangkan lebih dari 40 tahun yang lalu, ketika kinerja prosesor secara signifikan lebih rendah dan protokol dikembangkan tanpa mempertimbangkan perlindungan data akun, ia memiliki sejumlah kekurangan:

  • Protokol tidak menyediakan otentikasi dan enkripsi data yang dikirimkan. Karena itu, ketika menggunakan Modbus TCP, terowongan VPN tambahan harus digunakan.
  • Budak tidak dapat memulai transfer data, sehingga master harus terus-menerus mengumpulkan para budak
  • Perangkat slave tidak dapat mendeteksi kehilangan koneksi dengan Master. Masalah ini secara langsung mengikuti dari yang sebelumnya.

Namun, terlepas dari semua kekurangannya, Modbus masih merupakan protokol industri yang paling umum, dan berkat keterbukaannya, membuatnya mudah untuk menggabungkan perangkat dari berbagai produsen. Persyaratan sumber daya yang rendah memungkinkan pengintegrasian protokol ke dalam perangkat dengan daya paling rendah.

Modbus mengaktifkan perangkat keras


Advantech menawarkan berbagai peralatan industri dengan dukungan protokol Modbus untuk tugas apa pun: otomatisasi, kontrol, pengumpulan dan transmisi data.

ADAM-6000 dan WISE-4000 - Modul I / O Jarak Jauh



Modul seri ADAM-6000 dan WISE-4000 memungkinkan Anda untuk mengontrol input / output digital dan analog dari jarak jauh menggunakan protokol Modbus TCP. Digunakan untuk mengontrol perangkat periferal dan mengumpulkan data dalam mode slave. Mereka dapat dipasangkan dengan pengontrol logika yang dapat diprogram, atau terhubung langsung ke server SCADA. ⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

EKI-1200 - gateway Modbus untuk konversi antarmuka



Untuk mengonversi protokol Modbus RTU / ASCII ke Modbus TCP, Modbus gateway digunakan. Perangkat seri EKI-1200 memiliki empat antarmuka RS-232/422/485 serial, dan dua port Ethernet. Mereka memungkinkan Anda untuk menggabungkan perangkat dengan protokol berbeda ke dalam satu jaringan. Misalnya, sambungkan perangkat slave yang hanya mendukung Modbus RTU via antarmuka RS-485 ke segmen jaringan Modbus TCP.

APAX-5000, ADAM-3600, WISE-5000 - pengendali otomatisasi


Kontroler mendukung fungsi Modbus RTU sebagai slave / master dan Modbus TCP client / server.



Contoh aplikasi


Sistem Pemantauan Rumah Kaca


Solusi pemantauan Advantech mengintegrasikan TPC-1070H, ADAM-6024, ADAM-6050, ADAM-6060, dan perangkat lunak WebAccess dalam kabinet mesin di sebelah lahan pertanian. Dengan menghubungkan ke berbagai perangkat sensitif, modul ADAM-6000 dapat menerima data lingkungan dalam waktu nyata dan pengalihan peralatan kontrol untuk memastikan bahwa rumah kaca berada dalam lingkungan optimal untuk pertumbuhan tanaman. Berkat fungsi khusus Advantech - logika kondisi grafis (GCL), pengguna dapat menetapkan aturan logika kontrol mereka sendiri dan memuat aturan ini ke dalam modul ADAM-6000 Ethernet I / O, dan kemudian modul secara otomatis menjalankan aturan logis seperti modul yang berdiri sendiri. pengontrol. Fitur lain - Peer-to-Peer (P2P) menggunakan jaringan Ethernet paling terbuka dan fleksibel untuk tidak hanya menyederhanakan proses implementasi tanpa pengontrol, tetapi juga menghemat biaya perangkat keras.

Semua data yang diterima kemudian dikirim melalui Ethernet ke komputer dengan panel sentuh TPC-1070H. Menampilkan sistem pendingin tanpa kipas dan panel depan yang sesuai dengan IP65, TPC-1070H adalah desain yang kokoh dan kompak yang cocok untuk lingkungan operasi variabel, dan kemampuan komputasi yang kuat mampu menangani sejumlah besar data. Untuk mengelola perangkat, Advantech WebAccess memungkinkan para insinyur atau manajer untuk melihat, memantau, dan mengkonfigurasi sistem pemantauan melalui intranet atau Internet menggunakan browser web konvensional dari perangkat apa pun, termasuk tablet dan ponsel cerdas.



Memantau sistem pemanas air surya


Perusahaan teknik seharusnya mampu mengendalikan jumlah energi matahari, suhu, dan aliran air dalam sistem pemanas air bertenaga surya untuk kolam berukuran Olimpiade yang disediakan oleh panel surya yang baru dikembangkan. Mereka juga harus dapat secara langsung memonitor nilai-nilai ini dan alarm mereka pada panel LCD dan menyimpan nilai-nilai ini untuk referensi di masa mendatang.

Modul Advantech Adam memberi pelanggan solusi yang memanfaatkan modul akuisisi data yang terhubung melalui RS485 dan bus dua kawat untuk mengirimkan data dari semua sensor. Arsitektur sistem ini memiliki dua keunggulan utama: pertama, memungkinkan Anda untuk menambahkan lebih banyak sensor ke modul pengumpulan data kapan saja, dan kedua, sangat mudah untuk menambahkan tag tambahan ke perangkat lunak untuk memantau dan merekam nilai-nilai ini pada PC.

Source: https://habr.com/ru/post/id450234/


All Articles