Komunikasi via Protokol Modbus (RTU) dan Contoh Source Code VB6

Abstract:

image Manusia dapat saling berkomunikasi satu sama lain karena adanya mulut sebagai penyampai informasi dan telinga sebagai penerima informasi. Namun disamping itu kedua hal itu saja tidak cukup. Dalam hal ini dibutuhkan sebuah bahasa yang dapat dimengerti oleh kedua belah pihak agar proses perpindahan informasi dapat diterima dengan baik tanpa adanya “miss-communication”.

Begitu pula pada peralatan berbasis komputer ataupun mikrokomputer, untuk berkomunikasi dengan komputer atau alat lainya, selain diperlukan perantara komunikasi seperti Commport/TCP port, kabel, fiber optic dll. disana juga masih diperlukan sebuah bahasa komunikasi yang dinamakan “Protocol”. Protocol dapat dikatakan sebagai sebuah standar bahasa yang digunakan oleh peralatan mikrokomputer seperti PLC, meter, DCS, protective relays, dll untuk dapat saling berkomunikasi. Salah satu jenis protokol yang sangat akrab” digunakan di lapangan adalah “Modbus”.

Untuk detil tentang Modbus silahkan klik disini.

Batasan:

Modbus sendiri terdiri dari beberapa macam jenisnya, antara lain Modbus RTU, Modbus ASCII dan Modbus TCP. Dalam artikel kali ini hanya akan dibahas mengenai Modbus RTU (Serial Communication) saja, apabila readers tertarik untuk membaca dan mempelajari struktur data Modbus ASCII (via telephone, modem, dll) dan TCP (via Ethernet) silahkan tinggalkan komen dan akan dibahas pada sesi berikutnya.

Pendahuluan

Komunikasi antar peralatan atau peralatan dengan komputer via “Modbus Protocol” dapat terjalin jika terdapat sebuah “Modbus Master” dan “Modbus Slave”. Peralatan atau komputer yang menjadi Master memulai jalinan komunikasi dengan cara mengirimkan sebuah paket informasi yang dikenal dengan istilah “Request” kepada peralatan Slave yang bersangkutan (dapat terdiri dari 1 slave atau lebih s/d 254 peralatan). Peralatan yang menjadi Slave akan menjawab request Master dengan mengirimkan isi data yang diminta yang dikenal dengan istilah “Response”.

Dalam satu paket data (satu proses request-response) terdiri atas:

  • Slave Address 1 byte
  • Function Code 1 byte
  • Data N bytes: high-ordered byte first, low-order byte second
  • CRC (RTU Error Checksum) 2 bytes
  • Dead Time 3.5 bytes transmission time

Sebuah paket tunggal dapat mengirimkan data register sebanyak 127 register dalam satu waktu.

… (still need expansion for detailed information - aristy)

Kode Fungsi (Function Code)

Hex Dec Description
03H 3 Read Holding Register
06H 6 Preset Single Register
10H 16 Preset Multiple Register

… (still need expansion for detailed information - aristy)

Function Code 03 - Read Holding Registers

This function allows a Master station to read one or more parameter values (data registers) from a
Nexus Slave. The data registers are 16-bit (two byte) values transmitted in “Big Endian” format:
high-ordered byte first, low-ordered byte second.

The Master device sends a packet defining a start register for the Slave and the number of registers
to read. The Slave responds with a packet containing the requested parameter values within the range
specified in the request.

In the following example, a Master device requests a Nexus Slave at address 01H to transmit two
values beginning at Register 00001. The Slave replies with values 3031H and 3037H from Registers
00001 and 00002.

… (still need expansion for detailed information - aristy)

image

Contoh Program Modbus RTU – Master

… (still need expansion for detailed information - aristy)

Download

  • Silahkan unduh “Source Code” program VB6.0 diatas di sini.
  • Atau readers dapat mengunduh “Executable Files” Modbus diatas dan langsung mencobanya ke PLC, meters, dll di sini.
Silahkan baca artikel saya yang lain mengenai microcontroller via RSS Feed..

Informasi! Artikel ini adalah tulisan rintisan, Artikel ini adalah untuk semua orang saran, pertanyaan dan kritik anda sangat berguna dalam mengembangkan artikel ini.   Postingan ini dibagi ke dalam beberapa sub pokok bahasan.
Under "Microcontroller Projects" Folder Creative Commons (cc), Share Alike (sa)

Thanx 4 reading my post, :piss: asli saya jadi :malu: gan..

ORDER VIA CHAT

Produk : Komunikasi via Protokol Modbus (RTU) dan Contoh Source Code VB6

Harga :

http://www.arisulistiono.com/2010/03/komunikasi-via-protokol-modbus-rtu-dan_10.html

ORDER VIA MARKETPLACE

Diskusi (17)

  1. MAS..
    saya bs tanya2 soal modbus??
    dia ad d layer brp?
    dan gmn siey sistem pengiriman datany??

    BalasHapus
  2. MAS..
    saya bs tanya2 soal modbus??
    dia ad d layer brp?
    dan gmn siey sistem pengiriman datany??

    BalasHapus
  3. @reyno: yup, boleh lah.. silahkan bertanya-tanya disini. 100% Free! :D
    layer berapa ya? Yang jelas data register modbus ada di bilangan hexadecimal ke 3 dan 4.
    Slave atau alat akan memberikan balasan di hexadecimal baris ke 5 dan 6 dengan menyertakan kembali data register yang diminta PC/master di urutan 3 & 4. Terakhir adalah Checksum apakah ada byte yang hilang/tidak sesuai dg yang ingin ditransmit.

    BalasHapus
  4. waduh2..
    koq saya tambah bingung yaa mas..

    BalasHapus
  5. mas, apakah master modbus harus selalu pc?PLC bisa dijadikan master? apa kelebihan modbus dibanding rs485/422/232?thaks

    BalasHapus
  6. mas, klo ngasih tag di Vijeo Citect dengan protokol modbus gimana penulisan Address-nya? saya mau koneksi inverter LS ke citect, alamat addressnya klo dari buku manual 0x0005 (untuk read/write setting frekuensi). tp klo langsung diketik begitu di setting Address Citect, pas dicompile malah jadi error. Thnx b4

    BalasHapus
  7. Untuk membaca register di IED, diawali dengan 4 (Modbus Protocol)
    misal membaca 0x0125, jika ini address dalam format hex (hexadecimal), apabila tidak bisa dikenali bilangan hex di Citect versi tersebut, coba di convert ke bilangan dec (decimal).
    Maka 0x125 (hex) = 293 (dec). Jadi addressnya menjadi 400293, kemudian isi nilai bilangan di register ini sesuai tipe bilangan di Modbus Register Map Inverter tsb. Apakah integer, float, bolean, dst.

    BalasHapus
  8. Wah..saya menemukan blog yang bahas ilmu ginian juga...share juga ke : www.kinglaplace.co.cc....

    BalasHapus
  9. Silahkan, jangan lupa trackback bos...

    BalasHapus
  10. Mas mau tanya bagaimana konfigurasi membuat kabel antara modbus SR3MBU01BD dengan HMI pada COM1 berupa RJ45 connection?

    BalasHapus
  11. wes..bang Ari mas aktip jg nulis2 di blog....

    BalasHapus
  12. eh bang skrng kan kerja di elektrik punya software buat ngetes2 protokol elektrik gak seperti protokol harnes..buat ngetes protokol DNP ato gak salah protocol IEC ..dll

    BalasHapus
  13. Iya sekarang sy kerja di elektrik, kuliah juga di elektrik, emang kmu dr jurusan apa?

    BalasHapus
  14. sy anak poltek juga angkatan 2004 anak TL....liat aja di FB bang ari ada nama sy dah...iya mas klo ada soft buat buat ngetes protocol DNP dan IEC  bagi2 dong...sebab kadang ada yg minta buat ngetes relay proteksi,..kebetulan kan sy freelance tp bnyk megang kontrol klo electric gak pernah tp klo bang ari ada n biasa setting relay proteksi berbagai merk...bisa di hubungin kan

    BalasHapus
  15. RI  pa kabar,....

    oke juga nich...

    BalasHapus
  16. Kabar bae Sat.. Mmm, ini satria elektro poltek apa bukan? yg satu angkatan pa setahun dibawah gw?

    BalasHapus
  17. Salam kenal mas...
    Artikelnya bagus banget...kebetulan saya sedang mencoba untuk membaca present value pada Temperatur Controllernya Autonics dengan program yang mas buat. Namun sayang belum berhasil dan saya juga masih bingung karena PV (present value) adanya di Input Register (Func04) dengan address 31001(03E8). Mungkin bisa di jelaskan mas cara penggunaan program yg mas buat dan bgmn cara merubah function tsb karena seringkali saya menemukan error pada saat pembacaan alat tersebut.

    Demikian dan Terima Kasih.
    -Yadi- 

    BalasHapus