Dahili sinyal ifade söz dizimi
Bir ifade sinyali değerini başka sinyallerden bir formülle hesaplar, örneğin {T101.Level} * 0.01 * 120. Sunucu onu
girdilerinden biri her değiştiğinde değerlendirir. Nasıl oluşturulduğu Dahili sinyaller sayfasında
anlatılır.
Ekranlarda nesneleri canlandıran ifadeler başka bir söz dizimi kullanır; bu sayfa yalnız ifade sinyalleri için geçerlidir.
Sinyal başvuruları
| Biçim | Örnek | Not |
|---|---|---|
| Süslü parantezde | {Line1.Pump1.Current} | Her zaman çalışır; rakamla başlayan yol parçaları için de, örneğin {1A.Feeder} |
| Çıplak yol | Line1.Pump1.Current | Harfle ya da _ ile başlamalıdır |
Bir yol, noktalarla ayrılmış harf, rakam ve _ parçalarından oluşur. Hemen ardından ( gelen bir ad sinyal değil
işlevdir. Bir ifade kendi sinyaline başvuramaz.
Sabitler
| Tür | Örnekler |
|---|---|
| Sayı | 12, 1.5, .5, 1.5e3 |
| Metin | 'AUTO', "AUTO" (kaçış karakteri yok) |
| Mantıksal | true, false (büyük-küçük harf fark etmez) |
İşleçler
En düşük öncelikten en yükseğe:
| Öncelik | İşleçler | Anlamı |
|---|---|---|
| 1 | or, || | Mantıksal veya |
| 2 | and, && | Mantıksal ve |
| 3 | not, ! | Mantıksal değil |
| 4 | ==, !=, <, <=, >, >= | Karşılaştırma |
| 5 | +, - | Toplama, çıkarma; metinle + metinleri birleştirir |
| 6 | *, /, % | Çarpma, bölme, kalan |
| 7 | - (önde) | Negatif değer |
not bir karşılaştırmadan daha gevşek bağlanır: not {A} == 1, not ({A} == 1) demektir. Emin değilseniz parantez
kullanın.
İşlevler
İşlev adları büyük-küçük harf fark etmeden yazılabilir.
| İşlev | Bağımsız değişken | Sonuç |
|---|---|---|
if(c, a, b) | tam 3 | c doğruysa a, değilse b; yalnız seçilen dal hesaplanır |
min(x, …) | 1 ya da daha çok | En küçük değer |
max(x, …) | 1 ya da daha çok | En büyük değer |
abs(x) | 1 | Mutlak değer |
floor(x) | 1 | Aşağı yuvarlanmış |
ceil(x) | 1 | Yukarı yuvarlanmış |
round(x), round(x, n) | 1 ya da 2 | n ondalığa yuvarlanmış (varsayılan 0, en çok 15) |
Tip kuralları
- Hesaplamalarda mantıksal değer 1 ya da 0 sayılır, metin sayı olarak okunur. Sayı olmayan bir metin hatadır.
- İki metin alfabetik karşılaştırılır; aksi halde değerler sayı olarak karşılaştırılır. Bir metin sayı olarak
okunamazsa
==yanlış,!=doğrudur. - Koşul olarak bir sayı 0 değilse, bir metin boş,
0ya dafalsedeğilse doğrudur. - Sonuç sinyalin veri tipine çevrilir. Tam sayı tipleri yuvarlar; tipin aralığı dışındaki bir sonuç hata sayılır.
Eksik ve kötü girdiler
- Herhangi bir girdinin değeri yoksa ya da kalitesi kötüyse ifade hesaplanmaz. Sinyal son iyi değerini Bad
kalitesiyle korur ya da hiç değeri olmadıysa değersiz kalır. Bu,
if'in kullanılmayan dalındakiler dahil tüm girdiler için geçerlidir. - Sıfıra bölme ya da sıfıra göre kalan ve sonlu sayı olmayan bir sonuç da aynı etkiyle hata sayılır.
Sınırlar
| Sınır | Değer |
|---|---|
| İfadenin uzunluğu | 4096 karakter |
| Farklı girdi sinyali | 64 |
| İç içe parantez ve işlev | 32 düzey |
| Formülün derinliği | 64 düzey, örneğin tek zincirde 63 işleç |
Hatalar
Konfigürasyon editörü ifadeyi, konfigürasyonu doğruladığınızda ya da uyguladığınızda denetler. İleti karakter konumunu ve
sorunu belirtir, örneğin 12. karakterde bilinmeyen bir sqrt işlevi.