ATNEL tech-forum
https://forum.atnel.pl/

RS485 Modbus rtu
https://forum.atnel.pl/topic22214.html
Strona 1 z 1

Autor:  Lex_ [ 1 maja 2019, o 15:34 ]
Tytuł:  RS485 Modbus rtu

Cześć, mam kłopot z komunikacją rs485, nigdy wcześniej jej nie używałem.
Obejrzałem wszystkie poradniki z kanału p. Mirka o rs485, podłączyłem na zestawie atb 1.04 wg poradnika.
Potrzebuje skomunikować ze sobą falownik afc200 i zestaw atb tak aby móc odczytać wybrane przeze mnie parametry.
Używam buforów cyklicznych - nadawczy wysyła wartość, w odbiorczym nigdy nic nie ma. Jest to najprawdopodobniej związane z błędnie używaną przez mnie komunikacją. Czy ktoś ma jakieś doświadczenie w tym temacie ? Podsyłam mój kod i zrzut z manuala dotyczący falownika.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Obrazek

Autor:  andrews [ 1 maja 2019, o 16:09 ]
Tytuł:  Re: RS485 Modbus rtu

Nie analizowałem dokładnie programu, ale na początek chciałem o coś spytać.
Lex_ napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Mógłbyś wytłumaczyć, co linijka ISR( USART_RXC_vect ); robi wewnątrz funkcji main()?

Autor:  Lex_ [ 1 maja 2019, o 16:43 ]
Tytuł:  Re: RS485 Modbus rtu

Niepotrzebnie się tam znalazła, mój błąd.
Zakomentowałem aby nie było wątpliwości.

Dorzucam funkcję inicjalizacji usart. Korzystam z konwertera znajdującego się na płytce - RS232 <-> RS485
Podejrzewam że wszystko rozbija się o CRC, ale wolałbym zapytać kogoś kto ma jakieś doświadczenie.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  micky [ 2 maja 2019, o 05:56 ]
Tytuł:  Re: RS485 Modbus rtu

Najpierw spróbuj sie skomunikować z PC'ta (terminal lub symulator Modbusa - Modbus Poll) a jak już zaczniesz coś czytać to wtedy dopiero zacznij komunikację z AVR.

Autor:  JarekB [ 2 maja 2019, o 06:39 ]
Tytuł:  Re: RS485 Modbus rtu

Może takie trywialne pytanie, czy ustawiłeś prędkość UARTA ?
(w nocie katalogowej masz dwie prędkości 9600 i 19200)
To po pierwsze.
Po drugie.
Warto by było podłączyć się do RS485 przejściówką RS485>USB i na PC podejrzeć czy coś na linii hula.
W zasadzie to każda zabawa z RS powinna się zacząć od "przyjęcia" choćby jednego bajta na terminal odpalony na PC.
Wtedy masz pewność że od strony mikrokontrolera wszystko jest ustawione dobrze.

Autor:  Lex_ [ 2 maja 2019, o 10:47 ]
Tytuł:  Re: RS485 Modbus rtu

W falowniku mam wszystko ustawione - zezwolenie na komunikacje, prędkość 9600 itp.
Pewnie spróbuje przez atb jako przejściówkę połączyć falownik z PC za radą kolegów. Jeżeli będę miał jeszcze jakieś problemy albo pytania to podeśle je tutaj. Na razie dziękuję za pomoc.

Autor:  skalarro [ 3 maja 2019, o 13:01 ]
Tytuł:  Re: RS485 Modbus rtu

Kolego,
Komunikacja Modbus to niestety nie jest zwykłe wysłanie paru bajtów po kabelku i radosne oczekiwanie na odpowiedź. Poczytaj sobie o tym protokole bo jest fajny, popularny dość, przydatny i warto go znać.
Po pierwsze- prawidłowa ramka modbus składa się z: adresu slave'a+funkcji+nr rejestru+ilosc danych+CRC.
Co chciałeś uzyskać swoim: char send_p[] = {'2', '3', '4', '4', '0', '0', '0', '3', '\0'}; // dane wysyłane do pobrania parametru.
Możesz spróbować złożyć "na piechotę" prawidłową ramkę i wysłać to na RS. Może sterownik coś odpowie... Ustal jaki masz adres falownika, dane spod jakiego adresu chcesz pobrać? Potem trzeba policzyć crc. Masz podpowiedź od producenta: Falownik obsługuje tylko funkcje 03 i 06, i podaje tylko jeden adres w jednym zapytaniu.

Autor:  Lex_ [ 3 maja 2019, o 17:55 ]
Tytuł:  Re: RS485 Modbus rtu

Póki co używałem już ze dwa programy na PC chcąc się skomunikować i poległy, zero odpowiedzi. Adres falownika sobie ustawiłem, znam go, to samo parametry transmisji. To że komunikacja nie jest taka prosta jak początkowo sądziłem już wiem. Zastanawia mnie natomiast to dlaczego nie mogę się połączyć przez przejściówkę z atb i program na PC - podłączam wszystko wg instrukcji, widzę jak dioda nadawcza miga, ale nic nie jestem w stanie odebrać. Musze znaleźć program, w którym widzę format ramki. Doczytałem w instrukcji że jeżeli wartość CRC się nie zgadza to falownik w ogóle nie odpowiada, ale jaki ja mam wpływ na CRC poprzez program PC ? Pracuje jeszcze nad przerobieniem biblioteki freemodbus ma atmege 32 i próbować to odpalić.

Autor:  micky [ 3 maja 2019, o 17:57 ]
Tytuł:  Re: RS485 Modbus rtu

Jakich software użyłeś na PC to prób?

Autor:  Lex_ [ 3 maja 2019, o 18:00 ]
Tytuł:  Re: RS485 Modbus rtu

Dokładnie mówiąc:
- Radzio Modbus Master Simulator
- Modscan64
- Modbus Poll

Rozumiem że CRC jest wbudowane w ramke i nie mam tam ingerencji. Prawda jednak taka że transmisje znam słabo bo używam pierwszy raz.

Autor:  skalarro [ 3 maja 2019, o 18:07 ]
Tytuł:  Re: RS485 Modbus rtu

Lex_ napisał(a):
CRC jest wbudowane w ramke i nie mam tam ingerencji

Jeżeli używasz programu an PC lub biblioteki master Modbus na AVR to tak. CRC to suma kontrolna wyliczana na podstawie całej ramki. Biblioteka liczy crc, dokłada na oniec ramki i wysyła. Slave odbiera ramkę, liczy swoje CRC i porównuje. Jak się nie zgadza to olewa ramkę i czeka na następną. Jak CRC jest ok to sprawdza pierwszy bajt ramki czy ona dotyczy jego. Jeżeli nie, to znów olewa. Jeżeli jest jego adres, sprawdza nr funkcji itd.

Użyj programu modbusPoll na pc. Idzie tam obejrzeć jak wygląda wysyłana ramka i jej CRC. Ewentualnie spróbuj zagadać z falownikiem bezpośrednio z PC. Potrzebujesz przejściówki RS485 na COM lub USB. Pamiętaj, że adres często podawany w urządzeniach jest w hex - idzie się przejechać na tym

Autor:  Lex_ [ 3 maja 2019, o 18:16 ]
Tytuł:  Re: RS485 Modbus rtu

Jest możliwość wykonania jakiegoś echo na linii transmisyjnej RS485 aby urządzenia podłączone odpowiedziały ? Adres rozgłoszeniowy zdaje się być 0 (zero).
Adres urządzenia ustawiłem sobie na wartość 5 (domyślnie był 12 czyli w hex 'C'). Jeżeli będzie bez efektów to muszę sprawdzić na innej przejściówce właśnie - np USB - RS485.

Autor:  skalarro [ 4 maja 2019, o 20:27 ]
Tytuł:  Re: RS485 Modbus rtu

Nie bardzo rozumiem jakie echo ty chcesz uruchomić.??
Na adres rozgłoszeniowy chyba też raczej żadne urządzenie Ci nie powinno odpowiedzieć. Owszem, jest takie coś ale chyba w innym celu. Co chciałbyś otrzymać wysyłając coś na adres 0?
Przeanalizuj sobie jak powinna wyglądać prawodłowa ramka jakiej oczekuje falownik, jaki adres chcesz odczytać i kombinuj. Na początek przez przejściówkę np usb-rs485 z komputera a jeżeli nie masz takiej to za pomocą programu w kompie "policz sobie crc dla ramki i ją zbuduj, a potem wyślij z procka przez uart. Nie myśl też, że to już prawidłowa obsługa modbusa - do tego jeszcze daleeeeka droga.

załóżmy, że Twój falownik ma adres tak jak pisałeś '5' a adres rejestru odczytywanego niech będzie 2.12. Wiesz też, że użyć musisz funkcji 03 więc rejestry holding registers mają zakres od 4xxxx

Prawidłowa ramka to:
AA BB CC CC DD DD EE EE
AA - adres faalownika
BB - funkcja
CC - nr rejestru
DD ilość danych
EE - CRC
Twoja ramka powinna wyglądać tak:

[05][03][07][DC][00][01][45][00]

i nie ma bata - falownik musi na to odpowiedzieć.
Pisz jak coś. Napisz jak efekty i jakim sprzętem dysponujesz do gadania z falownikiem

------------------------ [ Dodano po: 18 minutach ]

aa i jeszcze jedno:
Lex_ napisał(a):
Adres urządzenia ustawiłem sobie na wartość 5

jak tego dokonałeś??
Rzuciłem okiem na instrukcję i adres to 12 czylo 0C w HEX. Jak go zmieniłeś nie mając działającej komunikacji Z falownikiem?ą

Weź przeczytaj całą instrukcję (masz po polsku wiec chyba nie jest to trudne) zastanów się co jak działa i co chcesz osiągnąć i kombinuj. Potem napisz z którym etapem masz problem.

Autor:  Lex_ [ 4 maja 2019, o 21:02 ]
Tytuł:  Re: RS485 Modbus rtu

Cytuj:
Weź przeczytaj całą instrukcję (masz po polsku wiec chyba nie jest to trudne) zastanów się co jak działa i co chcesz osiągnąć i kombinuj


Kolego @skalarro spokojnie, opanuje to, nowa rzecz, uczę się, mam pytania to je zadaje. Za objaśnienia dzięki, na pewno się przydadzą.
Dziś załatwiłem sobie porządny przewód pod RS485 - ekranowany, dwie skręcone żyły itp, nie ma mnie jednak w domu i go dziś nie sprawdzę.

Cytuj:
jak tego dokonałeś??
Rzuciłem okiem na instrukcję i adres to 12 czylo 0C w HEX. Jak go zmieniłeś nie mając działającej komunikacji Z falownikiem?ą


Dokonałem bo mam fizyczny dostęp do falownika - przecież można odczytać poszczególne parametry falownika na wyświetlaczu i je zmienić za pomocą przycisków na falowniku.

Autor:  skalarro [ 4 maja 2019, o 21:10 ]
Tytuł:  Re: RS485 Modbus rtu

Lex_ napisał(a):
przecież można odczytać poszczególne parametry falownika na wyświetlaczu i je zmienić za pomocą przycisków na falowniku

A widzisz... tego z kolei ja nie doczytałem.

Lex_ napisał(a):
porządny przewód pod RS485 - ekranowany, dwie skręcone żyły itp

Wierz mi, to nie jest konieczne do testów. Nie mówie, że takie kable są zbędne, ale komunikacja na niewielkie odległości, z małym baudrate i w środowisku bez ekstremalnych zakłóceń to na kablu od tostera pójdzie.

Pobaw się na spokojnie, a jak coś to pytaj śmiało

Autor:  Lex_ [ 4 maja 2019, o 21:18 ]
Tytuł:  Re: RS485 Modbus rtu

Cytuj:
Wierz mi, to nie jest konieczne do testów. Nie mówie, że takie kable są zbędne, ale komunikacja na niewielkie odległości, z małym baudrate i w środowisku bez ekstremalnych zakłóceń to na kablu od tostera pójdzie.

Może i tak ale muszę coś wyeliminować, dlatego zmieniłem przewód aby mieć 100% pewności.
Jutro dalsze testy. Na razie in touch.

Autor:  Lex_ [ 5 maja 2019, o 21:26 ]
Tytuł:  Re: RS485 Modbus rtu

Obrazek

Ruszyło. Zmieniłem przewód, podpiąłem wszystko jak należy i układ zaczął gadać. Dla potomnych:
Obrazek

Zostało opanować kod na avr. Jeżeli to możliwe to proszę tematu jeszcze nie zamykać panie admin.

Autor:  micky [ 5 maja 2019, o 22:30 ]
Tytuł:  Re: RS485 Modbus rtu

No to teraz możesz się zabrać za kodowanko :)

Autor:  Lex_ [ 6 maja 2019, o 12:23 ]
Tytuł:  Re: RS485 Modbus rtu

Tak jest, trzeba teraz opracować komunikację z avr a potem z stm32 bo docelowo prawdopodobnie ten układ będzie zastosowany. Akurat do mojego projektu muszę zastosować RS485 Modbus RTU bo taki sposób transmisji ma falownik, ale z doświadczenia wiem że jest on mega wygodny ponieważ miałem styczność z systemem klimatyzacji w obiekcie na dużym terenie (szpital) gdzie temperaturę zadaną zmienia się zdalnie z jednego miejsca na komputerze PC dla ponad 20 jednostek w różnych miejscach.

Autor:  micky [ 6 maja 2019, o 16:41 ]
Tytuł:  Re: RS485 Modbus rtu

Po to właśnie zostały wymyślone takie rozwiązania :)

Autor:  Lex_ [ 14 maja 2019, o 18:52 ]
Tytuł:  Re: RS485 Modbus rtu

ObrazekObrazek

Modbus zaczął wyrzucać dane, muszę teraz dobrać się do odpowiedniego rejestru i odczytywać dane. Zauważyłem dzięki programowi Modbus Poll że dane są w postaci 16 bitowej i wartość w rejestrze zapisana jest w starszej części (np. adres urządzenia). Tak czy siak najtrudniejsze za mną. Dziękuję za pomoc. Gdyby była potrzeba to zrobię jakiś poradnik jak uruchomić coś takiego we własnym zakresie - wystarczy napisać pod postem jeżeli kogoś to interesuje. Kodu udostępnić nie mogę bo posłuży m. in. do mojej pracy inżynierskiej.

Pozdrawiam.

Autor:  Tom92 [ 14 maja 2019, o 20:04 ]
Tytuł:  Re: RS485 Modbus rtu

Cześć Lex_,
Fajnie, że Ci się udało uruchomić Modbus. Oczywiście jestem zainteresowany takim poradnikiem.
Pozdrawiam.

Autor:  Lex_ [ 14 maja 2019, o 20:50 ]
Tytuł:  Re: RS485 Modbus rtu

Ok, postaram się coś skleić w wolnym czasie ;)

Autor:  BitRider [ 14 maja 2019, o 23:49 ]
Tytuł:  Re: RS485 Modbus rtu

Super jeśli uda Ci się opisać. Będzie to duże ułatwienie przy stawianiu pierwszych kroków z modbusem

Wysłane z mojego SM-G900F przy użyciu Tapatalka

Autor:  Marhef [ 15 maja 2019, o 07:58 ]
Tytuł:  Re: RS485 Modbus rtu

Ja też chcę opis :)

Autor:  marcin w [ 19 maja 2019, o 13:00 ]
Tytuł:  Re: RS485 Modbus rtu

Hej,

Lex_, jaką bibliotekę do modbus użyłeś ? Ja ostatnio mordowałem modbus na STM32, niektóre procki mają ciekawą opcjonalność w module USART - receive timeout. Polega ona wykrywaniu przez usart ciszy na linii RX. Dzięki czemu całkowicie odszedłem od odbioru i wysyłania danych przez CPU. Wszystko leci przez DMA. Jak doleci ramka, na linii zapanuje cisza USART zgłasza przerwanie, w którym analizuję odebraną ramkę.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/