logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Dobór mikrokontrolera do analizy nietypowego przebiegu

markosik20 07 Mar 2018 18:40 1077 18
  • #1 17087251
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Witam
    Prosiłbym kolegów o pomoc w doborze układu który pozwoliłby na "wyłapanie" ramek pewnej transmisji.
    Jest to stary intelowski protokół BITBUS oparty na sieci RS485 o szybkości ~300kbit/s.
    Udało mi się rozszyfrować ramkę z użyciem STM32 z zegarem 72Mhz lecz pojawił się problem z zakłóceniami. Niestety magistrala w warunkach przemysłowych jest strasznie zakłócona i w stanie "ciszy" wygląda jak "poszatkowany tort" :( (impulsy ~1,2Mhz). Nic nie daje żadne podciąganie, terminatory.. wymiana kabli nie wchodzi w grę zwłaszcza że fabryczne urządzenie (master i kilka slave'ów) pracują bez błędów. Potrzebuję wyciągnąć z ramki dane o temperaturze, dotychczas "łapałem" zbocza w przerwaniu czas między przerwaniami do bufora i analizowałem to w głównej pętli. Niestety to działało tylko "na stole" :(. Przydałoby się analizować to w przerwaniu ale niestety STM32 "nie wyrabia" :(. Wątpię też że zwykły AVR sobie też z tym poradzi (pomimo że obsługa bezpośrednia pinów jest dużo "szybsza"). Zastanawiałem się nad jednordzeniowym 8051 z taktowałem 100MHz (Silicon Labs takie zabawki ma). FPGA to niestety za dużo nauki. Może macie jakieś propozycje.

    Załączam wygląd przebiegu.

    Dobór mikrokontrolera do analizy nietypowego przebiegu
  • #2 17087305
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    Pewnie w czasie transmisji sygnał jest "czysty"?
    Te przebiegi to naturalnie za odbiornikiem RS485.


    PS
    Pewnie jednak nie. Widze dwa przebiegi wiec pewnie to linie A i /B magistrali. Tak tego nie sprawdzisz.
  • #3 17087322
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    ghost2000 napisał:
    Pewnie w czasie transmisji sygnał jest "czysty"?
    Te przebiegi to naturalnie za odbiornikiem RS485.


    W czasie transmisji jest OK, oczywiście sygnał na pinie Rx TTL.
    Ramka na początku posiada 8bitów synchronizacji... trzeba to tylko wyłapać i dalej już bez zakłóceń STM sobie radzi.

    ghost2000 napisał:
    Widze dwa przebiegi wiec pewnie to linie A i /B magistrali. Tak tego nie sprawdzisz


    Jedna linia to master (tam Rx i Tx to jeden pin) druga linia to Slave.
  • #4 17087328
    Steryd3
    Poziom 33  
    Posty: 1641
    Pomógł: 241
    Ocena: 301
    Wybór mikrokontrolera dla mnie w tej sytuacji wydaje się raczej sprawą drugorzędną. Ważniejsza jest eliminacja zakłóceń w warstwie sprzętowej lub programowej. Ogólnie mikrokontroler STM32 wydaje się być dość dobrym wyborem-ostatecznie są wersje szybsze niż taktowane 72MHz ( serie F4, F7).
    Trochę trudno cokolwiek się wypowiadać bez pooglądania schematu oraz kodu programu...magistrala oparta o warstwę fizyczną RS485 powinna być raczej odporna na zakłócenia...może więc problem tkwi w sposobie dekodowania.
  • #5 17087351
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Steryd3 napisał:

    Trochę trudno cokolwiek się wypowiadać bez pooglądania schematu oraz kodu programu...magistrala oparta o warstwę fizyczną RS485 powinna być raczej odporna na zakłócenia...może więc problem tkwi w sposobie dekodowania.


    To są urządzenia co mają 20lat. Schemat tu nic nie da ... po prostu jest sobie magistrala RS485 (mocno zakłócona w czasie "ciszy") z której potrzebuje "wyciągnąć" dane temperatury. Jeden bit ma długość 2,5us a zakłócenia ~0,5us. Nie ma możliwości ingerencji w działające urządzenia (klient na to nie wyraża zgody), mogę jedynie podpiąć się swoim odbiornikiem RS485.
  • #6 17087360
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    markosik20 napisał:
    W czasie transmisji jest OK, oczywiście sygnał na pinie Rx TTL.
    Ramka na początku posiada 8bitów synchronizacji... trzeba to tylko wyłapać i dalej już bez zakłóceń STM sobie radzi.

    Czyli magistrala ma terminowanie linii ale nie ma rezystorów ustalających potencjał w stanie spoczynku. To normalne zachowanie RS485 w takiej sytuacji.
  • #7 17088567
    ex-or
    Poziom 28  
    Posty: 785
    Pomógł: 147
    Ocena: 151
    markosik20 napisał:
    Potrzebuję wyciągnąć z ramki dane o temperaturze, dotychczas "łapałem" zbocza w przerwaniu czas między przerwaniami do bufora i analizowałem to w głównej pętli. Niestety to działało tylko "na stole

    STMowe timery mają na wejściu konfigurowalny filtr. W tym dokumencie jest co nieco na ten temat: http://www.st.com/content/ccc/resource/techni...df/jcr:content/translations/en.DM00236305.pdf
    Jakby spróbować łapać impulsy timerem w trybie input capture z włączonym filtrem wejściowym?
  • #8 17088624
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    ex-or napisał:
    Jakby spróbować łapać impulsy timerem w trybie input capture z włączonym filtrem wejściowym?

    Nie prościej dodać dwa rezystory i wymienić jeden w masterze? Tu jest problem, ze klient się nie zgadza, ale rezystory można dodać poza urządzeniem, jak najbliżej sterownika. Naturalnie ma to sens, jeśli nie ma tych elementów a wszystko wskazuje, że nie. Świadczy o tym to:
    Cytat:

    Ramka na początku posiada 8bitów synchronizacji...

    To jest standardowy sposób rozwiązania problemu, gdy linia RS485 ma tylko terminowanie linii. Inny, to przyłączenie się do magistrali, odczekanie pewnego czasu i rozpoczęcie transmisji.

    Dodanie 3 rezystorów, kilkanaście minut roboty. "Rzeźba" programu, dzień, dwa, może tydzień a może miesiąc?
  • #9 17089226
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Niestety rezystory terminujące tylko trochę pomogły. Prawdopodobnie problem jest jeszcze na kablach komunikacyjnych które są "nie do ruszenia". Do magistrali mogę się przyłączyć tylko jako slave .
  • #10 17089354
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    markosik20 napisał:
    Niestety rezystory terminujące tylko trochę pomogły.

    Jak zostały włączone i jakie wartości?
  • #11 17089438
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    390Ω linia B -> +5V oraz 390Ω linia A -> GND.
  • #12 17089525
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    markosik20 napisał:
    390Ω linia B -> +5V oraz 390Ω linia A -> GND.

    Powinno byc odwrotnie. Typowo, aby zachować 120R, stosuje się 470R GND, 220R pomiędzy A i/B, 470R Vcc, ale tu nie ma można wymienić 120 na 220R więc można próbować 390R. Może lepsze będą 560R. W każdym razie B oznaczana jest na MAX485 jako /B. W specyfikacjach /B łączy się rezystorem ustalającym poziom do masy, A do zasilania.
  • #13 17089585
    KeinXor
    Poziom 24  
    Posty: 511
    Pomógł: 62
    Ocena: 63
    Ja zawsze daje tak : Dobór mikrokontrolera do analizy nietypowego przebiegu485.png (12.91 kB)Musisz być zalogowany, aby pobrać ten załącznik.
  • #14 17089601
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    KeinXor napisał:
    Ja zawsze daje tak

    Czyli /B do masy, A do zasilania. Autor tematu zrobił odwrotnie.
  • #15 17089972
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Akurat tutaj nie ma znaczenia (to jest protokół typu NRZI) ale udało się częściowo ograniczyć zakłócenia. Niestety w każdej ramce (jak master zwalnia linię) pojawia się kilka "szpilek". STM zbiera te dane lecz jak się zorientuje że są niewłaściwe to już leci ramka synchronizacji ze SLAVE i gubi całą odpowiedź.
  • #16 17090047
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    markosik20 napisał:
    Niestety w każdej ramce (jak master zwalnia linię) pojawia się kilka "szpilek"

    RS485 jest dość specyficzny. Odporny na zakłócenia, ale czasem może doprowadzić do rozpaczy. Problemy mogą pojawić się gdy RS485 współpracuje z urządzeniami zasilanymi z różnych faz. Gdy różnica napięcia pomiędzy masami urządzeń wynosi ponad 2..3V.
    Budując sieci 485, gdy spodziewałem się tego typu sytuacji, robiłem izolacje galwaniczną. Niestety, scalaki niewymagające zewnętrznych elementów jak trafa itp Są drogie (NME485 około 200zł).
    Spróbuj podłączyć się pod magistrale urządzeniem (laptopem) zasilanym z baterii. Może nie bedzie tych szpilek.

    PS
    Jak ograniczyłeś zakłócenia?
  • #17 17090149
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    ghost2000 napisał:
    PS
    Jak ograniczyłeś zakłócenia?


    Okazało się że "siał" zasilacz mastera (powymieniałem kondensatory). Master zasila slave'y 24VDC z przetwornicy, wszystko razem (zasilanie i magistrala) idzie jednym kablem :( . Dodatkowo magistrala zabezpieczona była diodami transil, które na razie wywaliłem i.... zakłócenia prawie zniknęły :). Jest szansa że STM sobie poradzi z analizą ramki ale muszę pomyśleć nad innym sposobem "wychwytywania bitów".
  • #18 17090189
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    Czemu nie podłączysz RS485 do kompa. Np przez przejściówkę USB-RS485. Można ją zbudować np z RTL232+MAX485, czy FT230+MAX3485 tylko kombinujesz z mikrokontrolerem?
  • #19 17090277
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38726
    Pomógł: 3168
    Ocena: 6480
    Możesz użyć tego co masz w Logic'u (Saleae)... CY7C68013A.

Podsumowanie tematu

✨ Dyskusja dotyczy doboru mikrokontrolera do analizy transmisji protokołu BITBUS opartego na RS485, z problemami zakłóceń w warunkach przemysłowych. Użytkownik z powodzeniem używał STM32 z zegarem 72MHz, jednak napotkał trudności związane z zakłóceniami, które pojawiają się w stanie "ciszy". Uczestnicy sugerują, że kluczowe może być wyeliminowanie zakłóceń na poziomie sprzętowym, a także rozważenie użycia szybszych wersji STM32 (seria F4, F7). Wskazano na możliwość zastosowania filtrów w timerach STM oraz na konieczność poprawnego podłączenia rezystorów terminujących w magistrali RS485. Po wymianie kondensatorów w zasilaczu mastera oraz usunięciu diod transil, zakłócenia znacznie się zmniejszyły, co daje nadzieję na dalszą analizę ramki przez STM32.
REKLAMA