Baza wiedzy Sinum

Sprawdzanie połączenia

W bibliotece urządzeń niestandardowych znajduje się tester Modbus, który pozwala ręcznie wykonywać operacje na magistrali. Znając rejestry, które obsługuje urządzenie, możliwe jest sprawdzenie poprawności komunikacji.

Do użycia testera potrzebna jest dokumentacja urządzenia Modbus slave, która zawiera listę obsługiwanych rejestrów Modbus.

Importowanie urządzenia

Otwórz urządzenia wirtualne w ustawieniach centrali Sinum. Naciśnij przycisk 🞢. Na końcu listy typów urządzeń znajduje się pozycja urządzenie niestandardowe — naciśnij ją. Wybierz biblioteka:

Wyszukaj tester Modbus. Wybierz go z listy.

Tester w bibliotece.

Naciśnij przycisk wybierz, aby dodać urządzenie do centrali. Otworzy się okno konfiguracji testera.

Konfiguracja

Wprowadź parametry komunikacji i adres slave odpowiednie dla urządzenia, które chcesz sprawdzić. Najczęściej urządzenia używają konfiguracji 9600 8N1:

  • szybkość 9600 baud
  • 8 bitów danych
  • brak bitu parzystości
  • jeden bit stopu

Uwaga: 8 bitów danych to jedyne obsługiwane ustawienie tego parametru.

Zamknij okno. Urządzenie jest skonfigurowane i gotowe do użycia. Ustawienia komunikacji możesz szybko zmienić, naciskając przycisk ⤢ na widgecie urządzenia.

Widget

Odczyt rejestru

Górna część widgetu służy do wykonywania odczytów. Przycisk ze strzałką w dół pozwala wybrać typ rejestru, co wpływa na użyty kod operacji. Dostępne typy to:

Typ Operacja
Coil 0x01 Read Coils
Discrete input 0x02 Read Discrete Inputs
Holding 0x03 Read Holding Registers
Input 0x04 Read Input Registers

W polu obok należy wpisać adres rejestru do odczytania, kliknąć poza to pole, a następnie kliknąć przycisk odczyt.

Po adresie możesz też wpisać dwukropek : i ilość rejestrów do odczytania. Przykładowo, wpisanie „1200:10” spowoduje odczytanie dziesięciu rejestrów, zaczynając od rejestru pod adresem 1200.

Zapis rejestru

Dolna część widgetu służy do wykonywania zapisów. Analogicznie jak przy odczytach, wybierz typ rejestru i podaj adres. W polu wartość wpisz wartość, która ma zostać wysłana do urządzenia.

W zależności od wybranego typu rejestru, dane zostaną wysłane jedną z poniższych operacji:

  • Coil
    • 0x05 Write Single Coil
    • 0x0F Write Multiple Coils
  • Holding
    • 0x06 Write Single Register
    • 0x10 Write Multiple Registers

Można zapisać kilka rejestrów na raz, podając odpowiednią ilość wartości, oddzielonych przecinkami. Przykładowo, podając „1,2,3,4” i zapisując na adres 81, zostaną zapisane cztery rejestry zaczynając od rejestru pod adresem 81. Podanie kilku wartości spowoduje użycie operacji typu Write Multiple.

Błędy

Jeżeli odczyt się powiedzie, poniżej przycisku odczyt zostanie wyświetlony adres i odczytane wartości. W przeciwnym przypadku pojawi się jeden z następujących błędów:

TIMEOUT

Nie otrzymano odpowiedzi od urządzenia. Możliwe przyczyny:

  • Nieprawidłowe podłączenie przewodów.
  • Źle ustawione parametry komunikacji.

BAD_CRC

Centrala Sinum otrzymała odpowiedź, ale dane są nieprawidłowe (uszkodzone). Możliwe przyczyny:

  • Szum na magistrali:
    • Brak terminacji.
    • Brak masy.
  • Kolizje:
    • Wiele urządzeń o tym samym adresie slave.
    • Podłączone urządzenie niezgodne ze standardem Modbus, odpowiadające na żądania adresowane dla innych urządzeń.
  • Źle ustawione parametry komunikacji: parzystość lub ilość bitów stopu.

OTHER

Inny błąd transceivera lub ekstendera. Możliwe przyczyny:

  • Urządzenie odpowiada niestandardowym wyjątkiem Modbus.
  • Wyłączony ekstender.
  • Problem z połączeniem z ekstenderem.

Inne

Inne błędy to wyjątki Modbus. Są to prawidłowe odpowiedzi od urządzeń, które w ten sposób sygnalizują powód, przez który nie mogą odpowiedzieć na wysłane żądanie. Obsługiwane wyjątki to:

  • ILLEGAL FUNCTION
  • ILLEGAL DATA ADDRESS
  • ILLEGAL DATA VALUE
  • SERVER DEVICE FAILURE

Różne konwencje zapisu adresów

Uwaga: Rejestry należy podawać w taki sposób, w jaki powinny zostać wysłane do urządzenia. W większości przypadków w dokumentacji będą podane te prawidłowe adresy.

Wielu producentów stosuje jednak konwencję, według której adresy podane w dokumentacji są większe o 1 od rzeczywistych adresów. Przykładowo, wtedy do odczytania rejestru numer 8 należy użyć adresu 7.

Inna, często stosowana konwencja przypisuje przesunięcia zależne od typu rejestru, wg. poniższej tabeli:

Typ Zakres Przesunięcie Rzeczywisty zakres
Coil 0–9999 0 0–9999
Discrete input 10000–19999 10000 0–9999
Holding 40000–49999 40000 0–9999
Input 30000–39999 30000 0–9999

Wtedy do odczytania rejestru typu holding numer 40008 należy użyć adresu 8, a do odczytania rejestru typu input numer 30032 należy użyć adresu 32.

Czasem oba te przekształcenia są stosowane jednocześnie, wtedy do odczytania rejestru numer 40008 należy użyć adresu 7.

Dokumentacja powinna określać jaką konwencję stosuje. Jeśli nie możesz znaleźć takiej informacji, sprawdź czy producent zawarł przykłady komunikacji, na podstawie których można wywnioskować jakie adresy należy podawać w centrali Sinum. Są to adresy, które są częścią ramki protokołu Modbus RTU.

Jeśli dokumentacja nie zawiera żadnej informacji na ten temat, a odczytane wartości nie odpowiadają tym z dokumentacji, możesz szukać wg. następujących wskazówek:

  • Jeśli pierwszy rejestr w tabeli ma numer 0, bardzo prawdopodobne jest, że adresy są podane bez żadnych przekształceń.
  • Jeśli pierwszy rejestr ma numer 1, możliwe, że użyte jest przesunięcie o 1, a jego rzeczywisty adres to 0.
  • Jeśli adresy rejestrów pasują do powyższej tabelki (np. rejestry holding mieszczą się w zakresie 40000–49999), to możliwe, że użyte są podane w tabeli przesunięcia.
  • Jeśli adresy są w podanych w tabelce zakresach, ale nie pasują typami rejestrów, prawdopodobnie są to prawidłowe adresy, lub przesunięte tylko o 1.

Aby ułatwić sobie szukanie rejestrów, znajdź w tabeli w dokumentacji rejestr odpowiadający za łatwo rozpoznawalną wartość. Przykładowo, większość falowników fotowoltaicznych pozwala odczytać częstotliwość sieci, która będzie w okolicach 50 Hz (lub 60 Hz w zależności od kraju i regionu).