Ana içeriğe geç

Variables Katmanı

Variables katmanı, Cınga veri işleme zincirinin sözlük (schema dictionary) katmanıdır. Bu katmanda amaç sadece değişken adlarını tutmak değildir; her değişkenin hangi segmente ait olduğunu, hangi birimde işlendiğini, kalibrasyon/sentez tarafında nasıl davranacağını ve kural motoru tarafından nasıl referans alınacağını tek kaynaktan yönetmektir.

Pratikte bu katman iki tabloyla çalışır: variable_segments ve variables. Segment tablosu değişkenleri mantıksal kümelere ayırır (ör. voltage, current, power, energy). variables tablosu ise her ölçüm alanının teknik kimliğini taşır.

variable_segments Tablosu

KolonTipZorunlulukAçıklama
idinteger PKZorunluSegment kimliği
namevarchar(100) UNIQUEZorunluSegment adı
descriptionvarchar(255)OpsiyonelSegment açıklaması
create_timetimestamptzZorunluOluşturma zamanı
update_timetimestamptzZorunluGüncelleme zamanı

Bu tablo, enerji segment tabloları ile isimsel/işlevsel hizayı korur. Örneğin bir değişken voltage segmentine bağlıysa, ham verinin energy_voltage_measurements tarafında yer alması beklenir.

Önerilen variable_segments İçeriği

idnamedescription
1voltageGerilim ölçümleri (anlık, RMS, fundamental, harmonic, frequency)
2currentAkım ölçümleri (anlık, RMS, peak, fundamental, harmonic)
3powerGüç ölçümleri (aktif/reaktif/görünür, PF, güç harmonikleri)
4energyEnerji sayaçları (aktif/reaktif, alım/verim, leading/lagging)

variables Tablosu

KolonTipZorunlulukAçıklama
idvarchar(30) PKZorunluDeğişken kodu (ör. VRMS_R)
descriptionvarchar(255)Opsiyonelİnsan okunur açıklama
unitvarchar(10)OpsiyonelÖlçü birimi
segment_idinteger FKZorunluvariable_segments.id
create_timetimestamptzZorunluOluşturma zamanı
update_timetimestamptzZorunluGüncelleme zamanı

Mimarideki Rolü

Variables katmanı üç kritik noktada doğrudan etkili olur.

İlk olarak kalibrasyon çözümlemesinde, hangi değişkene hangi gain/offset uygulanacağı bu sözlük üzerinden belirlenir. İkinci olarak sentez rule engine tarafında required_variables doğrulaması bu sözlüğe göre yapılır; tanımsız alan içeren kuralın aktifleşmesi engellenir. Üçüncü olarak window katmanında variable_id bazlı tekilleştirme ve trend hesapları bu tablo referansıyla çalışır.

Önerilen Yönetişim Kuralları

  • Değişken kodları stabil tutulmalı; aynı fiziksel anlam için farklı kod türetilmemeli.
  • Birim (unit) alanı boş bırakılmamalı; raporlama tutarlılığı için zorunlu hale getirilmeli.
  • Segment ataması zorunlu olmalı; segment_id null kabul edilmemeli.
  • Sentezde kullanılan değişkenler için sözlük doğrulaması (pre-save validation) yapılmalı.

Kalibrasyon Notu

Cınga’da kalibrasyon segment bazlı sabit bir kurala bağlanmaz. Bunun nedeni sistemin yalnızca enerji değişkenleriyle sınırlı olmamasıdır; ileride su basıncı, debi, zaman tabanlı veya farklı proses değişkenleri de sözlüğe eklenecektir. Bu yüzden dokümanda segment özel “uygulanır/uygulanmaz” matrisi tutulmaz.

Temel ilke nettir: gerekli görülen her değişkene kalibrasyon uygulanabilir. Kalibrasyonun uygulanıp uygulanmayacağı, değişken bazlı aktif kural çözümlemesi ile belirlenir. Aktif kural yoksa kalibrasyon adımı pas geçilir.

Enerji Parametre Sözlüğü

Aşağıdaki liste, Cınga enerji tarafında konuştuğumuz ham parametre setini variables tablosunda tek tek tanımlamak için referans alınabilir.

Harmonik okumada MAX78630 tarafında HARM seçimi yapıldıktan sonra VHARM_x ve IHARM_x register okumaları seçilen harmonik derecesini verir. Bu yüzden sözlüğe toplam harmonik bileşenlerinin yanında seçilebilir harmonik alanları da eklendi (3, 5, 7, 9). İleri kullanım için güç tarafı da aynı prensiple genişletildi; seçilebilir QHARM_h_x, PHARM_h_x ve SHARM_h_x alanları (h=3,5,7,9) sözlüğe eklendi.

Bu sözlük, okunabilirliği artırmak için aşağıda segment gruplarına ayrılmıştır.

Gerilim Değişkenleri

Sıra NoDeğişkenAçıklamaBirimSegment.AltSegment
V1VINST_RR faz anlık gerilimVvoltage.instantaneous
V2VINST_SS faz anlık gerilimVvoltage.instantaneous
V3VINST_TT faz anlık gerilimVvoltage.instantaneous
V4VRMS_RR faz RMS gerilimVvoltage.rms
V5VRMS_SS faz RMS gerilimVvoltage.rms
V6VRMS_TT faz RMS gerilimVvoltage.rms
V7VRMS_ARMS gerilim ortalaması (Total/3)Vvoltage.rms
V8VFUND_RR faz temel gerilim bileşeniVvoltage.fundamental
V9VFUND_SS faz temel gerilim bileşeniVvoltage.fundamental
V10VFUND_TT faz temel gerilim bileşeniVvoltage.fundamental
V11VHARM_RR faz harmonik gerilim bileşeniVvoltage.harmonic
V12VHARM_SS faz harmonik gerilim bileşeniVvoltage.harmonic
V13VHARM_TT faz harmonik gerilim bileşeniVvoltage.harmonic
V14VHARM_3_RR faz 3. harmonik gerilim bileşeniVvoltage.harmonic
V15VHARM_3_SS faz 3. harmonik gerilim bileşeniVvoltage.harmonic
V16VHARM_3_TT faz 3. harmonik gerilim bileşeniVvoltage.harmonic
V17VHARM_5_RR faz 5. harmonik gerilim bileşeniVvoltage.harmonic
V18VHARM_5_SS faz 5. harmonik gerilim bileşeniVvoltage.harmonic
V19VHARM_5_TT faz 5. harmonik gerilim bileşeniVvoltage.harmonic
V20VHARM_7_RR faz 7. harmonik gerilim bileşeniVvoltage.harmonic
V21VHARM_7_SS faz 7. harmonik gerilim bileşeniVvoltage.harmonic
V22VHARM_7_TT faz 7. harmonik gerilim bileşeniVvoltage.harmonic
V23VHARM_9_RR faz 9. harmonik gerilim bileşeniVvoltage.harmonic
V24VHARM_9_SS faz 9. harmonik gerilim bileşeniVvoltage.harmonic
V25VHARM_9_TT faz 9. harmonik gerilim bileşeniVvoltage.harmonic
V26VHARM_THD_RR faz toplam harmonik gerilim bozulması (THD)%voltage.harmonic
V27VHARM_THD_SS faz toplam harmonik gerilim bozulması (THD)%voltage.harmonic
V28VHARM_THD_TT faz toplam harmonik gerilim bozulması (THD)%voltage.harmonic
V29FREQŞebeke frekansıHzvoltage.frequency

Akım Değişkenleri

Sıra NoDeğişkenAçıklamaBirimSegment.AltSegment
I1IINST_RR faz anlık akımAcurrent.instantaneous
I2IINST_SS faz anlık akımAcurrent.instantaneous
I3IINST_TT faz anlık akımAcurrent.instantaneous
I4IPEAK_RR faz tepe akımAcurrent.peak
I5IPEAK_SS faz tepe akımAcurrent.peak
I6IPEAK_TT faz tepe akımAcurrent.peak
I7IRMS_RR faz RMS akımAcurrent.rms
I8IRMS_SS faz RMS akımAcurrent.rms
I9IRMS_TT faz RMS akımAcurrent.rms
I10IRMS_ARMS akım ortalaması (Total/3)Acurrent.rms
I11IFUND_RR faz temel akım bileşeniAcurrent.fundamental
I12IFUND_SS faz temel akım bileşeniAcurrent.fundamental
I13IFUND_TT faz temel akım bileşeniAcurrent.fundamental
I14IHARM_RR faz harmonik akım bileşeniAcurrent.harmonic
I15IHARM_SS faz harmonik akım bileşeniAcurrent.harmonic
I16IHARM_TT faz harmonik akım bileşeniAcurrent.harmonic
I17IHARM_3_RR faz 3. harmonik akım bileşeniAcurrent.harmonic
I18IHARM_3_SS faz 3. harmonik akım bileşeniAcurrent.harmonic
I19IHARM_3_TT faz 3. harmonik akım bileşeniAcurrent.harmonic
I20IHARM_5_RR faz 5. harmonik akım bileşeniAcurrent.harmonic
I21IHARM_5_SS faz 5. harmonik akım bileşeniAcurrent.harmonic
I22IHARM_5_TT faz 5. harmonik akım bileşeniAcurrent.harmonic
I23IHARM_7_RR faz 7. harmonik akım bileşeniAcurrent.harmonic
I24IHARM_7_SS faz 7. harmonik akım bileşeniAcurrent.harmonic
I25IHARM_7_TT faz 7. harmonik akım bileşeniAcurrent.harmonic
I26IHARM_9_RR faz 9. harmonik akım bileşeniAcurrent.harmonic
I27IHARM_9_SS faz 9. harmonik akım bileşeniAcurrent.harmonic
I28IHARM_9_TT faz 9. harmonik akım bileşeniAcurrent.harmonic
I29IHARM_THD_RR faz toplam harmonik akım bozulması (THD)%current.harmonic
I30IHARM_THD_SS faz toplam harmonik akım bozulması (THD)%current.harmonic
I31IHARM_THD_TT faz toplam harmonik akım bozulması (THD)%current.harmonic

Güç Değişkenleri

Sıra NoDeğişkenAçıklamaBirimSegment.AltSegment
P1QFUND_RR faz temel reaktif güçvarpower.fundamental
P2QFUND_SS faz temel reaktif güçvarpower.fundamental
P3QFUND_TT faz temel reaktif güçvarpower.fundamental
P4QHARM_RR faz harmonik reaktif güçvarpower.harmonic
P5QHARM_SS faz harmonik reaktif güçvarpower.harmonic
P6QHARM_TT faz harmonik reaktif güçvarpower.harmonic
P7QHARM_3_RR faz 3. harmonik reaktif güç bileşenivarpower.harmonic
P8QHARM_3_SS faz 3. harmonik reaktif güç bileşenivarpower.harmonic
P9QHARM_3_TT faz 3. harmonik reaktif güç bileşenivarpower.harmonic
P10QHARM_5_RR faz 5. harmonik reaktif güç bileşenivarpower.harmonic
P11QHARM_5_SS faz 5. harmonik reaktif güç bileşenivarpower.harmonic
P12QHARM_5_TT faz 5. harmonik reaktif güç bileşenivarpower.harmonic
P13QHARM_7_RR faz 7. harmonik reaktif güç bileşenivarpower.harmonic
P14QHARM_7_SS faz 7. harmonik reaktif güç bileşenivarpower.harmonic
P15QHARM_7_TT faz 7. harmonik reaktif güç bileşenivarpower.harmonic
P16QHARM_9_RR faz 9. harmonik reaktif güç bileşenivarpower.harmonic
P17QHARM_9_SS faz 9. harmonik reaktif güç bileşenivarpower.harmonic
P18QHARM_9_TT faz 9. harmonik reaktif güç bileşenivarpower.harmonic
P19P_RR faz aktif güçWpower.active
P20P_SS faz aktif güçWpower.active
P21P_TT faz aktif güçWpower.active
P22Q_RR faz reaktif güçvarpower.reactive
P23Q_SS faz reaktif güçvarpower.reactive
P24Q_TT faz reaktif güçvarpower.reactive
P25S_RR faz görünür güçVApower.apparent
P26S_SS faz görünür güçVApower.apparent
P27S_TT faz görünür güçVApower.apparent
P28P_AAktif güç ortalaması (Total/3)Wpower.active
P29Q_AReaktif güç ortalaması (Total/3)varpower.reactive
P30S_AGörünür güç ortalaması (Total/3)VApower.apparent
P31PFUND_RR faz temel güç oranı-power.fundamental
P32PFUND_SS faz temel güç oranı-power.fundamental
P33PFUND_TT faz temel güç oranı-power.fundamental
P34PHARM_RR faz harmonik güç oranı-power.harmonic
P35PHARM_SS faz harmonik güç oranı-power.harmonic
P36PHARM_TT faz harmonik güç oranı-power.harmonic
P37PHARM_3_RR faz 3. harmonik aktif güç oranı/bileşeni-power.harmonic
P38PHARM_3_SS faz 3. harmonik aktif güç oranı/bileşeni-power.harmonic
P39PHARM_3_TT faz 3. harmonik aktif güç oranı/bileşeni-power.harmonic
P40PHARM_5_RR faz 5. harmonik aktif güç oranı/bileşeni-power.harmonic
P41PHARM_5_SS faz 5. harmonik aktif güç oranı/bileşeni-power.harmonic
P42PHARM_5_TT faz 5. harmonik aktif güç oranı/bileşeni-power.harmonic
P43PHARM_7_RR faz 7. harmonik aktif güç oranı/bileşeni-power.harmonic
P44PHARM_7_SS faz 7. harmonik aktif güç oranı/bileşeni-power.harmonic
P45PHARM_7_TT faz 7. harmonik aktif güç oranı/bileşeni-power.harmonic
P46PHARM_9_RR faz 9. harmonik aktif güç oranı/bileşeni-power.harmonic
P47PHARM_9_SS faz 9. harmonik aktif güç oranı/bileşeni-power.harmonic
P48PHARM_9_TT faz 9. harmonik aktif güç oranı/bileşeni-power.harmonic
P49SFUND_RR faz temel görünür güçVApower.fundamental
P50SFUND_SS faz temel görünür güçVApower.fundamental
P51SFUND_TT faz temel görünür güçVApower.fundamental
P52SHARM_3_RR faz 3. harmonik görünür güç bileşeniVApower.harmonic
P53SHARM_3_SS faz 3. harmonik görünür güç bileşeniVApower.harmonic
P54SHARM_3_TT faz 3. harmonik görünür güç bileşeniVApower.harmonic
P55SHARM_5_RR faz 5. harmonik görünür güç bileşeniVApower.harmonic
P56SHARM_5_SS faz 5. harmonik görünür güç bileşeniVApower.harmonic
P57SHARM_5_TT faz 5. harmonik görünür güç bileşeniVApower.harmonic
P58SHARM_7_RR faz 7. harmonik görünür güç bileşeniVApower.harmonic
P59SHARM_7_SS faz 7. harmonik görünür güç bileşeniVApower.harmonic
P60SHARM_7_TT faz 7. harmonik görünür güç bileşeniVApower.harmonic
P61SHARM_9_RR faz 9. harmonik görünür güç bileşeniVApower.harmonic
P62SHARM_9_SS faz 9. harmonik görünür güç bileşeniVApower.harmonic
P63SHARM_9_TT faz 9. harmonik görünür güç bileşeniVApower.harmonic
P64PF_RR faz güç faktörü-power.factor
P65PF_SS faz güç faktörü-power.factor
P66PF_TT faz güç faktörü-power.factor
P67PF_TOTToplam güç faktörü-power.factor

Enerji Değişkenleri

Sıra NoDeğişkenAçıklamaBirimSegment.AltSegment
E1PE_POS_RR faz alınan aktif enerji sayacıWhenergy.active
E2PE_NEG_RR faz verilen aktif enerji sayacıWhenergy.active
E3PE_POS_SS faz alınan aktif enerji sayacıWhenergy.active
E4PE_NEG_SS faz verilen aktif enerji sayacıWhenergy.active
E5PE_POS_TT faz alınan aktif enerji sayacıWhenergy.active
E6PE_NEG_TT faz verilen aktif enerji sayacıWhenergy.active
E7QE_POS_RR faz reaktif enerji leading sayacı (kapasitif)varhenergy.reactive
E8QE_NEG_RR faz reaktif enerji lagging sayacı (indüktif)varhenergy.reactive
E9QE_POS_SS faz reaktif enerji leading sayacı (kapasitif)varhenergy.reactive
E10QE_NEG_SS faz reaktif enerji lagging sayacı (indüktif)varhenergy.reactive
E11QE_POS_TT faz reaktif enerji leading sayacı (kapasitif)varhenergy.reactive
E12QE_NEG_TT faz reaktif enerji lagging sayacı (indüktif)varhenergy.reactive

Ingest Paket Profilleri (BASIC / DETAIL / EXPERIMENT)

Ingest tarafında tek paket limitine uyum için değişkenler paket profillerine ayrılır. Cihaz Info.Command ile profil tipini bildirir.

BASIC Paketi

Temel operasyonel izleme için zorunlu alanlar:

  • STATUS, STOP, RESET
  • VRMS_R, VRMS_S, VRMS_T
  • IRMS_R, IRMS_S, IRMS_T
  • P_R, P_S, P_T
  • Q_R, Q_S, Q_T
  • S_R, S_S, S_T
  • PF_R, PF_S, PF_T
  • FREQ
  • PCB_T

DETAIL Paketi

Temel bileşen + harmonik (3/5/7) detayları:

  • VFUND_R, VFUND_S, VFUND_T
  • IFUND_R, IFUND_S, IFUND_T
  • VHARM_3_R, VHARM_3_S, VHARM_3_T
  • VHARM_5_R, VHARM_5_S, VHARM_5_T
  • VHARM_7_R, VHARM_7_S, VHARM_7_T
  • IHARM_3_R, IHARM_3_S, IHARM_3_T
  • IHARM_5_R, IHARM_5_S, IHARM_5_T
  • IHARM_7_R, IHARM_7_S, IHARM_7_T
  • IPEAK_R, IPEAK_S, IPEAK_T

EXPERIMENT Paketi

V1’de zorunlu olmayan, ileri analiz/Ar-Ge amaçlı alanlar:

  • VINST_R, VINST_S, VINST_T
  • IINST_R, IINST_S, IINST_T
  • VHARM_9_R, VHARM_9_S, VHARM_9_T
  • IHARM_9_R, IHARM_9_S, IHARM_9_T
  • VHARM_THD_R, VHARM_THD_S, VHARM_THD_T
  • IHARM_THD_R, IHARM_THD_S, IHARM_THD_T
  • QHARM_*, PHARM_*, SHARM_* genişletilmiş harmonik güç alanları
  • V1 hesaplarında doğrudan kullanılmayan diğer opsiyonel alanlar

Notlar:

  • Stream servis assembly sırasında bu paketleri tek sete birleştirir.
  • stream_end=true görüldüğünde set finalize edilir.
  • Paket profili değişiklikleri variables sözlüğü ile birlikte versiyonlanmalıdır.

Performans ve Bakım Önerileri

Variables tarafı düşük hacimli görünse de yanlış tasarım ileride rule çözümleme ve validasyon maliyetini büyütür. Bu yüzden aşağıdaki öneriler önemlidir:

  • variables.id kısa ve stabil kalsın; isim değişikliği yerine yeni değişken açmayı tercih edin.
  • variables.segment_id için index zorunlu olsun (idx_variables_segment_id).
  • variables.id üzerinde case standardı belirleyin (örn. her zaman UPPERCASE).
  • variable_segments.name tekilleştirme korunsun; segment adını migration dışında değiştirmeyin.
  • Rule save anında required_variables içindeki tüm alanlar variables tablosundan doğrulansın.
  • CT etkisindeki değişken listesi kodda merkezi bir map olarak tutulsun; sorgu sırasında tekrar tekrar hesaplanmasın.
  • Uygulama başında (veya kısa TTL ile) variables sözlüğünü Redis/local cache’e alıp read path’i hafifletin.

Variables katmanı doğru yönetildiğinde, Cınga’da tablo tasarımı, kalibrasyon, sentez ve pencere katmanları arasında anlamsal tutarlılık kalıcı hale gelir.

Not: Bu sayfadaki sözlük şu aşamada enerji değişkenlerine odaklıdır. Sistemde bulunan enerji dışı ek değişkenler ilerleyen sürümlerde aynı yapı korunarak bu sözlüğe eklenecektir.

Değişken Yönetimi için Önerilen İşletim Modeli

Yeni değişken ekleme sürecini deploy bağımlılığından çıkarmak için “schema-as-data” modeli önerilir. Bu modelde değişken sözlüğü Git deposunda tek bir kaynak dosyada (variables.yaml veya variables.json) tutulur. Değişiklikler PR ile yönetilir; böylece review, versiyonlama ve geri alma (rollback) süreçleri doğal olarak sağlanır.

Uygulama tarafında bir senkronizasyon komutu (sync-variables) çalıştırılarak bu dosya DB’ye upsert edilir. Böylece yeni değişken eklemek için kod deploy etmek gerekmez; sadece sözlük dosyası güncellenir ve senkronizasyon çalıştırılır.

Bu modelin güvenli çalışması için üç ek adım önerilir:

  • Senkronizasyon öncesi dry-run ile fark (diff) gösterimi,
  • Senkronizasyon sonrası Redis sözlük cache invalidation,
  • Senkronizasyon çıktısının log/audit kaydı.

Bu yaklaşımla değişken ekleme süreci hem hızlanır hem izlenebilir hale gelir.

Deployment Hook ile Otomatik Senkronizasyon

İleride deploy anında sözlük senkronizasyonunu otomatik çalıştırmak mümkündür ve önerilir. Bunun için CI/CD veya servis açılış aşamasına bir “post-deploy sync” adımı eklenir.

Önerilen sıra şu şekildedir: önce sync-variables --dry-run ile değişiklik önizlenir; beklenmeyen veya kırıcı durum yoksa sync-variables --apply ile DB upsert yapılır; son adımda Redis cache invalidation tetiklenir.

Bu akışla yeni değişkenler deploy paketine manuel müdahale olmadan sisteme alınır. Aynı zamanda idempotent çalıştığı için tekrar tetiklenmesi güvenlidir.

Güvenli kullanım için önerilen korumalar:

  • transaction tabanlı yazım,
  • schema doğrulama,
  • strict mode (hatalı satırda fail),
  • senkronizasyon raporu ve audit log.

Böylece değişken yönetimi “kod değişikliği + manuel DB işlemi” modelinden çıkıp, kontrollü ve otomatik bir operasyon haline gelir.