Sofar G3 + chint DTSU666 - odczyt danych przez logger ModbusTCP

liczniki co 2 sek, bo tak naprawdę najbardziej interesują mnie napięcia na sieci (i nie zwróciłem uwagi że do sterowania grzałkami wykorzystuję właśnie te parametry, dopiero jak przestało działać to zacząłem kopać i zastanawiać się o co chodzi), a falownik 8-10 s


flows (49).json (2,8 KB)

Taki układ taktowany jest co 1sek. Na kolejnych wyjściach pojawia się “impuls” co sek.
Przy takich połączenia otrzymujesz pobudzenia co 2,4,8,16 sek niezależnie i niejednocześnie.
Zagwarantowany jest odstęp 1sek pomiędzy zdarzeniami.

bardzo dziękuję, będę testował :slight_smile:
–edit–
@RobinI30 jeszcze raz dzięki od dwóch dni działa bez problemu nawet jednego timeout’u nie było :slight_smile:

Panowie, a czy komuś udało się pożenić USR-DR404 z chint DSTU-666 i hybrydowym Sofar G3? Probowałem robić odczyty, probowałem żenić bezpośrednio z falownikiem (jako bridge) niestety nic z tego.

Po podłączeniu obu USR na liczniku zaświeca się dioda komunikacji jednak falownik nadal nie ma tych danych. RX/TX mruga na obu konwerterach. Probowałem tryb MODBUS TCP <-> MODBUS RTU, probowałem Transparent Mode, jednak mimo widoczniej komunikacji na diodach po obu stronach falownik nadal nie pokazuje danych (po podłączeniu licznika z falownikiem bezpośrednio przewodem dane widoczne są natychmiast).

Ustawienia mam jak na załączonym obrazie (oczywiście jedno urządzenie w trybie server, drugie client).

Ma ktoś pomysł dlaczego urządzenia nie przekazują sobie danych?

Tak to opisałeś, że aż się nie chce odpowiadać :pensive:

  1. Zestaw połączenie na drucie falownik<>licznik, zapamięta parametry transmisji (już to robiłeś i to działa?)
    Od tego momentu nic na nich nie zmieniaj.
    Rozumiem że próbujesz zrobić most na dwóch konwerterach?

  2. Jeden ustawiasz jako serwer a drugi jako klient TCP. W kliencie trzeba podać podać IP do tego serwera i ustawić post.

  3. W parametrach uart ustawiasz jednakowo jak dla połączenia pkt1.

  4. Nie ustawiasz żadnego protokołu modbus tylko zwykły serial, uart czy cokolwiek tam masz aby dane przelatywały bez obróbki.

Nie mam tego konwertera więc piszę jak powinno być bez względu na rodzaj konwertera.
Teraz możesz podłączyć licznik i falownik - serwer od strony licznika ( choć nie powinno mieć to znaczenia). Trzeba zwrócić uwagę na poprawność podłączenia zacisków AB

Pewnie jest na nich jakaś strona statusowa więc coś więcej powie o stanie połączenia.

Mniej więcej tyle da się się na razie odpowiedzieć

Wybacz za zamęt - postaram się to opisać jeszcze raz.

Połączenie między Licznikiem a Falownikiem po przewodzie działa poprawnie.
Aktualnie próbuję zrobić most na dwóch konwerterach - tak jak mówisz.

Konwertery ustawione w trybie “Transparent mode”, jeden jako TCP Server, drugi TCP Client. Adresy IP, porty tcp ustawione, moduły komunikują się. Po podłączeniu wtyczki konwerter<->falownik na liczniku zaświeca się ikonka komunikacji RS485, więc MOST wydaje się działać poprawnie. Jednak mimo tej komunikacji na falowniku nie pojawiają się dane zużycia. Parametry UART ustawione na obu konwerterach identycznie, zgodnie z tymi które ustawione są na liczniku (9600, stop 1, data bit 8).

Też mi się wydaje, że w tym przypadku nie ma znaczenia po której stronie jest Serwer a po której Klient bo to komunikacja dwukierunkowa, ale dla pewności próbowałem oba scenariusze.

Jest tam jakaś strona statusowa,… liczniki odebranych/nadanych bajtów, połączony klient?

Falownik inicjuje transmisję, więc można by prześledzić na którym poziome się urywa.
W konwerterze jest taka opcja “485 switch settings” - nie znam tego konwertera ale wygląda na kluczową. Trzeba doczytać jak odbywa się przełączanie nadawanie/odbiór na 485.

Właśnie nie mogę zrozumieć tej opcji, w instrukcji ani słowa o niej nie znalazłem.

Połączyłem się przez vcom do konwertera i zrobiłem odczyt przez putty. Z falownika otrzymuję dane jak w załączniku. Nie jestem pewien czy to krzaki czy poprawny odczyt (wysyła zapytanie o dane do miernika?).

Strony statusowej brak, ale vcom po podłączeniu pokazuje, że dane ciągle przepływają (COM4).

Screenshot at 14-13-59

jeśli potrafisz to wyświetlić w HEX to wtedy można coś powiedzieć.
Raczej to nie modbus tylko coś negocjują?
pierwszy bajt to powinien być ID licznika, a drugi to funkcja U w hex 0x55 - takie funckcji w modbus nie ma

Zrób odwrotnie spróbuj połączyć się do licznia z modułem serwer za pomocą jakiegoś symulatora modbus master - na początek tylko tyle.

Takie dane udało mi się złapać.

Jakie IDlicznika ustawiłeś?
Pomagam Ci z doskoku więc za dokładnie wgryźć się nie mam czasu… kombinuj.

ID licznika jest domyślne, bez zmian. W tej konfiguracji łapie kontakt po kablu więc wydaje mi się, ze konfiguracja urządzeń po obu stronach jest po poprawna, jedynie coś na moście. Wydaj mi sie, czy to wygląda jakby falownik wysłał zapytanie do “puli id” o dane z licznika licząc na odpowiedź?

Wcześniej mi nie było to potrzebne, ponieważ wszystkie urządzenia, które czytałem miały inne adresy i po tym wiedziałem co czytam. Teraz chciałbym podłączyć urządzenia które mają te same adresy ale różne unitid. Teraz mam to rozwiązane przez node Switch


Co zrobić żeby można było wskazać unitid dla tego switcha?

Zamiast addess czy dodatkowo?
To jest prosty switch sprawdzający warunek dla jednego parametru, bardziej złożone warunki bada się za pomocą funkcji lub dodatkowymi nodadami po paramertrze msg.modbusRequest.unitid.

Dodatkowo. Chcę sprawdzać po unitid i adresie.

Dwa switche, pierwszy rozgałęzia po ID, kolejne po adresie. Prawdopodobnie po adresie trzeba będzie powielić dla każdego ID. Nie widzę całości i tylko się domyślam. Być może da się to zrobić zupełnie inaczej - odpowiadam na konkretnie zadane pytanie.

Jak dam w swichu rozróżnienie po unitid to zwraca mi tablice z wartościami i nie wiem z których adresów one są. Pewnie trzeba by zastosować jakąś funkcję która wyfiltruje flow po unitid ale nie zmieni jego struktury.

Nic się nie zmienia - cały czas w msg. jest komplet informacji.
Jeśli nic więcej nie podasz, to patrząc przez “dziurkę od klucza” nic więcej nie dodam.

Chciałbym żeby to działało tak:




ale niestety nie działa.

Działa :slight_smile: tylko dla jednego ID. Musisz powielić Slelect Group (lub utworzyć dedykowane) dla każdego ID. Jeśli pomiędzy jednym switchem a drugim nic nie zmieniasz w msg. to działać musi.
Najlepiej gdybyś pokazał do czego dążysz i jak to w całości działało do tych czas.
Obrazki tylko jako info pomocnicze.