Skip to main content
Webinar ControlByte i Finder: 40 liczników energii Modbus RTU na Finder Opta
Webinar ControlByte i Finder: 40 liczników energii Modbus RTU na Finder Opta

Liczniki energii Modbus RTU to najprostszy sposób, żeby zebrać dane o zużyciu prądu z wielu obwodów w jednym sterowniku PLC.

Jeden licznik podłączysz w kwadrans. Przy czterdziestu zaczynają się pytania o obciążenie magistrali RS-485, adresację, czas cyklu i obsługę awarii.

Na wspólnym webinarze ControlByte i Finder pokazaliśmy cały proces na żywo: od okablowania, przez program w CODESYS na sterowniku Finder Opta, aż po zapis pomiarów do pliku CSV skryptem w Pythonie. Poniżej znajdziesz nagranie i najważniejsze wnioski. Jeśli interesuje Cię sam odczyt jednego licznika w Pythonie, zajrzyj też do wpisu Pomiar energii w Pythonie: Finder Opta, licznik energii i Modbus TCP.

Plan webinaru

Webinar poprowadzili Szymon Adamek (ControlByte), Jakub Vetter (Finder) i Lucyna Radziun, która przez cały czas programowała sterownik na żywo. Omówiliśmy osiem bloków tematycznych:

Plan webinaru o licznikach energii Modbus RTU
Plan webinaru o licznikach energii Modbus RTU
  1. 40 liczników: co zmienia skala.
  2. RS-485: przewody i obciążenie.
  3. Modbus RTU: adresy i rejestry.
  4. Finder 7M: dobór i NFC.
  5. Opta: zbieranie i udostępnianie danych.
  6. Pętla odpytań i obsługa awarii.
  7. Konwerter Finder 6M.
  8. Zastosowania danych pomiarowych.

Dlaczego 40 liczników to inne zadanie niż jeden?

Przy jednym liczniku możesz dobrać prędkość transmisji i odczytywać, co chcesz i jak często chcesz. Przy 40 urządzeniach na wspólnej magistrali każda dodatkowa zmienna (energia czynna, bierna, pozorna, napięcie, prąd, współczynnik mocy, częstotliwość) wydłuża cały cykl odpytywania.

40 liczników energii w jednej konfiguracji programu PLC
40 liczników energii w jednej konfiguracji programu PLC

Zanim zaczniesz programować, podejmij cztery decyzje:

Cztery decyzje przed uruchomieniem systemu z licznikami energii
Cztery decyzje przed uruchomieniem systemu z licznikami energii
  • Obciążenie magistrali: czy porty i przewody pozwolą połączyć wszystkie urządzenia?
  • Plan adresów: każdy licznik musi mieć unikalny adres Modbus i jednoznaczną lokalizację w obiekcie.
  • Czas odświeżania: jak często naprawdę potrzebujesz nowego odczytu? Próbkowanie co 100 ms przy 40 licznikach nie ma sensu i przeciąża komunikację.
  • Reakcja na awarię: co zobaczy SCADA, gdy licznik przestanie odpowiadać?

Magistrala RS-485: limit urządzeń, topologia i terminacja

Klasyczny budżet obciążenia interfejsu RS-485 to 32 UL (jednostki obciążenia). Dlatego 40 liczników wymaga weryfikacji w dokumentacji konkretnych urządzeń. W praktyce masz dwie drogi: podzielić instalację na dwie magistrale po 20 liczników albo zastosować gateway, np. konwerter Finder 6M.

Limit 32 UL na segmencie magistrali RS-485
Limit 32 UL na segmencie magistrali RS-485

Zasady okablowania:

  • magistrala ma dwa przewody różnicowe A i B oraz GND, który też trzeba podłączyć,
  • urządzenia łączysz liniowo (szeregowo), nigdy w gwiazdę, z możliwie krótkimi odgałęzieniami,
  • na obu końcach każdej magistrali montujesz rezystory terminujące (zwykle 120 Ω),
  • komunikacja działa w trybie master/slave: Finder Opta jest masterem, liczniki są slave’ami.
Topologia magistrali RS-485 z terminacją na obu końcach
Topologia magistrali RS-485 z terminacją na obu końcach

Konfiguracja liczników Modbus RTU w CODESYS

W CODESYS Lucyna dodała każdy licznik jako osobną instancję Modbus Server pod portem COM, nadała kolejne adresy (1, 2, 3) i zdefiniowała dwa kanały odczytu:

  • PowerMetrics: funkcja Read Input Registers (FC 04), długość 12 rejestrów, czyli 6 parametrów po 2 rejestry: napięcie, energia czynna, bierna, pozorna, współczynnik mocy i częstotliwość,
  • Current: prąd, odczytywany osobno, bo leży dalej w mapie rejestrów.
Konfiguracja kanałów Modbus RTU dla licznika energii w CODESYS
Konfiguracja kanałów Modbus RTU dla licznika energii w CODESYS

Dla 40 liczników tę samą konfigurację powtarzasz dla pozostałych 37 urządzeń, zmieniając tylko adres.

Anatomia zapytania Modbus RTU i wartości 32-bitowe

Każda ramka Modbus RTU zawiera cztery elementy: adres (który licznik), funkcję (jaki odczyt, np. 04), dane (rejestr początkowy i liczbę rejestrów) oraz CRC (2 bajty kontroli poprawności). Adresy indywidualne to 1–247, a adres 0 służy do broadcastu, na który slave’y nie odpowiadają.

Anatomia zapytania Modbus RTU: adres, funkcja, dane, CRC
Anatomia zapytania Modbus RTU: adres, funkcja, dane, CRC

Licznik Finder 7M udostępnia pomiary jako wartości 32-bitowe, zapisane w dwóch kolejnych rejestrach 16-bitowych. W programie trzeba je złożyć z przesunięciem o 16 bitów i zinterpretować jako REAL (float). Typ danych, kolejność słów i jednostkę zawsze sprawdzaj w mapie rejestrów licznika, bo numeracja w dokumentacji i offset w bibliotece mogą się różnić o 1.

Dwa rejestry 16-bitowe składane w jedną wartość 32-bitową
Dwa rejestry 16-bitowe składane w jedną wartość 32-bitową

Liczniki energii Finder 7M: co mierzą i jak je skonfigurować

W webinarze wykorzystaliśmy dwa liczniki jednofazowe i jeden trójfazowy z serii Finder 7M. To liczniki bezpośrednie: jednofazowy 7M.24 (do 40 A) i trójfazowy 7M.38 (do 80 A). Mierzą napięcie i prąd, moc czynną, bierną i pozorną, współczynnik mocy, energię w obu kierunkach oraz częstotliwość. Pełną specyfikację znajdziesz na stronie serii 7M Finder.

Parametry mierzone przez licznik energii Finder 7M
Parametry mierzone przez licznik energii Finder 7M

Najważniejsze cechy:

  • certyfikat MID, który potwierdza poprawność pomiaru i pozwala na rozliczenia (podliczniki),
  • pomiar dwukierunkowy: cztery niekasowalne liczniki MID dla energii pobranej i oddanej,
  • klasa dokładności B dla energii czynnej i klasa 2 dla energii biernej,
  • wersje z komunikacją Modbus RTU (RS-485), M-Bus lub wyjściem impulsowym,
  • w wersji trójfazowej trzy tryby sumowania: arytmetyczny, wektorowy i układ Arona.

Konfiguracja jest prosta: aplikacja Finder Toolbox NFC w telefonie ustawia adres Modbus, prędkość transmisji, parzystość i bity stopu oraz zakres informacji na wyświetlaczu.

Konfiguracja licznika Finder 7M przez NFC w aplikacji Finder Toolbox
Konfiguracja licznika Finder 7M przez NFC w aplikacji Finder Toolbox

Jeśli nie potrzebujesz komunikacji, aplikacja zapisuje historię odczytów i eksportuje ją do pliku CSV. Pamiętaj tylko, że licznik nie buforuje danych: każdy odczyt pokazuje stan z chwili, w której go wykonujesz.

Eksport pomiarów z Finder Toolbox do pliku CSV
Eksport pomiarów z Finder Toolbox do pliku CSV

Program PLC: jedna pętla dla dowolnej liczby liczników

Program w języku ST opiera się na strukturze ST_MeterData, która zbiera wszystkie pomiary jednego licznika: moc czynną, bierną i pozorną, współczynnik mocy, częstotliwość, napięcie i prąd. Z tej struktury powstaje tablica aMeters, z jednym elementem na każdy licznik.

W pętli FOR wskaźniki pPower i pCurrent są dynamicznie przepinane (instrukcja CASE) na bufory kolejnego licznika. Następnie funkcja WordsToReal zamienia dwa surowe słowa WORD na jedną wartość REAL.

Pętla odczytu liczników energii w języku ST w CODESYS
Pętla odczytu liczników energii w języku ST w CODESYS

Taki program jest uniwersalny: żeby obsłużyć 10 lub 40 liczników, zmieniasz górną granicę pętli i rozmiar tablicy oraz dodajesz kolejne instancje Modbus Server. Test na żywo pokazał poprawne odczyty ze wszystkich trzech liczników. Przy lampce LED moc bierna była ujemna (obciążenie pojemnościowe), a przy wentylatorze dodatnia (obciążenie indukcyjne).

Odczyty liczników energii na żywo w oknie Watch CODESYS
Odczyty liczników energii na żywo w oknie Watch CODESYS

Finder Opta i architektura systemu

Do komunikacji z licznikami potrzebujesz wersji Opty z portem RS-485: Plus (Ethernet + RS-485) lub Advanced (dodatkowo Wi-Fi i Bluetooth LE). Wersja Lite ma tylko Ethernet.

Finder Opta Plus i Advanced z portem RS-485
Finder Opta Plus i Advanced z portem RS-485

Typowa architektura wygląda tak: liczniki rozmawiają z Optą po Modbus RTU, a Opta buforuje odczyty i udostępnia je dalej po Modbus TCP, np. do systemu SCADA, panelu HMI albo skryptu w Pythonie. W takim układzie Opta jest masterem wobec liczników, ale serwerem wobec wizualizacji.

Architektura systemu: liczniki RS-485, Finder Opta, SCADA po Ethernet
Architektura systemu: liczniki RS-485, Finder Opta, SCADA po Ethernet

Czas cyklu, timeouty i obsługa awarii

Pętlę odpytywania warto traktować jak sekwencję stanów: przygotuj adres, funkcję i zakres rejestrów, uruchom jedną aktywną transakcję, obsłuż wynik (pomiar albo błąd, czas i status), przejdź do kolejnego adresu.

Pętla odpytywania liczników jako sekwencja stanów
Pętla odpytywania liczników jako sekwencja stanów

Prosty rachunek: jeśli jedna transakcja trwa ok. 50 ms, to pełny cykl dla 40 liczników zajmie około 2 s.

Czas pełnego cyklu odczytu 40 liczników: 40 × 50 ms = 2 s
Czas pełnego cyklu odczytu 40 liczników: 40 × 50 ms = 2 s

Jeden licznik, który nie odpowiada, wydłuża cykl o cały timeout. Przy 1 s timeoutu cykl rośnie do 2,95 s, a przy trzech ponowieniach nawet do 4,95 s. Dlatego:

Jeden timeout wydłuża cykl odczytu do 2,95 s
Jeden timeout wydłuża cykl odczytu do 2,95 s
  • dobierz timeout do liczby urządzeń (przy 40 licznikach rozważ 2–3 s),
  • nie odpytuj liczników częściej, niż naprawdę potrzebujesz (w demo: co 500 ms dla 3 liczników),
  • napisz funkcję, która po timeoucie automatycznie ponawia komunikację z danym licznikiem, zamiast resetować sterownik,
  • przechowuj status każdego pomiaru (aktualny / ostatnia znana wartość / błąd), żeby SCADA wiedziała, czy dane są świeże.
Checklista uruchomienia systemu z licznikami energii Modbus RTU
Checklista uruchomienia systemu z licznikami energii Modbus RTU

Konwerter Finder 6M: gdy RS-485 to za mało

Przy dużej liczbie liczników lub długich trasach (RS-485 to standardowo do ok. 1000 m magistrali) warto zastosować konwerter Finder 6M. To bramka Modbus RTU ↔ Modbus TCP, którą konfigurujesz przez wbudowany serwer WWW: adres IP, maskę, bramę, port TCP oraz parametry RTU (prędkość, parzystość, bity stopu).

Serwer WWW do konfiguracji konwertera Finder 6M
Serwer WWW do konfiguracji konwertera Finder 6M

Klient TCP (np. Opta, SCADA lub komputer) inicjuje odczyty przez bramkę, a urządzenia RTU odpowiadają na swojej magistrali. Według prowadzących do jednej bramki może się jednocześnie łączyć kilku klientów, co ułatwia rozbudowę systemu.

Architektura z konwerterem Finder 6M: klient TCP, bramka, liczniki RTU
Architektura z konwerterem Finder 6M: klient TCP, bramka, liczniki RTU

Zastosowania danych z liczników energii

Dane pomiarowe przydają się przede wszystkim do:

  • podliczników i rozliczeń najemców: galerie handlowe, biurowce, ogródki działkowe (zużycie okresowe = stan końcowy − stan początkowy),
  • wykrywania anomalii: np. zużycie wyraźnie wyższe niż w poprzednich miesiącach,
  • kontroli poboru poza godzinami pracy: stałe 2 kW przez 12 h nocą to 24 kWh, które widać od razu na wykresie,
  • utrzymania predykcyjnego: wzrost poboru mocy maszyny może zapowiadać zużycie łożysk lub innych elementów.
Odczyty liczników energii dla poszczególnych najemców
Odczyty liczników energii dla poszczególnych najemców
Analiza poboru energii poza godzinami pracy
Analiza poboru energii poza godzinami pracy

Modbus TCP i zapis pomiarów do CSV w Pythonie

Na koniec Lucyna dodała w projekcie CODESYS moduł Ethernet i urządzenie Modbus TCP Server Device, a tablicę z odczytami wszystkich liczników zmapowała na rejestry dostępne dla klientów TCP.

Modbus TCP Server Device na Finder Opta w CODESYS
Modbus TCP Server Device na Finder Opta w CODESYS

Krótki skrypt w Pythonie łączy się z Optą po Modbus TCP i co 2 sekundy dopisuje do pliku CSV pomiary z trzech liczników. Więcej o samym połączeniu Pythona ze sterownikiem przeczytasz we wpisie Python i Modbus: jak połączyć Pythona ze sterownikiem PLC.

Skrypt Python zapisujący pomiary z liczników energii
Skrypt Python zapisujący pomiary z liczników energii

Wynik otwierasz w Excelu: w pierwszej kolumnie jest czas odczytu, a w kolejnych moc czynna, bierna, napięcie, prąd i pozostałe parametry każdego licznika. Tak przygotowane dane możesz dalej analizować w Excelu, Pythonie lub modelach AI.

Plik CSV z pomiarami liczników energii otwarty w Excelu
Plik CSV z pomiarami liczników energii otwarty w Excelu

Najczęstsze pytania

Ile liczników energii można podłączyć do jednej magistrali RS-485?

Klasyczny budżet to 32 jednostki obciążenia (UL). Dokładna liczba zależy od obciążenia wnoszonego przez konkretne urządzenia, dlatego przy 40 licznikach podziel instalację na dwie magistrale albo zastosuj gateway.

Czy można łączyć liczniki jednofazowe i trójfazowe na jednej magistrali?

Tak. Na magistrali Modbus RTU liczy się unikalny adres i zgodne parametry transmisji, a nie liczba faz licznika.

Czy licznik Finder 7M przechowuje historię pomiarów?

Nie, licznik nie buforuje danych. Historię tworzysz sam: zapisując odczyty w aplikacji Finder Toolbox albo zbierając je sterownikiem i zapisując np. do CSV.

Czy dane można zapisać do JSON zamiast CSV?

Aplikacja Finder Toolbox eksportuje CSV. Jeśli jednak odczytujesz dane Pythonem przez Modbus TCP, możesz zapisać je w dowolnym formacie, także w JSON.

Podsumowanie

Obsługa 40 liczników energii Modbus RTU na jednym sterowniku to kwestia dobrego planu: podziału magistrali, unikalnych adresów, rozsądnego czasu cyklu i obsługi timeoutów. Finder Opta z licznikami Finder 7M i opcjonalnym konwerterem 6M pozwala zbudować taki system w kilka godzin, a dane od razu trafiają do SCADA, Excela lub Pythona. Podstawy protokołu znajdziesz w naszym minikursie Modbus RTU i TCP. Jeśli chcesz opanować komunikację przemysłową kompleksowo, sprawdź kurs poniżej.

Projekt przedstawiony na webinarze oraz w artykule możesz pobrać tutaj: https://github.com/Control-Byte/Finder-OPTA-CODESYS-Energy-meter

O autorze

Kamil Biedulski

Author Kamil Biedulski

Automatyk i programista, CTO w ControlByte

Więcej postów tego autora Kamil Biedulski