Profil perangkat Modbus
Sebuah profil menjelaskan register mana yang dibaca dari satu tipe perangkat, tipe datanya, skala, dan satuan. Profil dipakai oleh banyak sumber; node hanya menyimpan profil yang dibutuhkan pemasangannya, ditambah profil bawaan firmware.
Pustaka
Section titled “Pustaka”| Profil | Perangkat | Catatan |
|---|---|---|
eastron-sdm120 |
Eastron SDM120 (meter 1 fasa) | bawaan firmware. Baud bawaan pabrik 2400, bisa 1200–9600. Perangkat hanya menerima alamat dan jumlah register genap (even_regs), node membulatkan permintaan |
peacefair-pzem016 |
Peacefair PZEM-016 (meter 1 fasa, CT 100 A; PZEM-014 sama, shunt 10 A) | bawaan firmware. Baud tetap 9600 8N1; word rendah dulu. Alamat bawaan tidak tertulis di datasheet: temukan dengan adaptor USB-RS485 di komputer sebelum dipasang |
Metrik SDM120: voltage, current, power, apparent, reactive, pf, freq, energy_imp, energy_exp, energy_total (awalan sumber + akhiran). Metrik PZEM-016: tegangan, arus, daya, energi, frekuensi, faktor daya, dan status alarm daya.
Pada pemasangan dengan puluhan perangkat, pasang profil ringkas yang hanya membaca register yang dipakai (mis. SDM120: tegangan, arus, daya, energi = 4 metrik, bukan 10). Pesan lebih kecil dan siklus baca lebih cepat (Kapasitas).
Isi satu profil
Section titled “Isi satu profil”Satu berkas JSON per tipe perangkat:
{ "profile_id": "eastron-sdm120", "version": 1, "name": "Eastron SDM120", "bus": {"baud": 2400, "parity": "N", "stop": 1, "baud_options": [1200, 2400, 4800, 9600]}, "quirks": {"even_regs": true}, "poll": {"interval_s": 5, "timeout_ms": 500, "retries": 1}, "regs": [{"ch": "v", "fn": 4, "reg": 0, "type": "f32", "words": "big", "bytes": "big", "dec": 1, "unit": "V", "suffix": "voltage", "label": "Tegangan", "delta": 2}], "tests": [{"ch": "v", "raw": "43663334", "expect": 230.2}]}| Field | Arti |
|---|---|
profile_id, version |
identitas. Naikkan version pada setiap perubahan; pemasangan mengunci versi (pv) |
bus |
petunjuk (baud bawaan perangkat dan pilihan yang didukung). Bus yang berlaku datang dari pesan sources; halaman Sumber memperingatkan bila baud tidak didukung profil |
quirks.even_regs |
perangkat hanya menerima alamat dan jumlah register genap |
poll |
interval_s, timeout_ms, retries bawaan |
regs[].ch |
id kanal pendek (v, i, p, …) |
regs[].fn |
fungsi Modbus: 1, 2 (bit), 3 (holding), 4 (input) |
regs[].reg |
alamat protokol berbasis nol. Alamat di datasheet sering ditulis dengan nomor lain (30001 = 0 untuk fn 4) |
regs[].type |
u16, s16, u32, s32, f32, bit |
regs[].words, bytes |
urutan word (big AB CD, little CD AB) dan byte dalam word |
regs[].scale, offset, dec, unit |
nilai = mentah × scale + offset; desimal; satuan |
regs[].suffix |
akhiran nama metrik (nama = <awalan>_<suffix>, maks. 24 karakter) |
regs[].delta |
ambang perubahan untuk kelompok telemetri (di sini) |
tests |
byte mentah (heksadesimal) dan nilai yang diharapkan, dari contoh di datasheet |
Maksimum 16 register per profil. Tipe metrik: angka (num), bilangan bulat tak negatif (count), atau boolean (bool).
Menambah profil
Section titled “Menambah profil”- Tulis
profile_id.jsondari datasheet perangkat yang benar-benar dipakai; jangan menebak alamat register. Sertakan vektor uji dari datasheet. - Muat lewat tab Sumber di web (kotak Impor profil: tombol Pilih berkas… memuat
.jsonke kotak teks untuk diperiksa dulu, tombol Pakai contoh menampilkan contoh dengan penjelasan tiap kunci), atau kirim lewat pesanprofiles:
python3 Tools/celestianctl.py profiles --list # isi pustakapython3 Tools/celestianctl.py profiles <mac> --files profil.json # kirim profil tertentu (mengganti set yang dikirim)python3 Tools/celestianctl.py profiles <mac> --get # unduh set di nodepython3 Tools/celestianctl.py profiles <mac> --clear # hapus profil kiriman (seed bawaan tetap)Pesan profiles mengganti seluruh set profil kiriman dan mendukung confirm_s, profiles_confirm, dan profiles_rollback seperti sumber. Ukuran profil di G1 terbatas: bentuk lengkap (dengan label, tests, deskripsi) mungkin tidak muat bersama dua profil; kirim bentuk ringkas.