ATNEL tech-forum https://forum.atnel.pl/ |
|
RS485 i Modbus raz jeszcze (reinkarnacja) ;) https://forum.atnel.pl/topic18381.html |
Strona 1 z 1 |
Autor: | skalarro [ 10 maja 2017, o 21:13 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
a już myślałem, że ostatnio coś napisałeś nie tak i post został wypalony laserem. Procek nie odpowiada w ogóle czy odpowiada błędem?? Jeżeli milczy całkiem, to znaczy że prawdopodobnie coś z komunikacją. Jakby slave był wywołany do odpowiedzi jakiejkolwiek (dobrze lub źle) czy;i przyszłoa by ramka dla adresu 0x08 i posiadająca dobrą sumę kontrolną, procek by dał odpowiedź. Wykonałby polecenie w przypadku prawidłowego zapytania lub zwrócił błąd, że nie zna funkcji, zły zakres danych czy cokolwiek innego. Zobacz czy nie zamieniłeś linii na magistrali. Powinno być A-A i B-B. zamień na chwilę, nic nie uszkodzisz. Może masz max485 źle obsadzony w podstawce?? sprawdź z notą katalogową wyprowadzenia. wywal to: const UCHAR ucSlaveID[] = { 0xAA, 0xBB, 0xCC }; spróbuj z parity even ustal czy procek milczy czy odpowiada błędem - wtedy będziemy wiedzieć w którą strona z poszukiwaniami się udać |
Autor: | bpx03 [ 10 maja 2017, o 21:58 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Spróbowałem chyba wszystkich kombinacji: 1. Zamienione TX z RX pod wyświetlaczem 2. Zamieniona linia A i B 3. Zmienione na Parity Even (musiałem przy okazji dać upgrade softu analyzera bo nie miał wsparcia dla Parity Even w poprzedniej wersji) 4. Podłączyłem logic analyzera do TX pod wyświetlaczem (i masy atmega) i "jakieś krzaki" tam są. Dodalem do programu miganie diodą led na początku każdej funkcji callback z demo.c - nie mignęła ani razu. PLC również nie pokazuje że jakiś błąd komunikacji wystąpił. Wychodzi na to że atmega nie potrafi rozkodować prawidłowo danych z pinu TX pod wyświetlaczem (ale jak wspomniałem - jakieś "krzaki" tam się pojawiają) A miało być tak prosto |
Autor: | skalarro [ 11 maja 2017, o 05:56 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
bpx03 napisał(a): ale jak wspomniałem - jakieś "krzaki" tam się pojawiają hmmm, co to znaczy jakieś krzaki?? nie baw się saleae tylko weź normalną przejściówkę rs232, podłącz się pod piny RX, potem TX przy procku i użyj terminala. Najlepiej realterm - będziesz miał możliwość przełączenia się na HEX i oblądanie gotowych ramek modbusa. zobaczysz gdzie leży problem. |
Autor: | bpx03 [ 11 maja 2017, o 07:13 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Po wpięciu sie rownolegle do złącza Arc na płytce Salae pokazuje mi ładnie ramkę modbus po użyciu filtra. Gdy podepnę sie pod TX (pod zegarkiem) ramka modbus sie nie pokazuje tylko jakiś randomowy ciąg 0 1 (moze poprostu mam cos nie tak ustawione?) ale powiem szczerze ze nie sprawdzałem czy jest w tych jeżach ramka modbus bo myślałem ze ja wykryje gdyby tak było. Spróbuje pozniej użyć zestawu jako przejściówkę i zobaczymy czy cos z tego wyjdzie. Zakładam ze pod J9 w zestawie mam podpiąć piny z pod wyświetlacza i mieć rozwarte zworki Jp7 i JP6. Prawda? Dzieki |
Autor: | micky [ 11 maja 2017, o 16:02 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
A czy ty przypadkiem nie próbujesz podłączyć się Saleae do linii różnicowej? Sent from my Mi-4c using Tapatalk |
Autor: | bpx03 [ 11 maja 2017, o 20:09 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
[quote="micky"]A czy ty przypadkiem nie próbujesz podłączyć się Saleae do linii różnicowej? Zgadza się i w tym przypadku działa całkiem dobrze co widać na screenie z pierwszego posta Czytałem w dokumentacji Saleae że powinienem podłączyć się pod masę i niby ma wystarczyć w tym przypadku podłączenie się do jednego przewodu. Niestety, to mi nie działało więc podłączałem na chybił trafił wszędzie... |
Autor: | aaadamw [ 11 maja 2017, o 20:17 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
jaki masz procesor? mam sprawdzony projekt dla M328 i M324 jako slavey mogę Ci "pożyczyć" https://youtu.be/1yAbmi7NLRA |
Autor: | aaadamw [ 12 maja 2017, o 09:56 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Rzuciłem okiem na Twoje pliki i są one inne niż moje - masz jakąś inną wersję. w załączniku znajdziesz projekt z działającym Modbusem na M324. To jest program dla tej płytki z wyświetlaczem 7-seg z filmu kilka postów wyżej. drugi jest na M328. Ten pobiera nastawy z potencjometrów i czujnika ds18b20. Wywaliłem kilka plików które nie dotyczą modbusa, od wyświetlacza i 1Wire. Musisz tylko w pliku main.c zamienić wszystkie odwołania do wyświetlania na własne w zależności jaki masz wyświetlacz. w razie pytań pisz. Udanej zabawy. |
Autor: | bpx03 [ 12 maja 2017, o 09:57 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Wielkie dzięki aaadamw, już się nie mogę doczekać aż będę mógł to sprawdzić popołudniu |
Autor: | bpx03 [ 12 maja 2017, o 23:15 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Tak więc skompilowałem, wrzuciłem na 328 i... zero odzewu. Podłączyłem trzy piny z pod wyświetlacza pod PD0, PD1, PD2 (DE). Nie widzę chyba innej opcji jak wymienić Maxa bo może jest padnięty i wszystko psuje :/ |
Autor: | aaadamw [ 13 maja 2017, o 06:58 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Zanim wymienisz maxa sprawdź tym swoim saleae czy masz przebieg uart za nim. Po drugie skąd wiesz że Master jest prawidłowo zaprogramowany? Jakie rejestry odpytujesz? Jaką funkcją? Po trzecie. Na początek jako mastera użyłbym komputera i jakiegoś programu MODBUS master. Wtedy lączysz to bez maxa. Tylko uart. |
Autor: | bpx03 [ 13 maja 2017, o 18:01 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
aaadamw napisał(a): Zanim wymienisz maxa sprawdź tym swoim saleae czy masz przebieg uart za nim.
Po drugie skąd wiesz że Master jest prawidłowo zaprogramowany? Jakie rejestry odpytujesz? Jaką funkcją? Po trzecie. Na początek jako mastera użyłbym komputera i jakiegoś programu MODBUS master. Wtedy lączysz to bez maxa. Tylko uart. |
Autor: | skalarro [ 13 maja 2017, o 21:23 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
hej, widzę że jeszcze walczysz... Teraz tak spojrzałem na ramkę wysyłaną przez Twój PLC i powiem Ci - nie podoba mi się ramka wysyłana przez niego. Przede wszystkim suma kontrolna dla slave 8, funkcja 3, adres 1000, ilość danych 1 powinna być 04E3 a u Ciebie jest E304. Cała ramka z zapytaniem od mastera powinna wyglądać: [08][03][03][E8][00][01][04][E3] ściągnij sobie program ModbusMAT i zamiast PLC użyj komputera w roli mastera. Ale uwaga! -potrzebujesz przejściówki usb-rs485. jak nie masz to użyj uart ale wtedy pomiń max485 (tylko nie wiem czy zadziała tak). I jeszcze jedno. Zaobserwowałem kiedyś, że ModbusMAT zaniża adresy w wysyłanej ramce. czyli jak wyślesz ramkę j.w. on zamieni adres z 1000 na 999 i wyśle ramkę [08][03][03][E7][00][01][34][E0], jak zrobisz adres 1001, w ramce dostaniesz 0x03E8 czyli 1000. Spróbuj, bo błąd sumy kontrolnej tłumaczyłby dlaczego procesor nie odpowiada na zapytania. Po prostu ramki są traktowane jako uszkodzone i ignorowane |
Autor: | bpx03 [ 13 maja 2017, o 21:40 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Dzięki za odzew skalarro Z całym szacunkiem za Twój sokoli wzrok, ale wydaje mi się że CRC powinno być dobre.. Wkońcu PLC za 5k+ Dodatkowo Salae gdy wykryje zły CRC daje znać u góry "Invalid CRC" czyli wydaje mi się że ten wysłany przez PLC powinien być dobry. Mam przejściówkę RS485 wbudowaną w ATB więc jutro jeszcze powalcze i zobaczę co z tego wyjdzie. Jak nie wypali to zamówię "kilka" maxów i może na którymś zadziała jak powinno. Pozdrawiam ------------------------ [ Dodano po: 12 minutach ] skalarro napisał(a): hej, widzę że jeszcze walczysz... Teraz tak spojrzałem na ramkę wysyłaną przez Twój PLC i powiem Ci - nie podoba mi się ramka wysyłana przez niego. Przede wszystkim suma kontrolna dla slave 8, funkcja 3, adres 1000, ilość danych 1 powinna być 04E3 a u Ciebie jest E304. Czytając ponownie Twój post zauważyłem że jest może jakiś problem z byte order.. 04 E3 a E3 04 to prawie to samo tylko w innej kolejności.. |
Autor: | bpx03 [ 14 maja 2017, o 10:21 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Wielkie dzięki chłopaki za zainteresowanie tematem! Właśnie pogrzebałem trochę w necie odnośnie tych bajtów w CRC. Wychodzi na to że wszystko jest w porządku. Standardowe bajty jak adresy, dane itp w ramce modbus są przesyłane w ten sposób że High Byte jest przesyłany najpierw później Low Byte. W CRC natomiast jest odwrotnie - Low Byte | High Byte. To by się zgadzało dlaczego w Twoim Raw-ie wyglądają na odwrócone a mimo tego Salae nie wyświetla tego jako błędu CRC. Wielkie dzięki chłopaki za zainteresowanie. Chyba faktycznie pozostaje sprawdzić Max-a bo za nim nie widać w żaden sposób interesujących danych. Czy po wpięciu się w RX (TX) za maksem (do pinów pod wyświetlaczem LCD w zestawie ATB) i bez zmiany zadnych ustawien w Salae powinienem widzieć ramkę w ten sam sposób jak po wpięciu pod A i B? |
Autor: | aaadamw [ 14 maja 2017, o 11:09 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
idziesz jakąś dziwną drogą ze sprawdzaniem tego wszystkiego. Zrób tak: 1. podłącz zestaw ATB samym uartem z PC - sprawdź jakimś programem na kompie czy działa ci program na atmedze. 2. Jak zadziała to zamień uart na RS485 3. Jak zadziała to zamień kompa na PLC. 4. Jak nie zadziała to podłącz PLC z kompem po RS485 a na kompie uruchom jakiś program działający jako SLAVE. |
Autor: | skalarro [ 14 maja 2017, o 18:31 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
masz zwykłą przejściówkę usb-rs232 za 4-10 zł?? na pewno masz ich kilka ;] Ja bym uruchomił komunikację jak dotychczas - czyli PLC i slave na atmedze (w ATB) a wspomnianą przejściówką podpiąłbym się pod pin RX atmegi czyli PD0. Podsłuchaj linię jakimś terminalem ale takim gdzie możesz przełączyć na hex (realterm jest bardzo ok) i zobacz co się dzieje na linii. Za jednym razem wykluczysz uszkodzenie max485 i zabaczysz jak wygląda ramka i czy CRC jest w odwrotnej kolejności. Zdziwisz się ;] |
Autor: | bpx03 [ 14 maja 2017, o 20:43 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Dzięki skalarro za dogłębne śledztwo Posłuchałem rady, znalazłem przejściówkę podłączyłem i.. Upewniłem się czy działa i wrzuciłem kod z BB na szybko. Działa, RealTerm pokazywał dane.. Wpięłem się również do RX i TX pod wyświetlaczem aby zobaczyć co wychodzi z MAX-a.. praktycznie głucho. Przełączyłem linie A i B i ponowiłem próbę... Bezskutecznie.. W Salae pokazuje bez problemu że dane modbusa docierają. Spróbowałem jeszcze podpiąć się bezpośrednio do nóżki Maxa.. Nic nie pokazuje. "Przedzwoniłem" linię A i B w złączu ARC z nóżkami Maxa, jest ok. Sprawdziłem czy dochodzi zasilanie, też wszystko ok. Sprawdziłem również czy jest przejście pomiedzy Maxem a tymi pinami pod wyświetlaczem, jest dobrze. Pozostaje mi myśleć że to jednak problem z Maxem.. |
Autor: | skalarro [ 14 maja 2017, o 21:01 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
bpx03 napisał(a): Pozostaje mi myśleć że to jednak problem z Maxem. Jak tam sobie chcesz, rób jak uważasz.. możesz zmienić maxa ale to nie bedzie to Podłącz się tym real term pod PD0 i posłuchaj przez przejściówkę co się dzieje na linii. Potem wywal ten wypasiony PLC za pięć koła i wyślij prawidłową ramkę za pomocą modbuspoll. Oczywiście pomiń max485 i wepnik się pod uart bezpośrednio. Chyba, że masz też przejściówkę rs485 na usb lub COM1. Wtedy od razu pod zaciski A B w atb. Musi odpowiedzieć. |
Autor: | bpx03 [ 14 maja 2017, o 21:23 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
skalarro, napisałem wyżej że praktycznie nic nie dochodzi ani do PD0 ani PD1 z Max-a. Odpaliłem ModbusMat i wgralem pierwszy programik z którym mi pomogłeś. Podpiełem się przejsciówką i działa ok Skoro program działa dobrze, PLC wysyła dane a jedyne z czym problem to to że max nie wysyła sygnałów no to nie ma mocnych - Musi być problem z Maxem. Gdyby jakiekolwiek dane pojawiały się po podłączeniu bezpośrednio do Max-a to można byłoby go wykluczyć i kombinować z różnymi innymi rzeczami. Kupuję Maxy i mam nadzieję że szybko dojdą |
Autor: | skalarro [ 14 maja 2017, o 21:25 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Ok. Daj znać jak postępy Wysłane z mojego SM-G850F przy użyciu Tapatalka ------------------------ [ Dodano po: 13 minutach ] Cytuj: Gdyby jakiekolwiek dane pojawiały się po podłączeniu bezpośrednio do Max-a A jeszcze jeden drobiazg sprawdź. Nie masz ty czasem maxa cały czas w trybie nadawania? Odłącz re/de od pinu procka i podłącz (teraz nie pamiętam) do gnd lub vcc. Zobacz czy wtedy coś do niego dotrze. Nie wiem czy tedy droga ale sprawdzić nie zaszkodzi. |
Autor: | bpx03 [ 16 maja 2017, o 07:30 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Ehh chyba poprzednio nie wcisnąłem "wyślij". Oczywiście sprawdziłem odrazu gdy zasugerowałeś ten pomysł. Podłączyłem i do GND i do VCC. Oczywiście zero danych na wyjściu. Pozostaje cierpliwie czekać na kuriera i mam nadzieję że po raz pierwszy będę się cieszył że coś jest zepsute. W przeciwnym wypadku chyba włosy mi do końca wypadną |
Autor: | bpx03 [ 22 maja 2017, o 08:37 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Witam Ponownie Po ciężkim weekendzie udało mi się zmusić atmegę do odpowiedzi jako slave Max 485 okazał się być padnięty i do tego (aż wstyd się przyznać) podpiełem się nie pod ten pin co trzeba w DB9 co zauważyłem dziś o 1 nad ranem.. To że Salae pokazywał dobre ramki powodowało że nawet nie myślałem z której strony wtyczki patrząc te piny są opisane i łatwo tam się pomylić.. Teraz jedyny problem mam z bitami parzystości - ustawiając none wszystko śmiga dobrze, przy innym ustawieniu PLC wyrzuca error że jest błąd parzystości. Może w wolnej chwili troszkę z tym pokombinuje ale bez parzystości też da się żyć Wielkie dzięki jeszcze raz Panowie za wielkie zaangażowanie w pomoc! Pozdrawiam |
Autor: | skalarro [ 22 maja 2017, o 08:40 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
Dobrze, że się udało z tym ruszyć. Sprawdź teraz jeszcze raz starego RSa, pewnie dobry ;] Jak co to pisz śmiało... |
Autor: | bpx03 [ 22 maja 2017, o 08:57 ] |
Tytuł: | Re: RS485 i Modbus raz jeszcze (reinkarnacja) ;) |
skalarro napisał(a): Sprawdź teraz jeszcze raz starego RSa, pewnie dobry ;] Dzięki ale po 100 godzinach próby rozwiązania tego problemu nawet nie chcę wiedzieć czy był dobry Wolę żyć z myślą że gdy włożyłem nowego Maxa jakieś dane jednak zostały wyłapywane czy przez terminal czy przez Salae (i walczyłem z odwrócona kolejnością bitów czy jakoś tak, zmiana A i B nie pomagała) a w przypadku starego totalna pustka.. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |