Falowniki i liczniki przez Modbus TCP i SunSpec: odczyt bez chmury producenta

Większość falowników PV, magazynów energii i liczników mówi Modbusem. Jak czytać je lokalnie, co daje SunSpec i gdzie są pułapki.

Modbus · PV5 min czytania

Dlaczego lokalnie, a nie z chmury

Chmura producenta daje dane z kilkuminutowym opóźnieniem, ma limity API, każdy producent ma inną, a gdy znika internet – znikają dane. Lokalny Modbus TCP to odczyt co kilka sekund, bez kont i kluczy, i ten sam mechanizm dla falownika, licznika i magazynu.

Modbus w pięciu zdaniach

  • Urządzenie udostępnia rejestry 16-bitowe: holding (funkcja 03) i input (04).
  • Zapytanie to: unit id, adres pierwszego rejestru, liczba rejestrów.
  • Wartość 32-bitowa zajmuje dwa rejestry, a kolejność słów zależy od producenta.
  • Skala to albo osobny rejestr, albo stała z dokumentacji.
  • Modbus RTU to to samo po RS485, z CRC oraz prędkością i parzystością do ustawienia.

SunSpec: jedna mapa dla wielu producentów

SunSpec Alliance standaryzuje układ rejestrów. Od adresu 40000 jest znacznik SunS, a za nim łańcuch bloków (modeli): 1 – dane urządzenia, 101/103 – falownik 1- i 3-fazowy, 201–204 – liczniki, 124 – sterowanie magazynem. Każdy blok ma ID i długość, więc wystarczy przejść łańcuch, żeby wiedzieć, co urządzenie potrafi. Jeden sterownik obsługuje wtedy falowniki wielu marek.

# model 103 (falownik 3-faz.) – moc czynna W i jej skala W_SF
regs = client.read_holding_registers(address=40083, count=2, slave=1).registers
power_w = int16(regs[0]) * 10 ** int16(regs[1])     # W × 10^W_SF
if regs[0] == 0x8000:                                 # „brak wartości” w SunSpec
    power_w = None

Pułapki z praktyki

  • Adresy od 0 albo od 1. „Rejestr 40084” z dokumentacji to często adres 40083 w zapytaniu.
  • Wartości „niedostępne”: 0x8000 (int16), 0xFFFF (uint16). Nie zapisuj ich jako pomiaru.
  • Znak mocy. Sieć: plus to pobór, minus to oddawanie. Przy magazynie konwencja różni się między producentami, dlatego w panelu każde źródło można odwrócić.
  • Jeden klient naraz. Część falowników przyjmuje jedno połączenie Modbus TCP, więc drugi system (np. EMS instalatora) potrafi „wypychać” bramkę.
  • Odczyt blokami. Jedno zapytanie o 60 rejestrów jest szybsze i stabilniejsze niż 60 zapytań o jeden.

Jak to robimy w Polbyte IoT

Bramka skanuje sieć lokalną, wykrywa urządzenia na porcie 502 i proponuje sterownik. Definicje zmiennych (nazwa, jednostka) wysyła na serwer razem z odczytami, więc nowy typ urządzenia nie wymaga zmian w bazie. Całość testujemy na symulatorze domu: sześć urządzeń Modbus TCP / SunSpec, bez dachu z panelami.

Potrzebujesz integracji konkretnego falownika, licznika albo sterownika PLC? Mapa rejestrów wystarczy, żeby zacząć.

Masz podobny problem?

Opisz go w dwóch zdaniach. Odpowiemy, czy i jak możemy pomóc.

Napisz do nas →