Cześć wszystkim,
Buduję zdalny system telemetrii GSM do monitorowania floty pomp nadmuchu dla hal namiotowych i utknąłem na fizycznej warstwie komunikacji Modbus. Mimo spędzenia nad tym wielu godzin i weryfikacji ustawień urządzenia nie chcą ze sobą rozmawiać.
Mój sprzęt:
Master: Bramka Teltonika TRB142 (posiada fizyczny interfejs RS232).
Slave: Przetwornik różnicy ciśnień Novus NP785 (posiada interfejs RS485).
Konwerter: Zwykły konwerter RS232 na RS485 (zielona płytka z zaciskami śrubowymi, niestety bez diod sygnalizacyjnych RX/TX).
Zasilanie: Zasilacz stabilizowany 12 V DC.
Jak to wszystko połączyłem (warstwa fizyczna):
Zasilanie: 12 V poprowadzone równolegle do zacisków zasilania w konwerterze oraz do Novusa (zacisk 1: +12 V, zacisk 2: GND). Masy (GND) zasilacza, bramki, konwertera i przetwornika są połączone.
RS232 (Teltonika -> Konwerter): Podłączone na krzyż złącze z bramki do konwertera. TX z Teltoniki idzie na RX konwertera, a RX z Teltoniki na TX konwertera.
RS485 (Konwerter -> Novus): Z wyjść A/B konwertera do zacisków 7 i 8 w Novusie. (Sprawdzałem też zamianę linii A z B miejscami - bez zmian).
Do testów odłączyłem kabel konfiguracyjny USB od Novusa, żeby nie blokował portu.
Konfiguracja programowa (Modbus RTU):
W programie konfiguracyjnym NXperience od Novusa ustawiłem parametry i sprawdziłem je dwukrotnie:
Baud rate: 19200
Data bits: 8, Stop bits: 1, Parity: None
Slave ID: 1
W panelu WebUI Teltoniki (Narzędzia szeregowe) parametry portu RS232 są ustawione identycznie (19200, 8N1, brak kontroli przepływu).
Co próbuję odczytać:
Zgodnie z tabelą producenta Novus próbuję odczytać wartość Float (ciśnienie) pod adresem bazowym 6. W Teltonice jako Modbus Serial Client żądam odczytu 2 rejestrów typu Holding Registers (Funkcja 3), wpisując rejestr początkowy jako 7 (Teltonika dodaje offset +1) lub 6. Sprawdzałem różne formaty endianness dla Floata.
Objawy i błędy:
Przy każdej próbie wywołania testu z poziomu Teltoniki otrzymuję błąd: communication error: Operation timed out.
Ponieważ na konwerterze RS232/RS485 nie ma żadnych diod LED, jestem całkowicie "ślepy" i nie wiem, czy Teltonika w ogóle cokolwiek wysyła na port RS232, czy ramka ginie w konwerterze, czy Novus nie odpowiada.
Moje pytania do bardziej doświadczonych:
Czy w przypadku bramki Teltonika TRB142 i taniego konwertera RS232/RS485 potrzebna jest jakaś dodatkowa sprzętowa kontrola przepływu (np. linie RTS/CTS), aby konwerter wiedział, kiedy przełączyć się na nadawanie w RS485?
Jak najprościej bez oscyloskopu sprawdzić, czy z portu RS232 w Teltonice fizycznie wychodzi ramka Modbus po kliknięciu "Test"?
Czy widzicie w tym zestawieniu jakiś ewidentny błąd, który popełniłem?
Z góry dziękuję za wszelkie sugestie, bo powoli brakuje mi już pomysłów. Oczywiście jeśli ktoś wyrazi chęć pomocy, zapłacę za spięcie tego systemu.
Buduję zdalny system telemetrii GSM do monitorowania floty pomp nadmuchu dla hal namiotowych i utknąłem na fizycznej warstwie komunikacji Modbus. Mimo spędzenia nad tym wielu godzin i weryfikacji ustawień urządzenia nie chcą ze sobą rozmawiać.
Mój sprzęt:
Master: Bramka Teltonika TRB142 (posiada fizyczny interfejs RS232).
Slave: Przetwornik różnicy ciśnień Novus NP785 (posiada interfejs RS485).
Konwerter: Zwykły konwerter RS232 na RS485 (zielona płytka z zaciskami śrubowymi, niestety bez diod sygnalizacyjnych RX/TX).
Zasilanie: Zasilacz stabilizowany 12 V DC.
Jak to wszystko połączyłem (warstwa fizyczna):
Zasilanie: 12 V poprowadzone równolegle do zacisków zasilania w konwerterze oraz do Novusa (zacisk 1: +12 V, zacisk 2: GND). Masy (GND) zasilacza, bramki, konwertera i przetwornika są połączone.
RS232 (Teltonika -> Konwerter): Podłączone na krzyż złącze z bramki do konwertera. TX z Teltoniki idzie na RX konwertera, a RX z Teltoniki na TX konwertera.
RS485 (Konwerter -> Novus): Z wyjść A/B konwertera do zacisków 7 i 8 w Novusie. (Sprawdzałem też zamianę linii A z B miejscami - bez zmian).
Do testów odłączyłem kabel konfiguracyjny USB od Novusa, żeby nie blokował portu.
Konfiguracja programowa (Modbus RTU):
W programie konfiguracyjnym NXperience od Novusa ustawiłem parametry i sprawdziłem je dwukrotnie:
Baud rate: 19200
Data bits: 8, Stop bits: 1, Parity: None
Slave ID: 1
W panelu WebUI Teltoniki (Narzędzia szeregowe) parametry portu RS232 są ustawione identycznie (19200, 8N1, brak kontroli przepływu).
Co próbuję odczytać:
Zgodnie z tabelą producenta Novus próbuję odczytać wartość Float (ciśnienie) pod adresem bazowym 6. W Teltonice jako Modbus Serial Client żądam odczytu 2 rejestrów typu Holding Registers (Funkcja 3), wpisując rejestr początkowy jako 7 (Teltonika dodaje offset +1) lub 6. Sprawdzałem różne formaty endianness dla Floata.
Objawy i błędy:
Przy każdej próbie wywołania testu z poziomu Teltoniki otrzymuję błąd: communication error: Operation timed out.
Ponieważ na konwerterze RS232/RS485 nie ma żadnych diod LED, jestem całkowicie "ślepy" i nie wiem, czy Teltonika w ogóle cokolwiek wysyła na port RS232, czy ramka ginie w konwerterze, czy Novus nie odpowiada.
Moje pytania do bardziej doświadczonych:
Czy w przypadku bramki Teltonika TRB142 i taniego konwertera RS232/RS485 potrzebna jest jakaś dodatkowa sprzętowa kontrola przepływu (np. linie RTS/CTS), aby konwerter wiedział, kiedy przełączyć się na nadawanie w RS485?
Jak najprościej bez oscyloskopu sprawdzić, czy z portu RS232 w Teltonice fizycznie wychodzi ramka Modbus po kliknięciu "Test"?
Czy widzicie w tym zestawieniu jakiś ewidentny błąd, który popełniłem?
Z góry dziękuję za wszelkie sugestie, bo powoli brakuje mi już pomysłów. Oczywiście jeśli ktoś wyrazi chęć pomocy, zapłacę za spięcie tego systemu.