14
1. Modbus Modbus merupakan sebuah protokol komunikasi serial yang digunakan untuk membentuk suatu bentuk komunikasi antara client-server maupun master-slave antara perangkat pintar. Perangkat pintar disini mempunyai artian perangkat yang digunakan dalam suatu industri, seperti peralatan control. Modbus pertama kali dikembangkan oleh modicon, namun sekarang modbus dapat dipergunakan secara terbuka dan menjadi standart komunikasi serial antar devices pada suatu industri. Seiring dengan perkembangan modbus, banyak vendor-vendor yang memiliki ribuan devices telah menggunakan modbus sebagai media transfer discrete/analog I/O dan register data antara control devices. Modbus dapat digunakan untuk melakukan monitoring dan programming pada suatu devices yang digunakan sebagai media komunikasi antara intelligent devices dan field devices dengan menggunakan PC maupun HMI. Berikut ini merupakan hal-hal yang membuat Modbus menjadi populer sebagai protokol komunikasi kontrol pada industri: Dikembangkan berdasar kebutuhan industri Open source Mudah di implementasi dan perawatannya Memindahkan bit-bit maupun words tanpa memberatkan sisi vendor Gambar 4.1 Modbus Layer 1.1. Modbus Register Map Register pada Modbus berkaitan dengan function codes dari protokol modbus itu sendiri. Karena perkembangan PLC yang semakin kompleks akhirnya munculah I/O range dari 16 bit register . dan pembagian dari register itu dimualai dari 00001 – 10000 untuk read/write discrete output yang disebut sebagai coils. Sedangkan discrete input dimulai dari 10001 – 20000, selanjutanya 30001 – 40000 digunakan sebagai analong input register, dan tidak ada pembatasan untuk register diatas 40001. Untuk lebih jelasnya silahkan peerhatikan gambar 4.2.

laporan Modbus

Embed Size (px)

DESCRIPTION

all about modbus

Citation preview

Page 1: laporan Modbus

1. Modbus Modbus merupakan sebuah protokol komunikasi serial yang digunakan untuk membentuk suatu bentuk komunikasi antara client-server maupun master-slave antara perangkat pintar. Perangkat pintar disini mempunyai artian perangkat yang digunakan dalam suatu industri, seperti peralatan control. Modbus pertama kali dikembangkan oleh modicon, namun sekarang modbus dapat dipergunakan secara terbuka dan menjadi standart komunikasi serial antar devices pada suatu industri. Seiring dengan perkembangan modbus, banyak vendor-vendor yang memiliki ribuan devices telah menggunakan modbus sebagai media transfer discrete/analog I/O dan register data antara control devices. Modbus dapat digunakan untuk melakukan monitoring dan programming pada suatu devices yang digunakan sebagai media komunikasi antara intelligent devices dan field devices dengan menggunakan PC maupun HMI. Berikut ini merupakan hal-hal yang membuat Modbus menjadi populer sebagai protokol komunikasi kontrol pada industri:

Dikembangkan berdasar kebutuhan industri Open source Mudah di implementasi dan perawatannya Memindahkan bit-bit maupun words tanpa memberatkan sisi vendor

Gambar 4.1 Modbus Layer

1.1. Modbus Register Map Register pada Modbus berkaitan dengan function codes dari protokol modbus itu sendiri. Karena perkembangan PLC yang semakin kompleks akhirnya munculah I/O range dari 16 bit register . dan pembagian dari register itu dimualai dari 00001 – 10000 untuk read/write discrete output yang disebut sebagai coils. Sedangkan discrete input dimulai dari 10001 – 20000, selanjutanya 30001 – 40000 digunakan sebagai analong input register, dan tidak ada pembatasan untuk register diatas 40001. Untuk lebih jelasnya silahkan peerhatikan gambar 4.2.

Gambar 4.2 Modbus Regiter Map Secara Umum

Sedangkan organisasi data pada modbus yaitu terdiri dari memory dan juga register tempat dari input discrete, coils, input registers,dan juga holding registers berada.

Page 2: laporan Modbus

Gambar 4.3 Organsisasi Data Pada Modbus

1.2. Modbus Function CodesFunction code berguna untuk mendefinisikan jenis Message dan jenis respon yang harus dilakukan oleh slave, contohnya untuk membaca isi data dari sebuah kumpulan register, untuk mendiagnosa status dari slave, dan lain sebagainya. Parameter ini mengandung satu byte informasi. Pada Modbus/ASCII parameter ini menjadi dua karakter hexadesimal, tetapi pada Modbus/RTU hanya digunakan satu byte. Function code yang digunakan secara umum pada device Modbus mempunyai jangkauan antara 1 sampai dengan 255, tetapi tidak semua code akan digunakan pada modul dan beberapa code disiapkan untuk kebutuhan yang akan datang. Ketika slave dari Modbus merespon, slave ini pasti akan menggunakan Function code yang sama seperti yang diminta dari master dimana untuk menunjukkan sebuah respon normal atau telah terjadi kesalahan (error). Akan tetapi, ketika terjadi kesalahan (error), maka bit paling tinggi (MSB-most significant bit) dari Function code akan menyala (bernilai logik 1), sedangkan jika slave/device merespon tanpa error, maka slave tersebut akan mengembalikan sama seperti code yang dikirim. Hal ini sangat berguna dimana master dapat melihat perbedaan antara respon yang sukses dan yang gagal. Perintah Report Slave ID dan Reset Slave tidak dioperasikan pada peta register

Gambar 4.4 Data Access Function Codes

Page 3: laporan Modbus

Pada mulanya coil merupakan jenis data yang digunakan untuk mengaktifkan coil relay. Nilai jenis data ini ON atau OFF. Coil mempunyai panjang 16 bit, sehingga untuk mengaktifkan (ON) dengan cara memberi nilai FF00H dan 0000H untuk OFF. Data FF00 dan 00 disimpan di register 00000 sampai 09999. Sedangkan Holding register digunakan untuk menyimpan nilai dgn range 0~65535. Register ini mempunyai alamat register 40001 sampai 49999

Setelah memahami istilah- istilah yang ada pada modbus, untuk menggunakan fungsi-fungsi tersebut master harus memberikan instruksi yang jelas pada slave dengan menyebutkan function code-nya seperti yang ada pada gambar 4.5.

Gambar 4.5 Register Map dan Function Codes yang Digunakan

1.2.1. Read Coil StatusPerintah ini berguna untuk membaca status ON/OFF output diskrit atau coil pada slave. Mode pengalaman broadcast tidak dapat digunakan hanya menggunakan struktur query untuk satu device/slave dalam suatu waktu. Fuction Code digunakan untuk membaca 1 sampai dengan 2000 status coil pada slave. Permintaan PDU (Protocol Data Unit) menetapkan alamat awal, contohnaya alamat pada coil pertama ditetapkan. Pada PDU, coil mulai dialamatkan dari 0. Oleh karena itu, coil dengan nomor 1-16 dialamatkan pada 0-15. Coils pada message respon dipaketkan sebagai satu coil tiap bit data. Status ditandai dengan 1 untuk ON dan 0 untuk OFF. LSB pada byte data pertama berisi alamat output pada query. Coils yang lain mengikuti secara berurutan menuju ke tujuan akhir yang paling tinggi dari urutan bawah ke urutan yang paling tinggi pada byte-byte yang berurutan. Jika output dikembalikan bukan merupakan kelipatan 8, maka sisa bit pada byte data akan diisi dengan nilai 0 (nol). Ketika menerima sebuah message dalam fungsi 01, maka slave akan mengumpulkan semua nilai output yang dibutuhkan dan menyusun sebuah message jawaban. Panjang dari message ini tergantung dari besaran nilai yang harus dikembalikan. Pada umumnya, ketika N diminta, maka sejumlah ((N+7)MOD 8) byte hatus tersimpanTable 4.1 Request Read Coil StatusFunction Code 1 Byte 0x01Starting Address 2 Bytes 0x0000 to 0xFFFFQuantity of Coils 2 Bytes 1 to 2000 (0x7D0)Table 4.2 Response Read Coil StatusFunction Code 1 Byte 0x01Starting Address 1 Byte N*

Page 4: laporan Modbus

Coil Status n Byte N atau N+1*N = jumlah output / 8, jika sisanya beda 0 N = N+1

Table 4.3 Error Read Coil StatusFunction Code 1 Byte Function Code + 0x80Exception Code 1 Byte 01 atau 02 atau 03 atau 04

Table 4.5 Contoh Request dan Respon Read Discrete Outputs 20 – 38 Request ResponseField Name Hex Field Name HexFunction 01 Function 01Starting Address Hi 00 Byte Count 03Starting Address Lo 13 Output Status 27-20 CDQuantity of Outputs Hi 00 Output Status 25-28 6BQuantity of Outputs Lo 13 Output Status 38-36 05

1.2.2. Read Discrete InputPembacaan nilai input dengan Modbus sama saja dengan pembacaan pada status coil. Perbedaanya hanya terletak pada fungsi 02 yang diguanakan mode pengalamatan broadcast tidak dapat digunakan, hanya dapat menggunakan struktur query untuk satu device/slave dalam suatu waktu. Jumlah dari input-input harus diletakkan dalam data-field dari pernyataan message.Setelah menerima message dengan fungsi 02, slave meletakkan input yang diminta pada struktur message dan mengirim kembali ke master Modbus.panjang dari message bergantung pada jumlah nilai input yang dikembalikan.

Table 4.6 Request Read Discrete InputFunction Code 1 Byte 0x01Starting Address 2 Bytes 0x0000 to 0xFFFFQuantity of Inputs 2 Bytes 1 to 2000 (0x7D0)Table 4.7 Response Read Discrete InputFunction Code 1 Byte 0x02Byte Count 1 Byte N*Input Status N* x 1 Byte

*N = jumlah output / 8, jika sisanya beda 0 N = N+1Table 4.8 Error Read Discrete InputError Code 1 Byte 0x82Exception Code 1 Byte 01 atau 02 atau 03 atau 04

Table 4.9 Contoh Request dan Response Read Discrete Input 197 – 218 Request ResponseField Name Hex Field Name HexFunction 02 Function 02Starting Address Hi 00 Byte Count 03Starting Address Lo C4 Inputs Status 27-20 ACQuantity of Inputs Hi 00 Inputs Status 25-28 DBQuantity of Inputs Lo 16 Inputs Status 38-36 35

1.2.3. Read Holding RegisterFunction code ini digunakan untuk membaca isi dari blok register pada device. Permintaan PDU menetapkan awal, contohnya alamat pada coil pertama ditetapkan. Pada PDU, coil mulai dialamtakan dari 0. Oleh karena itu, coil dengan nomor 1-16 dialamatkan pad 0-15. Data register pada message respon dipaketkan sebagai dua byte tiap register dengan isi biner rata kanan pada setiap byte. Untuk setiap register, byte pertama mengandung urutan byte yang tinggi dan byte kedua mengandung byte yang rendah.

Table 4.10 Request Read Holding RegisterFunction Code 1 Byte 0x03Starting Address 2 Bytes 0x0000 to 0xFFFFQuantity of Registers 2 Bytes 1 to 2000 (0x7D0)

Page 5: laporan Modbus

Table 4.7 Response Read Holding RegisterFunction Code 1 Byte 0x02Byte Count 1 Byte 2 x N*Register Value N* x 2 Bytes

*N = jumlah RegisterTable 4.11 Error Read Holding RegisterError Code 1 Byte 0x83Exception Code 1 Byte 01 atau 02 atau 03 atau 04

Table 4.12 Contoh Request dan Response Read Holding Register 108 – 110 Request ResponseField Name Hex Field Name HexFunction 03 Function 03Starting Address Hi 00 Byte Count 06Starting Address Lo 6B Register Value Hi (108) 02No. of Registers Hi 00 Register Value Lo (108) 2BNo. of Registers Lo 03 Register Value Hi (109) 00

Register Value Lo (109) 00Register Value Hi (110) 00Register Value Lo (110) 64

Sebagai contoh, isi register 108 ditunjukkan sebagai nilai 2 byte dari “02 2B” dalam bilangan HEX atau 555 dalam desimal. Sedangakan isi register 109-110 adalah “00 00” dan “00 64” dalam HEX atau 0 dan 100 dalam desimal. Function code 01-03 memiliki struktur query dan struktur jawaban yang sama.

Table 4.13 Struktur Query

Byte Value Keterangan1 1..247 Slave Device Address2 3 Function Code3 0..255 Starting Adresss, Hi4 0..255 Starting Address, Lo5 0..255 Number of Registers, Hi6 0..255 Number of Registers, Lo7(..8) LRC/CRC Error Check Value

Table 4.14 Jawaban

Byte Value Keterangan1 1..247 Slave Device Address2 1 Function Code3 0..255 Number of Data Bytes N4..N+3 0..255 Bit Pattern of Coil Status7(..8) LRC/CRC Error Check Value

1.2.4. Read Input RegisterFunction code ini digunakan untuk membaca dari 1 sampai 125 register input pada sebuah device. PDU yang diminta menetapkan alamat coil untuk ditekan. Coils tersebut dimulai dari nol. Oleh karena itu, register input mempunyai nomor 1-16 dialamatkan 0-15. Data register pada Response Message dipaketkan menjadi dua byte tiap register dengan isi biner rata kanan pada setiap byte. Untuk setiap register, byte pertama mengandung urutan bit yang tinggi dan byte kedua mengandung urutanTable 4.15 Request Read Input RegisterFunction Code 1 Byte 0x04Starting Address 2 Bytes 0x0000 to 0xFFFFQuantity of Inputs Registers 2 Bytes 1 to 2000 (0x007D)

Page 6: laporan Modbus

Table 4.16 Response Read Input RegisterFunction Code 1 Byte 0x04Byte Count 1 Byte 2 x N*Input Registers N* x 2 Bytes

*N = jumlah RegisterTable 4.17 Error Read Input RegisterError Code 1 Byte 0x84Exception Code 1 Byte 01 atau 02 atau 03 atau 04

Table 4.18 Contoh Request dan Response Read Input RegisterRequest ResponseField Name Hex Field Name HexFunction 04 Function 04Starting Address Hi 00 Byte Count 02Starting Address Lo 08 Input Register 9, Hi 00Quantity of Inputs Hi 00 Input Register 9, Lo 0AQuantity of Inputs Lo 01

1.2.5. Write Single CoilFunction code ini digunakan untuk menulis output tunggal ke ON/OFF pada device. Keadaan ON/OFF yang diminta ditetapkan oleh data request yang tetap. Nilai FF00 hexadesimal meminta output pada posisi ON. Nilai 0000 Hexadesimal meminta pada posisi OFF. Semua nilai yang lain tidak akan mempengaruhi output. PDU yang diminta menetapkan alamat coil untuk ditekan. Coils tersebut dimulai dari nol. Oleh karena itu, coil nomor 1 dialamatkan sebagai 0. Keadaan ON/OFF yang diminta ditetapkan oleh permintaan nilai coil yang tetap. Nilai 0xFF00 meminta coil untuk ON. Nilai 0x0000 meminta coil OFF. Semua nilai yang lain tidak akan mempengaruhi coil.Table 4.19 Request Write Single CoilFunction Code 1 Byte 0x05Output Address 2 Bytes 0x0000 to 0xFFFFOutput Value 2 Bytes 0x0000 to 0xFF00Table 4.20 Response Write Single CoilFunction Code 1 Byte 0x05Output Address 2 Bytes 0x0000 to 0xFFFFOutput Value 2 Bytes 0x0000 to 0xFF00Table 4.21 Error Write Single CoilError Code 1 Byte 0x85Exception Code 1 Byte 01 atau 02 atau 03 atau 04

Table 4.22 Contoh Request dan Response Write Single Coil 173 ONRequest ResponseField Name Hex Field Name HexFunction 05 Function 05Output Address Hi 00 Output Address Hi 00Output Address Lo AC Output Address Lo ACOutput Value Hi FF Output Value Hi FFOutput Value Lo 00 Output Value Lo 00

1.2.6. Write Single RegisterFunction code ini digunakan untuk sebuah single holding register pada device. PDU yang diminta menetapkan alamat coil untuk ditekan. Coils tersebut dimulai dari nol. Oleh karena itu, coil nomor 1 dialamatkan sebagai 0.Table 4.23 Request Write Single RegisterFunction Code 1 Byte 0x06

Page 7: laporan Modbus

Register Address 2 Bytes 0x0000 to 0xFFFFRegister Value 2 Bytes 0x0000 to 0xFFFFTable 4.24 Response Write Single RegisterFunction Code 1 Byte 0x05Register Address 2 Bytes 0x0000 to 0xFFFFRegister Value 2 Bytes 0x0000 to 0xFFFFTable 4.25 Error Write Single RegisterError Code 1 Byte 0x86Exception Code 1 Byte 01 atau 02 atau 03 atau 04

Table 4.26 Contoh Request dan Write Single Coil 173 ONRequest ResponseField Name Hex Field Name HexFunction 06 Function 06Register Address Hi 00 Register Address Hi 00Register Address Lo 01 Register Address Lo 01Register Value Hi 00 Register Value Hi 00Register Value Lo 03 Register Value Lo 03

1.2.7. Write Multiple CoilsFunction code ini digunakan untuk memaksa setiap coil pada sebuah urutan coil ke posisi ON atau OFF pada device. PDU yang diminta menetapkan alamat coil untuk ditekan. Coils tersebut dimulai dari nol. Oleh karena itu, coil nomor 1 dialamatkan sebagai 0. Keadaan ON/OFF yang diminta ditetapkan oleh permintaan nilai coil yang tetap. Sebuah logika 1 pada posisi bit berhubungan dengan output untuk menjadi ON. Sebuah logik 0 meminta output untuk menjadi OFFTable 4.23 Request PDUFunction Code 1 Byte 0x0FStarting Address 2 Bytes 0x0000 to 0xFFFFQuantity of Outputs 2 Bytes 0x0001 to 0x07B0Byte Count 2 Bytes N*Output Value N*

*N = jumlah output / 8, jika sisanya beda 0 N = N+1Table 4.24 Response PDUFunction Code 1 Byte 0x0FRegister Address 2 Bytes 0x0000 to 0xFFFFRegister Value 2 Bytes 0x0001 to 0x07B0Table 4.25 Error Error Code 1 Byte 0x8FException Code 1 Byte 01 atau 02 atau 03 atau 04

Table 4.26 Contoh Request ResponseField Name Hex Field Name HexFunction 0F Function 0FStarting Address Hi 00 Starting Address Hi 00Starting Address Lo 13 Starting Address Lo 13Quantity of Outputs Hi 00 Quantity of Outputs Hi 00Quantity of Outputs Lo 0A Quantity of Outputs Lo 0AByte Count 02Outputs Value Hi CDOutputs Value Lo 01

1.2.8. Write Multiple Registers

Page 8: laporan Modbus

Function code ini digunakan untuk menuliskan sebuah blok register kontinu ( 1 sampai 120 register ) pada device. Nilai permintaan yang ditulis, dikhususkan pada permintaan data. Data dipaketkan menjadi 2 byte tiap registerTable 4.27 Request PDUFunction Code 1 Byte 0x10Starting Address 2 Bytes 0x0000 to 0xFFFFQuantity of Registers 2 Bytes 0x0001 to 0x0078Byte Count 1 Byte 2 x N*Register Value N* x 2 Bytes Value

*N = jumlah oRegisterTable 4.28 Response PDUFunction Code 1 Byte 0x10Starting Address 2 Bytes 0x0000 to 0xFFFFQuantity of Registers 2 Bytes 0x0001 to 0x07BTable 4.25 Error Error Code 1 Byte 0x90Exception Code 1 Byte 01 atau 02 atau 03 atau 04

Table 4.29 Contoh Request dan Response PDURequest ResponseField Name Hex Field Name HexFunction 10 Function 10Starting Address Hi 00 Starting Address Hi 00Starting Address Lo 01 Starting Address Lo 01Quantity of Registers Hi 00 Quantity of Registers Hi 00Quantity of Registers Lo 02 Quantity of Registers Lo 02Byte Count 04Registers Value Hi 00Registers Value Lo 0ARegisters Value Hi 01Registers Value Lo 02

1.2.9. Report Slave IDFunction code ini digunakan untuk membaca penjelasan dari tipe, status arus, dan informasi spesifik lainnya ke master deviceTable 4.30 Request Report Slave IDFunction Code 1 Byte 0x11Table 4.31 Response Report Slave IDFunction Code 1 Byte 0x11Byte Count 1 ByteSlave ID Device SpecificRun Indicator Status 1 Byte 0x00 = OFF, 0xFF = ONAdditional DataTable 4.25 Error Error Code 1 Byte 0x91Exception Code 1 Byte C1 atau C4

Table 4.32 Contoh Request dan Response Report Slave IDRequest ResponseField Name Hex Field Name HexFunction 11 Function 11

Byte Count Device Specific

Slave ID Device Specific

Page 9: laporan Modbus

Run Indicator Status 0x00 atau 0xFF

Additional Data Device Specific

1.3. Modbus ASCIIModbus ASCII (American Standart Code for information Interchange), merupakan komunikasi protokol dimana pesannya di encode dengan ascii dan juga mengalami eror checking dengan LRC. Pada bagian LSB-nya terdapat bit fungsi CR LF yang merupakan perintah agar data ditulis pada line baru dan dimulai dari awal kembali. Untuk lebih mudahnya CR LF dapat dianalogikan seperti fungsi ENTER pada tombol keyboard komputer. Sedangkan pada bagian MSB-nya diberi penanda start dengan menuliskan tanda colon “:”. Berikut ini merupakan framming yang ada pada protokol Modbus ASCII

Gambar 4.6 Modbus ASCII FramingAgar lebih mudah memahami mengenai framing pada protokol ASCII berikut ini merupakan contoh penggunaanya:Baca nilai keluaran analog pada holding register 40108 sampai 40110 dari slave device 17, maka:11 03 006B 0003Keterangan :11 : Slave ID Address (17 = 11 hex)03 : Function Code (read analog output on holding registers)006B : Data address pertama pada register yang diminta (40108 – 40001 =

107= 6B hex)0003 : Jumlah Data Address yang diminta oleh register (40108 sampai 40110)Selanjutnya hitung nilai LRC dengan cara:

Decimal Hex Binary17 11 0001 00013 03 0000 00110 00 0000 0000

107 6B 0110 10110 00 0000 00003 03 0000 0011

Total:130 82 1000 0010

Gunakan Metode 2’s complement:-130 7E 0111 11110

Sehingga menjadi : 11 03 00 6B 00 03 7E Tambahkan colon pada MSB dan CR LF pada LSB : : 11 03 00 6B 00 03 7E CR LFLalu konversikan semua menjadi kode ASCII :3A 3131 3033 3030 3642 3030 3033 3745 0D 0A

1.4. Modbus RTUModbus RTU (Retmote Terminal Unit), merupakan komunikasi protokol dimana pesannya di encode dengan binary. Ketika menggnakan protokol RTU masalah waktu (timing) menjadi sangat penting. Sehingga start frame tidak ada melainkan diberi jeda 4 character times pada start dan end frame, dimana end frame harus sama dengan start frame. Proses pengiriman protokol RTU berjalan secara

Page 10: laporan Modbus

continous sehingga bila ada gap yang cukup besar akan mengakibatkan data error dan tidak bisa terbaca dengan baik pada sisi penerima. Dengan menggunakan prtokol RTU maka data yang dikirimkan lebih compact dan efisien untuk proses pengiriman. Metode pengecekan error pada protokol RTU menggunakan CRC (Cyclic Redudancy Check). Berikut ini merupakan RTU framing.

Gambar 4.3 Modbus RTU FramingAgar lebih mudah memahami mengenai framing pada protokol RTU berikut ini merupakan contoh penggunaanya:Baca nilai keluaran analog pada holding register 40108 sampai 40110 dari slave device 17, maka:11 03 006B 0003 7687Keterangan :11 : Slave ID Address (17 = 11 hex)03 : Function Code (read analog output on holding registers)006B : Data address pertama pada register yang diminta (40108 – 40001 =

107= 6B hex)0003 : Jumlah Data Address yang diminta oleh register (40108 sampai 40110)7687 : Hasil perhitungan error dengan metode CRC

1.5. Modbus TCP/IPPada protokol ini akan membawa function code dan data di enkapsulasi menuju ke tingkatan protokol yang lebih lanjut dari sebelumnya (Modbus RTU, Modbus ASCII). Client and Server digunakan sebagai ganti dari master and slave. Selain itu framing yang digunakan juga berbeda dengan protokol modbus RTU.

Gambar 4.7 Modbus TCP/IP framingPada MBAP Header memiliki bagian-bagian seperti berikut :

Transaction ID : terdidiri dari 2 byte dan mempunyai byte yang unik. Byte tersebut di set oleh cilent untuk menandai maupun mengetahui setiap permintaan

Protocol ID: terdiri dari 2 byte yang diset oleh cilent dan selalu bernilai 00 00 Length: terdiri dari 2 byte yang menunjukan jumlag byte pada data yang dikirim Unit ID : terdiri dari 1 byte yang diset oleh client untuk identifikasi dari remote slave

Untuk lebih jelasnya dapat perhatikan contoh kasus berikut ini:Baca nilai keluaran analog pada holding register 40108 sampai 40110 dari slave device 17, maka:

0001 0000 0006 11 03 006B 0003Keterangan :00001 : Transaction ID0000 : Protocol ID0006 : Panjang Pesan (berisi 6 byte)11 : Slave ID Address (17 = 11 hex)03 : Function Code (read analog output on holding registers)006B : Data address pertama pada register yang diminta (40108 – 40001 =

Page 11: laporan Modbus

107= 6B hex)0003 : Jumlah Data Address yang diminta oleh register (40108 sampai 40110)7687 : Hasil perhitungan error dengan metode CRC

2. asd2.1. qawd2.2. qwd