Modbus
Pendahuluan Modbus
Modbus adalah protokol komunikasi sederhana yang sering digunakan untuk mengintegrasikan peralatan HVAC. Modbus menggunakan komunikasi master-slave, di mana beberapa perangkat dapat terhubung ke bus yang sama, dan masing-masing harus memiliki Slave ID unik. Perangkat Master selalu mengirim kueri ke perangkat Slave, yang kemudian memberikan respons.
Topologi Master - Slave
- Dalam kebanyakan kasus, TapHome digunakan dalam mode di mana unit kontrol Core adalah Modbus Master, dan perangkat yang terhubung berfungsi sebagai Modbus Slave.
- Pengaturan ini dapat dikonfigurasi melalui Hardware → Modbus RTU atau Modbus TCP.
- TapHome Core juga dapat berfungsi sebagai Modbus Slave, menyediakan informasi tentang perangkatnya ke sistem yang lebih tinggi melalui Expose Devices → Modbus RTU atau Modbus TCP.
Lapisan Fisik
Modbus dapat berkomunikasi melalui berbagai lapisan fisik, seperti:
- Melalui saluran serial, biasanya RS485 – disebut sebagai Modbus RTU.
- Melalui jaringan LAN, menggunakan protokol TCP/IP.
- Melalui jaringan LAN, menggunakan protokol UDP – saat ini tidak didukung oleh TapHome.
Jenis-Jenis Register dalam Modbus
Modbus mendefinisikan 4 jenis register utama, masing-masing memiliki fungsi spesifik dalam komunikasi perangkat:
| Register | In short | Access | Size | Function codes |
|---|---|---|---|---|
| Holding Registers | H | Read-write | 16-bits | Read: 03, Write multiple: 16 (0x10) |
| - Write Single Holding | SH | Read-write | 16-Bits | Write single: 06 |
| Coil (Discrete Output Coils) | C | Read-write | 1-Bit | Read: 01, Write multiple: 15 (0xF) |
| - Write Single Coil | SC | Read-write | 1-Bit | Write single: 05 |
| Discrete Input Contacts | D | Read-only | 1-Bit | Read: 02 |
| Analog Input Registers | A | Read-only | 16-Bits | Read: 04 |
Modbus Register dan Operasi yang Dapat Dilakukan
Setiap register dalam Modbus memiliki ukuran 16-bit, sehingga nilai yang dapat disimpan berkisar antara 0 hingga 65535.
Operasi yang Dapat Dilakukan pada Register Modbus:
- Membaca banyak register sekaligus (Read Multiple Registers).
- Menulis ke satu register (Write Single Register).
- Menulis ke beberapa register (Write Multiple Registers).
Operasi ini memungkinkan sistem TapHome untuk mengakses, memodifikasi, dan mengontrol data dari perangkat yang terhubung melalui Modbus, baik untuk pemantauan maupun otomatisasi.
⚠️ Tambahan Perintah dalam Implementasi Modbus
Beberapa implementasi Modbus menambahkan perintah tambahan, seperti:
- Report Slave ID – Memungkinkan pembacaan identitas perangkat slave.
- Bit Masking – Menyediakan cara untuk mengontrol atau memanipulasi bit dalam register tertentu.
- Write and Read at Once – Kombinasi perintah baca/tulis dalam satu transaksi untuk efisiensi komunikasi.
Informasi tentang apa yang disimpan di setiap register dan dalam format apa merupakan bagian dari dokumentasi peralatan yang disediakan oleh pemasok atau produsen perangkat.
Jenis Register Modbus: Coil (C) pada Index 58
- Tipe register: Coil (C)
- Index: 58
- Nilai yang tersedia: 2 opsi → Open / Closed
- Operasi yang didukung: Membaca dan menulis
- Jenis perangkat TapHome yang sesuai: Digital Output
Karena register Coil hanya memiliki dua status (aktif/tidak aktif), perangkat Digital Output di TapHome adalah pilihan yang tepat untuk mengontrol perangkat dengan logika sederhana, seperti relay atau sakelar digital.
Instruksi Cepat untuk Integrasi Perangkat Modbus ke TapHome
Ikuti langkah-langkah berikut untuk menghubungkan perangkat Modbus ke sistem TapHome:
1. Sambungkan Perangkat ke Jaringan yang Sesuai
- Modbus RTU / ASCII → Hubungkan perangkat ke bus komunikasi yang sesuai.
- Modbus TCP → Hubungkan perangkat ke LAN dan pastikan berada dalam jaringan yang sama dengan TapHome Core Controller.
- Gunakan alat seperti Fing (iOS, Android) atau IP Scanner (Windows) untuk memastikan koneksi.
2. Tambahkan Interface Modbus di TapHome
- Navigasikan ke TapHome → Hardware → Add new Modbus RTU / Modbus TCP interface.
- Modbus RTU → Atur Baud rate, Stop bits, Parity, Data bits sesuai dokumentasi.
- Modbus TCP → Masukkan IP address perangkat.
3. Atur Slave ID / Unit ID
- Cari Slave ID dalam dokumentasi Modbus perangkat.
- Untuk Modbus TCP, ID ini kadang disebut sebagai Unit ID.
- Jika menggunakan banyak perangkat di satu bus Modbus RTU, pastikan setiap Slave ID unik untuk menghindari konflik komunikasi.
4. Lakukan Pengujian Komunikasi
- Gunakan Manual Operations Tool untuk membaca informasi dari Modbus table perangkat.
- Jika berhasil, Anda akan melihat hasil pembacaan data.
5. Buat Modul untuk Perangkat Modbus
- Tentukan informasi dari dokumentasi Modbus yang ingin ditampilkan di sistem TapHome.
- Mulai dengan membaca nilai (Read Script), lalu lanjutkan ke penulisan nilai (Write Script) untuk perangkat aktor.
6. Tambahkan Definisi Error, Warning, atau Informasi
- Tambahkan skrip pemantauan untuk melacak status perangkat.
7. Definisikan Service Attributes dan Service Actions (Jika Diperlukan)
- Ini berguna untuk otomatisasi tambahan dalam sistem TapHome.
8. Simpan Modul dan Kontribusi ke Komunitas
- Ekspor modul ke XML file agar dapat digunakan kembali nanti.
- Bagikan di komunitas! Kontribusi template Anda di GitHub TapHome Modbus Templates.
Implementasi Modbus dalam TapHome
Dokumentasi ini berlaku untuk skenario di mana unit kontrol TapHome Core bertindak sebagai Modbus master, dan perangkat fisik yang ditambahkan melalui Hardware → Modbus RTU / TCP berfungsi sebagai Modbus slave.
Hirarki
Interface Modbus dalam TapHome
Modbus RTU (Serial Bus Communication)
- Perangkat terhubung melalui BUS dengan protokol komunikasi RS485.
- Parameter yang perlu dikonfigurasi meliputi:
- Baudrate
- Parity
- Stop bits
- Format data (ASCII atau biner)
- Hanya perangkat dengan pengaturan komunikasi yang sama dapat terhubung di BUS yang sama.
- Koneksi A dan B harus benar agar komunikasi berjalan lancar.
Modbus TCP (LAN Communication)
- Perangkat terhubung dalam jaringan LAN yang sama dengan Core Control Unit.
- Hanya satu TCP port yang digunakan untuk semua perangkat yang terhubung melalui interface ini.
Modul dalam Modbus TapHome
Dalam TapHome, interface dapat berisi satu atau lebih modul, yang biasanya mencakup komunikasi dengan seluruh perangkat fisik.
Konfigurasi Modul dalam Modbus:
- Modbus RTU → Modul menentukan Slave ID unik dari perangkat yang terhubung.
- Modbus TCP → Selain Slave ID, modul juga menetapkan IP address perangkat.
Dengan menggunakan modul, TapHome dapat mengorganisir perangkat Modbus dengan lebih efisien, memastikan komunikasi yang stabil dan terstruktur.
Perangkat dalam TapHome
Dalam sistem TapHome, Device mewakili elemen kontrol atau sensor yang beroperasi dalam jaringan otomatisasi.
Karakteristik Device:
- Merupakan bagian dari satu modul induk (Parent Module).
- Dapat berupa sensor, aktor, atau komponen kontrol dalam sistem rumah pintar.
- Berkomunikasi melalui Modbus RTU atau Modbus TCP sesuai konfigurasi modul.
Dengan struktur ini, TapHome memastikan bahwa setiap perangkat memiliki koneksi yang jelas dan terorganisir dalam arsitektur sistemnya.
ℹ️ Contoh Implementasi Modbus RTU dalam TapHome
Dalam sistem ini, 5 unit AC terhubung dalam satu bus menggunakan Modbus RTU interface, yang mendefinisikan:
1. Port bus
2. Baudrate
3. Parameter komunikasi lainnya
Struktur Modular dalam TapHome:
1. Interface berisi 5 modul, masing-masing mewakili satu unit AC dengan Slave ID unik.
2. Setiap modul berisi perangkat terkait, seperti:
- Thermostat
- Mode pendinginan/pemanasan
- Kekuatan kipas
- Kemiringan slat
Operasi Modbus dalam Modul:
- Setiap perangkat memiliki perintah terdefinisi untuk membaca dan/atau menulis nilai Modbus.
- Dengan pendekatan modular ini, sistem TapHome dapat mengelola perangkat secara individual sambil tetap mempertahankan komunikasi yang efisien melalui satu interface.
Perangkat yang Didukung dalam Modbus TapHome
Sistem TapHome mendukung berbagai jenis perangkat yang dapat dikonfigurasi melalui Modbus RTU / TCP, termasuk:
- Digital Output – Mengontrol perangkat berbasis logika biner (ON/OFF).
- Analog Output – Mengatur nilai analog seperti tegangan atau arus.
- Thermostat – Memantau dan mengontrol suhu lingkungan.
- Multi-Value Switch – Sakelar dengan beberapa tingkat nilai atau mode.
- Temperature Sensor – Sensor untuk membaca suhu secara real-time.
- Electric Meter – Memantau konsumsi daya listrik dan data energi.
- Status Contact – Mendukung sensor status kontak, seperti pintu atau jendela.
- Button – Tombol untuk kontrol manual atau pemicu tindakan otomatis.
- A Variable – Variabel kustom yang dapat digunakan dalam skrip dan konfigurasi.
Dengan perangkat-perangkat ini, sistem TapHome dapat mengelola, memantau, dan mengoptimalkan rumah pintar secara efektif. Jika Anda ingin eksplorasi lebih lanjut tentang cara mengintegrasikan perangkat ini, beri tahu saya! 😊
Skrip untuk Membaca dan Menulis Nilai Modbus dalam TapHome
Perangkat TapHome berkomunikasi dengan perangkat fisik Modbus menggunakan skrip yang memungkinkan pembacaan dan penulisan data.
ℹ️ Operasi Bit dalam Scripting
Operasi bit adalah bagian penting dalam bahasa pemrograman, memungkinkan manipulasi data biner dengan efisien
Skrip dalam Komunikasi dengan Perangkat Modbus di TapHome
Dalam sistem TapHome, skrip digunakan untuk mengatur komunikasi dengan perangkat Modbus. Berikut adalah bagian utama dari skrip yang digunakan:
- Initialize Script → Dijalankan saat perangkat memulai, misalnya setelah unit kontrol direstart.
- Read Script → Digunakan untuk mengatur nilai variabel global atau membaca status error perangkat.
- Read Value Script → Skrip untuk membaca nilai spesifik dari perangkat Modbus, seperti suhu yang disetel atau suhu yang terukur pada termostat.
- Write Value Script → Skrip untuk menulis nilai ke perangkat Modbus, seperti mengatur suhu pada termostat atau menyalakan/mematikan perangkat.
Fungsi Komunikasi dengan Perangkat Modbus di TapHome
🔹 MODBUSR (Modbus Read) → Fungsi untuk membaca register dari Modbus.
Ketergantungan pada Jenis Data:
- 1 register → Untuk tipe data 16-bit (integer pendek).
- 2 register → Untuk tipe data 32-bit (integer panjang).
- Lebih banyak register → Untuk tipe data string, karena teks membutuhkan lebih dari satu register.
Fungsi ini memungkinkan TapHome untuk mengakses dan membaca data dari perangkat Modbus secara fleksibel, tergantung pada format data yang digunakan oleh perangkat.
MODBUSR(register_type, register_address, data_type, [OPTIONAL: number_of_characters if data_type=String]) Example: MODBUSR(H, 20, Int16)/100
Membaca Register H Nomor 20 dalam TapHome
Untuk membaca register H nomor 20 dan menafsirkannya sebagai bilangan bulat 16-bit bertanda kemudian membaginya dengan 100, gunakan skrip berikut di TapHome:
VAR value = MODBUSR(H20) // Membaca register 20 sebagai bilangan bulat 16-bit bertanda
VAR result = value / 100.0 // Menggeser titik desimal 2 tempat ke kir
Penjelasan:
- MODBUSR(H20) → Membaca register 20 sebagai bilangan bulat 16-bit bertanda.
- value / 100.0 → Mengubah nilai mentah dengan membaginya dengan 100, sehingga titik desimal bergeser 2 tempat ke kiri.
ℹ️ Format Alamat Register dalam Modbus
Dalam sistem Modbus, alamat register dapat dimasukkan dalam format desimal atau heksadesimal.
🔹 Desimal: Nilai 20 ditulis sebagai 20.
🔹 Heksadesimal: Nilai 20 ditulis sebagai 0x14.
Format heksadesimal sering digunakan dalam pemrograman sistem tertanam dan komunikasi Modbus karena lebih efisien dalam representasi data biner.
MODBUSW (Modbus Write)
MODBUSW(register_type, register_address, data_type, value_to_write) Example: MODBUSW(H, 20, Int16, Te * 100)
Menulis Nilai ke Register H dengan Alamat 20 dalam TapHome
Untuk menulis nilai variabel Te ke register H20, sambil mengalikan dengan 100 untuk menggeser titik desimal 2 tempat ke kanan, gunakan skrip berikut:
MODBUSW(H20, Te * 100) // Menulis nilai Te yang telah dikalikan dengan 100 ke register H20
Penjelasan:
- MODBUSW(H20, Te * 100) → Menyimpan nilai Te yang telah dikalikan dengan 100 ke register H dengan alamat 20.
- Menggeser titik desimal 2 tempat ke kanan untuk menyesuaikan format data Modbus sebelum penyimpanan.
MODBUSWNE (Modbus Write if Not Equal) dalam TapHome
🔹 Fungsi ini bekerja seperti MODBUSW, tetapi dengan pemeriksaan nilai sebelum penulisan:
- Membaca nilai dari register terlebih dahulu sebelum menulis.
- Menulis hanya jika nilai baru berbeda dari yang dibaca sebelumnya.
Kegunaan dan Keuntungan:
✅ Mengurangi jumlah operasi tulis yang tidak perlu, meningkatkan efisiensi.
✅ Menghemat EEPROM, yang memiliki batas jumlah penulisan sebelum mengalami degradasi.
✅ Cocok untuk pengaturan konfigurasi perangkat Modbus, di mana perubahan nilai hanya dilakukan jika diperlukan.
Karena operasi ini membutuhkan pemeriksaan sebelum penulisan, prosesnya memakan waktu lebih lama dibandingkan MODBUSW biasa, tetapi memberikan manfaat dalam keandalan dan optimalisasi sistem.
⚠️ Fungsi MODBUSR, MODBUSW, dan MODBUSWNE dalam TapHome, Ketiga fungsi ini hanya dapat digunakan dalam skrip Modbus. Jika digunakan dalam skrip lain, mereka akan dianggap sebagai kesalahan.
Jenis Data dalam Modbus
Isi register dalam Modbus ditentukan oleh tabel Modbus. Karena ukuran satu register Modbus adalah 16-bit, tipe data yang umum digunakan adalah Int16 atau UInt16, dengan desimal dihitung berdasarkan pembagian 10 atau 100.
Namun, beberapa perangkat Modbus juga menggunakan:
🔹 Register 16-bit dengan angka floating-point (Float)
🔹 Urutan bit yang diubah (big endian, little endian)
🔹 Format 32-bit dengan satu angka disimpan dalam dua register
Untuk mengetahui tipe data yang tepat, Anda dapat menggunakan Manual Operations di aplikasi TapHome, di mana Anda bisa memuat 1 atau lebih register dan mengganti tipe data secara dinamis.
Daftar Tipe Data Modbus:
- Int16 (-32.768 hingga 32.767)
- Uint16 (0 hingga 65.535)
- Int32 (-2.147.483.648 hingga 2.147.483.647)
- Uint32 (0 hingga 4.294.967.295)
- Float (IEEE 754 Single Precision Floating Point)
- Bool (0 = false, 1 = true)
- BigEndianInt16 = Int16
- LittleEndianInt16
- BigEndianUint16 = Uint16
- LittleEndianUint16
- BigEndianInt32 / BigEndianInt32ByteSwap
- LittleEndianInt32 / LittleEndianInt32ByteSwap
- BigEndianUint32 / BigEndianUint32ByteSwap
- LittleEndianUint32 / LittleEndianUint32ByteSwap
- BigEndianFloat / BigEndianFloatByteSwap
- LittleEndianFloat / LittleEndianFloatByteSwap
- String BCD format (dapat digunakan dengan fungsi TOBCD() dan FROMBCD())
Update dan Poll Interval dalam Modbus TapHome
🔹 Poll Interval menentukan seberapa sering unit kontrol TapHome memeriksa nilai baru dari perangkat Modbus.
🔹 Karena Modbus menggunakan komunikasi Master-Slave, perangkat hanya mengirimkan data saat TapHome memintanya.
Dampak Pengaturan Poll Interval:
✅ Interval terlalu lama → Data di TapHome diperbarui lebih lambat.
✅ Interval terlalu pendek → Beban komunikasi meningkat, bisa menghambat pemrosesan data untuk perangkat lain.
Contoh Poll Interval yang Direkomendasikan:
- Thermometer → 15.000 ms (15 detik) sudah cukup.
- Tombol → 50 ms atau lebih pendek untuk respons cepat.
- Modbus RTU dengan Baud Rate rendah (misalnya 9600) → Satu kueri/respons bisa memakan waktu puluhan milidetik.
Periodic Write Attribute:
🔹 Beberapa perangkat memerlukan master Modbus untuk menulis nilai saat ini ke register secara berkala.
🔹 Fitur Periodic Write memastikan konfigurasi diperbarui sesuai kebutuhan perangkat.
Dengan memahami dan mengoptimalkan Poll Interval dan Periodic Write, sistem TapHome dapat menjalankan komunikasi Modbus dengan efisien dan menghindari beban yang tidak perlu.
Definisi Status Error dari Skrip dalam TapHome
Dalam beberapa skrip, memungkinkan pendefinisian status Error, Peringatan, atau Informasi berdasarkan data yang dibaca dari register Modbus perangkat.
🔹 Pesan error ini ditampilkan di TapHome sama seperti pesan error internal lainnya.
🔹 Kode error numerik dapat ditambahkan ke pesan untuk mempermudah pemeliharaan perangkat Modbus.
Keuntungan Pendefinisian Error dalam Skrip:
✅ Identifikasi dan pemantauan status perangkat secara otomatis.
✅ Mempermudah troubleshooting dan pemeliharaan teknisi dengan kode error numerik.
✅ Integrasi yang lebih baik dengan sistem TapHome, menampilkan error seperti pesan bawaan lainnya.
Dengan pendekatan ini, TapHome dapat meningkatkan deteksi dan penanganan kesalahan, memastikan sistem berjalan lebih efisien dan stabil.
⚠️ Batasan Definisi Pesan Error dalam TapHome
Hanya satu pesan error yang dapat didefinisikan tanpa kode error pada perangkat. Jika menggunakan kode error numerik, maka hanya satu pesan error per kode error yang bisa ditentukan.
ADDERROR(), ADDWARING(), ADDINFO()
ADDERROR([Optional: custom_code], text)
Contoh Skrip Read Script untuk Perangkat Analog Output di TapHome
ADDERROR("Error without code");
ADDWARNING("Warning without code");
ADDINFO("Info without code");
ADDERROR(1, "Error with code");
ADDWARNING(1, "Warning with code");
ADDINFO(1,"Info with code");
Saat skrip dijalankan dalam Read Script untuk Analog Output, pesan yang muncul di perangkat TapHome bisa berupa:
Atribut dan Tindakan Layanan dalam Modbus TapHome
Selain membaca nilai utama dari perangkat Modbus yang terhubung, modul dan perangkat TapHome juga dapat membaca atribut layanan atau menjalankan tindakan layanan.
Atribut Layanan (Service Attributes):
🔹 Ditampilkan dalam pengaturan layanan dari modul atau perangkat TapHome.
🔹 Tidak terlihat oleh pengguna lain, hanya untuk informasi teknis lebih rinci.
🔹 Biasanya digunakan untuk menampilkan informasi perangkat, seperti:
- Model
- Nomor Seri
- Versi Firmware
- Versi Hardware
- Waktu sejak terakhir restart
📌 Tujuan utama: Mempermudah pemeliharaan perangkat Modbus tanpa membebani sistem dengan terlalu banyak variabel atau perangkat tambahan.
Tindakan Layanan (Service Actions):
🔹 Ditampilkan di pengaturan layanan dari modul atau perangkat TapHome sebagai tombol di bagian bawah.
🔹 Saat ditekan, tombol ini menjalankan aksi Modbus tertentu dengan menulis data ke register.
🔹 Contoh penggunaan:
- Mengatur / Mengubah Slave ID
- Mengganti filter
- Menyesuaikan nilai counter
- Mereset perangkat
Pendekatan ini memastikan bahwa TapHome dapat mengelola informasi dan tindakan teknis dengan lebih efisien, tanpa mengganggu operasional utama sistem.
Skrip dan Variabel Tambahan pada Modul TapHome
🔹 Variabel Global Modul
Variabel yang didefinisikan pada modul dapat digunakan dalam semua skrip dalam modul dan dibagikan ke semua perangkat yang ditugaskan ke modul.
Jenis Skrip dalam Modul:
1️⃣ Init Script (Opsional)
🛠️ Dijalankan saat modul dimulai. Jika skrip ini sudah ada dan belum dijalankan, skrip lain tidak akan diizinkan berjalan.
💬 Return value: diabaikan
⚙️ Akses variabel: variabel global modul
⚠️ Dukungan status error: tidak
2️⃣ Read Script (Dijalankan setiap kali modul dipolling)
💬 Return value: diabaikan
⚙️ Akses variabel: variabel global modul
⚠️ Dukungan status error: ya
3️⃣ Write Script (Dijalankan saat variabel perangkat berubah atau jika "Periodic Write" diaktifkan)
💬 Return value: diabaikan
⚙️ Akses variabel: variabel global modul, nilai perangkat yang termasuk dalam modul (bukan variabel global perangkat—skrip modul tidak memiliki akses ke mereka).
⚠️ Dukungan status error: tidak
Atribut Layanan (Service Attributes)
🔹 Setiap modul dapat memiliki jumlah atribut layanan yang tidak terbatas.
🔹 Skrip dijalankan setiap kali pengguna (dengan hak layanan) membuka pengaturan layanan modul di aplikasi.
🔹 Ditampilkan di bagian atas setelah membaca dari perangkat Modbus.
💬 Return value: ditampilkan sebagai nilai atribut yang diberikan
⚙️ Akses variabel: variabel global modul
⚠️ Dukungan status error: tidak
Tindakan Layanan (Service Actions)
🔹 Setiap modul dapat memiliki jumlah tindakan layanan yang tidak terbatas.
🔹 Skrip dijalankan saat pengguna (dengan hak layanan) menekan tombol yang ditentukan dalam pengaturan layanan modul.
🔹 Setiap tindakan layanan didefinisikan oleh nama, parameter, dan skrip eksekusi.
💬 Return value: diabaikan
⚙️ Akses variabel: variabel global modul, parameter yang ditentukan pengguna
⚠️ Dukungan status error: tidak
Dengan memahami struktur skrip dan variabel ini, sistem TapHome dapat memaksimalkan efisiensi dalam komunikasi dan kontrol perangkat Modbus. Jika ada bagian yang ingin Anda eksplorasi lebih lanjut, beri tahu saya! 😊
Skrip dan Variabel Pembantu pada Perangkat TapHome
🔹 Variabel Global Perangkat
Variabel yang didefinisikan pada perangkat hanya dapat digunakan dalam skrip pada perangkat itu sendiri dan tidak bisa digunakan di luar perangkat.
Perangkat dapat menyimpan status, berbagi data antar skripnya, dan mengelola operasionalnya secara lokal.
Jenis Skrip dalam Perangkat:
1️⃣ Init Script (Opsional)
🛠️ Dijalankan saat perangkat memulai. Jika skrip ini terisi tetapi belum berjalan, skrip lain tidak akan diizinkan berjalan.
💬 Return value: diabaikan
⚙️ Akses variabel: variabel global modul, variabel global perangkat
⚠️ Dukungan status error: tidak
2️⃣ Read Script (Dijalankan setiap kali perangkat dipolling, sebelum "Read Value Scripts")
💬 Return value: diabaikan
⚙️ Akses variabel: variabel global modul, variabel global perangkat
⚠️ Dukungan status error: ya (Error memengaruhi seluruh perangkat, bukan hanya nilai tertentu).
3️⃣ Write Value Script (Dijalankan saat nilai berubah atau jika "Periodic Write" aktif, juga saat polling)
💬 Return value: diabaikan
⚙️ Akses variabel: variabel global modul, variabel global perangkat, nilai spesifik yang akan ditulis ke perangkat melalui Modbus.
⚠️ Dukungan status error: tidak
4️⃣ Read Value Script (Dijalankan setiap kali perangkat dipolling)
💬 Return value: ditetapkan secara otomatis sebagai nilai perangkat
⚙️ Akses variabel:
- Variabel global modul
- Variabel global perangkat
- Nilai terbaru yang dimuat
- Status pemuatan data (berguna jika perangkat menunjukkan data belum dimuat)
⚠️ Dukungan status error: ya (Pesan error harus merujuk pada parameter tertentu dalam perangkat).
💡 Contoh:
Jika ADDERROR(1, "Sensor tidak terhubung") ditambahkan dalam skrip Read Temperature pada perangkat Thermostat, pengguna akan melihat error di aplikasi dengan tiga informasi:
🔹 Suhu,
🔹 Kode 1,
🔹 Teks "Sensor tidak terhubung".
Atribut Layanan (Service Attributes)
🔹 Setiap perangkat dapat memiliki jumlah atribut layanan yang tidak terbatas.
🔹 Skrip dijalankan saat pengguna (dengan hak layanan) membuka pengaturan layanan perangkat dalam aplikasi.
🔹 Ditampilkan di bagian atas, segera setelah membaca dari perangkat Modbus.
💬 Return value: ditampilkan sebagai nilai atribut
⚙️ Akses variabel: variabel global modul, variabel global perangkat
⚠️ Dukungan status error: tidak
Tindakan Layanan (Service Actions)
🔹 Setiap perangkat dapat memiliki jumlah tindakan layanan yang tidak terbatas.
🔹 Skrip dijalankan saat pengguna (dengan hak layanan) membuka pengaturan layanan perangkat dan menekan salah satu tombol tindakan layanan yang telah ditentukan.
🔹 Setiap tindakan layanan didefinisikan oleh nama, parameter, dan skrip eksekusi.
💬 Return value: diabaikan
⚙️ Akses variabel: variabel global modul, variabel global perangkat, parameter yang ditentukan pengguna
⚠️ Dukungan status error: tidak
Utilitas Bermanfaat dalam TapHome
Konfigurasi Modbus dengan Template dalam TapHome
Fitur Add from Template memungkinkan pengguna mengonfigurasi komunikasi Modbus dengan perangkat tanpa perlu memahami protokol Modbus atau pengaturannya di TapHome.
Sumber Template yang Tersedia:
1️⃣ Template yang Ada di Aplikasi
🔹 Cara menggunakan → Add from template → Pilih perangkat → Isi informasi dasar → Konfirmasi.
🔹 Semua template dikelola dalam proyek komunitas GitHub di Modbus Templates Repository.
🔹 Siapa pun bisa mengusulkan modifikasi baru, tetapi semua perubahan harus disetujui oleh tim TapHome sebelum muncul di aplikasi.
2️⃣ Template XML Kustom
🔹 Cara membuat → Add from template → Add from file.
🔹 Pengguna dapat membuat file XML sendiri yang mendefinisikan template langsung pada modul Modbus.
🔹 Untuk menyimpan template, gunakan menu konteks (3 titik kanan atas) → Save as Template.
🔹 Kontribusi XML file ke proyek komunitas GitHub sangat dihargai untuk memperluas dukungan perangkat Modbus.
🔹 Informasi lebih lanjut tentang konfigurasi Modbus menggunakan template dapat ditemukan di repositori komunitas atau aplikasi TapHome.
Manual Operations dalam TapHome
🔹 Fitur ini memungkinkan verifikasi cepat terhadap tabel Modbus, membantu pengguna dalam memeriksa dan menguji komunikasi perangkat.
Kemampuan Manual Operations:
✅ Memuat X register dari alamat register tertentu, kemudian mengubah nilai yang dibaca ke berbagai tipe data secara dinamis.
✅ Menulis nilai ke register yang ditentukan, memastikan data dikirimkan dan disimpan dengan benar.
📌 Kegunaan:
💡 Ideal untuk pengujian awal konfigurasi Modbus, memastikan data yang terbaca sesuai dengan spesifikasi perangkat.
💡 Membantu troubleshooting cepat, seperti memeriksa apakah register dapat diakses dan diuji dengan berbagai format data.
Scan Slave IDs dalam TapHome
🔹 Beberapa perangkat Modbus memiliki Slave ID default yang bukan 1, sehingga sulit menentukan angka yang benar secara langsung.
🔹 Utilitas Scan Slave IDs mempermudah proses ini dengan memindai rentang Slave ID yang ditentukan, mencoba membaca dari register yang dipilih dengan setiap ID yang diuji.
📌 Kegunaan:
✅ Mempermudah konfigurasi awal dengan mengidentifikasi Slave ID yang benar.
✅ Menghindari kesalahan komunikasi akibat Slave ID yang tidak diketahui.
✅ Mempercepat proses setup dengan metode otomatis dibandingkan uji manual satu per satu.
Informasi tentang Register dalam Modul Modbus TapHome
📌 Lokasi: Bagian bawah modul Modbus di TapHome.
📌 Fungsi: Menyediakan informasi detail tentang setiap register yang digunakan dalam komunikasi Modbus.
Detail yang Ditampilkan untuk Setiap Register:
✅ Nama perangkat TapHome yang membaca atau menulis ke register.
✅ Tanggal & waktu terakhir membaca data dari register.
✅ Nilai terakhir yang berhasil dibaca dari register.
✅ Tanggal & waktu terakhir menulis data ke register.
✅ Nilai terakhir yang ditulis ke register.
Pengaturan Lanjutan dalam Modul Modbus TapHome
Prefetch dalam Modbus TapHome
TapHome membuat daftar register yang akan dibaca atau ditulis dalam perangkat Modbus, berdasarkan Poll Interval yang ditetapkan. Prefetch adalah proses di mana unit kontrol mengambil nilai yang diperlukan ke dalam buffer sebelum pembaruan, dengan tujuan meminimalkan jumlah permintaan dan perjalanan data.
Pengaturan yang Mempengaruhi Prefetch:
1️⃣ Max Prefetch Register Group Size (Terletak di pengaturan layanan modul)
🔹 Menentukan jumlah maksimal register yang dapat dibaca atau ditulis dalam satu permintaan Modbus.
2️⃣ Prefetch Mode (Dapat disesuaikan untuk setiap perangkat)
🔹 No Prefetch → Nilai akan dibaca satu per satu saat skrip dijalankan tanpa preloading.
📌 Contoh penggunaan:
Saat berkomunikasi dengan DALI Converter, di mana nilai lampu tertentu tidak dapat langsung dibaca dan harus diminta secara spesifik.
🔹 Isolated Prefetch → Memuat beberapa register sekaligus, tetapi hanya yang terkait dengan perangkat tertentu.
📌 Contoh penggunaan:
Jika perangkat Thermostat membutuhkan register 3 dan 4, tetapi perangkat lain menggunakan register 1, 2, 5, dan 6, maka register 3 dan 4 akan dimuat secara terpisah.
🔹 Normal Prefetch → Semua register yang diminta akan dicoba dibaca dengan jumlah permintaan minimal.
📌 Contoh penggunaan:
Jika register 99 dan 101 diminta, dan register 100 pernah berhasil dibaca, serta Max Prefetch Register Group Size >= 3, maka sistem akan membaca 3 register dalam satu permintaan dari register 99.
⚠️ Jika register 100 tidak pernah digunakan atau tidak berhasil dibaca, maka ada risiko kesalahan Modbus Exception (Illegal Data Address).
Prefetch dalam Skrip TapHome:
🔹 Menggunakan SC atau SH register (bukan C atau H) saat membaca → Nilai dibaca satu per satu selama eksekusi skrip, bukan dari cache memory.
🔹 Menggunakan SC atau SH saat menulis → Nilai ditulis satu register per permintaan, menggunakan fungsi Modbus yang berbeda.
💡 Modbus mendukung 4 metode penulisan:
✅ Menulis banyak register H
✅ Menulis banyak register C
✅ Menulis satu register H per permintaan
✅ Menulis satu register C per permintaan
⚠️ Tidak semua perangkat Modbus mendukung semua fungsi ini, jadi perlu menggunakan pendekatan yang sesuai dengan perangkat yang digunakan.
TCP Port dalam Modbus TCP
🔹 Port default untuk Modbus TCP umumnya adalah 502, tetapi beberapa perangkat mungkin menggunakan port yang berbeda.
🔹 Jika perangkat tidak merespons komunikasi pada port 502, pastikan untuk memeriksa dokumentasi perangkat atau konfigurasi jaringan untuk mengetahui port yang benar.
📌 Cara Menyesuaikan Port:
✅ Dalam konfigurasi TapHome, port dapat diubah sesuai dengan yang digunakan oleh perangkat.
✅ Jika tidak diketahui, gunakan pemindai port atau alat diagnostik jaringan untuk mengidentifikasi port yang digunakan oleh perangkat Modbus TCP.
Read / Write Timeout dalam TapHome
🔹 Timeout menentukan batas waktu maksimum sebelum TapHome melaporkan error "Timeout", yang berarti perangkat tidak merespons dalam interval waktu yang diberikan.
🔹 Perangkat Modbus yang lebih lambat mungkin memerlukan waktu tambahan untuk merespons, sehingga interval timeout perlu diperpanjang menjadi 1 detik atau lebih.
Pengaturan Timeout yang Optimal:
✅ Perpanjang timeout untuk perangkat yang lambat, seperti sensor dengan proses pemrosesan kompleks.
✅ Jangan set nilai terlalu tinggi, karena jika komunikasi gagal, ini bisa menunda respons dari perangkat Modbus lainnya yang sedang menunggu giliran.
💡 Keseimbangan antara batas waktu yang cukup untuk perangkat lambat dan efisiensi sistem sangat penting dalam menghindari kemacetan komunikasi Modbus.
Delay Between Requests dalam Modbus TapHome
🔹 TapHome menyisipkan jeda antara setiap permintaan ke perangkat Modbus untuk mengoptimalkan komunikasi dan menghindari konflik data.
Pengaturan Default:
✅ Modbus TCP → 0ms secara default (tanpa jeda antara permintaan).
✅ Modbus RTU → Berdasarkan kecepatan komunikasi (baud rate), dengan setidaknya 3.5 karakter jeda sesuai spesifikasi.
Variasi dalam Perangkat Modbus:
⚡ Beberapa perangkat Modbus TCP memerlukan hingga 5000ms antara permintaan.
⚡ Sebaliknya, beberapa perangkat Modbus RTU dapat menangani jeda lebih pendek, memungkinkan komunikasi lebih cepat.
💡 Menyesuaikan delay sesuai kebutuhan perangkat sangat penting untuk memastikan efisiensi komunikasi tanpa menghambat sistem.
Komunikasi Modbus ASCII dalam TapHome
🔹 Modbus ASCII adalah standar komunikasi yang jarang digunakan, di mana data tidak dikirim dalam format biner, melainkan menggunakan karakter ASCII.
🔹 Sebagian besar perangkat Modbus ASCII juga menggunakan pengaturan "7 data bit", berbeda dari Modbus RTU yang umum menggunakan "8 data bit".
📌 Kegunaan Modbus ASCII:
✅ Lebih mudah dibaca dan dipahami secara manual, karena data dikirim dalam karakter ASCII.
✅ Dapat digunakan dalam sistem dengan keterbatasan komunikasi biner, seperti sistem lama atau perangkat yang memerlukan pengkodean teks.
✅ Memiliki fitur deteksi kesalahan (LRC - Longitudinal Redundancy Check) yang berbeda dari CRC di Modbus RTU.
⚠️ Namun, Modbus ASCII cenderung lebih lambat dibandingkan Modbus RTU, karena data yang dikirim lebih panjang dan tidak seefisien komunikasi biner.