Modbus RTU dari S7-1200: Baca Sensor Lapangan Step by Step

Meski PLC Siemens S7-1200 tidak dilengkapi port RS485 bawaan, kebutuhan membaca sensor lapangan lewat Modbus RTU (misalnya sensor suhu, level, atau flow meter) tetap sangat umum di lapangan. Artikel ini membahas langkah praktis membaca data sensor Modbus RTU dari S7-1200, mulai dari kebutuhan hardware sampai konfigurasi program.
Kebutuhan Hardware Tambahan
Karena S7-1200 hanya punya port Ethernet dan tidak memiliki port serial RS485 bawaan, dibutuhkan modul komunikasi tambahan seperti CM 1241 RS485 (modul resmi Siemens) atau konverter Ethernet-to-RS485/USB-to-RS485 pihak ketiga yang dijembatani lewat driver komunikasi bebas (free) library. Pilihan paling umum di lapangan adalah modul CM 1241 yang dipasang langsung di sisi kiri CPU S7-1200.

Instalasi Library Modbus RTU Master di TIA Portal
Selanjutnya, Siemens menyediakan instruksi bawaan Modbus_Master dan Modbus_Comm_Load di TIA Portal untuk berkomunikasi lewat modul CM 1241. Kedua instruksi ini tersedia gratis di library instruction bawaan, tidak perlu instalasi tambahan — cukup drag-drop ke dalam program ladder/FBD.
Langkah Konfigurasi Step by Step
- Pasang modul CM 1241 RS485 pada slot komunikasi CPU S7-1200
- Tambahkan instruksi Modbus_Comm_Load pada OB1 (main program) untuk mengatur parameter port serial: baud rate, parity, data bits, dan stop bits — pastikan cocok dengan setting sensor
- Tambahkan instruksi Modbus_Master untuk mengirim request baca data (function code 03/04 untuk read holding/input register)
- Tentukan slave address sensor, alamat register yang ingin dibaca, dan jumlah register
- Petakan hasil pembacaan ke Data Block agar bisa diproses lebih lanjut (misalnya scaling ke satuan engineering)

Contoh Kasus: Membaca Sensor Level Ultrasonic
Sebagai contoh, sensor level ultrasonic dengan protokol Modbus RTU biasanya menyimpan data level di satu holding register dengan format integer 16-bit yang perlu dibagi skala tertentu (misalnya nilai 1050 berarti 105.0 cm). Setelah data mentah berhasil dibaca lewat Modbus_Master, langkah berikutnya adalah mengonversi nilai tersebut sesuai datasheet sensor sebelum dipakai dalam logika kontrol atau ditampilkan di HMI.
Troubleshooting Komunikasi yang Gagal
- Periksa kembali baud rate, parity, dan stop bit — parameter yang tidak cocok adalah penyebab paling umum kegagalan komunikasi
- Pastikan wiring A/B (D+/D-) tidak terbalik dan terminating resistor terpasang di ujung jalur RS485
- Cek slave address, karena kesalahan address adalah penyebab umum berikutnya setelah masalah parameter port
- Gunakan software terminal serial (seperti terminal Modbus poll) untuk isolasi masalah antara sisi PLC dan sisi sensor
Memahami Instruksi MB_COMM_LOAD dan MB_MASTER
Pada S7-1200, komunikasi Modbus RTU master dijalankan melalui dua instruksi utama di TIA Portal: MB_COMM_LOAD untuk konfigurasi port komunikasi, dan MB_MASTER untuk mengirim request baca/tulis ke slave. Memahami parameter kedua instruksi ini penting agar konfigurasi tidak salah di awal.
- MB_COMM_LOAD — dijalankan sekali di awal program untuk mengatur port serial (baud rate, parity, data bits) yang akan dipakai komunikasi Modbus. Parameter PORT harus sesuai dengan modul komunikasi yang terpasang (misalnya CM 1241 RS485).
- MB_MASTER — dipanggil berulang (biasanya di dalam OB cyclic) untuk mengirim request ke slave. Parameter penting meliputi MB_ADDR (alamat slave), MODE (baca/tulis), DATA_ADDR (alamat register), dan DATA_LEN (jumlah register).
Selanjutnya, hasil pembacaan dari MB_MASTER akan disimpan ke Data Block yang ditentukan pada parameter DATA_PTR, sehingga nilai tersebut bisa langsung diproses lebih lanjut oleh logika ladder diagram lainnya di program yang sama.
Membaca Beberapa Slave Sekaligus dari Satu Port Serial
Seringkali, satu PLC S7-1200 perlu membaca data dari beberapa perangkat slave sekaligus melalui satu jalur RS485 yang sama, misalnya beberapa sensor level di tangki berbeda. Karena Modbus RTU bersifat half-duplex, request ke tiap slave harus dikirim secara bergantian, bukan bersamaan.
Pendekatan umum yang digunakan adalah membuat sequence/step logic sederhana yang mengganti nilai MB_ADDR secara bergantian setiap kali instruksi MB_MASTER sebelumnya selesai (ditandai output DONE bernilai TRUE). Dengan demikian, satu blok MB_MASTER bisa dipakai untuk membaca banyak slave secara bergiliran, tanpa perlu menduplikasi instruksi untuk setiap perangkat, sehingga program tetap ringkas dan mudah dipelihara.
Konversi Nilai Register Menjadi Satuan Teknik
Data mentah yang diterima dari slave Modbus biasanya berupa nilai integer 16-bit yang belum memiliki satuan teknik yang berarti, misalnya nilai 0-27648 untuk merepresentasikan rentang 0-100% pada sensor level ultrasonic. Oleh karena itu, konversi (scaling) diperlukan sebelum nilai tersebut ditampilkan ke operator atau digunakan dalam logika kontrol.
Di S7-1200, konversi ini biasanya dilakukan menggunakan instruksi NORM_X dan SCALE_X yang tersedia di TIA Portal. Instruksi NORM_X menormalisasi nilai mentah ke rentang 0.0-1.0, kemudian SCALE_X mengonversi nilai ternormalisasi tersebut ke rentang satuan teknik yang diinginkan, misalnya 0-10 meter untuk level tangki. Dengan kombinasi kedua instruksi ini, nilai sensor mentah bisa langsung diubah menjadi satuan yang mudah dipahami operator tanpa perlu menulis rumus konversi manual di setiap tempat program.
Selain itu, sebaiknya nilai hasil scaling ini juga diberi batas minimum dan maksimum (clamping) sebelum ditampilkan ke HMI/SCADA, untuk mengantisipasi kondisi sensor error yang kadang mengirim nilai di luar rentang normal, sehingga tampilan di layar operator tidak menampilkan angka yang membingungkan atau tidak masuk akal.
📌 Call to Action
- Butuh modul konverter RS485 atau modul komunikasi PLC? → tokopedia.com/bisaioti
- Ingin dipandu langsung membaca sensor Modbus RTU dari PLC Siemens? Ikuti kelas “Integrasi Sensor Lapangan ke PLC” → bisaioti.com/lab
