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.
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:
& - zamienia miejscami dwa parametry na szczycie stosu,
! - powiela parametr ze szczytu stosu,
$ - oznacza wywołanie funkcji, której numer podany jest na szczycie stosu, liczba argumentów podawana jest jako drugi od góry element stosu, a argumenty są kolejnymi elementami na stosie, przetwarzanymi w kolejności od parametru najniżej na stosie do parametru najwyżej na stosie; dostępne funkcje to:
0 - przyjmuje trzy argumenty; zwraca współczynnik Fi, przez który należy pomnożyć aktualną moc obliczeniową obiektu, aby otrzymać moc dla zadanych warunków atmosferycznych; warunki atmosferyczne podaje się w postaci trzech argumentów: aktualnej pogody (dozwolone wartości to: 0 - pochmurno, 1 - zmiennie, 2 - słonecznie), prędkości wiatru (w m/s) oraz temperatury zewnętrznej (czy to aktualnej czy średniej z jakiegoś okresu historycznego); funkcja ta uwzględnia jedynie potrzeby na CO - potrzeby CWU nie są uwzględnione, gdyż są one bardzo trudne do przewidzenia; współczynnik zwracany przez tą funkcję jest analogiczny do współczynników, które umieszczane były kiedyś w tabelach określających sposób prowadzenia systemu ciepłowniczego w zależności od warunków atmosferycznych (np. tabele opracowane przez Ministerstwo Gospodarki Materiałowej i Paliwowej w "Zasadach ustalania temperatur wody sieciowej w źródłach ciepła i sieciach ciepłowniczych" z 1987r.),
1 - przyjmuje jeden argument; zwraca temperaturę zasilania dla podanego współczynnika Fi wg poniższej krzywej:
2 - przyjmuje jeden argument; zwraca temperaturę wody powrotnej dla podanego współczynnika Fi wg poniższej krzywej:
3 - przyjmuje jeden argument; dla argumentów dodatnich zwraca wartość argumentu, a dla ujemnych wartość 0,
4 - przyjmuje co najmniej dwa argumenty, przy czym pierwszy z nich oznacza rzeczywistą liczbę argumentów po nim występujących; zwraca sumę tych z podanych parametrów, które nie mają wartości NO_DATA,
5 - przyjmuje co najmniej dwa argumenty, przy czym pierwszy z nich oznacza rzeczywistą liczbę argumentów po nim występujących; zwraca liczbę parametrów, które nie mają wartości NO_DATA,
6 - przyjmuje jeden argument; dla procentowo podanego wypełnienia zbiornika o kształcie walca (taki kształt mają zbiorniki odgazowywacza, których wypełnienie może być liczone przy użyciu tej funkcji) funkcja zwraca objętość wody w nim się znajdującej wg poniższej zależności:
7 - przyjmuje dwa argumenty; z liczby podanej jako pierwszy argument zwraca bit o numerze podanym jako drugi argument.
# - odkłada na szczyt stosu jednocyfrową wartość podaną bezpośrednio (bez spacji) za operatorem i ignoruje wszystkie znaki aż do wystąpienia następnej spacji,
?f - wyrażenie warunkowe: jeśli element ze szczytu stosu ma wartość 0, zwracana jest wartość występująca na drugiej pozycji od góry stosu, w przeciwnym wypadku zwracana jest wartość występująca na trzeciej pozycji od góry stosu,
> - operator porównania większościowego: zwraca 1 jeśli druga od góry wartość na stosie jest większa niż wartość na szczycie stosu, a 0 w przeciwnym wypadku,
< - operator porównania mniejszościowego: zwraca 1 jeśli druga od góry wartość na stosie jest mniejsza niż wartość na szczycie stosu, a 0 w przeciwnym wypadku,
~ - operator porównania równościowego: zwraca 1 jeśli wartość ze szczytu stosu jest równa drugiej od góry wartości na stosie, a 0 w przeciwnym wypadku,
: - składa bitowo dwa górne elementy ze szczytu stosu w jeden o podwójnej długości: parametr ze szczytu stosu jest traktowany jako mniej znaczące słowo wartości wynikowej, a kolejny parametr jako jej bardziej znaczące słowo,
Notatka: Operator : definiuje tak naprawdę oddzielny typ parametru, tzn. składany (ang. combined), który może być zarówno wyświetlany przez raportera, jak i przez program przeglądający. Nie wolno używać operatora : w połączeniu z innymi operatorami, gdyż powoduje to niepoprawne wyliczanie wartości formuły definiowalnej. Jeżeli zachodzi konieczność wykonania jakichś operacji na wartości powstałej przez złożenie bitowe dwóch parametrów, należy to zrobić dwuetapowo: po pierwsze zdefiniować parametr, który będzie służył tylko do złożenia tych wartości, a następnie dopiero jego wartość wykorzystywać w dalszych obliczeniach.
^ - operator potęgowania: podstawą jest element ze szczytu stosu, a wykładnikiem drugi od góry element na stosie; wykładnik musi być nieujemny,
N - operator porównania z wartością NO_DATA: jeśli element na szczycie stosu ma wartość NO_DATA, operator zwraca drugą od góry wartość na stosie, w przeciwnym wypadku zwracany jest element ze szczytu stosu,
X - zwraca wartość NO_DATA,
S - operator sezonu: zwraca wartość 1, jeśli aktualnie ciepłownia pracuje w trybie pracy sezonu letniego, a 0 w przeciwnym wypadku.
Poprzedni | Spis treści | Następny |
Szablony parametrów definiowalnych | Składnia formuł typu RPN |