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
	...
	cd definicji typow probek
	...
	local szb_move_time = szb_move_time
	...
	cd definicji dostepnych funkcji
	...
	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) * 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łą) oraz typ średniej. 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: