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:
- Connect ke RS-485
- Set communication parameter
- Kirim request ke Slave ID 5
- Read register
- Ambil data
- Apply scaling
- Simpan hasil
- 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.