Rozdział 6. Składnia formuł parametrów definiowalnych

Spis treści
6.1. Składnia formuł typu DRAWDEFINABLE
6.2. Składnia formuł typu RPN
6.3. Przykłady formuł definiowalnych DRAWDEFINABLE
6.4. Parametry definiowalne LUA
6.4.1. Wykaz predefiniowanych zmiennych
6.4.2. Wykaz dostępnych funkcji
6.4.3. Przykłady wpisów w params.xml

Składnia formuł parametrów definiowalnych przyjmuje nieco różną postać w zależności od typu parametru (RPN, DRAWDEFINABLE lub LUA), w którym dana formuła jest definiowana.

6.1. Składnia formuł typu DRAWDEFINABLE

Formuły typu DRAWDEFINABLE są zapisywane jako formuły matematyczne w odwrotnej notacji polskiej (ang. reverse polish notation - RPN). Oznacza to, iż przetwarzanie formuły odbywa się na stosie, na którym budowana jest jej reprezentacja. Wystąpienie liczby (czy to podanej jako stała, czy to jako parametr z bazy danych SZARP-a) powoduje odłożenie jej na szczyt stosu, zaś wystąpienie operatora powoduje zdjęcie ze stosu odpowiedniej liczby parametrów (zależnej od rodzaju operatora), wykonanie operacji odpowiadającej danemu operatorowi, a następnie odłożenie wyniku na szczyt stosu. Przykładowo sumę trzech liczb w RPN przedstawić można następująco:

1 2 + 3 +
            
W ten sposób wykonane zostanie dodanie liczby 1 do liczby 2, ich suma zostanie odłożona na szczyt stosu, a następnie do niej zostanie dodana liczba 3. Na kolejność wykonywania operacji można wpływać zmieniając kolejność argumentów w formule. Powyższy przykład można przepisać następująco:
1 2 3 + +
            
W tym momencie na stos zostaną w kolejności odłożone liczby 1, 2 i 3 (na szczycie stosu będzie znajdować się liczba 3), następnie zostanie wykonane dodawanie liczb 2 i 3, a do ich sumy zostanie dodana liczba 1.

W formułach typu DRAWDEFINABLE używać można nie tylko stałych liczbowych, ale także wartości parametrów z bazy danych SZARP-a. W tym celu należy podać nazwę danego parametru w nawiasach okrągłych. Jeśli któraś z części oddzielonych dwukropkami pokrywa się z nazwą parametru definiowalnego, w którym definiujemy daną formułę, można dla wygody zastąpić ją znakiem *. Na przykład jeżeli definiujemy parametr o nazwie "Kocioł 1:Sterownik:stosunek energia/masa", można formułę zapisać następująco:

(Kocioł 1:Sterownik:stosunek energia/objętość) (Kocioł 1:Sterownik:masa nasypowa węgla) / 1000 *
            
Jest to równoważne skróconemu zapisowi następującej postaci:
(*:*:stosunek energia/objętość) (*:*:masa nasypowa węgla) / 1000 *
            

Formuły DRAWDEFINABLE dają możliwość skorzystania z bardzo bogatego zestawu operatorów. Oprócz standardowych operatorów matematycznych (+, -, *, /) dostępne są następujące operatory mające specjalne znaczenie: