Anda di halaman 1dari 14

31

Suka

Rifqi Imanto & Engineering Notes


All About Engineering Life
Home
About
Buku Tamu
Downloads
Project & Research
Daftar Isi

Type text to search here...

Home > Communication, Instrument & Control, Interface Engineering > Modbus Protokol dan Serial Standard

Modbus Protokol dan Serial Standard


December 6th, 2010 Leave a comment Go to comments
Download article as PDF

Setelah saya mempelajari sistem SCADA secara umum maka kemudian saya mempelajari dari
masing-masing subsistemnya. dimulai dari bagaimana cara kerjanya, bagaimana cara berkomunikasinya, bagaimana cara mengambil data
dan lainnya. Sampai akhirnya saya mempelajari Komunikasi Serial pada PLC dan bertemu dengan jenis-jenis standard industri komunikasi
serial dan juga standar industri protokol untuk komunikasi data.

Untuk komunikasi serial ada beberapa yang sering digunakan di Industri, yaitu RS232, RS485, dan
RS422. RS adalah singkatan dari Recommended Standard (klo di kaskus Recommended Seller kali ya :p). Ketiga jenis RS tersebut
merupakan physical layer (Hardware) dari Layer pertama di OSI Model (Wikipedia: OSI Model) yang pada intinya pada phisycal layer
bagaimana hardware tersebut mengubah data menjadi sinyal elektrik dan juga sebaliknya mengubah sinyal elektrik menjadi data. Setiap
standard komunikasi serial masing masing memiliki spesifikasi yang berbeda pada RS232 sinyal electric diayunkan pada tegangan +/- 12
Volt, +/- 5Volt, dan +/- 3 Volt. pengkabelan memiliki minimal 3 kabel yaitu RX, TX, dan ground. dan panjang maksimum kabel adalah 15
meter. Sedangkan pada RS485 tegangan yang digunakan adalah +/- 5Volt dimana sinyal di konversikan pada dua kabel + (A) dan kabel
(B). Pada RS485 tidak menggunakan ground maka dari itu RS485 dapat digunakan dengan kabel hingga 1200meter (1,2Km) karena loss
daya yang terjadi lebih kecil dan tidak terlalu berpengaruh karena tetap dapat terkonversi sinyalnya. kemudian pada RS485 dapat multidrop
atau dapat dicabangkan dengan beberapa hardware. untuk melihat perbedaan RS232 dengan RS485 dapat dilihat di
http://en.wikipedia.org/wiki/RS-485 dan http://en.wikipedia.org/wiki/RS-232
Pada komunikasi serial yang digunakan pada PLC terdapat cara berkomunikasi / bahasa komunikasi yang disebut protokol. protokol
merupakan bahasa untuk saling berkomunikasi antar hardware pada kasus ini PLC. Protokol standard yang sering digunakan pada PLC
dalam berkomunikasi adalah Modbus. sebuah protokol yang berada di layer ke 7 (Application Layer) dalam OSI model. Modbus merupakan
standar komunikasi bus yang dibuat oleh modicon yang memiliki open license yaitu boleh digunakan oleh siapa saja. untuk penjelasan lebih
lengkap mengenai modbus dapat dilihat di www.Modbus.org.
nah sekarang bagaimana modbus itu bekerja?
Kita bahas untuk modbus serial dulu. jadi modbus serial adalah komunikasi serial yang menggunakan protokol modbus.
pada komunikasi serial pengiriman data besarnya adalah 8 byte data atau istilah kasarnya adalah 8 frame data dalam 1x pengiriman.
[byte0] [byte1] [byte2] [byte3] [byte4] [byte5] [byte6] [byte7]
besarnya nilai data dalam 1 framenya adalah 2^8 = 256 (0-255). maka nilai terbesarnya adalah 256. jika kita mengirimkan ASCII misalkan
huruf A maka nilai yang digunakan sesuai ASCII table adalah 65.
pada modbus frame-frame tersebut diisi dengan kesepakatan tertentu. modbus Frame untuk request dari master ke slave adalah:
[address RTU] [Function Code] [Reg] [Reg] [Lenght][Lenght] [CRC1] [CRC2]

keterangan:
Address RTU: merupakan address dari setiap RTU, jika alamat RTU yang direquest masuk ke RTU sesuai maka RTU tersebut akan
meresponnya dengan memberikan pesan balasan.
Function Code: merupakan jenis-jenis fungsi yang dapat digunakan yaitu,
01 Read Coil Status
02 Read Input Status
03 Read Holding Registers
04 Read Input Registers
05 Force Single Coil
06 Preset Single Register
07 Read Exception Status
08 Diagnostics
09 Program 484
10 Poll 484
11 Fetch Communication Event Counter
12 Fetch Communication Event Log
13 Program Controller
14 Poll Controller
15 Force Multiple Coils
16 Preset Multiple Registers
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 Queue
Namun yang paling sering digunakan hanya yang saya tebalkan tulisannya diatas.
Reg: merupakan register yang ingin diambil nilainya..frame ini menggunakan 2 byte data. maka dari itu nilai register bisa sampai 256*256
namun dibatasi dengan jumlah register yang tersedia.
Lenght: Merupakan jumlah register yang ingin direquest. ini juga menggunaka 2 byte frame seperti register.

CRC1 dan CRC2: CRC adalah Cyclic Redundancy Check yaitu sebuah metode untuk pengecekan error. CRC ini menggunakan 2 byte frame
juga. untuk menghitung dan mengetahui lebih jelas CRC dapat dilihat di CRC
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.

contoh fungsi untuk menghitung CRC


public static void GetCRC(byte[] message, ref byte[] CRC)
{
//Function expects a modbus message of any length as well as a 2 byte CRC array in which to
//return the CRC values:
ushort CRCFull = 0xFFFF;
byte CRCHigh = 0xFF, CRCLow = 0xFF;
char CRCLSB;</p>
for (int i = 0; i < (message.Length) - 2; i++)
{
CRCFull = (ushort)(CRCFull ^ message[i]);</p>
for (int j = 0; j < 8; j++)
{
CRCLSB = (char)(CRCFull &amp;amp;amp; 0x0001);
CRCFull = (ushort)((CRCFull >> 1) &amp;amp;amp; 0x7FFF);</p>
if (CRCLSB == 1)
CRCFull = (ushort)(CRCFull ^ 0xA001);
}
}
CRC[1] = CRCHigh = (byte)((CRCFull >> 8 ) &amp;amp;amp; 0xFF);
CRC[0] = CRCLow = (byte)(CRCFull &amp;amp;amp; 0xFF);
}

Modbus Message Respon


Pesan respon dari slave ke RTU memiliki sedikit perbedaan dengan request. untuk pesan Modbus dari slave memiliki frame yang
menyesuaikan jumlah data yang dikirimkan dimana setiap 1 data menggunaka 2 byte frame. susunan nya adalah:
[RTU Address] [Function Code] [2*panjang data] [data] [data][data...] [data...] [CRC1] [CRC2]
Contoh:
[MASTER] dimisalkan kita akan me-request ke slave dengan id 5, mengambil holding register di slave dengan register 40001 sampai
dengan 40004. maka bentuk pesannya:

dalam HEX
[05] [03] [00] [00] [00][04] [CRC1] [CRC2]
Penjelasan:
[05] : karena slave ID nya adalah 5
[03] : Karena me-request holding register (lihat di table function)
[00] [00] : karena 40001 adalah register pertama maka dimulai dari 0.
[00] [04] : karena ada 4 data yang akan di request 40001 40004
[CRC1] [CRC2] : Hasil CRC
dan kemudian Slave akan membalasnya dimisalkan register 40001 bernilai 7, 40002 bernilai 6, 40003 bernilai 5, dan 40004 bernilai 4. maka
respon slave adalah:
[05] [03] [08] [00] [07][00] [06][00] [05] [00] [04] [CRC1] [CRC2]
Penjelasan:
[05]: Slave ID
[03] : Function (Read Holding Register)
[08] : 2 x jumlah data (2 x 4)
[00] [07]: nilai data di register pertama yang di request
[00] [06]:nilai data di register kedua yang di request
[00] [05]:nilai data di register ketiga yang di request
[00] [04]:nilai data di register keempat yang di request
[CRC1] [CRC2]: Hasil CRC nya

Suka 8 orang menyukai ini. Jadilah yang pertama di antara teman Anda.

Tags: modbus, Modbus Serial, RS232, RS485, serial


Comments (20) Leave a comment
1.
wimayudie
February 8th, 2011 at 11:58 | #1
Reply | Quote
asem,, lengkap bgt pnjlasanmu huks huks
kebetulan urusan sama modbus, tp HMI sini bawaan vendor mas, ABB, jd mau blajar syusah,,, KP asem heuheu
2.
tommy
March 1st, 2011 at 13:25 | #2
Reply | Quote
keren sephh
3.
Rifqi-oncom
March 2nd, 2011 at 17:38 | #3
Reply | Quote
@tommy
thanks
4.
fajar
April 29th, 2011 at 22:55 | #4
Reply | Quote

mas rif makasih atas infonya..


5.
herieza
July 19th, 2011 at 11:22 | #5
Reply | Quote
nais inpoh. materi yg kompleks dibalut dengan penjelasan yg ruaarrrr biasa simple dan menyenangkan..
tapi BTW saya punya keanehan sedikit nih. yg saya pernah baca ,modbus kan mendefinisikan adress si slave dengan notasi N+1
kaann. nah di software PLC GL*FA (demi etika mau tak mau kusensor sdkt) waktu saya mau write holding register si inverter
dari vendor yg sm jg, yg beralamatkan 0h0005 misalkan,,,nah di Comm Funct Block kita harus mengisi dengan adress 0004.. tak
pakai Func code 04 modbus karena MUNGKIN telah diurus si commFB tsb. lha kenapa itu???? masa dy diiisi dengan notasi N1???? apakah si modbus yg abnormal??? ataukah sepertinya si FB yg kg normal nahhh pendapat e sampeyan kira2 bagaimana
ditunggu ya jwbnnya mathur nuwon
6.
Rifqi-oncom
July 20th, 2011 at 14:24 | #6
Reply | Quote
@herieza
hmm..susah juga nih pertanyaannya soalnya saya blom nemuin..hehe
maksudnya mendefiniskan address slave dengan N+1 gimana ya?
kalau untuk tidak menggunakan function code (04 dsb) memang banyak yang seperti itu..jadi disitu tinggal mendefinisikan address
tersbut terletak di mana (holding, input, atau lainnnya)
7.
herieza gunn
September 12th, 2011 at 18:15 | #7
Reply | Quote
@Rifqi-oncom
sorry telat sekali sy membalasnya.. maksud kulo niki,,,,klo kt mw read/write register inverter tg di alamat 0h0012 misalkan
tentunya kan di PLC kita mesti definisikan 0h0012 td dgn 0h0013 alias 40013,,,,krn mengikuti aturan modbus kannnnah di
PLCku beda.malahan 0h0012 didefinisikan dgn 0h0011. apakah yg terjadi adalah.apakah mungkn didefinisiakn modbus

sebagai 40011.kan menyalahi aturan N+1.ngoten mas Rif.mathur nuwonn


8.
azhary
September 28th, 2011 at 16:50 | #8
Reply | Quote
mantap mas tanks
9.
Rifqi-oncom
September 29th, 2011 at 20:11 | #9
Reply | Quote
@herieza gunn
oo begitu..
berarti PLC nya menggunakan nilai awal(First Register) dari 40000(0h0000) bukan di 40001 (0h0001). -sepertinya
10.
reksoprodjos
May 31st, 2012 at 10:02 | #10
Reply | Quote
mantabs penjelasannya gan, ane yang nubie and idiota langsung faham . .
11.
ayue
June 6th, 2012 at 10:48 | #11
Reply | Quote
masuk ke otak saya :p
12.
iis

June 13th, 2012 at 18:32 | #12


Reply | Quote
kalo pake arduino gimana bang?

Rifqi-oncom
June 14th, 2012 at 12:39 | #13
Reply | Quote
@iis bisa tinggal dibikin rule algoritmanya aja
13.
Riyanto
May 5th, 2014 at 22:22 | #14
Reply | Quote
Salam kenal,.saya sedang belajar mengoneksi display ada rs 232,ke plc,diteruskan ke HMI,mohon saya di bantu dan di bagi ilmunya
bagaimana supaya nilai displaynya muncul di HMI..maturnuwun sederenge.
14.
Rifqi-oncom
May 10th, 2014 at 21:49 | #15
Reply | Quote
@Riyanto
Kalau boleh tau, PLC nya apa? Menggunakan protokol apa? Dan HMI nya apa?
Saat ini sampai tahap apa? Apa display yg ada rs232 nya sudah bisa terbaca di PLC?
15.
Riyanto
May 11th, 2014 at 17:26 | #16
Reply | Quote
Trima kasih pa,saya pakai PLC OMRON CP1L,HMI WEINTEK MT 6056i,KLU PROTOKOL SAYA BLM PAHAM,.belajar saya

udh sampai tombol,lamp,timer,counter dan move udh di HMI dan PLC udh bisa.
16.
nanang 08562755534
September 10th, 2014 at 18:46 | #17
Reply | Quote
Saya jual plc omron beberapa tipe seperti cp1e dan hmi omron dgn harga murah.. Toko alat2 listrik saya d semarang.
Silahkan call 0856 27 555 34
Untuk yg pny web ini, saya kasih harga reseller..
Mohon bantuan dipromosikan mas rif.
17.
hahahihi
September 14th, 2014 at 21:16 | #18
Reply | Quote
yg punya web ini jualan PLC Schndeiderwkwkwk
18.
riyanto
September 25th, 2014 at 11:51 | #19
Reply | Quote
salam kenal pa?..saya mohon di bantu bagaimana cara membuat halaman pada HMI weintek mt 6056i.
19.
Lutfi
October 20th, 2014 at 12:46 | #20
Reply | Quote
minta contoh program modbus rtu untuk PIC 16f877A dong, bodoh bgt saya nih blm ngerti2
Name (required)
E-Mail (will not be published) (required)

Website

CAPTCHA Code*
Subscribe to comments feed
Submit Comment

Notify me of followup comments via e-mail


Menjelajah Sumur Gas Kalimantan Timur I Muara Badak SCADA (Supervisory Control And Data Acquisition)
RSS
Twitter

Do you likes this site?


31
Suka

Donasi :

Tags

Allen Bradley Analog Signal Blog C# Control Micro Systems Diferrential Pressure Differential Pressure Dynamic Library

Control IOserver Kalimantan Timur Map MapSource Measurment

Flow Flow Measurment Garmin HART HMI Instrument &

modbus Modbus RTU Modbus Serial

MTU MVT

Oil & Gas Orifice

Pemrograman Pengukuran Peta PHP PLC RS232 RS485 RTU RTWS SCADA SCADAPack serial Static Pressure Telepace tips Unity Pro XL VICO wonderware
worpdress

Tulisan Terbaru
ModbusSim Modbus TCP & Serial, Simulator (Slave)
OPC Common Error Code
Water Tank PLC Control Simulation with Matlab Simulink
PLC Unity Pro XL, Set up project and configuration
Database to OPC (Iconics DataWorX)
Intellimax HMI REVIEW
Trik mencari modbus register
ICONICS GENESIS32 HMI REVIEW
Pengukuran Flow Gas (AGA-3 & AGA-8)
Faulty Measurement Analysis
Modbus Exception Codes
Instrument Wellhead Compressor
Flow Measurement and Calculation
Menggunakan Modbus Slave Multiple RTU
Belajar PLC Allen Bradley (AB) bag.I

Buku Tamu
Guest
Menarik sekali situs ini.. banyak informasi yang saya dapatkan disini.....
Dunia Spiritual
Mantap sekali bro situsnya.. bravo !!...
Maricruz
Incredible this is a valuable web page....

Bulu Perindu
Bagus sekali mas.. tetap berkarya ya.. Tips buku tamu yg sangat bermanfaat....
Dimas
Terimakasih ilmunya, Salam kenal...

Pages
About
Personal & Contact
Buku Tamu
Downloads
Project & Research
Publication
Daftar Isi

Categories
Communication
General
Instrument & Control
Interface Engineering
Pengalaman
Programming
Tips & Trick
Tutorial

Komentar Terbaru
hasan on Belajar PLC Allen Bradley (AB) bag.I
Omah Komputer Media Informatika on Peta Indonesia, dengan Garmin Mapsource
ade subhan on Belajar Menggunakan Wonderware (HMI)
Lutfi on Modbus Protokol dan Serial Standard
riyanto on Modbus Protokol dan Serial Standard

Company
Schneider Electric

Engineering Portal
Migas-Indonesia
Petromindo

Instrument & Control web


Dikkus
Toekang SCADA

Link
Aish Prastowo
Dhira on Flickr
Dhira PhotoBlog
My Old Site
Pinas
Rizwan Hamdi
Ziris Irdian Youtube

Top WordPress
Copyright 2010-2014 Rifqi Imanto & Engineering Notes
Theme by NeoEase. Valid XHTML 1.1 and CSS 3.