Pengetahuan Pe ngetahuan Dasar Protokol Modbus JUN 3 Posted by pccontrol
Jaringan Protokol Modbus Sebelum membaca artikel ini sebaiknya anda membaca ttg Protokol komunikasi . komunikasi . Pengetahuan Penge tahuan dasar Prototokol Modbus Protocol modbus dibuat oleh perusahaan PLC bernama Modicon tahun 1979 dan sampai sekarang menjadi salah satu prtotocol komunikasi standar yg dipakai dalam utomatisasi pengelolaan !edung" Proses #ndustri dll. $eberapa Jenis %ype Modbus •
Modbus Serial &'%( ) SC##*
•
Modbus %CP+#P
•
Modbus ,
Pada rtikel ini kita hanya akan membahas Modbus Serial '%( disebabkan mudah implementasinya . Protokol komunikasi Modbus Serial mengatur cara-cara dan ormat komunikasi
serial &rs/0/ atau
rs23* antara master dengan Sla4e & master atau sla4e dpt berupa PLC "microcontroller" smart de4ice dll* .Jaringan Modbus terdiri dari Master dan beberapa Sla4e" Master yang berinisiati memulai komunikasi komunikasi antara lain menulis menulis data"membaca data"membaca data"dan data"dan mengetahui mengetahui status SLa4e . Permintaan master disebut juga sebagai re5uest atau 5uery. Sla4e hanya bersiat pasi+menunggu pasi+menungg u atau dgn kata lain Sla4e hanya me respon jika ada permintaan+5 permintaan+5uery uery dari dari Master.
Jumlah Sla4e dalam protokol Modbus bisa sebanyak /7 sla4e. Sla4e dapat berupa PLC" peralatan elektronik" controller" sensor dll.
Penyimpanan data pada modbus Pada protokol modbus terdapat buah jenis penyimpanan data dengan panjang masing/ 16 bit.
1. Coil Pada mulanya jenis data ini digunakan untuk mengaktikan coil relay . nilai jenis data ini 8 atau . Coil mempunyai panjang 16 bit" sehingga untuk mengaktikan+8 dgn cara memberi nilai ::; dan ::::; untuk . data :: dan :: disimpan di register ::::: sampai :9999 /. #nput 'elay + input biner + input digital+input diskrit kebalikan dengan coil" input relay digunakan untuk mengetahui status relay apakah sedang 8 atau . #nput relay bersiat read only bagi master dan hanya bisa dirubah oleh sla4e saja. data tsb disimpan di register
1:::1 sampai 19999
0. #nput 'egister #nput 'egsiter digunakan untuk menyimpan data analog dgn range nilai : < 63303 . #nput register bersiat read only bagi master.
data ini disimpan di register ber nomor 0:::1 sampai 09999 . ;olding 'egister ;olding register digunakan untuk menyimpan nilai dgn range :<63303 .register ini mempunyai alamat register :::1 sampai 9999 Alamat register pd modbus dan function code yg digunakan untuk mengaksesnya
tabel 1 . alamat register dan unction code Pengorganisasian data modbus !ambar diba=ah ini memperlihatkan pengorganisasian data pada sebuah sla4e modbus yang masing masing mempunyai blok ter pisah antara coil dan register.
!ambar diba=ah ini memperlihatkan pengorganisasian data pada sebuah sla4e modbus yang hanya mempunayi satu blok untuk coil dan register.
Frame Data Modbus: Master atau sla4e berkomunikasi dgn cara mengirim rame permintaan dan rame respon . secara umum ormat rame modbus sbb>
rame modbus terdiri dari 1. lamat sla4e $yte pertama sebagai lamat sla4e terdiri dari 1 byte . alamat sla4e ditentukan hanya 1 < /7. alamat : digunakan master untuk ditujukan kepada semua sla4e. /. unction Code $yte kedua berupa unction Code " perintah dari master yang harus dilakukan oleh sla4e berikut ini datar kode perintah perintah tsb &unction code*>
Data
membac a
menulis 1 data FC05
menulis banyak data
Coil
FC01
input diskrit/digital
FC02
10001
Input register
FC04
30001
Holding egister
FC03
FC0!
FC15
no awal reg
FC1!
00001
40001
?keterangan> C13 maksudnya adalah unction code 13 desimal atau : dlm he@a.
0. $yte Aata Jumlah $yte Aata ber4ariasi tergantung jumlah data yg akan di tuliskan ke sla4e. $yte data berisi alamat register" jumlah data" dan data yg akan ditulis. alamat register akan di jelaskan kemudian.
. eror check" C'C Aua byte terakhir adalah byte C'C " byte ini digunakan untuk mendeteksi jika ada kesalahan pada rame modbus . espon M!D"U# $%ception 'espon e@eception adalah respon dari sla4e ketika terjadi keadaan tidak normal+error. Sla4e menerima 5uery " tetapi Sla4e tidak dapat menangani perintah tersebut" Sla4e akan mengirimkan sebuah respon e@ception. rame respon jika terjadi kesalahan berbeda dgn rame dlm keadaan normal.
Perbedaan rame modbus normal dan saat terjadi e@ception
%abel B@ception Code
"#ception Code
$ama e#ception
arti
01
I%%"&'% F($C)I*$
+unction code sala,
02
I%%"&'% -')' '--"..
alamat register sala, misal slae punya 100 register maka alamat ma#imum adala,
03
I%%"&'% -')' '%("
mengandung nilai data yg tdk diiinkan untuk slae
04
.%'" -"IC" F'I%("
.lae gagal melaksanakan perinta, master
05
'C$*6%"-&7"$)
pemberita,uan ke master ba,wa pelaksanaan perinta, akan memakan waktu yg lama se,ingga bisa time out
0!
.%'" -"IC" 8(..9
slae sidang sibuk sila,ken kirim perinta, lain waktu
.pecialied use in con
0:
7"7*9 ;'I)9 "*
c,eck
rame 'espon e@ception yang akan di kirim oleh sla4e adalah > alamatsla4e- uction code D'E 2: F e@ception code- C'C contoh respon e@ception>
(ntuk lebih memahami protokol modbus kita bisa perhatikan contoh contoh berikut ini> contoh 1 > membaca isi input register 0:::1
sebuah Master meminta data isi 1 buah register input dari Sla4e dgn alamat 1. uction code : digunakan untuk membaca data register sla4e.
maka master akan mengirim query : 01 04 0000 0001 31CA :1 G lamat Sla4e : G unction Code : &Perintah Membaca register input* :::: G lamat a=al Aata di register yg diminta &0:::1-0:::1G:* :::1 G Jumlah register yg datanya diminta 01C G 8ilai C'C Sla4e dgn alamat 1 akan merespon dengan mengirim data ke master sbb>
01 04 02 0032 E4D2 artinya> :1 G lamat dirinya + Sla4e 1 : G unction Code : :/ G jumlah byte data yg akan diberikan . :: G data pertama 0/ G data kedua BG C'C byte / A/ GC'C byte 1 Contoh / > membaca / buah holding register :1:2 ) :1:9 alamat a=al data di register :1:2 -:::1G 1:7 atau dlm bilangan he@a ::6$ Master mengirim > 11 :0 :: 6$ :: :/ &' "'" artinya meminta data isi / buah register mulai dari alamat ::6$ " alamat sla4e 11;. nilai crc 7$7 &misal isi register di sla4e > ://b ::6* Sla4e mengirim respon > 11 :0 : :/ /b :: 6 A( ("
Contoh 0. master menset coil (ntuk men set sebuah coil nomor 170 pada sla4e dgn alamat 17 &11;* 11 05 00AC FF00 4E8B 11> 05>
alamat sla4e&17 G
11 he@*
unction Code
00AC > FF00 > 4E8B >
alamat koil coil. &coil 170 F 1 G 17/ G &
FF00 G
8"
0000 G
AC he@*
*
C'C
'espon dari sla4e 11 05 00AC FF00 4E8B 11>
alamat Sla4e &17 G 11 he@*
05>
unction Code
00AC > FF00 > 4E8B >
alamat+nomor coil &coil 170 F 1 G 17/ G status& C'C
FF00 G
8"
0000 G
*
AC he@*
Contoh aplikasi penggunaan jenis data modbus pada H' microntroller sebagai sla4e>
Pen)elasan gambar contoh di atas: 1. coil disini digunakan untuk mengaktikan relay dengan cara menulis ::; register ::::1 dan register ::::2 . (ntuk mematikan relay dgn cara menuliskan ::::; ke kedua register tsb. (ntuk mengetahui status apakah relay sedang menyala atau sedang mati kita bisa membaca register ::::1 dan register ::::2. /. #nput digital +input diskrit &read only bagi master* untuk input digital master hanya bisa mengetahui statusnya dan tdk bisa menulis ke input digital. artinya pada contoh ini master tdk bisa memerintahkan sla4e untuk mengaktikan s=itch. untuk mengetahui status s=tich sedang on atau o dengan cara membaca register /:::1 dan /:::/. 0. #nput register &read only bagi master* Pada contoh ini input register digunakan untuk menyimpan data hasil kon4ersi AC . ;asil kon4ersi bisa dibaca oleh master dan master tdk bisa merubah data register ini. hasil kon4ersi AC chanel : &port.:* disimpan di input register 0:::1
hasil kon4ersi AC chanel / &Port.1* disimpan di input register 0:::/ dan seterusnya. . ;olding 'egister Pada contoh ini holsing register di gunakan untuk menyimpan input dari port $ ketika port $ sbg input. ;olding register juga bisa digunakan untuk mengeluarkan data ke port$ saat port$ sebagai output. Contoh master
berupa PC dan sla4e microcontroller
master-sla4e-modbus
Modbus Protokol dan Serial Standard December 6th, 2010Leave a comme ntGo to comments Download article as PDF
Setelah saya mempelajari sistem S!D! secara "m"m ma#a #em"dian saya mempelajari dari masin$%masin$ s"bsistemnya& dim"lai dari ba$aimana cara #erjanya, ba$aimana cara ber#om"ni#asinya, ba$aimana cara men$ambil data dan lainnya& Sampai a#hirnya saya mempelajari 'om"ni#asi Serial pada PL dan bertem" den$an jenis%jenis standard ind"stri #om"ni#asi serial dan j"$a standar ind"stri proto#ol "nt"# #om"ni#asi data&
(nt"# #om"ni#asi serial ada beberapa yan$ serin$ di$"na#an di )nd"stri, yait" *S2+2, *S-., dan *S22& *S adalah sin$#atan dari *ecommended Standard /#lo di #as#"s *ecommended Seller #ali ya p& 'eti$a jenis *S terseb"t mer"pa#an physical layer /ardware dari Layer pertama di 3S) 4odel /5i#ipedia 3S) 4odel yan$ pada intinya pada phisycal layer ba$aimana hardware terseb"t men$"bah data menjadi sinyal ele#tri# dan j"$a sebali#nya men$"bah sinyal ele#tri# menjadi data& Setiap standard #om"ni#asi serial masin$ masin$ memili#i spesii#asi yan$ berbeda pada *S2+2 sinyal electric diay"n#an pada te$an$an 78% 12 9olt, 78% .9olt, dan 78% + 9olt& pen$#abelan memili#i minimal + #abel yait" *:, ;:, dan $ro"nd& dan panjan$ ma#sim"m #abel adalah 1. meter& Sedan$#an pada *S-. te$an$an yan$ di$"na#an adalah 78% .9olt dimana sinyal di #onversi#an pada d"a #abel 7 /! dan #abel < /=& Pada *S-. tida# men$$"na#an $ro"nd ma#a dari it" *S-. dapat di$"na#an den$an #abel hin$$a 1200meter /1,2'm #arena loss daya yan$ terjadi lebih #ecil dan tida# terlal" berpen$ar"h #arena tetap dapat ter#onversi sinyalnya& #em"dian pada *S-. dapat m"ltidrop ata" dapat dicaban$#an den$an beberapa hardware& "nt"# melihat perbedaan *S2+2 den$an *S-. dapat dilihat dihttp88en&wi#ipedia&or$8wi#i8*S%-. dan http88en&wi#ipedia&or$8wi#i8*S%2+2 Pada #om"ni#asi serial yan$ di$"na#an pada PL terdapat cara ber#om"ni#asi 8 bahasa #om"ni#asi yan$ diseb"t proto#ol& proto#ol mer"pa#an bahasa "nt"# salin$ ber#om"ni#asi antar hardware pada #as"s ini PL& Proto#ol standard yan$ serin$ di$"na#an pada PL dalam ber#om"ni#asi adalah 4odb"s& seb"ah proto#ol yan$ berada di layer #e > /!pplication Layer dalam 3S) model& 4odb"s mer"pa#an standar #om"ni#asi b"s yan$ dib"at oleh modicon yan$ memili#i open license yait" boleh di$"na#an oleh siapa saja& "nt"# penjelasan lebih len$#ap men$enai modb"s dapat dilihat di www&4odb"s&or$& nah se#aran$ ba$aimana modb"s it" be#erja? 'ita bahas "nt"# modb"s serial d"l"& jadi modb"s serial adalah #om"ni#asi serial yan$ men$$"na#an
proto#ol modb"s& pada #om"ni#asi serial pen$iriman data besarnya adalah - byte data ata" istilah #asarnya adalah rame data dalam 1@ pen$iriman& [byte0] [byte1] [byte2] [byte3] [byte4] [byte5] [byte6] [byte7] besarnya nilai data dalam 1 ramenya adalah 2A- B 2.6 /0%2..& ma#a nilai terbesarnya adalah 2.6& ji#a #ita men$irim#an !S)) misal#an h"r" C! ma#a nilai yan$ di$"na#an ses"ai !S)) table adalah 6.& pada modb"s rame%rame terseb"t diisi den$an #esepa#atan tertent"& modb"s Frame "nt"# reE"est dari master #e slave adalah [address RTU] [un!tion "ode] [Re#] [Re#] [$en#%t][$en#%t] ["R"1] ["R"2] #eteran$an !ddress *;( mer"pa#an address dari setiap *;(, ji#a alamat *;( yan$ direE"est mas"# #e *;( ses"ai ma#a *;( terseb"t a#an meresponnya den$an memberi#an pesan balasan& F"nction ode mer"pa#an jenis%jenis "n$si yan$ dapat di$"na#an yait", • • • • • • • • • • • • • • • • • • • • • • • •
01 Read Coil Status 02 Read Input Status 03 Read Holding Registers 04 Read Input Registers 05 Force Single Coil 06 Preset Single Register 0> *ead @ception Stat"s 0- Dia$nostics 0 Pro$ram - 10 Poll - 11 Fetch omm"nication vent o"nter 12 Fetch omm"nication vent Lo$ 1+ Pro$ram ontroller 1 Poll ontroller 15 Force Multiple Coils 16 Preset Multiple Registers 1> *eport Slave )D 1- Pro$ram --84- 1 *eset omm& Lin# 20 *ead General *eerence 21 5rite General *eerence 22 4as# 5rite : *e$ister 2+ *ead85rite : *e$isters 2 *ead F)F3 H"e"e Iam"n yan$ palin$ serin$ di$"na#an hanya yan$ saya tebal#an t"lisannya diatas&
*e$ mer"pa#an re$ister yan$ in$in diambil nilainya&&rame ini men$$"na#an 2 byte data& ma#a dari it" nilai re$ister bisa sampai 2.6J2.6 nam"n dibatasi den$an j"mlah re$ister yan$ tersedia& Len$ht 4er"pa#an j"mlah re$ister yan$ in$in direE"est& ini j"$a men$$"na#a 2 byte rame seperti re$ister& *1 dan *2 * adalah Cyclic Redundancy Check yait" seb"ah metode "nt"# pen$ece#an error& * ini men$$"na#an 2 byte rame j"$a& "nt"# men$hit"n$ dan men$etah"i lebih jelas * dapat dilihat di * viewso urce print ?
01.contoh fungsi untuk menghitung CRC 02.public static void GetCRC(byte[] message, ref byte[] CRC 0!." 0#.$$%unction e&pects a mo'us message of an) *ength as we** as a 2 )te CRC arra) in which to 0+.$$return the CRC va*ues 0-.ushort CRC%u** 0&%%%%/ 0.byte CRCigh 0&%%, CRCow 0&%%/ 03.char CRC45/6$p7 08.for (int i 0/ i 6 (message.ength 9 2/ i:: 10." 11.CRC%u** (ushort(CRC%u** ; message[i]/6$p7 12.for (int < 0/ < 6 3/ <:: 1!." 1#.CRC45 (char(CRC%u** =amp/amp/amp/ 0&0001/ 1+.CRC%u** (ushort((CRC%u** 77 1 =amp/amp/amp/ 0&%%%/6$p7 1-.if (CRC45 1 1.CRC%u** (ushort(CRC%u** ; 0&>001/ 13. 18. 20.CRC[1] CRCigh (byte((CRC%u** 77 3 =amp/amp/amp/ 0&%%/ 21.CRC[0] CRCow (byte(CRC%u** =amp/amp/amp/ 0&%%/ 22. Modbus Messa#e Res&on
Pesan respon dari slave #e *;( memili#i sedi#it perbedaan den$an reE"est& "nt"# pesan 4odb"s dari slave memili#i rame yan$ menyes"ai#an j"mlah data yan$ di#irim#an dimana setiap 1 data men$$"na#a 2 byte rame& s"s"nan nya adalah [RTU 'ddress] [un!tion "ode] [2(&an)an# data] [data] [data][data*] [data*] ["R"1] ["R"2] ontoh K4!S;* dimisal#an #ita a#an me%reE"est #e slave den$an id ., men$ambil holdin$ re$ister di slave den$an re$ister 0001 sampai den$an 000& ma#a bent"# pesannya dalam : [05] [03] [00] [00] [00][04] ["R"1] ["R"2] Penjelasan [05] + karena sla,e -. nya adala% 5 [03] + /arena ereuest %oldin# re#ister li%at di t able un!tion [00] [00] + karena 40001 adala% re#ister &ertaa aka diulai dari 0 [00] [04] + karena ada 4 data yan# akan di reuest 40001 40004 ["R"1] ["R"2] + 8asil "R" dan #em"dian Slave a#an membalasnya dimisal#an re$ister 0001 bernilai >, 0002 bernilai 6, 000+ bernilai ., dan 000 bernilai & ma#a respon slave adalah [05] [03] [09] [00] [07][00] [06][00] [05] [00] [04] ["R"1] ["R"2] Penjelasan [05]+ Sla,e -. [03] + un!tion Read 8oldin# Re#ister [09] + 2 : )ula% data 2 : 4 [00] [07]+ nilai data di re#ister &ertaa yan# di reuest [00] [06]+nilai data di re#ister kedua yan# di reuest [00] [05]+nilai data di re#ister keti#a yan# di reuest [00] [04]+nilai data di re#ister kee&at yan# di reuest
["R"1] ["R"2]+ 8asil "R" nya
Sepintas Tentang Modbus @o'us a'a*ah sa*ah satu protoko* untuk komunikasi seria* )ang 'i pu*ikasikan o*eh @o'icon pa'a tahun 188 untuk 'i gunakan pa'a AC @o'icon (AC pertama 'i 'unia )ang 'i kemangkan o*eh 4chnei'er. Arotoko* ini men
*asan utama mengapa @o'us Arotoko* an)ak 'i gunakan a'a*ah 1. B pu*ikasikan secara teruka tanpa ro)a*t) fee untuk penggunaann)a. 2. Re*atif mu'ah untuk 'i ap*ikasikan pa'a in'ustria* network. !. @o'us mempun)ai struktur it tanpa memi*iki an)ak *arangan agi ven'or *ain untuk mengaksesn)a. @o'us 'igunakan untuk komunikasi antara 'evices )ang terkoneksi pa'a B>.
2 @e'ia Arotoko* @e'ia @o'us Arotoko* teragi atas tiga )aitu 4eria* port 'an Fthernet port 'an versi tamahan. ean)akan @o'us 'evices erkomunikasi 'engan seria* R4#3+ Aort. Aa'a koneksi seria*, a'a 'ua varian )aitu @o'us RDE 'an @o'us >4C, @o'us RDE menggunakan representasi it pa'a pengiriman 'atan)a se'an @o'us >4C menggunakan format 'ata >4C 'a*am pengiriman 'atan)a. Bo'e 'engan varian >4C ti'ak isa erkomunikasi 'engan varian RDE 'an sea*ikn)a. Aa'a versi tamahan, a'a ction Da*e Hame 01 (01 he& Rea' Biscrete Iutput Coi*s 0+ (0+ he& Jrite sing*e Biscrete Iutput Coi* 1+ (0% he& Jrite mu*tip*e Biscrete Iutput Coi*s
02 (02 he& Rea' Biscrete nput Contacts 0# (0# he& Rea' >na*og nput Registers 0! (0! he& Rea' >na*og Iutput o*'ing Registers 0- (0- he& Jrite sing*e >na*og Iutput o*'ing Register 1- (10 he& Jrite mu*tip*e >na*og Iutput o*'ing Registers