Değişkenler
Değişken (Variable), inSCADA’daki en temel veri birimidir. Bir sıcaklık ölçümü, bir motor durumu, bir enerji sayacı — her biri bir değişkendir.

Değişken Oluşturma
Section titled “Değişken Oluşturma”Menü: Runtime → Variables → Yeni Değişken
| Alan | Zorunlu | Açıklama |
|---|---|---|
| Name | Evet | Değişken adı (proje içinde benzersiz) |
| Type | Evet | Veri tipi |
| Unit | Hayır | Mühendislik birimi (°C, kW, V, A, bar…) |
| Description | Hayır | Açıklama |
| Connection / Device / Frame | Evet | Hangi bağlantıya ait |
| Active | Evet | Aktif/pasif |
Veri Tipleri
Section titled “Veri Tipleri”| Tip | Açıklama | Örnek |
|---|---|---|
| Float | Ondalıklı sayı | 25.4, 230.1, 0.95 |
| Integer | Tam sayı | 100, -5, 0 |
| Boolean | Doğru/Yanlış | true, false |
| String | Metin | ”Recipe-A”, “Running” |
Değişken Yapısı (Örnek)
Section titled “Değişken Yapısı (Örnek)”{ "id": 23227, "name": "ActivePower_kW", "dsc": "Total active power", "type": "Float", "unit": "kW", "projectId": 153, "connectionId": 153, "deviceId": 453, "frameId": 703, "isActive": true, "fractionalDigitCount": 2, "engZeroScale": 0.0, "engFullScale": 1000.0, "logType": "Periodically", "logPeriod": 10, "keepLastValues": true, "valueExpressionType": "CUSTOM", "valueExpressionCode": "var t = new Date().getTime() / 1000; return (Math.sin(t / 60) * 150 + 450 + Math.random() * 30).toFixed(2) * 1;"}Ölçekleme (Scaling)
Section titled “Ölçekleme (Scaling)”Ham (raw) değer, mühendislik değerine lineer dönüşüm ile çevrilir.
| Parametre | Açıklama |
|---|---|
| engZeroScale | Mühendislik birimi alt sınır |
| engFullScale | Mühendislik birimi üst sınır |
| rawZeroScale | Ham değer alt sınır |
| rawFullScale | Ham değer üst sınır |
Dönüşüm Formülü
Section titled “Dönüşüm Formülü”Eng = engZeroScale + (raw - rawZeroScale) × (engFullScale - engZeroScale) / (rawFullScale - rawZeroScale)Örnek: 4-20mA Sensör → 0-100°C
Section titled “Örnek: 4-20mA Sensör → 0-100°C”| Parametre | Değer |
|---|---|
| rawZeroScale | 4 (mA) |
| rawFullScale | 20 (mA) |
| engZeroScale | 0 (°C) |
| engFullScale | 100 (°C) |
- Raw: 4mA → Eng: 0°C
- Raw: 12mA → Eng: 50°C
- Raw: 20mA → Eng: 100°C
Anlık Değer Yanıtında Ölçekleme
Section titled “Anlık Değer Yanıtında Ölçekleme”{ "value": 359.91, "extras": { "raw_value": 606.56 }, "flags": { "scaled": true }}value ölçeklenmiş mühendislik değeri, extras.raw_value ham değerdir.
Loglama (Tarihsel Veri)
Section titled “Loglama (Tarihsel Veri)”Değişken değerleri zaman serisi veritabanına kaydedilebilir.
Loglama Tipleri
Section titled “Loglama Tipleri”| Tip | Açıklama |
|---|---|
| Periodically | Sabit aralıkla kayıt (logPeriod saniye) |
| When Changed | Yalnızca değer değiştiğinde kayıt |
| None | Kayıt yok |
Loglama Parametreleri
Section titled “Loglama Parametreleri”| Parametre | Açıklama |
|---|---|
| logPeriod | Kayıt periyodu (saniye). 10 = her 10 saniyede bir |
| logThreshold | Minimum değişim eşiği (opsiyonel). Küçük dalgalanmaları filtreler |
| logMinValue / logMaxValue | Geçerli değer aralığı. Dışındaki değerler loglanmaz |
| keepLastValues | Son değer listesini bellekte tut |
Fractional Digit Count
Section titled “Fractional Digit Count”fractionalDigitCount gösterilecek ondalık basamak sayısını belirler:
| Değer | Gösterim |
|---|---|
0 | 350 |
1 | 350.5 |
2 | 350.48 |
3 | 350.483 |
Value Expression
Section titled “Value Expression”Değişkene özel bir JavaScript formülü atanabilir. Her okuma döngüsünde bu formül çalışır ve sonucu değişkenin değeri olur.
Expression Tipleri
Section titled “Expression Tipleri”| Tip | Açıklama |
|---|---|
| NONE | Expression yok, ham değer kullanılır |
| CUSTOM | Satır içi JavaScript kodu |
| REFERENCE | Paylaşımlı Expression referansı (space seviyesi) |
Örnek: Simülasyon
Section titled “Örnek: Simülasyon”// Sinüs dalga (ActivePower_kW)var t = new Date().getTime() / 1000;return (Math.sin(t / 60) * 150 + 450 + Math.random() * 30).toFixed(2) * 1;Örnek: Birim Dönüşümü
Section titled “Örnek: Birim Dönüşümü”// Fahrenheit → Celsiusvar fahrenheit = value; // ham değerreturn ((fahrenheit - 32) * 5 / 9).toFixed(1) * 1;Örnek: Koşullu Mantık
Section titled “Örnek: Koşullu Mantık”// İki değişkenden verimlilik hesaplavar input = ins.getVariableValue("Input_kW").value;var output = ins.getVariableValue("Output_kW").value;if (input > 0) { return ((output / input) * 100).toFixed(1) * 1;}return 0;Pulse (Darbe) Özelliği
Section titled “Pulse (Darbe) Özelliği”Boolean değişkenlere darbe modu atanabilir:
| Parametre | Açıklama |
|---|---|
| isPulseOn | ON darbesi aktif |
| pulseOnDuration | ON darbe süresi (ms) |
| isPulseOff | OFF darbesi aktif |
| pulseOffDuration | OFF darbe süresi (ms) |
Darbe modu, anlık komut gönderimi için kullanılır (örn: motor start butonu — basıldığında ON, bırakıldığında otomatik OFF).
Yazma Sınırları
Section titled “Yazma Sınırları”| Parametre | Açıklama |
|---|---|
| setMinValue | Yazılabilir minimum değer |
| setMaxValue | Yazılabilir maksimum değer |
Bu parametreler ayarlandığında, aralık dışı yazma komutları reddedilir. Operatör hatalarını önlemek için kullanılır.
Script ile Değişken Yönetimi
Section titled “Script ile Değişken Yönetimi”// Anlık değer okuvar val = ins.getVariableValue("ActivePower_kW");// → { value: 359.91, extras: { raw_value: 606.56 }, dateInMs: ... }
// Toplu okumavar vals = ins.getVariableValues(["ActivePower_kW", "Voltage_V", "Current_A"]);
// Değer yazins.setVariableValue("Temperature_C", {value: 55.0});
// Değişken bilgisivar info = ins.getVariable("ActivePower_kW");// → { name: "ActivePower_kW", unit: "kW", type: "Float", logPeriod: 10 ... }Detaylı API: Variable API → | REST API →