4.6. Wreszcie coś ciekawego.

Wiemy już mniej więcej jak wyglądają parametry od strony programu przeglądającego i widzieliśmy kilka przykładów formuł. Ale tak naprawdę nie możemy zrobić ciągle niczego wartego uwagi; możemy robić parametry których wartości zależą od czasu, parametry które przyjmują wartości zależne od tego dla jakich średnich je liczymy, ale ciągle jest to za mało.

Potrzebna nam jest możliwość odwołania się w naszych formułach do innych parametrów programu SZARP. Przez inne parametry rozumiemy tutaj zarówno parametry zgromadzone w bazie danych SZARPa a także inne parametry definiowalne.

Szybki przykład, zróbmy parametr:

v = p("xxxx:Sieć:Sterownik temperatura zewnętrzna, t, pt)

Notatka: Tekstu p(...) nie wpisujemy, aby uzyskać żądany efekt, w oknie edycji parametru klikamy w przycisk <W> i pokazanej listy wybieramy wykres temperatury zewnętrznej, a dostaniemy to o co chodzi.

Wprowadzamy nowy parametr i widzimy, że ten nasz parametr jest wierną kopią parametru 'temperatura zewnętrzna'.

Co tu się dzieje?

W naszym parametrze odwołaliśmy się do wartości innego parametru. To właśnie robi konstrukcja p("xxxx:Sieć:Sterownik temperatura zewnętrzna, t, pt), a konkretnie funkcja p. Funkcja p pobiera wartości parametru, przyjmuje ona 3 parametry:

W drugim i trzecim argumencie chodzi dokładnie o to samo, co omawialiśmy w dwóch poprzednich punktach. Żeby pobrać wartość parametru trzeba określić o jaki czas oraz o jaką średnią nam chodzi, w ten sam sposób jak określa to draw3 gdy pyta nasz parameter o wartość.

W naszym wywołaniu p("xxxx:Sieć:Sterownik temperatura zewnętrzna, t, pt), jako czas podaliśmy wartość zmiennej t, a jako średnią wartość zmiennej pt. Czyli powiedzieliśmy, że chcemy uzyskać wartość temperatury zewnętrznej dla takiej chwili w czasie i takiej średniej, o jaką zapytał nasz parametr program przeglądający. Jeżeli program przeglądający zapyta - chcę średnią 10-minutową dla Twojego parametru dla godziny 08:40 - to nasz parametr zwróci 10-minutową średnią temperatury zewnętrznej dla 08:40.

Moglibyśmy też np. napisać p("xxxx:Sieć:Sterownik temperatura zewnętrzna, t, PT_MONTH) wtedy, niezależnie od tego o jaki rodzaj średnich zapyta nas program przeglądający, my będziemy zwracać średnią wartość miesięczną.

Uzbrojeni w tę wiedzę możemy już robić ciekawsze parametry, np. banalny parametr liczący średnią prędkość rusztu:

	v = (p("xxxx:Kocioł 3:Sterownik:Prędkość lewego rusztu", t, pt) 
		+ p("xxxx:Kocioł 3:Sterownik:Prędkość prawego rusztu", t, pt)) / 2

Parametr określający zalecane otwarcie strefy:

local v1 = p("xxx:Kocioł 1:Sterownik:Długość strefy spalania", t, pt)
if v1 < 3
 then
  v = 0
 else
  if v1 > 4
   then
    v = 100
   else
    v = (v1 * 100) % 300
  end
end