Ekran ifadeleri bir ekran nesnesinin özelliğini tarayıcıda hesaplar. Onları Tag Binding penceresinin Advanced
sekmesinde yazarsınız (bkz. İfade yazma).
Sinyaller
| Biçim | Anlamı |
|---|
Tags.get('Plant.Tank.Level') | Bir sinyalin değeri; tags.get ve Tag.get de çalışır. Ad bir ifade olabilir, örneğin bir CONCAT. |
Plant.Tank.Level | Aynısı, Tags.get olmadan yazılmış |
value | Tag to bind altında seçilen sinyalin değeri |
#p# | Bir sembolün parametresi (bkz. Semboller) |
Bir sinyalin bir parçası ada eklenerek okunur:
| Parça | Değer |
|---|
.quality | Sayı olarak kalite |
.raw_value | Ölçeklemeden önceki ham değer |
.timestamp | Değerin zamanı |
.source_time | Cihazdan gelen zaman |
.unit | Birim |
Örneğin Tags.get('Pump1.Speed.quality').
Değerler
| Tür | Yazılışı |
|---|
| Sayı | 12, 1.5 (.5 değil, üs yok) |
| Metin | 'metin' ya da "metin"; \' bir tırnak yazar |
| Doğruluk değeri | true, false |
| Hiçbir şey | null |
null, false, 0 ve boş metin bir koşulda yanlış sayılır; geri kalan her şey doğru sayılır.
İşleçler
En zayıftan en güçlüye:
| Sıra | İşleçler | Not |
|---|
| 1 | OR, ||, | | Sol değer doğruysa onu, değilse sağ değeri verir |
| 2 | XOR | Yalnız bir yan doğruysa doğru |
| 3 | AND, &&, & | Sol doğruysa sağ değeri, değilse yanlış verir |
| 4 | NOT, ! | Bir koşulu tersine çevirir |
| 5 | =, ==, !=, <>, <, <=, >, >= | Karşılaştırma; = karşılaştırır, atama yapmaz; === ve !== == ve != gibi çalışır |
| 6 | +, - | Bir yan metinse + metinleri birleştirir |
| 7 | *, /, % | Sıfıra bölme bir şey döndürmez |
| 8 | Değerden önce - | Eksi |
Parantezler sırayı değiştirir. İşlev adları ve anahtar sözcükler büyük ya da küçük harfle yazılabilir.
Koşul
| İşlev | Sonuç |
|---|
if(koşul, a, b) | Koşul doğruysa a, değilse b; IIF de çalışır |
a ve b'nin ikisi de hesaplanır.
Metin işlevleri
| İşlev | Sonuç |
|---|
FORMAT(şablon, değerler…) | Değerler yerleştirilmiş metin: %s metin, %d tam sayı, %f ondalık (%.1f tek ondalık), %% yüzde işareti |
CONCAT(a, b, …) | Metin olarak birleştirilmiş değerler; hiçbir şey boş metin sayılır |
STR(x) | Metin olarak x |
NUM(x) | Sayı olarak x |
BOOL(x) | Doğruluk değeri olarak x |
LEN(s) | Karakter sayısı |
UPPER(s), LOWER(s), TRIM(s) | Büyük harf, küçük harf, iki uçtaki boşluklar olmadan |
CONTAINS(s, parça) | s parça'yı içeriyorsa doğru |
STARTSWITH(s, parça), ENDSWITH(s, parça) | s parça ile başlıyor ya da bitiyorsa doğru |
REPLACE(s, eski, yeni) | Her eski'si yeni ile değiştirilmiş s |
SUBSTR(s, başlangıç, bitiş) | başlangıç'tan bitiş'e kadar, bitiş hariç karakterler (0'dan sayılır; bitiş isteğe bağlı) |
Sayı işlevleri
| İşlev | Sonuç |
|---|
ABS(x) | İşaretsiz değer |
FLOOR(x), CEIL(x) | Aşağı yuvarlanmış, yukarı yuvarlanmış |
ROUND(x, ondalık) | ondalık basamağa yuvarlanmış (yazılmazsa 0) |
MIN(a, b, …), MAX(a, b, …) | En küçük, en büyük |
CLAMP(x, en_az, en_çok) | en_az ile en_çok arasında tutulan x |
SQRT(x) | Karekök |
POW(x, y) | x üssü y |
MAP(x, giriş_en_az, giriş_en_çok, çıkış_en_az, çıkış_en_çok) | giriş_en_az…giriş_en_çok aralığından çıkış_en_az…çıkış_en_çok aralığına doğrusal ölçeklenen x. Sonuç çıkış aralığıyla sınırlanmaz; bunun için CLAMP kullanın. giriş_en_az ile giriş_en_çok eşitse sonuç çıkış_en_az olur |
LERP(a, b, t) | a + (b - a) × t: t = 0 için a, t = 1 için b |
Bit işlevi
| İşlev | Sonuç |
|---|
BIT(değer, n) | değer'in tam kısmının n. biti (0'dan sayılır) 1 ise doğru |
Örnekler
| İfade | Kullanım |
|---|
if(value > 80, '#ef4444', '#22c55e') | 80'in üstünde kırmızı, değilse yeşil |
FORMAT('%.1f %s', value, Tags.get('Tank.Level.unit')) | Tek ondalıklı değer ve birimi |
BIT(Tags.get('Pump1.Status'), 3) | Bir durum sözcüğünün 3. biti |
CLAMP(value / 10, 0, 100) | 0 ile 100 arasında tutulan ölçeklenmiş bir değer |
CLAMP(MAP(value, 4, 20, 0, 10), 0, 10) | 4–20 mA sinyalin 0–10 bar olarak gösterimi; 12 mA 5 verir |
Bilmekte fayda var
- Hesaplanamayan bir ifade bir şey döndürmez ve özellik tasarım değerini korur.
BOOL('false') doğrudur: yalnız boş metin yanlış sayılır.