6.4. Parametry definiowalne LUA

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.

6.4.1. Wykaz predefiniowanych zmiennych

W skryptach LUA są dostępne następujące predefiniowane zmienne: