İçeriğe geç

Platform Mimarisi

inSCADA, saha cihazlarından veri toplamak, işlemek, görselleştirmek ve otomasyon kurmak için tasarlanmış bir SCADA platformudur. Tek bir uygulama olarak çalışır — tüm bileşenler aynı süreçte birleşiktir.

inSCADA’daki tüm veriler iki seviyede organize edilir: Space (çalışma alanı) ve Project (proje). Bazı bileşenler space genelinde paylaşılırken, bazıları bir projeye bağlıdır.

Veri hiyerarşisi Space altında projeler arası paylaşılan bileşenler ve projeler; her projenin altında haberleşme, izleme ve alarm, otomasyon, görselleştirme ve raporlama bileşenleri. Space — çalışma alanı projeler arası paylaşılan Custom Menu Dashboard Expression Symbol — SVG sembol kütüphanesi Project — proje haberleşme Connection Device Frame Variable izleme ve alarm Alarm Group Analog Alarm Digital Alarm Custom Alarm Trend Trend Tag otomasyon Script Data Transfer görselleştirme Animation — SVG ekran Faceplate — yeniden kullanılabilir parça raporlama Report — yapılandırılmış HTML Report

Space, en üst seviye izolasyon birimidir. Her space kendi proje, kullanıcı ve yapılandırma setine sahiptir. Farklı space’ler birbirinden tamamen bağımsızdır.

Kullanım senaryoları:

  • Müşteri izolasyonu — her müşteri için ayrı space
  • Ortam ayrımı — geliştirme, test, üretim
  • Departman ayrımı — enerji, su, bina otomasyonu

Proje, bir tesis, saha veya mantıksal birim temsil eder. Bir space altında birden fazla proje olabilir. Projedeki tüm bileşenler (bağlantı, alarm, script, ekran vb.) proje kapsamında çalışır.

Örnek projeler:

  • “Ankara Fabrika” — bir üretim tesisi
  • “GES-01” — bir güneş enerji santrali
  • “Bina-A HVAC” — bir binanın iklimlendirme sistemi

Her projenin opsiyonel olarak enlem/boylam koordinatları olabilir ve harita ekranında görselleştirilebilir.

Bağlantı, bir saha cihazına veya sisteme olan haberleşme kanalıdır. Her bağlantı bir protokol kullanır.

Desteklenen protokoller:

GrupProtokollerİstemciSunucu / Slave
EndüstriyelModbus TCP / UDP / RTU over TCP✓✓ (her transport için)
S7, S7-Plus✓—
EtherNet/IP✓—
Mitsubishi MC TCP / UDP✓—
Beckhoff ADS✓—
Fatek TCP / UDP✓—
EnerjiDNP3✓✓
IEC 60870-5-104✓✓
IEC 61850✓✓
Bina otomasyonuBACnet✓✓
KNX✓—
Açık standartOPC UA✓✓
OPC DA✓—
OPC XML✓—
MQTT✓—
SNMP✓—
YerelLOCAL (simülasyon / dahili hesaplama)——

Her bağlantı bağımsız olarak başlatılıp durdurulabilir. Durum değerleri: Connected, Disconnected.

Cihaz, bir bağlantı üzerindeki fiziksel veya mantıksal birimi temsil eder. Örneğin bir Modbus bağlantısı üzerinde birden fazla slave cihaz olabilir.

Frame, bir cihazdan okunan veri bloğudur. Her frame belirli bir adres aralığını ve okuma periyodunu tanımlar.

ParametreAçıklama
Başlangıç AdresiOkunacak ilk adres
MiktarOkunacak register/nokta sayısı
PeriyotOkuma sıklığı (ms)

Değişken, platformdaki en temel veri birimidir. Bir sıcaklık ölçümü, bir motor durumu, bir sayaç değeri — her biri bir değişkendir.

Her değişkenin temel özellikleri:

ÖzellikAçıklama
NameBenzersiz ad (proje içinde)
TypeFloat, Integer, Boolean, String
UnitMühendislik birimi (°C, kW, bar, V, A…)
ÖlçeklemeRaw → Engineering dönüşümü (engZeroScale, engFullScale)
LoglamaTarihsel veri kayıt tipi
ExpressionÖzel değer hesaplama formülü

Ham (raw) değer, mühendislik değerine lineer olarak dönüştürülür:

Engineering = engZeroScale + (raw - rawZeroScale) ×
(engFullScale - engZeroScale) / (rawFullScale - rawZeroScale)

Örnek: 4-20mA sensör → 0-100°C ölçekleme:

  • Raw: 4mA → 0°C, 20mA → 100°C
  • engZeroScale=0, engFullScale=100, rawZeroScale=4, rawFullScale=20
TipAçıklama
No LogKayıt yok
When ChangedDeğer değiştiğinde kayıt
PeriodicallySabit aralıkla kayıt (logPeriod saniye)
ThresholdEşik aşıldığında kayıt
ExpressionKullanıcı tanımlı formül ile kayıt kararı
CustomÖzel logic (script tabanlı)

Değişkene özel bir hesaplama formülü atanabilir. Her okuma döngüsünde bu formül çalışır ve sonucu değişkenin değeri olur:

// Örnek: Sinüs dalga simülasyonu
var t = new Date().getTime() / 1000;
return (Math.sin(t / 60) * 150 + 450).toFixed(2) * 1;

Alarmlar grup halinde organize edilir. Her alarm grubu bir proje altındadır ve toplu olarak etkinleştirilebilir/devre dışı bırakılabilir.

Alarm grubu örneği Project Alarm Group — “Sıcaklık Alarmları” Analog Alarm — Temperature_C > 60 °C (yüksek) Analog Alarm — Temperature_C > 80 °C (kritik) Analog Alarm — Temperature_C < 10 °C (düşük)
TipAçıklamaParametreler
AnalogSayısal değer eşik kontrolüsetPoint, highHigh, high, low, lowLow
DigitalBoolean durum kontrolüON → Alarm, OFF → Normal
CustomScript tabanlı özel koşulJavaScript expression

Her tetiklenen alarm FiredAlarm kaydı olarak saklanır. Gerçek durum iki değerlidir:

ON (tetiklendi) → OFF (kapandı)

Onay (acknowledge) ve yorum (comment) durumun bir parçası değildir — acknowledgeTime, acknowledgedBy, commentTime, comment alanları ayrı olarak işlenir ve kullanıcı müdahalesini kaydeder ama alarm durumunu değiştirmez.

Her alarm olayı tarihsel olarak kaydedilir: tetiklenme zamanı, kapanma zamanı, onaylayan kullanıcı, süre.


Script’ler platformun otomasyon motorudur. Sunucu tarafında GraalJS (Nashorn uyumluluk modu) ile çalışır ve ins.* API üzerinden tüm platform verilerine erişir.

AlanAçıklamaÖrnek
Zamanlanmış görevPeriyodik veya saatli çalışmaHer 10 saniyede enerji hesaplama
Değişken formülüDeğer dönüşümüİki değişkenden üçüncüyü türetme
Alarm koşuluÖzel alarm mantığıBirden fazla değişkene bağlı koşul
Veri entegrasyonuREST API çağrısıHava durumu API’sinden veri çekme
RaporlamaOtomatik raporHer sabah PDF rapor e-posta ile gönderme
BildirimOlay bazlı bildirimAlarm tetiklenince SMS gönderme
TipKullanım
PeriodicHer X milisaniyede bir çalışır
DailyHer gün belirli saatte çalışır
OnceBir kez çalışıp durur
NoneYalnızca manuel veya API ile tetiklenir

Detaylı bilgi: Script Engine →


SVG Animation — Energy Monitoring Dashboard

SVG tabanlı interaktif SCADA ekranları. Değişken değerleri ekran üzerinde gerçek zamanlı olarak gösterilir: renk değişimi, hareket, sayısal gösterim, açma/kapama kontrolleri.

Tekrar kullanılabilir SVG bileşenleri. Bir motor, vana, pompa gibi sık kullanılan görsel öğeler faceplate olarak tanımlanıp birden fazla animation ekranında kullanılabilir.

Symbol (SVG Sembol Kütüphanesi) — Space Seviyesi

Section titled “Symbol (SVG Sembol Kütüphanesi) — Space Seviyesi”

Space genelinde paylaşılan SVG sembol kütüphanesi. Tüm projelerdeki animation ve faceplate’ler bu sembolleri kullanabilir.

Farklı projelerden verileri tek bir panoda birleştirmek için kullanılır. Space seviyesinde tanımlandığı için projeler arası veri karşılaştırması yapılabilir.

Değişkenlerin zaman içindeki değişimini gösteren grafikler. Birden fazla değişken aynı grafikte gösterilebilir (Trend Tag). Geçmişe dönük veri inceleme ve karşılaştırma için kullanılır.

Custom Menu (Özel Menü) — Space Seviyesi

Section titled “Custom Menu (Özel Menü) — Space Seviyesi”

Kullanıcıya özel menü yapısı oluşturmak için kullanılır. Space seviyesinde tanımlanır — farklı roller için farklı menüler atanabilir. Operatör yalnızca izleme ekranlarını, yönetici raporları, mühendis yapılandırma sayfalarını görür.

İki rapor ailesi vardır ve ikisi de aynı işleri yapar:

  • Report — satır/sütun ve gruplamalarla tanımlanan yapılandırılmış rapor
  • HTML Report — sayfayı kendiniz yazdığınız, veri kaynağını script’le beslediğiniz rapor

Her ikisi de zamanlanabilir, e-posta ile gönderilebilir ve dosyaya yazılabilir. Çıktı biçimleri HTML ve PDF’tir; PDF, sunucudaki başsız tarayıcıyla basılır. Rapor çıktısında Excel biçimi yoktur — tablo verisini Excel’e almak için dışa aktarma yollarını kullanın.

Expression (Paylaşımlı Formül) — Space Seviyesi

Section titled “Expression (Paylaşımlı Formül) — Space Seviyesi”

Space genelinde paylaşılan hesaplama formülleri. Birden fazla değişken veya alarm tarafından ortak kullanılabilir. Tekrarlanan formülleri merkezi olarak yönetmeyi sağlar.

GIS harita üzerinde projelerin coğrafi konumlarını gösterir. Her proje noktasında anlık değerler, alarm durumu ve bağlantı durumu popup olarak görüntülenir.


inSCADA üç farklı veri katmanı kullanır. Her biri farklı bir veri tipine optimize edilmiştir:

İlişkisel veritabanı — yapılandırma

Section titled “İlişkisel veritabanı — yapılandırma”

Proje tanımları, değişken ayarları, kullanıcılar, roller, alarm tanımları, script kodları — kısaca platformun tüm yapılandırma verileri burada tutulur. Bu veriler nadiren değişir, ilişkisel yapıdadır ve tutarlılık (consistency) önceliklidir.

Şema geçişleri sürümlenerek yönetilir; varsayılan şema adı inscada.

Değişken tarihsel değerleri, alarm geçmişi, olay logları, giriş denemeleri — zaman damgalı tüm veriler burada tutulur. Bu veriler sürekli yazılır, nadiren güncellenir ve zaman aralığına göre sorgulanır.

Her ölçüm tipi (değişken değeri, alarm, olay logu) için ayrı saklama politikası tanımlanabilir; saklama süreleri zaman serisi katmanında yapılandırılır — inSCADA’da sabit bir varsayılan yoktur.

Bellek içi önbellek — anlık değerler

Section titled “Bellek içi önbellek — anlık değerler”

Tüm değişkenlerin son güncel değerleri bellek içi önbellekte tutulur. ins.getVariableValue() veya REST API ile değer okunduğunda önbellekten döner — tarihçeye gidilmez.

Bu sayede:

  • Anlık değer okuma < 1ms
  • Binlerce değişken eşzamanlı okunabilir
  • Web arayüzü ve script’ler aynı güncel veriye erişir

Önbellek ayrıca script global nesneleri, oturum anahtarları ve hız sınırlama sayaçları için de kullanılır.


Bir saha cihazından web ekranına kadar verinin izlediği yol:

Veri akışı Saha cihazından okunan değer bağlantı, frame ve ölçekleme adımlarından geçip önbelleğe yazılır; önbellekten tarihçeye kaydedilir, alarm kontrolünden geçirilir ve web arayüzü, script motoru ile REST API tarafından okunur. Saha cihazı PLC, RTU, sayaç Bağlantı protokol Frame blok okuma Ham değer Ölçekleme raw to eng Önbellek anlık değer Tarihçe zaman serisi Alarm kontrol eşik Web arayüzü Script motoru REST API
  1. Saha Cihazı — PLC, RTU, sensör, sayaç vb.
  2. Bağlantı — Belirlenen protokol ile cihaza bağlanır
  3. Frame Okuma — Tanımlı periyotta adres bloğunu okur
  4. Ham Değer — Cihazdan gelen raw veri
  5. Ölçekleme — Raw → Engineering dönüşümü (varsa)
  6. Önbellek — Güncel değer belleğe yazılır
  7. Loglama — Loglama tipine göre zaman serisine kayıt
  8. Alarm Kontrol — Alarm tanımlarına göre eşik kontrolü
  9. Tüketim — Web UI (WebSocket/SSE), Script Engine, REST API aynı cache’ten okur
UI / Script / API → Cache Güncelleme → Bağlantı → Protokol Yazma → Saha Cihazı

ins.setVariableValue() veya UI üzerinden değer yazıldığında, komut bağlantı üzerinden saha cihazına iletilir.


Çoklu çalışma alanı Tek bir inSCADA kurulumu altında enerji, bina ve su çalışma alanları ve her birinin altındaki projeler. inSCADA Space: enerji Project: GES-01 Project: GES-02 Project: RES-01 Space: bina Project: Merkez Ofis Project: Depo Space: su Project: Arıtma Tesisi Project: Pompa İstasyonları

Her space:

  • Kendi proje seti
  • Kendi kullanıcı yetkileri
  • Birbirinden bağımsız veri

Kullanıcılar birden fazla space’e erişebilir ve oturum sırasında space değiştirebilir. REST API çağrılarında hangi space’in hedeflendiğini belirtmek için X-Space header’ı kullanılır.


inSCADA varsayılan olarak tek node çalışır: o node kalıcı liderdir ve aşağıdaki mekanizmaların hiçbiri devrede değildir. Çoklu node, tek bir ayarla açılır:

ins.cluster.enabled=true # ortamda: INS_CLUSTER_ENABLED

Açıldığında node’lar bir lider ve bir ya da daha çok takipçi olarak çalışır. Liderlik, küme üyelik katmanı üzerinden bir kiralama (lease) ile seçilir; kayıt replikasyonu, tarihçe senkronizasyonu ve dosya replikasyonu liderden takipçilere, mesaj kuyruğu üzerinden akar. Replikasyon gecikmesi izlenebilir.


Varsayılan yapılandırma:

PortKullanım
8082HTTPS — Web arayüzü ve REST API (ana erişim)
8083HTTPS — Sandbox (custom HTML widget iframe’leri için izole edilmiş origin)

Uygulama varsayılanda yalnızca HTTPS üzerinden hizmet verir; TLS bundle server.ssl.bundle ile yapılandırılır. HTTP (plain) port varsayılanda açık değildir.

Web arayüzü herhangi bir modern tarayıcıdan erişilebilir; mobil cihazlardan da responsive olarak çalışır. Ek bir istemci yazılımı kurulumu gerekmez.

Yapılandırma detayları: Yapılandırma →