Moduł zużycia mediów

Moduł EMS oprogramowania pozwala śledzić oraz rejestrować zużycie energii, oraz innych mediów w określonej jednostce czasu. Głównym źródłem danych są mierniki, analizatory oraz liczniki, które raportują wartości przyrostowe w postaci liczydeł.

Do zrozumienia zasady działania modułu należy przyswoić podstawowe założenia i pojęcia. W systemie funkcjonują rzeczy (ang. Things), kanały (ang. Channels) oraz punkty danych (ang. Item). Rzeczy są to elementy, które służą do pozyskiwania danych i informacji. Często spotykaną rzeczą jest licznik z interfejsem np. modbus. Licznik taki zazwyczaj oferuje kilka różnych rejestrów, które reprezentują różne odczyty. W tym właśnie celu w systemie funkcjonuje pojęcie kanału (ang. Channel).

Kanał to unikalny wskaźnik na daną lub informację udostępnianą przez rzecz (Thing). Dla licznika będzie to pobrana energia, odczyt aktualnego poboru mocy itp. Co do zasady stan kanału powinien być łatwy do interpretacji tj. odwzorowywać wartość, która jest możliwa do interpretacji bez dodatkowego nakładu pracy (np. Liczba, Tekst, Data i Czas) Każdy z wymaganych rejestrów można odzwierciedlić jako właśnie kanał.

Punkt danych to Item, w systemach typu SCADA może on być również określany jako tag. Item pozwala na powiązanie danych z kanału oraz stworzenie struktury punktów niezależnej od urządzeń pomiarowych / źródeł danych. Powiązanie pomiędzy punktem a kanałem to po prostu Link.

Domyślna konfiguracja zapisu

Odczyty generowanie z poziomu rzeczy (ang. Things) generują zdarzenia. Zdarzenia te zawierają informację o wartości, która znajduje się w danym kanale (ang. Channel).

W systemie może funkcjonować zapis danych oparty o kilka podejść:

  • Zapis cykliczny (np. co minutę)

  • Zapis każdego odczytu (every update)

  • Zapis każdej zmiany (every change)

Różnica pomiędzy pierwszymi dwoma sposobami a ostatnim to ilość zduplikowanych rekordów. Zapis "every change" gwarantuje minimalną nadmiarowość danych oraz minimalizuje obciążenie dysku, a także procesora systemu. W przypadku korzystania z zapisu "every update" ilość zapisów w bazie danych będzie równa liczbie odczytów. Wraz z przyrostem historii odczytów w sposób liniowy rośnie również użycie przestrzeni dyskowej.

Standardowa konfiguracja odczytów zależy od wdrożenia. Czynniki wpływające na to, to sposób dostępu do urządzeń (rodzaj interfejsu), wydajności magistrali komunikacyjnej, a także jej faktyczne obciążenie. W większości przypadków, jeżeli infrastruktura na to pozwala, liczydła są odczytywane co 45s. Oznacza to, że w przypadku gdy licznik rejestruje zużycie, system jest w stanie wskazać jego wystąpienie do tego czasu. W trakcie wizualizowania zużycia przyrosty będą widoczne co 45s. Można wówczas również założyć, że system będzie miał przynajmniej jeden zarejestrowany odczyt liczydła w każdej minucie.

Im częstsze próbokwanie, tym mniejsza jest "bezwładność" systemu w generowaniu sprzężenia zwrotnego (np. alarmu). Próbkowanie co 45-60s jest wystarczające do szybkiego zareagowania na ewentualne przekroczenia w standardowym przedziale 15 m. Równocześnie nie generuje ono nadmiernego obciążenia dla systemu operacyjnego.

Moduł zliczania zużycia

Modułu zliczania zużycia automatycznie oblicza różnicę na liczydle w zdefiniowanym przedziale czasu. Odjemną (podstawą odejmowania) jest stan liczydła z bieżącego przedziału czasowego a odjemnikiem wartość z poprzedniego przedziału. Operacja ta jest powtarzana co określony interwał czasu. System po starcie przelicza wszystkie okresy dla wszystkich zarejestrowanych odczytów. W trakcie działania system oblicza tylko najbliższy okres (bieżący rok, miesiąc, dzień itp).

Konstrukcja przedziałów czasowych

W systemie są zdefiniowane przedziały czasowe, dla których można przeprowadzać obliczenia. Zużycie dla każdego z liczydeł może być liczone dla dowolnego z poniższych przedziałów. Domyślnie zliczanie energii odbywa się dla przedziałów Rok, Miesiąc, Dzień oraz Godzina.

Table 1. Tabela przedziałów czasowych
Przedział Początek Koniec

Rok

01 stycznia 00:00:00.000

31 grudnia 23:59:59.999

Miesiąc

01 stycznia 00:00:00.000

31 stycznia 23:59:59.999

Tydzień (dla 2024 r.)

01 stycznia 00:00:00.000 (poniedziałek)

07 stycznia 23:59:59.999 (niedziela)

Dzień

01 stycznia 00:00:00.000

01 stycznia 23:59:59.999

Godzina

01 stycznia 00:00:00.000

01 stycznia 00:59:59.999

Pół godziny

01 stycznia 00:00:00.000

01 stycznia 00:29:59.999

Kwadrans

01 stycznia 00:00:00.000

01 stycznia 00:14:59.999

Minuta

01 stycznia 00:00:00.000

01 stycznia 00:00:59.999

Sekunda

01 stycznia 00:00:00.000

01 stycznia 00:00:00.999

Zależnie od wybranych przedziałów dla liczydła są tworzone "punkty wirtualne". Punkty te nie są bezpośrednio powiązane z kanałami (rejestrami) liczników. Wartości dla tych punktów są obliczane przez system.

Częstotliwość odświeżania punktów wirtualnych

Punkty wirtualne są odświeżane cyklicznie, przynajmniej co minutę. Oznacza to, że jeśli liczydła się zmieniają i odczyty zgłaszają nowe wartości to, w ciągu minuty od aktualizacji liczydła powinno nastąpić przeliczenie. Ze względów wydajnościowych częstotliwość odświeżania jest zależna od przedziału czasowego.

Table 2. Tabela częstotliwości odświeżania
Przedział Częstotliwość obliczania Ilość obliczanych przedziałów

Rok

1h

1

Miesiąc

15m

1

Tydzień

15m

1

Dzień

1m

1

Godzina

1m

1

Pół godziny

1m

1

Kwadrans

1m

1

Minuta

1m

1

Sekunda

1m

60

Częstotliwość odświeżania jest dobrana w sposób, który gwarantuje stabilne działanie systemu. Ze względu na różnice w częstotliwości przeliczania system może prezentować drobne różnice pomiędzy wartościami dzień-miesiąc-rok. Różnice te znikają po zamknięciu danego okresu (np. dnia lub miesiąca). Dlatego też ostatni okres tj. bierzący rok jest podany w przybliżeniu do około 1h.

Przykładowe obliczenie

Poniższa tabela prezentuje przykładowe dane zarejestrowane w systemie oraz obrazuje logikę jego działania. Domyślna struktura bazy danych to tabela i ma ona układ wierszowy. Każde liczydło to oddzielna tabela w bazie danych. Odczyty liczydła są zapisywane w kolejnych wierszach tabeli.

Table 3. Przykładowe dane zarejestrowane w systemie
Czas Wartość

31.12.2023 23:59:20.501

50103,20 [kWh]

01.01.2024 00:00:15.105

50104,02 [kWh]

…​

…​

01.01.2024 00:00:58.302

50104,02 [kWh]

01.01.2024 00:01:15.105

50104,04 [kWh]

Dla obliczenia zużycia w przedziale 01.01.2024 00:00:00.000-01.01.2024 00:59:59.999 (godzina) system wykorzysta poniższe rekordy:

Table 4. Rekordy wybrane do obliczenia pierwszego przedziału czasowego

31.12.2023 23:59:20.501

50103,20 [kWh]

01.01.2024 00:00:58.302

50104,02 [kWh]

Wynik obliczenia to 50104,02-50103,20=0,82 [kWh].

W przypadku obliczania zużycia w kolejnym przedziale tj. 01.01.2024 01:00:00.000-01.01.2024 01:59:59.999 system wykorzysta wartość 50104,02 jako odjemną. Zakładając brak kolejnych odczytów, przedział ten zostanie obliczony z poniższych wierszy:

Table 5. Rekordy wybrane do obliczenia kolejnego czasowego

01.01.2024 00:00:58.302

50104,02 [kWh]

01.01.2024 00:01:15.105

50104,04 [kWh]

Wynik obliczenia to 50104,04-50104,02=0,02 [kWh].

Obliczanie zużycia w ten sposób gwarantuje spójność wyników, ponieważ odjemna z jednego okresu staje się odjemnikiem w kolejnym.

W przypadku gdy w danym okresie nie ma zarejestrowanego liczydła, system zakłada w tym okresie 0 jednostek. Braku zarejestrowanego odczytu może wynikać z przerwy w pracy. Na przykład: po dwóch dniach przerwy (sobota-niedziela) i braku obciążenia obwodu pomiarowego, pierwsze zużycie dzienne w poniedziałek będzie wykorzystywało ostatni stan liczydła z piątku.

Funkcjonalność raportowa

Raporty zużycia korzystają z zarejestrowanych liczydeł. To znaczy, że nie są one obarczone problemem opóźnień w przeliczaniu. Raporty zawsze są generowane z wartości zarejestrowanych liczydeł, z pominięciem wcześniejszych przeliczeń. To dlatego wraz ze zwiększeniem liczby odczytów generowanie raportów stopniowo spowalnia. Wynika to z konieczności odczytania dłuższej liczby wierszy w tabelach baz danych.

Kolumny w raporcie zawierają kilka kolumn, poniżej znajduje się ich opis:

  • item - element (licznik), dla którego został wygenerowany wiersz

  • period - okres raportu

  • value - wartość zużycia

  • startDate - data liczydła w poprzednim okresie

  • startTime - czas ostatniej zmiany liczydła w poprzednim okresie

  • startCounter - wartość liczydła w poprzednim okresie (odjemnik)

  • endDate - data liczydła w okresie aktualnym

  • endTime - czas ostatniej zmiany liczydła w bieżącym okresie

  • endCounter - wartość liczydła w aktualnym okresie (odjemna)

  • unit - jednostka wyniku (kolumny value)

Logika wykorzystywana do generowania raportów jest tożsama z tą wykorzystywaną do prezentowania danych.