# Variable Functions

Değişken fonksiyonları, script/expression ile inSCADA Platformunda tanımlanmış değişkenleri okuma/yazma işlemleri için kullanılır.

{% hint style="info" %}
Variable Object : Değişken fonksiyonların geri döndürdüğü bir JSON nesnesidir. İçerisinde zaman etiketi ve değeri bulunur.

{"@class":"com.inscada.mono.communication.model.values.NumberVariableValue","value":60,"date":1564649882811}
{% endhint %}

## Get Variable Value

#### object ins.getVariableValue(var variablename)

inSCADA içerisinde tanımlı bir değişkenin değerini okur.

variablename : String

Return Value : Variable nesnesi geri döndürür. Dönen değer "null" ise işlem başarısızdır. Variable okunamamıştır.

#### Syntax

```javascript
var val=ins.getVariableValue("UNIT01_Active_Power");
if (val != null) {
  if (val.value>0) {
    ins.notify("info","Unit 01","Unit 1 is working");
    return val.value;
  }
}
return -1;
```

#### veya

```javascript
var val=ins.getVariableValue("UNIT01_Active_Power").value;
if (val>0) {
    ins.notify("info","Unite 01","Unit 1 is working");
    return val;
}
return -1;
```

{% hint style="info" %}
Bir projeye bağlı script içerisinden diğer projeye bağlı bir değişkene erişmek için ;

ins.getVariableValue(projectName,variableName)\
ins.getVariableValue(projectName,variableName,index) <br>

proje ismini parametre olarak alan API 'leri kullanabilirsiniz. inSCADA platformunda API' lerin birçoğu proje ismi (projectName) parametresini alabilmektedir.
{% endhint %}

## Get Variable Previous Values

#### object ins.getVariableValue(var variablename,var index)

inSCADA içerisinde tanımlı bir değişkenin önceki taramalardaki değerini okur. inSCADA değişkenlerin en son okunan 300 değerini hafızada tutar. Bu 250 değere index ile ulaşabilirsiniz.

variablename : String

Return Value : Variable nesnesi geri döndürür. Dönen değer "null" ise işlem başarısızdır. Variable okunamamıştır.

#### Syntax

```javascript
var variable=ins.getVariableValue("UNI01_Active_Power");
if (variable===null) {return -1}
var prv_variable=ins.getVariableValue("UNIT01_Active_Power",1);
if (prv_variable===null) {return -1}
if (variable.value!==prv_variable.value) {
    ins.notify("info","Unit 01","Power value is changed");
}
return variable.value;
```

## Get Variables Values

#### Array\[] ins.getVariableValues(variablenames\[])

inSCADA içerisinde tanımlı, talep edilen değişken listesinin değerlerini okur.

variablenames\[] : String array

Return Value : Talep edilen değişkenlerin nesnelerinden oluşan bir dizi döndürür.

#### Syntax

```javascript
var TAGS=["UNCORRECTED_FLOW_RATE",
"MASS_FLOW_RATE",
"CORRECTED_FLOW_RATE",
"ENERGY_FLOW_RATE",
"INDICATED_UNCORRECTED_FLOW_RATE",
"UNCORRECTED_TOTAL",
"MASS_TOTAL",
"CORRECTED_TOTAL",
"ENERGY_TOTAL",
"INDICATED_UNCORRECTED_TOTAL",
"CONVERTION_FACTOR",
"CORRECTED_FACTOR",
"LINE_COMPRESIBILITY",
"BASE_COMPRESIBILITY",
"LINE_PRESSURE",
"LINE_TEMPERATURE",
"LINE_DENSITY",
"BASE_DENSITY"];

var VALUES=ins.getVariableValues(TAGS);
if (VALUES===null) {return -1;}

var mass_flow_rate_value=VALUES["MASS_FLOW_RATE"].value;
var mass_flow_rate_timestamp=VALUES["MASS_FLOW_RATE"].date;

// veya

var corrected_flow_rate_value=VALUES.CORRECTED_FLOW_RATE.value;

```

#### Array\[] ins.getVariableValues(variableName,fromIndex,toIndex)

Bir değişkenin hafızada tutulan son 300 değerinden bir kısmını liste olarak almamızı sağlar.

variableName : String olarak değişken ismi,

fromIndex : Integer olarak son 300 sıralı değer listesi içerisinden okunmak istenen değerlerin başlangıç noktası (0-299) .

toIndex : Integer olarak kaç adet veri okunacağı bilgisi.&#x20;

```javascript
// Bir değişkenin son okunan 50 değerinini alalım.
var values=ins.getVariableValues("G1_Current_Demand_I1",0,50);
return values;

```

#### sonuç

```json
// values 
[
{"value":61.433663614480324,"extras":{},"date":"2023-03-16T10:36:17.001+03:00","flags":{},"dateInMs":1678952177001},
{"value":379.89418908510373,"extras":{},"date":"2023-03-16T10:36:16.003+03:00","flags":{},"dateInMs":1678952176003},
{"value":851.2367689630646,"extras":{},"date":"2023-03-16T10:36:15.001+03:00","flags":{},"dateInMs":1678952175001},
{"value":346.0620345845453,"extras":{},"date":"2023-03-16T10:36:14.001+03:00","flags":{},"dateInMs":1678952174001},
{"value":720.6215883854054,"extras":{},"date":"2023-03-16T10:36:13.001+03:00","flags":{},"dateInMs":1678952173001},
{"value":182.81102901616708,"extras":{},"date":"2023-03-16T10:36:12.003+03:00","flags":{},"dateInMs":1678952172003},
{"value":199.20723231180816,"extras":{},"date":"2023-03-16T10:36:11.002+03:00","flags":{},"dateInMs":1678952171002},
{"value":515.8443852150383,"extras":{},"date":"2023-03-16T10:36:10.004+03:00","flags":{},"dateInMs":1678952170004},
{"value":951.2103124828357,"extras":{},"date":"2023-03-16T10:36:09.002+03:00","flags":{},"dateInMs":1678952169002},
{"value":598.0987694530843,"extras":{},"date":"2023-03-16T10:36:08.002+03:00","flags":{},"dateInMs":1678952168002},
{"value":561.0978723063662,"extras":{},"date":"2023-03-16T10:36:07.002+03:00","flags":{},"dateInMs":1678952167002},
{"value":44.50005972417226,"extras":{},"date":"2023-03-16T10:36:06.002+03:00","flags":{},"dateInMs":1678952166002},
{"value":815.0318528238909,"extras":{},"date":"2023-03-16T10:36:05.001+03:00","flags":{},"dateInMs":1678952165001},
{"value":765.0835785903397,"extras":{},"date":"2023-03-16T10:36:04.002+03:00","flags":{},"dateInMs":1678952164002},{"value":216.50387619957434,"extras":{},"date":"2023-03-16T10:36:03.002+03:00","flags":{},"dateInMs":1678952163002},{"value":22.86808245300087,"extras":{},"date":"2023-03-16T10:36:02.002+03:00","flags":{},"dateInMs":1678952162002},{"value":969.9048622958677,"extras":{},"date":"2023-03-16T10:36:01.001+03:00","flags":{},"dateInMs":1678952161001},{"value":896.8836603613863,"extras":{},"date":"2023-03-16T10:36:00.002+03:00","flags":{},"dateInMs":1678952160002},{"value":277.5028221587634,"extras":{},"date":"2023-03-16T10:35:59.001+03:00","flags":{},"dateInMs":1678952159001},{"value":70.67029521193291,"extras":{},"date":"2023-03-16T10:35:58.003+03:00","flags":{},"dateInMs":1678952158003},{"value":291.11618303659225,"extras":{},"date":"2023-03-16T10:35:57.002+03:00","flags":{},"dateInMs":1678952157002},{"value":745.3449727328392,"extras":{},"date":"2023-03-16T10:35:56.003+03:00","flags":{},"dateInMs":1678952156003},{"value":50.6826757090284,"extras":{},"date":"2023-03-16T10:35:55.002+03:00","flags":{},"dateInMs":1678952155002},{"value":777.5362620560402,"extras":{},"date":"2023-03-16T10:35:54.002+03:00","flags":{},"dateInMs":1678952154002},{"value":546.3353867808364,"extras":{},"date":"2023-03-16T10:35:53.001+03:00","flags":{},"dateInMs":1678952153001},{"value":230.5195720431553,"extras":{},"date":"2023-03-16T10:35:52.002+03:00","flags":{},"dateInMs":1678952152002},{"value":416.18171665236315,"extras":{},"date":"2023-03-16T10:35:51.001+03:00","flags":{},"dateInMs":1678952151001},{"value":343.07369971066015,"extras":{},"date":"2023-03-16T10:35:50.001+03:00","flags":{},"dateInMs":1678952150001},{"value":836.632869329902,"extras":{},"date":"2023-03-16T10:35:49.005+03:00","flags":{},"dateInMs":1678952149005},{"value":141.42417143051256,"extras":{},"date":"2023-03-16T10:35:48.001+03:00","flags":{},"dateInMs":1678952148001},{"value":516.1728740742122,"extras":{},"date":"2023-03-16T10:35:47.002+03:00","flags":{},"dateInMs":1678952147002},{"value":724.9382150271371,"extras":{},"date":"2023-03-16T10:35:46.002+03:00","flags":{},"dateInMs":1678952146002},{"value":213.26669905900664,"extras":{},"date":"2023-03-16T10:35:45.004+03:00","flags":{},"dateInMs":1678952145004},{"value":752.4412997081702,"extras":{},"date":"2023-03-16T10:35:44.001+03:00","flags":{},"dateInMs":1678952144001},{"value":395.5627138536615,"extras":{},"date":"2023-03-16T10:35:43.004+03:00","flags":{},"dateInMs":1678952143004},{"value":205.12661586632785,"extras":{},"date":"2023-03-16T10:35:42.001+03:00","flags":{},"dateInMs":1678952142001},{"value":972.1776159770743,"extras":{},"date":"2023-03-16T10:35:41.002+03:00","flags":{},"dateInMs":1678952141002},{"value":5.072085842030338,"extras":{},"date":"2023-03-16T10:35:40.002+03:00","flags":{},"dateInMs":1678952140002},{"value":658.6417416236958,"extras":{},"date":"2023-03-16T10:35:39.001+03:00","flags":{},"dateInMs":1678952139001},{"value":817.9844747232485,"extras":{},"date":"2023-03-16T10:35:38.003+03:00","flags":{},"dateInMs":1678952138003},{"value":219.87088693654766,"extras":{},"date":"2023-03-16T10:35:37.001+03:00","flags":{},"dateInMs":1678952137001},{"value":299.8395627492436,"extras":{},"date":"2023-03-16T10:35:36.003+03:00","flags":{},"dateInMs":1678952136003},{"value":213.85056922989122,"extras":{},"date":"2023-03-16T10:35:35.001+03:00","flags":{},"dateInMs":1678952135001},{"value":343.4389246899222,"extras":{},"date":"2023-03-16T10:35:34.001+03:00","flags":{},"dateInMs":1678952134001},{"value":537.5509568719278,"extras":{},"date":"2023-03-16T10:35:33.001+03:00","flags":{},"dateInMs":1678952133001},{"value":289.17724207944826,"extras":{},"date":"2023-03-16T10:35:32.002+03:00","flags":{},"dateInMs":1678952132002},{"value":168.52665571067814,"extras":{},"date":"2023-03-16T10:35:31.002+03:00","flags":{},"dateInMs":1678952131002},{"value":394.0002362514996,"extras":{},"date":"2023-03-16T10:35:30.001+03:00","flags":{},"dateInMs":1678952130001},{"value":126.04238572456406,"extras":{},"date":"2023-03-16T10:35:29.001+03:00","flags":{},"dateInMs":1678952129001},{"value":59.692987122517806,"extras":{},"date":"2023-03-16T10:35:28.003+03:00","flags":{},"dateInMs":1678952128003},{"value":165.0792885368262,"extras":{},"date":"2023-03-16T10:35:27.002+03:00","flags":{},"dateInMs":1678952127002}]

```

## Get Project Variables

#### object ins.getProjectVariableValues()

inSCADA içerisindeki projeye bağlı tüm değişkenlerin değerini okur.

Return Value : Proje altındaki tüm değişkenlerin ve değerlerinin içerisinde olduğu bir JSON nesnesi döndürür.

#### Syntax

```javascript
    var result=ins.getProjectVariableValues();
    if (result!==null) {
        return result;
    }
    return -1;
```

## Set Variable Value

#### ins.setVariableValue(String variablename, object value)

inSCADA içerisinde tanımlı bir değişkene değer yazar.

variablename : Değer yazılacak değişkenin ismi.

#### Syntax

```javascript
ins.setVariableValue("UNIT01_Active_Power_Set",{value:100});
```

## Set Variables Values

#### ins.setVariableValues(object variables)

inSCADA içerisinde tanımlı değişkenlere, tek seferde değer yazar.&#x20;

variables : Değişkenlerin ve yazılmak istenen değerlerin içinde bulunduğu bir JSON nesnesidir.

{% hint style="info" %}
ins.setVariableValues, ins.setVariableValue ' dan farklı olarak tek seferde birden fazla değişkene değer yazılmasını sağlar. Bu işlemi yaparken, protokole uygun olarak yazma işlemini optimize eder ve aynı veri bloğunda bulunan değerleri tek seferde bağlı cihaza gönderir. Birden çok verinin aktarımı için kullanılabilecek bir fonksiyondur.
{% endhint %}

#### Syntax

```javascript
var write_tags={};
write_tags.UNIT01_Active_Power_Set={value : 100};
// veya
write_tags["UNIT01_Active_Power_Set"]={value : 100};
// veya 

var tag_list=["TagName1","TagName2","TagName3",...,"TagName30"]
for (var i=0;i<tag_list.length;i++) {
    write_tags[tag_list[i]]={value:Math.random()*100};
}

ins.setVariableValues(write_tags);
```

## Map Variable Value

#### ins.mapVariableValue(String source, String destination)

Bir değişken değerini başka bir değişkene yazar.

Source : Okunacak değerin değişken ismidir. Kaynak değişken.

Destination : Değer yazılacak değişken ismidir. Hedef değişken.

#### Syntax

```javascript
ins.mapVariableValue("UNIT01_Active_Power","UNIT01_Active_Power_Set");
```

#### ins.mapVariableValue(String source, String destination, var defaultvalue)

Kaynak değişkenin okunamadığı durumda, hedef değişkene varsayılan bir değer yazar.

```javascript
ins.mapVariableValue("UNIT01_Active_Power","UNIT01_Active_Power_Set",-1);

```
