Komunikasi via Protokol Modbus (RTU) dan Contoh Source Code VB6
Abstract:
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)
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.
|
|
Thanx 4 reading my post,
asli saya jadi
gan..
MAS..
BalasHapussaya bs tanya2 soal modbus??
dia ad d layer brp?
dan gmn siey sistem pengiriman datany??
MAS..
BalasHapussaya bs tanya2 soal modbus??
dia ad d layer brp?
dan gmn siey sistem pengiriman datany??
@reyno: yup, boleh lah.. silahkan bertanya-tanya disini. 100% Free! :D
BalasHapuslayer 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.
waduh2..
BalasHapuskoq saya tambah bingung yaa mas..
mas, apakah master modbus harus selalu pc?PLC bisa dijadikan master? apa kelebihan modbus dibanding rs485/422/232?thaks
BalasHapusmas, 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
BalasHapusUntuk membaca register di IED, diawali dengan 4 (Modbus Protocol)
BalasHapusmisal 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.
Wah..saya menemukan blog yang bahas ilmu ginian juga...share juga ke : www.kinglaplace.co.cc....
BalasHapusSilahkan, jangan lupa trackback bos...
BalasHapusMas mau tanya bagaimana konfigurasi membuat kabel antara modbus SR3MBU01BD dengan HMI pada COM1 berupa RJ45 connection?
BalasHapuswes..bang Ari mas aktip jg nulis2 di blog....
BalasHapuseh 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
BalasHapusIya sekarang sy kerja di elektrik, kuliah juga di elektrik, emang kmu dr jurusan apa?
BalasHapussy 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
BalasHapusRI pa kabar,....
BalasHapusoke juga nich...
Kabar bae Sat.. Mmm, ini satria elektro poltek apa bukan? yg satu angkatan pa setahun dibawah gw?
BalasHapusSalam kenal mas...
BalasHapusArtikelnya 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-