System SZARP - dokumentacja techniczna: SZARP v.3.1 | ||
---|---|---|
Poprzedni | Rozdział 6. Składnia formuł parametrów definiowalnych | Następny |
W skryptach LUA dostępne są następujące funkcje:
p(name, t, pt) - funkcja zwraca wartość innego parametru z bazy danych. Kolejne parametry:
nazwa parametru (prefiksowana nazwą bazy),
czas próbki do pobrania,
typ średniej,
v = p("swid:Sieć:Sterownik:temperatura wody powrotnej z sieci c.o.", t, pt) v = v + p("swid:Sieć:Sterownik:temperatura wody wyjściowej do sieci c.o.", t, pt) v = v / 2
i(name) - funkcja zwraca wartość danego parametru podanego jako argument z pamięci współdzielonej. Dostępna tylko w parametrach definiowalnych na poziomie programu parcook. Przykład pobierający wartość parametru z pamięci współdzielonej:
v = i("Sieć:Sterownik:temperatura wody powrotnej z sieci c.o.")
hs(name, start_time, end_time, pt) - "hoursum", funkcja zwraca całkę za zakres czasu (tylko baza sz3), wynik jest zawsze w jednostkach *1h. Funkcja przydatna w przypadku wyliczania całek za duże okresy czasu - działa szybciej niż analogiczna pętla for oraz ręczne całkowanie w LUA. Funkcja interpoluje w przypadku wystąpienia NODATA, nigdy nie ekstrapoluje - w związku z tym jeśli jeśli pod koniec zadanego zakresu występują NODATA to wynik wyliczenia hs może się zmienić gdy pojawią się nowe próbki - należy to mieć w pamięci w przypadku użycia hs() w sekcji defined. Kolejne parametry:
nazwa parametru (prefiksowana nazwą bazy),
początek zakresu czasu całki,
koniec zakresu czasu całki - jeśli koniec jest równy początkowi, to wartość całki będzie 0,
typ średniej - dla dobrej dokładności najlepiej używać PT_MIN10 w przypadku sz3; niezależnie od typu średniej wynik jest w jednostkach *1h.
local last_hour = szb_round_time(t, PT_HOUR) local last_day_hour = szb_move_time(last_hour, -1, PT_DAY) v = hs("baza:Sieć:Sterownik:Moc chwilowa", last_day_hour, last_hour, PT_MIN10)
szb_move_time(t, count, pt) funkcja zwraca czas przesunięty o określoną liczbę okresów średniej. Kolejne parametry:
czas odniesienia,
liczba okresów, o które należy przesunąć czas odniesienia (dozwolone są wartości dodatnie i ujemne),
typ średniej,
local j = 5 local i = j local tmptime = t v = 0 while i > 0 do v = v + p("swid:Sieć:Sterownik:temperatura wody powrotnej z sieci c.o.", tmptime, pt) i = i - 1 tmptime = szb_move_time(tmptime, -1, pt) end v = v / j
szb_round_time(t, pt) - funkcja zwraca czas zaokrąglony do odpowiedniego typu średniej. Kolejne parametry:
czas do zaokrąglenia,
typ średniej,
local tmptime = szb_round_time(t, PT_MONTH) v = p("swid:Sieć:Sterownik:temperatura wody powrotnej z sieci c.o.", tmptime, PT_MONTH)
szb_search_first(name) - funkcja zwraca czas wystąpienia pierwszej wartości podanego jako argument parametru.
szb_search_last(name) - funkcja zwraca czas wystąpienia ostatniej wartości podanego jako argument parametru.
szb_search_left(name, t, pt) - funkcja zwraca czas wystąpienia najbliższej w czasie wartości podanego jako argument parametru, wstecz od podanego czasu.
szb_search_right(name, t, pt) - funkcja zwraca czas wystąpienia najbliższej w czasie wartości podanego jako argument parametru, naprzód od podanego czasu.
isnan(x) - sprawdza, czy podana jako argument liczba, jest prawidłową wartością liczbową.
nan() - zwraca niepoprawną wartość liczbową. Przykład użycia isnan i nan:
local pv = i("swid:Sieć:Sterownik:temperatura wody powrotnej z sieci c.o.") if isnan(pv) then v = 0 elseif pv == 1 then v = 1 else v = nan() end
Poprzedni | Spis treści | Następny |
Parametry definiowalne LUA | Początek rozdziału | Przykłady wpisów w params.xml |