İçeriğe geç

Cihaz ve Frame

Cihaz Listesi

Cihaz, bir bağlantı üzerindeki fiziksel veya mantıksal birimi temsil eder. Bir bağlantı altında birden fazla cihaz olabilir (örneğin bir Modbus TCP bağlantısında birden fazla slave cihaz).

Ortak alanlar:

AlanTipZorunluAçıklama
nameString (≤100)EvetCihaz adı (bağlantı içinde benzersiz)
dscString (≤255)HayırAçıklama
protocolProtocolOtomatikBağlantıdan miras alınır
connectionIdStringEvetAit olduğu bağlantının kimliği
configMapProtokole göreProtokole özgü ayarlar (JSONB)

Cihaz JSON’unun üst seviyesinde görünen ek alanlar config içinden gelir — inSCADA DTO’yu düzleştirerek sunar. Modbus için bu alanlar:

AlanTipAçıklama
scanTimeInteger (≥100)Okuma döngüsü (ms)
scanTypeDeviceScanTypePeriodic veya Fixed Delay
stationAddressInteger (≥0)Modbus slave adresi

DeviceScanType enum — iki değer:

DeğerDavranış
PeriodicBir döngünün başlangıcından diğerine scanTime sabit — gecikme olursa sonraki tur kısalır (fixed rate)
Fixed DelayBir döngü bittikten sonra scanTime kadar bekler ve tekrar başlatır (fixed delay)
{
"id": "abc123",
"connectionId": "conn-153",
"protocol": "Modbus TCP",
"name": "slave-1",
"dsc": "Energy meter",
"scanTime": 2000,
"scanType": "Periodic",
"stationAddress": 1
}
SenaryoÖnerilen scanTime
Hızlı değişen veriler (güç, akım)1000 - 2000 ms
Orta hızda veriler (sıcaklık, basınç)3000 - 5000 ms
Yavaş değişen veriler (enerji sayacı)5000 - 10000 ms
Durum bilgileri (açık/kapalı)1000 - 3000 ms

Frame, bir cihazdan okunan veri bloğudur. Her frame belirli bir adres aralığını tanımlar. Değişkenler frame’lerin içinde yer alır.

Ortak alanlar:

AlanTipZorunluAçıklama
nameString (≤100)EvetFrame adı
dscString (≤255)HayırAçıklama
deviceIdStringEvetAit olduğu cihazın kimliği
protocolProtocolOtomatikCihazdan miras alınır
isReadableBooleanEvetFrame okunabilir mi
isWritableBooleanEvetFrame’deki değişkenlere yazılabilir mi
scanTimeFactorIntegerHayırCihaz scanTime çarpanı (null veya 1 → aynı periyot)
minutesOffsetIntegerHayırZamanlama ofseti (dakika) — saat başı hizalama için
configMapProtokole göreProtokole özgü alanlar (JSONB)

Modbus için config alanları:

AlanTipAçıklama
typeModbusFrameTypeFrame tipi (Coil, DiscreteInput, HoldingRegister, InputRegister)
startAddressInteger (0-65535)Okunacak ilk adres
quantityInteger (1-1024)Okunacak register/coil sayısı
interFrameDelayIntegerİki frame arasındaki bekleme (ms)
{
"id": "frame-703",
"deviceId": "dev-453",
"protocol": "Modbus TCP",
"name": "holding-block",
"dsc": "Holding registers 0-49",
"isReadable": true,
"isWritable": true,
"scanTimeFactor": null,
"minutesOffset": null,
"type": "HoldingRegister",
"startAddress": 0,
"quantity": 50
}
AyarAçıklama
isReadable = trueFrame periyodik olarak okunur (izleme)
isWritable = trueFrame’deki değişkenlere değer yazılabilir (kontrol)
Her ikisi de trueHem okuma hem yazma — en yaygın senaryo
isReadable = falseYalnızca yazma frame’i (setpoint gönderimi)

Frame’in okuma periyodunu cihaz scanTime’ının katları olarak ayarlar:

  • Cihaz scanTime = 2000 ms, frame scanTimeFactor = 3 → frame her 6000 ms’de okunur
  • null veya 1 → cihaz scanTime ile aynı periyot

Connection: LOCAL-Energy (LOCAL, 127.0.0.1)
└── Device: Energy-Device (scanTime: 2000 ms, Periodic)
└── Frame: Energy-Frame (readable + writable)
├── ActivePower_kW (Float, kW)
├── ReactivePower_kVAR (Float, kVAR)
├── Voltage_V (Float, V)
├── Current_A (Float, A)
├── Frequency_Hz (Float, Hz)
├── PowerFactor (Float)
├── Energy_kWh (Float, kWh)
├── Temperature_C (Float, °C)
├── Demand_kW (Float, kW)
└── GridStatus (Boolean)

Bu yapı bir Modbus TCP bağlantısında da aynıdır — tek fark cihaz ve frame düzeyinde protokole özgü alanlar (stationAddress, type, startAddress, quantity vb.) eklenir.

Script ile cihaz / frame okuma ve güncelleme: Connection API →