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.

Konektor serial DB9 - untuk modul komunikasi RS485
Modul komunikasi RS485 dibutuhkan karena S7-1200 tidak punya port serial bawaan

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

  1. Pasang modul CM 1241 RS485 pada slot komunikasi CPU S7-1200
  2. 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
  3. Tambahkan instruksi Modbus_Master untuk mengirim request baca data (function code 03/04 untuk read holding/input register)
  4. Tentukan slave address sensor, alamat register yang ingin dibaca, dan jumlah register
  5. Petakan hasil pembacaan ke Data Block agar bisa diproses lebih lanjut (misalnya scaling ke satuan engineering)
Tangki penyimpanan industri - kasus sensor level
Sensor level pada tangki penyimpanan adalah salah satu contoh umum aplikasi Modbus RTU

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