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

Spis treści
6.1. Składnia formuł typu RPN-DRAWDEFINABLE
6.2. Składnia formuł typu RPN
6.3. Przykłady formuł definiowalnych RPN-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 (RPN) lub LUA), w którym dana formuła jest definiowana.

Należy też pamiętać o tym:

Ilustruje to poniższy schemat (w źródłach dostępny SVG z warstwami):

6.1. Składnia formuł typu RPN-DRAWDEFINABLE

Formuły typu RPN-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 RPN-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 RPN-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: