| System SZARP - dokumentacja techniczna: SZARP v.3.1 | ||
|---|---|---|
| Poprzedni | Rozdział 6. Składnia formuł parametrów definiowalnych | Następny |
Parametry definiowalne LUA są odpowiednikiem parametrów definiowalnych pozwalającym na zapisanie formuł parametrów w postaci skryptów języka LUA. Skrypt może mieć dowolną zawartość, np. można używać zmiennych pomocniczych (co nie jest dostępne w 'zwykłych' definiowalnych), pętli, wyrażeń warunkowych etc. Celem skryptu jest przypisanie wartości zmiennej v, która jest interpretowana jako wartość wyliczonego parametru. Dokładne odbywa się to poprzez wywołanie poniższego kodu:
return function ()
local p = szbase
local PT_SEC10 = ProbeType.PT_SEC10
local PT_MIN10 = ProbeType.PT_MIN10
local PT_HOUR = ProbeType.PT_HOUR
local PT_HOUR8 = ProbeType.PT_HOUR8
local PT_DAY = ProbeType.PT_DAY
local PT_WEEK = ProbeType.PT_WEEK
local PT_MONTH = ProbeType.PT_MONTH
local PT_CUSTOM = ProbeType.PT_CUSTOM
local szb_move_time = szb_move_time
local state = {}
return function (t,pt)
local v = nil
....
skrypt zawierający formułę
....
return v
end
end
Kolejną cechą parametrów definiowalnych LUA jest to, iż zawsze operują na liczbach zmiennoprzecinkowych w podwójnej precyzji, co jest udogodnieniem w stosunku do 'zwykłych' definiowalnych. Cecha ta występuje zarówno na poziomie parametrów definiowalnych programu przeglądającego, jak i programu parcook.
Parametry definiowalne LUA na poziomie programu przeglądającego pozwalają na znacznie większą swobodę niż 'zwykłe' definiowalne. Między innymi dostępna jest zmienna z przypisanym czasem, dla którego wyliczana jest właśnie próbka, co umożliwia wykorzystanie jej do obliczeń. Dodatkowo dostępne są dwa tryby wyliczania wartości próbki. Próbka może być wyliczona jako średnia z zastosowania formuły do każdej próbki oraz jako wynik zastosowania formuły dla średnich. Przykładowo, jeżeli wyliczamy wartość parametru definiowalnego LUA dla średniej godzinowej, to w pierwszym przypadku zostanie wyliczona wartość każdej średniej z dziesięciu minut i wynik zostanie uśredniony, a w drugim będzie wyliczona będzie tylko wartość dla średniej godzinowej.
Poniżej zamieszczona jest przykładowa formuła parametru definiowalnego LUA:
local tmp = 2
v = p("swid:Sieć:Sterownik:temperatura z tabeli", t, pt, 0) * tmp
Formuła ta przypisuje zmiennej v (czyli wartości zwracanej przez formułę) wartość
parametru swid:Sieć:Sterownik:temperatura z tabeli pomnożoną
przez 2. Funkcja p służy do zwrócenia wartości zadanego parametru. Kolejne argumenty
to: nazwa parametru, czas próbki (w tym przypadku równy czasowi próbki wyliczanej
formułą), typ średniej oraz okres średniej w przypadku średniej typu PT_CUSTOM
(obecnie nie jest wykorzystywany). Zmienne tymczasowe są poprzedzone słowem kluczowym
local. Powoduje to, iż są one zmiennymi lokalnymi dla tej formuły.
Można używać zmiennych globalnych, ale jest to niezalecane ze względów wydajnościowych.W skryptach LUA są dostępne następujące predefiniowane zmienne:
v - zmienna, pod którą ma być zapisana wyliczona wartość formuły.
t - zmienna przechowuje czas, dla którego jest wyliczana wartość formuły. Niedostępne na poziomie parcook.
pt - zmienna przechowuje typ próbki, dla której jest wyliczana wartość formuły. Niedostępne na poziomie parcook.
state - jest to tablica, która zachowuje zawartość między kolejnymi wywołaniami skryptu. Przykładowe użycie:
if state['prev'] == nil then v = 1 state['prev'] = 1 elseif state['prev'] == 1 then v = 2 state['prev'] = 2 else v = nan() state['prev'] = nil endOpis funkcji nan dostępny jest w Sekcja 6.4.2
PT_SEC10 - stała opisująca typ próbki.
PT_MIN10 - stała opisująca typ próbki.
PT_HOUR - jak wyżej.
PT_HOUR8 - jak wyżej.
PT_DAY - jak wyżej.
PT_WEEK - jak wyżej.
PT_MONTH - jak wyżej.
PT_CUSTOM - jak wyżej.
| Poprzedni | Spis treści | Następny |
| Przykłady formuł definiowalnych DRAWDEFINABLE | Początek rozdziału | Wykaz dostępnych funkcji |