Lewati ke konten

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.

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).

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).

  1. Tulis profile_id.json dari datasheet perangkat yang benar-benar dipakai; jangan menebak alamat register. Sertakan vektor uji dari datasheet.
  2. Muat lewat tab Sumber di web (kotak Impor profil: tombol Pilih berkas… memuat .json ke kotak teks untuk diperiksa dulu, tombol Pakai contoh menampilkan contoh dengan penjelasan tiap kunci), atau kirim lewat pesan profiles:
Terminal window
python3 Tools/celestianctl.py profiles --list # isi pustaka
python3 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 node
python3 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.