Możliwość komunikacji z naszą instalacją fotowoltaiczną: z falownikami, z licznikiem inteligentnym lub z zestawem baterii otwiera zupełnie nowe możliwości. jeśli chodzi o monitorowanie i sterowanie w czasie rzeczywistym. Jednym z najbardziej powszechnych protokołów jest standard Modbus, który można wykorzystać zarówno przy połączeniu fizycznym skrętką RS-485 (Modbus RTU) lub poprzez łącza komputerowe LAN/WiFi (Modbus TCP).
Wszystkie falowniki Fronius, które mają na wyposażeniu kartę Datamanager 2.0, lub są do tej karty podłączone przez DATCOM (RS-422) mogą być zarówno monitorowane, jak i sterowane, używając standardowego zestawu rejestrów wyspecyfikowanego przez organizację SunSpec Alliance.
Co będzie nam potrzebne
Nasze pierwsze próby rozpoczniemy w standardzie Modbus TCP, ponieważ nie wymaga to żadnych inwestycji sprzętowych. Komunikacja via Modbus RTU działa identycznie, wymaga jednak albo dedykowanego sterownika (np. firmy WAGO) lub konwertera sygnałów np. z USB do standardu RS-485.
Do testów będzie nam potrzebne:
- dowolny falownik Fronius wyposażony w kartę Datamanager 2.0 (także Datamanager 1.0, jeśli pozostaniemy przy Modbus TCP)
- lokalna sieć komputerowa z routerem
- komputer z przeglądarką
- dokumentacja interfejsu Modbus pobrana z oficjalnej strony Fronius, pod tym linkiem.
- oprogramowanie do testowania urządzeń Modbus RTU/TCP np. Radzio! Modbus Master Simulator (o tym, gdzie można pobrać to oprogramowanie pisaliśmy w artykule “10 narzędzi przydatnych instalatorom PV“)
Krok 1 – konfiguracja Datamanagera
Zakładamy, że karta Datamanager’a jest poprawnie skonfigurowana i podłączona do lokalnej sieci komputerowe: przewodowo poprzez Ethernet lub bezprzewodowo: przez WiFi. Jak poprawnie wykonać tę czynność można dowiedzieć się z naszego Webinarium #01.
Podpowiedź: zaleca się, aby adres IP Datamanager’a był ustawiony “na sztywno”, czyli jako statyczny. W przeciwnym wypadku, tj. przy ustawieniu dynamicznym DHCP, po restarcie routera (np. w wyniku awarii zasilania), może mu zostać nadany zupełnie nowy adres IP.
Przyjmijmy, że nasza lokalna sieć komputerowa wygląda następująco:
- router pod adresem IP:
192.168.1.1
- Datamanager pod statycznym adresem IP:
192.168.1.3
- nasz komputer znajdujący się w tej samej podsieci, np. pod adresem IP:
192.168.1.26
Taka przykładowa konfiguracja została pokazana na rysunku poniżej:
W przeglądarce internetowej na komputerze w sieci lokalnej otwieramy stronę Datamanagera (jego Webserver), pod adresem: http://192.168.1.3
, przechodzimy do menu Ustawienia (1) i wybieramy zakładkę MODBUS (2):
W zakładce MODBUS, ustawiamy (3) następujące pola:
“wysyłanie danych przed Modbus” | zaznaczamy “tcp” |
Port Modbus | domyślną wartością jest “502” – najlepiej zostawić |
String Control Adress-Offest | dotyczy urządzeń Fronius String Control; zostawiamy jak jest |
Sunspec Model Type | w zależności od wyboru typu: “float” lub “int + SF” zmienią się adresy rejestrów. Więcej szczegółów w oficjalnej dokumentacji. Wybieramy “int + SF” |
Tryb Demo | przydatny przy sprawdzaniu poprawności połączeń między Datamanagerem, a urządzeniem odpytującym dane. W trybie “demo” zawsze odczytamy jakieś dane… |
Sterowanie falownikiem przez Modbus | Jeżeli chcemy nie tylko odczytywać dane, ale również zapisywać do odpowiednich rejestrów – czyli sterować np. mocą falownika |
Ogranicz sterowanie | Ze względów bezpieczeństwa możemy ograniczyć możliwość sterowania do urządzeń z konkretnymi adresami IP. Przykładowo, wpisując 192.18.1.26 (czyli numer komputera w naszym przykładzie) wyłączymy możliwość sterowania z innych komputerów. |
WAŻNE! Na koniec koniecznie należy zatwierdzić wszystkie zmiany przyciskiem √ (4)
Krok 2 – konfiguracja falownika / falowników
Do karty Datamanager mamy podłączone 2 falowniki, np. Fronius Galvo 1.5-1 oraz Fronius Symo 3.0-3-M. Należy sprawdzić, jaki jest numer każdego falownika w menu: Ustawienia --> DATCOM --> numer falownika
. Przyjmijmy, że dla Galvo jest to wartość 01
(domyślna), a dla Symo: 02
. Aby sieć DATCOM działała poprawnie, numery te muszą być różne!
Podpowiedź: do karty Datamanager’a może być podłączonych nawet 100 dowolnych falowników Fronius, 10 kart Fronius Sensor Card, urządzenia takie jak String Control, itp. Każde z tych urządzeń może być odczytywane / sterowane poprzez Modbus RTU/TCP, pod warunkiem, że znamy jego numer. Najczęściej do karty Datamanagera będziemy mieli podłączony tylko 1 falownik, ale nawet w tym szczególnym wypadku bardzo ważna jest znajomość jego numeru.
Krok 3 – uruchamiamy program monitorowania Modbus
Po pobraniu i uruchomieniu oprogramowania Radzio! Modbus Master Simulator musimy przejść przez dwa ekrany ustawień:
Krok 3.A – Ustawienia komunikacji
W menu programu Radzio! wybieramy Connection --> Settings
i dokonujemy następujących ustawień:
Protocol | Modbus TCP |
Modbus TCP –> IP address: | wstawiamy adres IP karty Datamanager’a, w naszym przypadku 192.168.1.3 |
Modbus TCP –> TCP port: | wstawiamy numer portu, który wybraliśmy w ustawieniach karty Datamanager’a w naszym przypadku: 502 (domyślny) |
General –> Timeout (ms) | zaleca się, aby na początek ustawić tę wartość na minimum 3000 ms.Jeśli komunikacja będzie działać poprawnie można ją (metodą prób i błędów) zmniejszać. Uwaga: wartość ta silnie zależy od ilości falowników na magistrali DATCOM. |
Następnie w menu Connection
klikamy w Connect
, co powinno ustanowić połączenie z naszą kartą Datamanager’a.
WAŻNE! W przypadku problemów z ustawieniem komunikacji, należy upewnić się, że na naszym lokalnym komputerze *nie* są blokowane porty przez oprogramowanie Firewall!
Krok 3.B – Ustawienia rejestrów
Spróbujmy na początek odczytać jakiś prosty rejestr, np. typ falownika. Zgodnie z dokumentacją firmy Fronius, adresy rejestrów wg specyfikacji SunSpec Alliance wyglądają następująco:
Przykładowo, pod adresem 40005 można odczytać nazwę producenta (np. “Fronius”), a pod adresem 40021: typ falownika. Spróbujmy:
Device Settings –> Device ID | Tu podajemy numer falownika na magistrali DATCOM. Jeżeli chcemy odczytać dane z falownika Galvo, podajemy nr 1 (domyślny numer falownika). Kolejne falowniki na magistrali możemy odczytać podającich numery, czyli dla naszego przykładu falownik Symo będzie miał numer 2 |
Device Settings –> [________] | mamy takie opcje jak: “Coil status”, “Input status”, “Holding registers” oraz “Input registers”. Wybieramy: “ Holding registers “. |
Device Settings –> Address | podajemy numer rejestru, który chcemy odczytać, pomniejszony o 1 (wyjaśnienie poniżej), czyli: 40020 (typ falownika) |
Device Settings –> Length | ilość rejestrów, które chcemy jednorazowo odczytać, np.: 10 |
ASCII Display –> Enable | jeśli chcemy odczytać zawartość rejestrów tekstowych, dla ułatwienia można zażyczyć sobie równolegle wyświetlenia w formacie tekstu ASCII |
ASCII Display –> 2 char/reg sw | przy tym zaznaczeniu tekst jest najbardziej czytelny 🙂 |
WAŻNE: Zawsze należy podać poprawny identyfikator urządzenia (Device ID), nawet jeśli urządzenie Fronius Datamanager jest podłączone tylko do jednego falownika!
Z ważnych informacji:
- Adresy rejestrów nie są stałe.
- Rzeczywiste adresy rejestrów zależą od składu dynamicznej listy rejestru SunSpec.
Prawidłowa procedura powinna zatem wyglądać następująco:
- Wyszukaj model, wysyłając żądanie (ustal adres początkowy)
- Następnie pracuj z offsetami
Aby odczytać rejestr, adres startowy rejestru musi zostać określony w żądaniu Modbus.
Podstawowy rejestr Fronius: 212
Podstawowy rejestr SunSpec: 40001
Rejestry zaczynają się od 1 i nie reprezentują kodu funkcji.
Nie należy mylić rejestrów ze schematem adresów Modicon: w schemacie adresu Modicon, 40001 jest wyświetlane jako 4×40001. Aby odczytać rejestr 40001, należy użyć adresu: 40000 (0x9C40).
UWAGA! Dlatego adres rejestru, który jest wprowadzany w programie, ma zawsze numer o 1 mniejszy niż rzeczywisty numer rejestru.
Stąd odczytując rejestr 40021 wpisaliśmy do programu Radzio!:40020
.
Gotowe! Na ekranie programu Radzio! możemy odczytać od góry do dołu: “Galvo 1.5-1
” oraz wartość “00
” oznaczającą koniec tekstu.
Co dalej?
Po bardziej zaawansowane funkcje, konfigurację Modbus RTU, adresy rejestrów, różnice między “float” a “Int + SF” odsyłamy na oficjalną stronę Fronius pod następującym linkiem: http://www.fronius.com/pl-pl/poland/energia-sloneczna/produkty-i-rozwizania/wszystkie-produkty/monitorowanie-instalacji/otwarte-z%C5%82%C4%85cza/modbus-tcp, gdzie dostępna jest do pobrania pełna dokumentacja, m.in.: “Instrukcja obsługi Fronius Datamanager – Modbus TCP & RTU DE, EN”
Zachęcamy do własnych prób. Powodzenia!
5 komentarzy
NiktNowy
24 stycznia 2020 at 19:34Jak można odczytać dane za pomocą powyższego narzędzia z licznika Smart Meter poprzez konwerter RS232 -> RS485 ? Próbuję odczytać rejestr 40004, czyli nazwę producenta i niestety nic nie jest zwracane.
Maciej Piliński
26 stycznia 2020 at 16:01Witam,
po pierwsze, opublikowana lista rejestrów dotyczy Datamanagera i podłączonego do niego falownika. Rejestr 40004 (zgodny z Sunspec) dotyczy producenta falownika, nie licznika inteligentnego.
Po drugie, do tego krótkiego tekstu rodzi się wiele pytań:
Pozdrawiam,
Maciej Piliński
Zbigniew Baska
9 lutego 2020 at 18:42Witam,
Chcę użyć do transmisji sygnału Modbus Data Transceiver firmy EBYTE model E32-DTU(433L20). Odległość na jaką chcę transmitować sygnał to około 11 metrów w budynku.
Urządzenie posiada port RS232 i RS485. Wysyłanie danych po RS232 i RS485 pomiędzy urządzeniami działa poprawnie – przetestowane. Po podłączeniu do Datamanagera i podsłuchaniu komunikacji na drugim urządzeniu otrzymuję tylko cyklicznie rozgłaszany blok komunikatów: 01 03 03 00 00 01 84 4E | 01 03 03 00 00 01 84 4E | 01 03 03 00 00 01 84 4E | 01 03 06 AA 00 01 A4 A2 | 01 03 06 AA 00 01 A4 A2 | 01 03 06 AA 00 01 A4 A2 | 01 03 06 AA 00 01 A4 A2 | 01 03 06 AA 00 01 A4 A2 | 01 03 C3 50 00 02 F8 5E | 01 03 9C 40 00 02 EB 8F | 01 03 00 00 00 02 C4 0B i tak w kółko co chyba minutę.
Zakładam, iż oprogramowanie Datamanagera szuka zdefiniowanego licznika, ale nie otrzymuje odpowiedzi od niego.
Jak próbowałem narzędziami do Modbus odczytać rejestr 40005 w liczniku to dostawałem odpowiedź o nieprawidłowym zapytaniu.
Próbowałem odczytać rejestry zgodnie z specyfikacją z Państwa strony (np. na podstawie pliku: Meter_Register_Map_Int&SF_v1.0.xlsx) i dla licznika wartość opisująca producenta jest przechowywana w adresach: od 40005 do 40020 i powinna być tam wartość: Fronius.
Przyznam, że nie mam doświadczeń z Modbus, ale to co do tej pory wykonywałem działało od ręki ale nie dotyczyło Państwa urządzeń.
Pozdrawiam
Maciej Michałowski
14 stycznia 2021 at 14:34Serdecznie dziękuję za ten artykuł. Od kilku dni przeszukuję forum w sprawie listy rejestrów dla modbusa TCP – w końcu mam chyba wszystko !
Maciej Michałowski
14 stycznia 2021 at 14:37Podany wyżej link do pełnej listy rejestrów jest chyba niepoprawny, bo otwiera się strona do konfiguracji modbusa TCP. Czy mogę prosić właściwy link ?