Modbus RTU dan TCP

Memahami Cara Membaca Data dari Remote I/O dan Sensor Industri

Dalam dunia industrial automation, kebutuhan untuk mengambil data dari berbagai device semakin besar.

Sebuah mesin atau pabrik mungkin memiliki:

  • Temperature sensor
  • Pressure transmitter
  • Flow meter
  • Power meter
  • Energy meter
  • Remote I/O
  • Inverter
  • VFD
  • PLC
  • Weighing indicator
  • Humidity sensor
  • Level sensor
  • dan berbagai perangkat industri lainnya.

Device-device tersebut memiliki berbagai macam interface komunikasi. Salah satu protokol yang sangat banyak digunakan adalah Modbus.

Modbus menarik karena konsepnya relatif sederhana, tersedia pada banyak perangkat, dan dapat digunakan melalui beberapa jenis media komunikasi.

Dua bentuk Modbus yang paling umum kita temui adalah:

Modbus RTU dan Modbus TCP.

Namun sebelum dapat menggunakannya, kita perlu memahami satu konsep penting:

Modbus bukan sekadar kabel komunikasi. Modbus adalah protokol yang menentukan bagaimana sebuah device meminta dan mengirim data.


1. Apa Itu Modbus?

Modbus adalah protokol komunikasi yang banyak digunakan untuk pertukaran data antara controller dan perangkat lapangan.

Secara sederhana, kita dapat membayangkan komunikasi Modbus seperti seseorang yang bertanya kepada sebuah device:

"Berikan saya nilai temperature yang tersimpan pada register tertentu."

Device kemudian menjawab:

"Nilainya adalah 28,5°C."

Secara konsep:

MASTER / CLIENT
      │
      │ Request
      ↓
   DEVICE
      │
      │ Response
      ↓
MASTER / CLIENT

Dalam terminology yang umum:

Modbus RTU

Biasanya menggunakan:

RS-485

Modbus TCP

Menggunakan:

Ethernet / TCP/IP

Meskipun media komunikasinya berbeda, keduanya menggunakan konsep register dan function code yang serupa.


2. Modbus RTU

Modbus RTU adalah bentuk Modbus yang sangat umum digunakan pada perangkat lapangan.

Media komunikasi yang paling umum:

RS-485

Contoh topology:

┌─────────────┐
│ PLC / IPC   │
│ Modbus      │
│ Master      │
└──────┬──────┘
       │
       │ RS-485
       │ A / B
       │
 ┌─────┴─────┐
 │           │
 ↓           ↓
Remote I/O  Sensor
Address 1   Address 2

Satu jalur RS-485 dapat digunakan untuk beberapa device, selama masing-masing device mempunyai address yang berbeda.

Contohnya:

Address 1 → Remote I/O
Address 2 → Temperature Sensor
Address 3 → Pressure Sensor
Address 4 → Power Meter

Master dapat berkomunikasi dengan masing-masing device berdasarkan address tersebut.


3. Modbus TCP

Modbus TCP menggunakan jaringan Ethernet.

Contoh:

             Ethernet
                 │
        ┌────────┴────────┐
        │                 │
      Switch            Switch
        │                 │
     ┌──┴──┐           ┌──┴──┐
     │ PLC │           │ IPC  │
     └─────┘           └──────┘
        │
        ├──── Remote I/O
        │
        ├──── Power Meter
        │
        └──── Gateway

Setiap device biasanya mempunyai IP address.

Contoh:

PLC          192.168.1.10
Remote I/O   192.168.1.20
Power Meter  192.168.1.21
IPC          192.168.1.100

Komunikasi Modbus TCP umumnya menggunakan:

TCP Port 502


4. Perbedaan Modbus RTU dan Modbus TCP

Parameter Modbus RTU Modbus TCP
Media RS-485 Ethernet
Addressing Slave ID / Server ID IP Address + Unit ID
Kabel Twisted pair Ethernet
Topology Bus Ethernet network
Kecepatan Relatif lebih rendah Lebih tinggi
Jarak Cocok untuk field device Bergantung network
Multi-device Sangat umum Sangat umum
Connector Terminal A/B RJ45 atau industrial Ethernet
Port Tidak menggunakan TCP port TCP 502
Aplikasi Sensor, meter, Remote I/O PLC, IPC, SCADA, gateway

Keduanya bukan berarti salah satu selalu lebih baik.

Pemilihannya tergantung kebutuhan sistem.


5. Konsep Master dan Slave

Pada dokumentasi lama Modbus, kita sering menemukan istilah:

Master dan Slave.

Istilah yang lebih modern adalah:

Client dan Server.

Konsep dasarnya tetap sama.

Contohnya:

Modbus Master
      │
      │ Request
      ↓
┌─────────────┐
│ Remote I/O  │
│ Address = 1 │
└─────────────┘
      │
      │ Response
      ↓
Modbus Master

Master/Client yang meminta data.

Device/Server memberikan response.

Hal yang penting:

Device Modbus umumnya tidak mengirim data secara sembarangan tanpa adanya request.

Master biasanya harus melakukan polling.

Contohnya:

Request
   ↓
Device 1
   ↓
Response

Request
   ↓
Device 2
   ↓
Response

Request
   ↓
Device 3
   ↓
Response

6. Apa Itu Register?

Inilah bagian paling penting dalam memahami Modbus.

Device menyimpan data pada alamat tertentu yang disebut register atau area data.

Misalnya sebuah temperature sensor mempunyai dokumentasi:

Register 40001
Temperature
Scale = 0.1°C

Kemudian:

Data = 285

Maka nilai temperature:

285 × 0.1 = 28.5°C

Jadi data yang kita terima belum tentu langsung berupa:

28.5

Bisa saja yang dikirim:

285

Kemudian program kita melakukan scaling.


7. Jenis Data dalam Modbus

Secara umum kita akan bertemu dengan empat area data utama.

Coils

Biasanya digunakan untuk output digital.

ON / OFF

Discrete Inputs

Digunakan untuk digital input.

ON / OFF

Input Registers

Biasanya digunakan untuk data input yang hanya dibaca.

Contohnya:

Temperature
Pressure
Voltage
Current

Holding Registers

Register yang dapat dibaca dan pada banyak device juga dapat ditulis.

Contohnya:

Setpoint
Speed
Parameter
Command
Configuration

8. Function Code Modbus

Untuk membaca data, kita harus mengetahui Function Code.

Function code yang sering digunakan antara lain:

Function Code Fungsi
01 Read Coils
02 Read Discrete Inputs
03 Read Holding Registers
04 Read Input Registers
05 Write Single Coil
06 Write Single Register
15 Write Multiple Coils
16 Write Multiple Registers

Untuk membaca sensor dan Remote I/O, function code yang sangat sering digunakan adalah:

03 dan 04


9. Contoh Membaca Temperature Sensor

Misalnya kita mempunyai sensor temperature Modbus RTU dengan konfigurasi:

Slave ID      : 1
Baudrate      : 9600
Data Bits     : 8
Parity        : None
Stop Bit      : 1

Temperature Register : 40001
Scale : 0.1

Controller mengirim request untuk membaca register tersebut.

Secara konsep:

Master
  │
  │ Slave 1
  │ Function 03
  │ Register 40001
  │ Quantity 1
  ↓
Sensor
  │
  │ Data = 285
  ↓
Master

Kemudian program melakukan:

Temperature = 285 × 0.1
Temperature = 28.5°C

Dashboard akhirnya menampilkan:

28.5°C


10. Hati-Hati dengan Register 40001

Ini adalah salah satu sumber kebingungan terbesar ketika bekerja dengan Modbus.

Dokumentasi device mungkin menulis:

40001

Tetapi library atau software Modbus mungkin meminta:

0

atau:

1

atau:

40001

Tergantung bagaimana software tersebut menangani addressing.

Karena itu jangan langsung berasumsi bahwa:

40001 = alamat yang harus dimasukkan ke software.

Selalu periksa dokumentasi device dan library yang digunakan.

Perbedaan ini sering disebut sebagai masalah:

0-based vs 1-based addressing


11. Contoh Remote I/O Modbus RTU

Sekarang kita masuk ke aplikasi yang sangat umum di automation.

Misalnya kita mempunyai Remote I/O:

8 Digital Input
8 Digital Output

Device tersebut mempunyai:

Slave ID = 1
Baudrate = 19200

Sensor-sensor lapangan masuk ke Remote I/O.

Sensor 1 ──┐
Sensor 2 ──┤
Sensor 3 ──┤
Sensor 4 ──┤
            ↓
       Remote I/O
       Modbus RTU
            ↓
          RS-485
            ↓
           PLC

PLC kemudian membaca status input dari Remote I/O.

Contohnya:

DI0 = ON
DI1 = OFF
DI2 = ON
DI3 = OFF

PLC dapat menggunakan data tersebut untuk menjalankan logic machine.


12. Remote I/O Tidak Harus Terhubung Langsung ke PLC

Dalam arsitektur modern, Remote I/O dapat terhubung ke berbagai controller.

Misalnya:

Remote I/O
     ↓
RS-485
     ↓
Industrial PC
     ↓
MQTT
     ↓
Server
     ↓
Dashboard

Atau:

Remote I/O
     ↓
Modbus RTU
     ↓
Gateway
     ↓
Modbus TCP
     ↓
PLC / SCADA

Gateway bertugas mengubah media/protokol komunikasi.


13. Modbus RTU ke Modbus TCP

Ini adalah salah satu aplikasi yang sangat berguna.

Misalnya sensor kita hanya mempunyai:

RS-485 Modbus RTU

Tetapi server kita menggunakan:

Ethernet Modbus TCP

Kita dapat menggunakan:

Modbus RTU ↔ Modbus TCP Gateway

Arsitekturnya:

Temperature Sensor
       │
       │ RS-485
       │ Modbus RTU
       ↓
┌─────────────────────┐
│ Modbus Gateway      │
│ RTU → TCP            │
└──────────┬──────────┘
           │
           │ Ethernet
           │ Modbus TCP
           ↓
      Industrial PC
           │
           ↓
       Database
           │
           ↓
       Dashboard

Gateway menerima request dari Ethernet kemudian meneruskannya ke device RS-485.


14. Sensor dengan Output Modbus RTU

Sekarang misalnya kita mempunyai sensor pressure:

Pressure Sensor
Model: XYZ
Interface: RS-485
Protocol: Modbus RTU

Sensor mempunyai:

Slave ID = 5
Baudrate = 9600
Parity = None

Dan dokumentasi mengatakan:

Register 40001
Pressure
Unit = bar
Scale = 0.01

Jika sensor memberikan:

1250

Maka:

Pressure = 1250 × 0.01
         = 12.50 bar

Yang perlu dilakukan controller adalah:

  1. Connect ke RS-485
  2. Set communication parameter
  3. Kirim request ke Slave ID 5
  4. Read register
  5. Ambil data
  6. Apply scaling
  7. Simpan hasil
  8. Tampilkan atau gunakan untuk control

15. Parameter yang Harus Diketahui

Sebelum mencoba membaca device Modbus RTU, jangan hanya bertanya:

"Alamat Modbus-nya berapa?"

Ada beberapa parameter yang harus diketahui.

1. Slave ID

Contoh:

1

2. Baudrate

Contoh:

9600
19200
38400
115200

3. Data Bits

Umumnya:

8

4. Parity

Contohnya:

None
Even
Odd

5. Stop Bit

Contohnya:

1
2

6. Function Code

Misalnya:

03
04

7. Register Address

Contohnya:

40001
40002

8. Data Type

Misalnya:

UINT16
INT16
UINT32
INT32
FLOAT32

9. Scaling

Misalnya:

×0.1
×0.01
÷10

Semua informasi ini biasanya terdapat pada Modbus Register Map dari device.


16. Register Map Adalah "Peta" Device

Engineer automation sebaiknya selalu meminta:

Modbus Register Map

dari vendor device.

Contohnya:

Register Parameter Data Type Scale Unit
40001 Temperature INT16 ×0.1 °C
40002 Humidity UINT16 ×0.1 %RH
40003 Pressure UINT16 ×0.01 bar
40004 Status UINT16 - -
40005 Alarm UINT16 - -

Dengan tabel tersebut, programmer dapat mengetahui data apa yang harus dibaca.


17. Masalah Data 32-bit dan Floating Point

Tidak semua data hanya menggunakan satu register.

Misalnya sensor mengirim:

Energy = 123456.78 kWh

Data tersebut mungkin menggunakan:

32-bit

Artinya membutuhkan:

Register 40001
Register 40002

Kemudian kedua register tersebut harus digabung.

Lebih kompleks lagi jika datanya berupa:

FLOAT32

Kita harus memperhatikan:

  • word order
  • byte order
  • endian
  • signed/unsigned

Contohnya:

Register 40001 → High Word
Register 40002 → Low Word

atau bisa juga sebaliknya.

Karena itu ketika membaca nilai terlihat:

0
65535
-32768
4.6E-41

jangan langsung menyimpulkan sensor rusak.

Bisa saja:

Data type atau byte order belum benar.


18. Wiring Modbus RTU RS-485

Secara umum RS-485 menggunakan dua jalur differential:

A / D+
B / D-

Contoh sederhana:

PLC / Gateway              Sensor
     A  ─────────────────── A
     B  ─────────────────── B

Jika terdapat beberapa device:

Master
  │
  ├──────── Device 1
  │
  ├──────── Device 2
  │
  ├──────── Device 3
  │
  └──────── Device 4

Sebaiknya topology dibuat sebagai bus, bukan star.


19. Jangan Lupa Terminasi RS-485

Pada jaringan RS-485 dengan kabel yang cukup panjang, termination resistor dapat diperlukan di kedua ujung bus.

Konsepnya:

[120Ω]                         [120Ω]
   │                              │
Master ───── Device 1 ───── Device 2 ───── Device 3

Terminasi tidak berarti semua device diberi resistor 120 Ω.

Umumnya termination ditempatkan pada:

dua ujung fisik jaringan.

Selain termination, installation juga perlu memperhatikan:

  • grounding
  • shielding
  • routing cable
  • separation dari power cable
  • electrical noise
  • polarity A/B

20. Bagaimana Jika Modbus Tidak Bisa Dibaca?

Jangan langsung menyalahkan program.

Troubleshooting sebaiknya dilakukan secara berurutan.

Step 1 — Cek Power

Apakah device menyala?

Step 2 — Cek Wiring

A → A
B → B

Perhatikan bahwa penamaan A/B dapat berbeda antar vendor, sehingga dokumentasi device tetap menjadi acuan.

Step 3 — Cek Communication Setting

Pastikan:

9600
8
N
1

misalnya sesuai dokumentasi.

Step 4 — Cek Slave ID

Contoh:

Slave = 1

Step 5 — Cek Function Code

Misalnya:

03

Step 6 — Cek Register

Pastikan alamat benar.

Step 7 — Cek Data Type

Apakah:

INT16?
UINT16?
INT32?
FLOAT32?

Step 8 — Cek Scaling

Misalnya:

Data = 285
Scale = 0.1

Result = 28.5

21. Contoh Arsitektur Automation

Sekarang kita gabungkan beberapa device.

Misalnya sebuah mesin mempunyai:

  • Temperature sensor
  • Pressure sensor
  • Flow meter
  • Remote I/O
  • Power meter

Semuanya menggunakan Modbus RTU.

Arsitekturnya dapat dibuat:

Temperature Sensor ──┐
Pressure Sensor ─────┤
Flow Meter ──────────┤
Remote I/O ──────────┤
Power Meter ─────────┤
                     ↓
                  RS-485
                     ↓
             Modbus Gateway
                     ↓
                Ethernet
                     ↓
             Industrial PC
                     ↓
              MQTT / API
                     ↓
                 Server
                     ↓
                Database
                     ↓
                Dashboard

Dengan arsitektur seperti ini, device lapangan tidak harus langsung mengetahui tentang database atau dashboard.

Tugas masing-masing layer dibuat lebih jelas.


22. Pisahkan Machine Control dan Data Monitoring

Ini merupakan konsep yang sangat penting dalam Industrial IoT.

Misalnya PLC bertugas:

Sensor
 ↓
PLC
 ↓
Machine Control
 ↓
Motor
Valve
Cylinder

Sedangkan data monitoring:

PLC
 ↓
Gateway
 ↓
MQTT
 ↓
Database
 ↓
Dashboard

Dengan demikian:

PLC fokus pada control.

Sedangkan:

Gateway/IPC fokus pada connectivity dan data.

Arsitektur seperti ini membuat sistem lebih mudah dikembangkan.


23. Modbus Tidak Hanya untuk Membaca Sensor

Modbus juga dapat digunakan untuk menulis data.

Contohnya:

PLC
 ↓
Modbus
 ↓
Inverter

PLC dapat membaca:

Frequency
Current
Voltage
Alarm
Running Status

dan dalam kondisi yang sesuai juga dapat menulis:

Speed Setpoint
Start Command
Stop Command
Reset

Namun untuk fungsi control yang kritis, engineer tetap harus mempertimbangkan requirement keselamatan dan karakteristik device.


24. Modbus RTU atau Modbus TCP?

Gunakan Modbus RTU ketika:

  • device hanya menyediakan RS-485
  • sensor berada di field
  • jumlah device cukup banyak dalam satu bus
  • komunikasi sederhana diperlukan
  • perangkat sudah tersedia dengan interface RS-485

Gunakan Modbus TCP ketika:

  • device memiliki Ethernet
  • membutuhkan integrasi ke network
  • terhubung dengan PLC/IPC/SCADA
  • ingin memanfaatkan infrastruktur Ethernet
  • membutuhkan komunikasi melalui jaringan TCP/IP

Dan gunakan gateway jika diperlukan:

RTU → TCP

atau:

TCP → RTU

25. Kesimpulan

Modbus merupakan salah satu protokol yang sangat penting untuk dipahami oleh engineer automation karena banyak device industri menyediakan interface ini.

Hal terpenting yang perlu dipahami bukan sekadar:

"Bagaimana cara connect Modbus?"

tetapi:

"Bagaimana membaca dan menginterpretasikan data yang diberikan oleh device?"

Untuk Modbus RTU, kita perlu memahami:

RS-485 → Slave ID → Baudrate → Parity → Function Code → Register → Data Type → Scaling

Sedangkan pada Modbus TCP:

Ethernet → IP Address → TCP Port 502 → Unit ID → Function Code → Register → Data Type → Scaling

Ketika bekerja dengan sensor atau Remote I/O, Modbus Register Map adalah dokumen yang sangat penting.

Tanpa register map, kita mungkin berhasil melakukan komunikasi tetapi belum tentu mengetahui arti data yang diterima.

Pada akhirnya, konsep komunikasi Modbus dapat disederhanakan menjadi:

          REQUEST
Master ──────────────→ Device
                         │
                         │
                     READ REGISTER
                         │
                         ↓
Master ←────────────── Device
          RESPONSE

Dan di balik proses sederhana tersebut terdapat informasi yang harus kita pahami:

WHO?
↓
Slave ID / IP

WHAT?
↓
Function Code

WHERE?
↓
Register Address

HOW?
↓
Data Type / Byte Order

WHAT DOES IT MEAN?
↓
Scaling / Unit

Jika kelima hal tersebut sudah dipahami, engineer automation akan jauh lebih mudah mengintegrasikan berbagai macam sensor, Remote I/O, power meter, inverter, PLC, gateway, dan perangkat industri lainnya ke dalam satu sistem.

Modbus bukan sekadar protokol untuk membaca data. Modbus adalah salah satu "bahasa" yang memungkinkan berbagai device automation berbicara satu sama lain.