Licznik energii i MODBUS

W tej instrukcji przedstawimy jak wykorzystać moduł DOMIQ/Serial-4MB do integracji cyfrowego licznika energii elektrycznej SAIA BURGESS ALE3D5F11 z DOMIQ/Base oraz wyświetlania wartości pomiarowych w aplikacji DOMIQ/Remote na iPhone i DOMIQ/Display.

Funkcje jakie zostały zrealizowane i przedstawione w dalszej części tego dokumentu to:

  • Odczyt i wyświetlanie wartości napięć na poszczególnych fazach
  • Odczyt i wyświetlanie chwilowych obciążeń na poszczególnych fazach
  • Odczyt i wyświetlanie stanu całkowitego licznika energii elektrycznej
  • Utworzenie kasowalnego licznika energii elektrycznej
  • Sygnalizacja zaniku zasilania

Komunikacja urządzeń DOMIQ z licznikiem odbywa się po dwuprzewodowej magistrali przy wykorzystaniu protokołu MODBUS. Do pojedynczego modułu Serial-4MB możliwe jest podłączenie wielu różnych urządzeń, typowo do 32. Każde urządzenie musi mieć nadany indywidualny adres z zakresu 1 127, a wszystkie urządzenia muszą mieć skonfigurowane te same parametry transmisji asynchronicznej (ilość bitów stopu, parzystość, prędkość w bitach na sekundę).

Większość dostępnych urządzeń MODBUS wymaga zewnętrznego zasilania, typowo 24V.

1. Schemat okablowania #

2. Konfiguracja modułu DOMIQ/Base #

Każde urządzenie MODBUS jest widoczne jako zbiór 16-bitowych rejestrów. Funkcje konkretnych rejestrów nie są w żaden sposób zdefiniowane, dla każdego urządzenia wymagana jest dokumentacja.

Moduł DOMIQ/Base wraz z DOMIQ/Serial-4MB stanowi system nadrzędny MODBUS. Każda linia w konfiguracji określa adres urządzenia, numer rejestru oraz format danych w nim umieszczony. Rejestry są cyklicznie odpytywane. Uzyskane dane są przechowywane w stanie Base, zaczynają się od prefiksu MODBUS.

2.1. Tworzenie strony w menu Remote #

Aby wyświetlać wartości pomiarowe z poziomu iPhone należy zdefiniować menu. W tym celu należy wykonać poniższe czynności:

  1. Kliknąć na zakładkę Remote
  2. Dodać nową stronę i nadać jej nazwę
  3. Dodać nową sekcję np. Wskazania licznika
  4. Dodać nową sekcję np. Status

2.2. Wartości napięć na poszczególnych fazach #

Pierwszym krokiem jest odszukanie w dokumentacji licznika numerów rejestrów, gdzie przechowywane są wartości napięć na poszczególnych fazach. Dysponując tymi informacjami można przejść do definiowania odczytu rejestrów.

2.2.1. Definiowanie rejestrów #

  1. Po zalogowaniu do konfiguratora należy wybrać zakładki MODBUS
  2. Kliknij na przycisk Dodaj, aby dodać nową linię odczytu rejestru
  3. W kolumnie Typ należy wybrać typ rejestru. W zależności od typu rejestru wybieramy uint16 dla rejestrów 16-bitowych lub uint32 dla rejestrów 32-bitowych. W tym przypadku należy wybrać typ uint16.
  4. W kolumnie Adres wpisz w formacie dziesiętnym adres urządzenia. Adres zazwyczaj ustawia się bezpośrednio w urządzeniu. W przedstawianym przypadku licznik ma adres 3.
  5. W kolumnie Rejestr wpisz adres rejestru, w którym przechowywana jest wartość napięcia na pierwszej fazie. W przedstawianym przypadku wartość napięcia na pierwszej fazie przechowywana jest w rejestrze 36. UWAGA! Część producentów podaje adresy zaczynając od 1, a część zaczynając od 0. W zakładce MODBUS adresy rejestrów liczone są od 0. SAIA podaje adresy zaczynając od 1, więc w konfiguracji zamiast rejestru 36 należy wpisać 35.
  6. W kolumnie Nazwa należy wpisać unikalny identyfikator rejestru np. voltage1. Identyfikator ten po dodaniu prefiksu MODBUS będzie stanowił nazwę kanału.
  7. W kolumnie Etykieta dodaj krótki opis czego dany odczyt rejestru dotyczy np. Napięcie na fazie 1.
  8. W lewym dolnym rogu ekranu wybieramy prędkość transmisji i rodzaj kontroli parzystości. W opisywanym przypadku prędkość to 19200 bps oraz koniecznie parzystość 8E1.
  9. Dla pozostałych dwóch faz wykonujemy analogicznie punkty od 1. do 8. pamiętając o zmianach adresów rejestrów na numery 40, 45 w punkcie 5. i zmianach nazw w punkcie 11 na voltage2 i voltage3.

Po wykonaniu wszystkich opisanych czynności otrzymamy:

2.2.2. Definiowanie kontrolek #

Aby mieć podgląd wartości napięć w aplikacji Remote należy zdefiniować odpowiednie kontrolki. Aby to zrobić należy wykonać poniższe czynności:

  1. Kliknąć na zakładkę Remote
  2. Odszukać strukturę zdefiniowaną w punkcie 2.1.
  3. Do istniejącej sekcji dodać element kanałowy Value.
  4. Kliknąć dwukrotnie na dodanym elemencie i uzupełnić jego właściwości.
  5. W polu kanał wpisz nazwę kanału wybraną w czasie konfiguracji odczytu rejestrów:
  6. Punkty 3. do 5. powtarzamy analogicznie dla pozostałych faz.

Po zapisaniu ustawień konfiguratora otrzymamy następujący efekt w menu:

2.3. Chwilowe obciążenia na poszczególnych fazach #

Odczyt i wyświetlanie obciążenia na poszczególnych fazach jest realizowany analogicznie do odczytu napięć przedstawionego w podpunkcie 2.2.

2.3.1. Definiowanie rejestrów #

  1. Należy podać adresy rejestrów, gdzie przechowywane są wartości obciążeń na fazach, w tym przypadku: 35, 42 oraz 47.
  2. Należy dodać współczynnik Gain (wzmocnienie) równy 0.01, zgodnie z dokumentacją.

2.3.2. Definiowanie kontrolek #

Należy odpowiednio do nadanych nazw zmodyfikować pola Kanał w elementach Value np. jeżeli do odczytu rejestru nadano nazwę moc1, to w polu kanał należy wpisać wartość: MODBUS.moc1.

2.4. Licznik całkowity energii elektrycznej #

Konfiguracja odczytu stanu całkowitego licznika energii elektrycznej przebiega analogicznie do procedury przedstawionej w punkcie 2.2 z uwzględnieniem następujących zmian.

2.4.1. Definiowanie rejestrów #

  1. Typ rejestru to uint32 – wartość zużytej energii przechowywana jest w dwóch rejestrach 16-bitowych.
  2. Współczynnik Gain jest równy 0.01, aby wartość wyrażona była w kWh.
  3. Adres odpowiedniej pary rejestrów. W tym przypadku jest to para rejestrów 31 i 32.
  4. Identyfikator odczytu rejestru

2.4.2. Definiowanie kontrolek #

Odpowiednio do nadanych nazw w zakładce MODBUS należy zmodyfikować pola Kanał w elemencie Value. Jeżeli do odczytu rejestru nadano nazwę energia, to w polu Kanał należy wpisać wartość MODBUS.energia.

2.5. Kasowalny licznik energii elektrycznej #

Kasowalny licznik energii elektrycznej pozwala na wygodny pomiar zużycia energii elektrycznej na dowolnym odcinku czasu np. pomiar godzinowy, dzienny, tygodniowy, miesięczny itd.

Najprostsza implementacja takiego licznika wymaga zapamiętania aktualnej wartości w momencie kasowania licznika. Zapamiętana wartość jest następnie odejmowana od wartości aktualnej a wynik tego odejmowania jest prezentowany jako „kasowalny licznik”.

W DOMIQ/Base do trwałego zapamiętywania zmiennych służą kanały MEM. Wartość umieszczona w takim kanale jest pamiętana aż do kolejnej zmiany.

Aktualną wartość licznika najlepiej umieścić w kanale VAR – zmiennych ulotnych.

Do przepisywania wartości i obliczania różnicy wykorzystany zostanie moduł Logika.

2.5.1. Reguły logiczne #

W tym celu należy kliknąć na zakładkę Logika, dodać poniższy kod oraz kliknąć przycisk Zapisz.

-- definiowanie zmiennych --
licznik = use 'MODBUS.energia'
zapis = use 'MEM.energia'
delta = use 'VAR.energia'

-- definiowanie funkcji --
-- funkcja kasowania licznika --
function clear()
zapis:set(licznik.value)
delta:set(0)
end

-- funkcja obliczania zużycia energii po wyzerowaniu licznika--
function licznik:onchange(new)
delta:set(new - zapis.value)
end

Tekst zapisany pomiędzy znakami „–” jest komentarzem.

Funkcja clear będzie wywoływana po naciśnięciu przycisku kasowania licznika, który zostanie utworzony w dalszej części opisu. Odpowiada ona za zapisanie aktualnego stanu licznika niekasowalnego, pamiętanego w zmiennej zapis oraz wyzerowanie wartości licznika kasowalnego w zmiennej delta.

Funkcja licznik jest wywoływana przy każdej zmianie stanu niekasowalnego licznika energii elektrycznej. Oblicza i zwraca (do zmiennej delta) różnicę wartości aktualnego stanu licznika i stanu licznika zapamiętanego podczas przyciśnięcia klawisza kasowania.

2.5.2. Kontrolki licznika kasowalnego i przycisku kasowania licznika #

  1. W zakładce Remote należy dodać do wcześniej zdefiniowanej struktury element kanałowy Value.
  2. Po dwukrotnym kliknięciu uzupełnić właściwości. W polu Kanał należy wpisać nazwę zmiennej, która została zdefiniowana w zakładce Logika – w tym przypadku VAR.energia
  3. Dodać Przycisk monostabilny.
  4. Po dwukrotnym kliknięciu uzupełnić jego właściwości:
    • Nadać nazwę np. Kasuj licznik
    • W zakładce Przyciśnięcie wybrać Dodaj kanał i uzupełnić jak poniżej:

Wynikowe działanie na iPhone pokazano na poniższym rysunku:

2.6. Sygnalizacja zaniku fazy #

Sygnalizacja zaniku faz będzie realizowana poprzez wyświetlanie powiadomień na wszystkich sparowanych Remote, oraz dodatkowo będzie widoczna z menu aplikacji Remote w telefonie w postaci lampek sygnalizacyjnych.

Każda faza jest zaznaczana jako wyłączona, kiedy zmierzone napięcie spadnie poniżej 180V. Dodatkowo utworzona zostanie zmienna VAR, która będzie sygnalizować poprawne napięcie we wszystkich fazach.

2.6.1. Reguły logiczne #

W zakładce Logika należy dodać następującą treść:

-- deklaracja zmiennych --
m_v1 = use 'MODBUS.voltage1'
m_v2 = use 'MODBUS.voltage2'
m_v3 = use 'MODBUS.voltage3'
v_v1 = use 'VAR.v1'
v_v2 = use 'VAR.v2'
v_v3 = use 'VAR.v3'
v_va = use 'VAR.va'

-- funkcja sprawdzająca poziomy napięć na poszczególnych fazach --
function monitor()
local v1,v2,v3 = 0,0,0
if m_v1.value > 180 then v1 = 1 end
if m_v2.value > 180 then v2 = 1 end
if m_v3.value > 180 then v3 = 1 end
v_v1:set(v1)
v_v2:set(v2)
v_v3:set(v3)

if v1 + v2 + v3 == 3 then
v_va:set(1)
else
v_va:set(0)
end
end


m_v1.onchange = monitor
m_v2.onchange = monitor
m_v3.onchange = monitor
monitor()

Należy pamiętać, aby w części deklaracji zmiennych używać zmiennych o nazwach identycznych z tymi, jakich użyliśmy do odczytu rejestrów.

W części deklaracji zmiennych zadeklarowanych zostało siedem zmiennych. Pierwsze trzy (m_v*) przechowują wartości rejestrów, w których zapisane są wartości napięć na poszczególnych fazach. Kolejne cztery zmienne (v_v*) zostały użyte, aby możliwa była sygnalizacja zaniku faz w menu Remote.

Funkcja monitor sprawdza poziom napięć i ustawia stany odpowiednich zmiennych. Wykonywana jest za każdym razem, kiedy następuje zmiana napięcia na którejkolwiek z faz.

2.6.2. Kontrolki stanu zasilania #

Kontrolki stanu zasilania będą widoczne jako lampki zmieniające kolor w zależności od stanu zasilania na konkretnej fazie. Pozwala to na szybkie określenie na której fazie zabrakło zasilania.

Aby dodać te kontrolki należy wykonać następujące czynności:

  1. W zakładce Remote należy do sekcji Status dodać element kanałowy Status.
  2. Po dwukrotnym kliknięciu na tym elemencie uzupełniamy właściwości jak poniżej:
  3. Dla pozostałych dwóch faz wykonujemy analogiczne działania pamiętając jedynie o zmianie nazw zmiennych kolejno na VAR.v2 i VAR.v3.

Wynikowe działanie na iPhone, w przypadku wyłączenia zasilania z dwu faz zostało przedstawione na poniższym obrazku:

2.7. Powiadomienia o zaniku i przywróceniu zasilania #

Po wykonaniu poniżej opisanych czynności w przypadku zaniku zasilania, jak i jego przywrócenia wyświetlone zostanie powiadomienie na ekranie Remote. Powiadomienia zostają wyświetlone na ekranach wszystkich Remote sparowanych z Base.

2.7.1. Powiadomienie o zaniku dowolnej fazy #

  1. W zakładce Zdarzenia należy dodać nowe zdarzenie.
  2. W polu Kanał należy wpisać E.VAR.va
  3. Wzorzec dopasowania ustawiamy jako 0
  4. W komórce Polecenie klikamy na przycisku Dodaj kanał. W polu Nazwa wpisujemy C.REMOTE.notify. W polu Wartość należy wpisać dowolną treść, która będzie wyświetlana, np. BRAK ZASILANIA!

Wynikowe działanie przedstawia poniższy obrazek:

2.7.2. Powiadomienia o powrocie zasilania #

  1. W zakładce Zdarzenia dodajemy nowe zdarzenie.
  2. W polu Kanał wpisujemy E.VAR.va
  3. Wzorzec dopasowania ustawiamy jako 1
  4. W komórce Polecenie klikamy na przycisku Dodaj kanał. W polu Nazwa wpisujemy C.REMOTE.notify. W polu Wartość należy wpisać dowolną treść, która będzie wyświetlana na ekranie iPhone np. ZASILANIE PRZYWRÓCONE!

Wynikowe działanie przedstawia poniższy obrazek:

2.8. Wizualizacja licznika na DOMIQ/Display #

W tej sekcji przedstawimy jak zobrazować założoną funkcjonalność na panelu dotykowym DOMIQ/Display. Aby nadmiernie nie powiększać objętości tego opracowania ograniczymy się do opisania procedur:

  • Wyświetlania wartości napięć
  • Wyświetlania statusu faz
  • Wyświetlania powiadomień o zaniku i przywróceniu zasilania

2.8.1. Definiowanie strony wizualizacji #

  1. Po zalogowaniu do konfiguratora modułu Base kliknij na zakładkę Display.
  2. Z listy Nowy dodaj nową Stronę do listy Struktura.
  3. Nadaj nowej stronie nazwę np. Licznik energii.

2.8.2. Wyświetlanie wartości napięć #

Aby wyświetlać wartości napięć postępuj zgodnie z poniższą procedurą:

  1. Dodaj do okna wizualizacji element typu Wartość.
  2. Po kliknięciu na nim w polu Kanał wpisz MODBUS.voltage1
  3. Dodaj element typu Tekst i po kliknięciu na nim w polu Tekst dodaj opis kontrolki np. Faza 1.

Dla pozostałych dwóch faz powtórz opisaną procedurę pamiętając o zmianach nazw kanałów na MODBUS.voltage2 i MODBUS.voltage3 oraz opisy kontrolek na Faza 2 i Faza 3.

Dodaj element Tekst i wpisz w nim np. Napiecie
Rezultat przedstawia poniższy rysunek:

2.8.3. Wyświetlanie statusu faz #

Aby wyświetlać kontrolki statusu poszczególnych faz należy wykonać poniższe czynności:

  1. Dodaj do okna wizualizacji element Światło.
  2. Po kliknięciu na nim w polu Kanał wpisz VAR.v1
  3. W polu Temat wybierz z rozwijalnej listy temat green.
  4. Dodaj element Tekst i po kliknięciu na nim w polu Tekst dodaj opis kontrolki: Faza 1.
  5. Dla pozostałych dwóch faz wykonaj identyczne czynności zmieniając nazwy kanałów kolejno na: VAR.v2 oraz VAR.v3 oraz opisy kontrolek na Faza 2 i Faza 3.
  6. Dodaj element Tekst i wpisz w nim np. Status.

W rezultacie otrzymasz:

2.8.4. Powiadomienia o zaniku i przywróceniu zasilania #

Aby otrzymywać powiadomienia o zaniku zasilania na ekranie Display wykonaj poniższe czynności:

  1. W zakładce Zdarzenia do zdefiniowanego wcześniej zdarzenia (Kanał E.VAR.va, Wzorzec dopasowania 0) dodaj nowy kanał.
  2. W komórce Polecenie kliknij na przycisku Dodaj kanał. W polu Nazwa wpisz tekst C.DISPLAY.message. W polu Wartość należy wpisać dowolną treść, która będzie wyświetlana na ekranie ramki dotykowej. np. BRAK ZASILANIA!

Aby otrzymywać powiadomienia o przywróceniu zasilania na ekranie wykonaj poniższe czynności:

  1. W zakładce Zdarzenia do zdefiniowanego wcześniej zdarzenia (Kanał E.VAR.va Wzorzec dopasowania 1) dodaj nowy kanał.
  2. W komórce Polecenie kliknij na przycisku Dodaj kanał. W polu Nazwa wpisz tekst C.DISPLAY.message. W polu Wartość należy wpisać dowolną treść, która będzie wyświetlana na ekranie ramki dotykowej. np. ZASILANIE PRZYWRÓCONE!

Powered by BetterDocs

Select your currency
PLN Złoty polski
EUR Euro