![]() |
|
Problem z odczytem Modbus RTU - MAX485 - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Problem z odczytem Modbus RTU - MAX485 (/watek-problem-z-odczytem-modbus-rtu-max485) |
Problem z odczytem Modbus RTU - MAX485 - Rodziu - 04-02-2025 Cześć, Mam problem z odczytem rejestrów po Modbusie RTU via moduł MAX485 - Arduino Nano. Skonfigurowałem jak w poniższym kodzie, za pomocą biblioteki ArduinoModbus i ArduinoRS485, nie mam już pomysłu co robię nie tak, siedzę nad tym od rana, chyba trzeba będzie swoją bibliotekę napisać. Serial wyświetla mi, że dane zostały wpisane z powodzeniem, na płytce mruga dioda TX, ale za chiny symulatorze nie mogę nic odczytać, ani się z nim połączyć. RI podłączone do RX, DI do TX, już nawet zdefiniowałem te piny, bo myślałem, że tam coś jest nie tak. DE i RE mam zmostkowane, nie chciałem ich używać, ale potem już próbowałem podłączenie ich pod PIN 2 i inne, ale również bezskutecznie. Są jakieś "haczyki" w komunikacji Nano po RS485 protokołem Modbus? Napisałem możliwie najprostszy kod, żeby tylko zobaczyć jakąkolwiek odpowiedź, ale nic. Z góry dziękuję ![]() Kod: #include <ArduinoRS485.h>RE: Problem z odczytem Modbus RTU - MAX485 - kaczakat - 04-02-2025 Albo sobie bierzesz płytkę z automatycznym przełączaniem kierunku transmisji, albo sobie to jednak obsługujesz w kodzie. Poza tym poprawność połączenia możesz sobie spawdzić dwoma modułami RS485, drugi podłącz do PC za pomocą adaptera USB-UART-RS485, albo gotowym USB-RS485, wtedy po prostu powinno działać Serial.print. No i używasz pinów 0 i 1 do modbus, a te piny w NANO są używane przez Serial do drukowania na USB do PC. RE: Problem z odczytem Modbus RTU - MAX485 - Rodziu - 04-02-2025 (04-02-2025, 13:18)kaczakat napisał(a): Albo sobie bierzesz płytkę z automatycznym przełączaniem kierunku transmisji, albo sobie to jednak obsługujesz w kodzie. Poza tym poprawność połączenia możesz sobie spawdzić dwoma modułami RS485, drugi podłącz do PC za pomocą adaptera USB-UART-RS485, albo gotowym USB-RS485, wtedy po prostu powinno działać Serial.print. Próbowałem na innych pinach, też lipa, nie wiem, może coś trafione jest. Wieczorem spróbuję z wersją modułu o dwóch pinach do komunikacji - RX TX, może będzie łatwiej ? RE: Problem z odczytem Modbus RTU - MAX485 - kaczakat - 04-02-2025 RT,TX i GND, po stronie RS485 wystarczy spiąć A i B. RE: Problem z odczytem Modbus RTU - MAX485 - Rodziu - 04-02-2025 (04-02-2025, 18:20)kaczakat napisał(a): RT,TX i GND, po stronie RS485 wystarczy spiąć A i B. Szczerze, nie wiem jaki był problem, naprawdę. Osiwiałem dziś prawie przez te pierniczone biblioteki, których są masy i połowa z nich nie działa i nie wiadomo tak naprawdę co jest w środku. Sprzętowo wszystko śmiga, bo skrobnąłem w gołym cpp kod i jest elegancko.
RE: Problem z odczytem Modbus RTU - MAX485 - oscarX - 04-02-2025 (04-02-2025, 22:19)Rodziu napisał(a):(04-02-2025, 18:20)kaczakat napisał(a): RT,TX i GND, po stronie RS485 wystarczy spiąć A i B. To jest problem ogólny - czy użyć gotowej biblioteki, czy napisać własny kod. W pierwszym przypadku trzeba poświęcić czas na zapoznanie się z dokumentacją (która często nie wszystko opisuje), czasami też doświadczalnie rozpoznać jak to działa (i często przekonanć się, że biblioteka jest nieodpowiednia). W drugim przypadku mamy zwykle dobrze opisaną sytuację (datasheety układów scalonych lub opisy protokołów) ale trzeba więcej napisać. Ogólnie najgorszą częścią pracy programisty jest zajmowanie się cudzym kodem. |