ATNEL tech-forum https://forum.atnel.pl/ |
|
RS485 Modbus rtu https://forum.atnel.pl/topic22214.html |
Strona 1 z 1 |
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): 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. |
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: | 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: | 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/ |