W pierwszym przykładzie zamieściliśmy uwagę: we wszystkich przykładach, aż do punktu "Średnie jeszcze raz" Sekcja 4.8 zakładamy, że parametr ma opcje 'Średnie liczone jako' ustawiony na wartość 'wynik zastosowania formuły na średnich'.
Teraz czas wyjaśnić o co w tym chodzi.
Przypomnijmy jeszcze raz jak program przeglądający rysuje wykres parametru.
Na początek załóżmy, że jesteśmy na na ekranie rocznym. Program przeglądający musi narysować 12 punktów, średnich miesięcznych dla każdego miesiąca w roku. Wobec tego wywołuje formułę parametru 12 razy za każdy razem ustawiając następujące wartości zmiennych t i pt:
zmienna t = 1 dzień stycznia, godzina 00:00, zmienna pt = PT_MONTH
zmienna t = 1 dzień lutego, godzina 00:00, zmienna pt = PT_MONTH
...
zmienna t = 1 dzień grudnia, godzina 00:00, zmienna pt = PT_MONTH
Gdy będziemy na ekranie miesięcznym, np. na marcu program przeglądający wywoła formułę 31 razy, z takimi parametrami:
zmienna t = 1 dzień stycznia, godzina 00:00, zmienna pt = PT_MONTH
zmienna t = 2 dzień marca, godzina 00:00, zmienna pt = PT_MONTH
zmienna t = 3 dzień marca, godzina 00:00, zmienna pt = PT_MONTH
...
zmienna t = 31 dzień marca, godzina 00:00, zmienna pt = PT_MONTH
Załóżmy teraz, że jesteśmy na okresie dzień, wtedy program zrobi tak:
zmienna t = godzina 00:00, zmienna pt = PT_MIN10
zmienna t = godzina 00:10, zmienna pt = PT_MIN10
zmienna t = godzina 00:20, zmienna pt = PT_MIN10
...
zmienna t = godzina 23:50, zmienna pt = PT_MIN10
Teraz zmieniamy opcje z 'Średnie liczone jako' na 'średnia z zastosowania formuły dla każdej próbki'. Co się zmieniło? Zmiana polega na tym, że program przeglądający zaczyna liczyć średnie "sam". Program przeglądający, niezależnie od tego jaką średnią będziemy rysował, zawsze wywoła formułę dla wartości 10-minutowych i z tak otrzymanych wyników obliczy wartość średnią. Wracając do analizowanego przykładu roku, nasza formuła zostanie wykonana z takimi parametrami:
zmienna t = 1 styczeń, godzina 00:00, zmienna pt = PT_MIN10
zmienna t = 1 styczeń, godzina 00:10, zmienna pt = PT_MIN10
zmienna t = 1 styczeń, godzina 00:20, zmienna pt = PT_MIN10
zmienna t = 1 styczeń, godzina 00:30, zmienna pt = PT_MIN10
...
zmienna t = 1 styczeń, godzina 23:50, zmienna pt = PT_MIN10
zmienna t = 2 styczeń, godzina 00:00, zmienna pt = PT_MIN10
zmienna t = 2 styczeń, godzina 00:10, zmienna pt = PT_MIN10
...
zmienna t = 2 styczeń, godzina 23:50, zmienna pt = PT_MIN10
...
zmienna t = 31 styczeń, godzina 23:50, zmienna pt = PT_MIN10
Notatka: te wyniki zostaną następnie uśrednione i wartość średnia będzie umieszczona jako wartość parametru dla miesiąca styczeń, po czym program ruszy do następnego miesiąca
zmienna t = 1 luty, godzina 00:00, zmienna pt = PT_MIN10
zmienna t = 1 luty, godzina 00:10, zmienna pt = PT_MIN10
zmienna t = 1 luty, godzina 00:20, zmienna pt = PT_MIN10
zmienna t = 1 luty, godzina 00:30, zmienna pt = PT_MIN10
...
zmienna t = 1 luty, godzina 23:50, zmienna pt = PT_MIN10
zmienna t = 2 luty, godzina 00:00, zmienna pt = PT_MIN10
zmienna t = 2 luty, godzina 00:10, zmienna pt = PT_MIN10
zmienna t = 2 luty, godzina 00:20, zmienna pt = PT_MIN10
zmienna t = 2 luty, godzina 00:30, zmienna pt = PT_MIN10
...
zmienna t = 2 luty, godzina 23:50, zmienna pt = PT_MIN10
zmienna t = ostatni dzień lutego, godzina 23:50, zmienna pt = PT_MIN10
Notatka: tu znowu następuje uśrednienie i program rusza dalej
...
Analogicznie będzie dla ekranu miesiąc. Jedynie przypadek dla średnich 10-minutowych nie będzie się niczym różnił.
Notatka: Te 10-minut rozdzielczości bierze się stąd że wartość 10-minutowa jest to największa rozdzielczość z jaką SZARP trzyma dane w archiwum.
Istnieje kilka powodów, dla których w programie przeglądającym (a w ogólności w systemie SZARP) mamy te dwa rodzaje parametrów. Przede wszystkim, niektóre parametry ze względu na swoje cechy łatwiej jest zapisać jako takie, które będzie się liczyć sposobem drugim.
Weźmy np. parametr liczący iloraz wartości jakichś dwóch parametrów (A i B dla uproszczenia). Najprostszy zapis formuły takiego parametru to:
v = p("A", t, pt) / p("B", t, pt)
Co się teraz stanie jak policzymy wartość tego parametru pierwszym sposobem dla np. średniej dobowej? Otrzymamy wynik wykonania następującej operacji:
v = (średnia dobowa parametru A) / (średnia dobowa parametru B)
W większości przypadków jednak to nie będzie to o co nam chodzi, my potrzebujemy wartości:
v = ( (wartość A dla godziny 00:00) / (wartość B dla godziny 00:00) + (wartość A dla godziny 00:10) / (wartość B dla godziny 00:10) + (wartość A dla godziny 00:20) / (wartość B dla godziny 00:20) ... + (wartość A dla godziny 23:50) / (wartość B dla godziny 23:50) ) / (24 * 6)Dokładnie to daje nam drugi sposób. Zapisanie takiej operacji dla parametru, którego średnie liczone są sposobem pierwszym byłoby zadaniem znacznie bardziej czasochłonnym (szczególnie gdybyśmy chcieli, żeby parametr zachowywał się poprawnie dla każdego rodzaju średnich).
Weźmy kolejny przykład parametru:
v = p("xxx:Kocioł 4:Sterownik:Wydajność kotła", t, pt) local i = 1; while isnan(v) and i < 10 do local v1 = p("xxx:Kocioł 4:Sterownik:Wydajność kotła", szb_move_time(t, -i, pt), pt) local v2 = p("xxx:Kocioł 4:Sterownik:Wydajność kotła", szb_move_time(t, i, pt), pt) if isnan(v1) then v = v2 elseif isnan(v2) then v = v1 else v = (v1 + v2) / 2 end i = i + 1 endParametr realizuje proste zadanie - stara się uzupełnić dziury w danych parametru "wydajność kotła". Jeżeli dla danej 10-minutówki w czasie nie ma wartości parametru, to formuła stara się wygenerować ją z wartości leżących obok. W przypadku tej formuły liczenie tej wartości sposobem pierwszym, również nie miałoby sensu.
Poprzedni | Spis treści | Następny |
Podróże w czasie. | Początek rozdziału | Uwaga o wartościach 10 sekundowych. |