Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] zakłócenia na RS485/422 podczas pracy silnika komutatorowego

rpal 24 Sep 2022 12:56 189 15
  • #1
    rpal
    Level 27  
    witam, mam pewien problem polegający na tym że po liniach RS485 steruję urządzenie będące prostym sterownikiem silnika prądu stałego. Silnik jest komutatorowy 24V, pobiera prąd ok. 6 A podczas startu.
    Problem polega na tym że na linie transmisyjne wkradają się zakłócenia w postaci szpilek. Generuje to wartości 0x00 lub 0xFF na mojej "magistrali". Początkowo myślałem że te zakłócenia przedostają się po masie lub zasilaniu układu bo sterownik i silnik są zasilanie z tego samego źródła. Ale po odłączeniu silnika od zasilania sterownika i podłączenia go pod inne źródło zasilania, zakłócenia w dalszym ciągu występują. Krótko mówiąc silnik i jego komutator tak mocno "sieje" zakłóceniami że przedostają się na przewody sterujące RS485 nawet jeśli jest całkowicie odizolowany od sterującego go układu. Sprawdziłem to poprzez całkowite odłączenie silnika, sterownik w tym czasie "czuwał" a na silnik podawałem zewnętrzne napięcie zasilające. Szpilki obserwowałem na oscyloskopie i równolegle w terminalu podglądałem co się dzieje na magistrali. Pojawiały się niczym nie wywołane dane. Przewody magistrali to ekranowana skrętka dwu-przewodowa zakończona rezystorami 120 om. Zatem pytanie brzmi tak czy skupić się na odkłóceniu silnika a może być to niemożliwe z uwagi na jego konstrukcję czy też w jakiś sposób "walczyć" z samą magistralą tak aby nie powstawały na niej wspomniane impulsy i przypadkowe dane
  • #3
    BANANvanDYK
    Level 41  
    Do silnika będzie trzeba dołączyć kondensator pełniący funkcję przeciwzakłóceniową, począwszy od 100 nF pomiędzy zaciskami silnika (choć lepiej zastosować dwójnik RC tzw. gasik), dwa kondensatory pomiędzy zaciskiem a obudową silnika (jak w elektronarzędziach i sprzęcie AGD), kończąc na dławikach na przewodach silnika.
    W sumie takie zabezpieczenie przeciwzakłóceniowe powinno być zastosowane w regulatorze obrotów silnika, chyba że to jest jakaś samoróbka.
    Gdy pracowałem przy automatyce, to przy każdym silniku 24V DC musiałem dokładać kondensator 100 nF, nawet wewnątrz siłowników liniowych gdyż przerwanie zasilania silnika DC generowało impuls elektromagnetyczny powodujący wyłączenie się zasilacza 24V od niezależnego obwodu na którym działała cała automatyka i PLC maszyny. Wewnątrz siłowników dlatego, że dojechanie do wewnętrznych wyłączników krańcowych też przerywało obwód i generowało impuls, dlatego montowanie kondensatora na zaciskach zewnętrznych nie było skuteczne.
  • #4
    rpal
    Level 27  
    tu nie ma regulacji jest tylko włącz wyłącz oscylosko 2 kanaly
  • Helpful post
    #6
    _jta_
    Electronics specialist
    Zasadniczo, RS422/RS485 są dość odporne, bo odbiornik jest czuły na sygnał różnicowy, a zakłócenia na ogół wchodzą na obie żyły tak samo - różnica jest zero. Chyba, że ten odbiornik zostanie przesterowany... i choćby to wypadałoby sprawdzić.

    A może zamiast opornika 120Ω między przewodami linii dać np. oporniki 60Ω między każdym z tych przewodów, a masą? To da jakieś tłumienie tych zakłóceń wchodzących jako sygnał wspólny na obie żyły, i może nie będą przesterowywać odbiornika...
  • #7
    rpal
    Level 27  
    właśnie o tym myslal3n aby wymusić polaryzacja linii bo jest tam głównie bezczynność o w takim położeniu odbiorniki są nastawione na odbiór. tam nie ma dupleks tylko dwukierunkowa transmisja
  • #8
    CosteC
    Level 36  
    Gdzie jest terminacja?
    Jak wyglądają połączenia masy między urządzeniami na magistrali?
    Jakiego użyto przewodu?
    Zdjęcia może jakieś?
  • #9
    rpal
    Level 27  
    odpowiem tak, przewód to zwykła skrętka, ekranowana.
    Miałem pod ręką kabel od Ethernetu więc użyłem 1 pary żył. Ekran był przymocowany do masy mastera. Początkowo nie miałem wspólnej masy ale potem jeden z przewodów wolnej pary użyłem jako wspólna masa. Dodałem wspólną masę ponieważ bez tego układ był bardziej podatny na zakłócenia. Terminacja z jednej strony (od kontrolera) opornik 120 om podłączony do złącza śrubowego (do druku) Z drugiej strony też 120 om ale musiałem na poczekaniu zmajstrować na FT232 + SN75176 układ na płytce stykowej. Sterowanie z poziomu Realterm transmisja 8 bit 1 bit stopu bez kontroli parzystości, kontrola przepływu sprzętowa jak dla RS485+RTS. No i był długi czas klops, nie chodziło. Znaczy dane były poprawnie odbierane i wysyłane ale pojawiały się zakłócenia tak przy transmisji jak i w stanie bezczynności. Przy transmisji otrzymywałem jakieś zabłąkane bity danych które nigdy nie mogły zostać wysłane od strony slave.
    Używam Realterm bo polecenia do kontrolera silnika wysyłam na razie "z ręki" i dlatego przy okazji zauważyłem wykrzaczanie się tej transmisji.
    Ponieważ (SN75176) układy po stronie master i slave są ustawione na odbiór i większości czasu to oczekiwanie na odbiór ramki danych z mastera oraz ewentualne odesłanie danych do mastera ze slave, więc podłączyłem dzielnik rezystancyjny po stronie mastera wymuszając poziom napięcia na liniach A i B.
    Problem znikł. Silnik sieje swoim zakłóceniami tak jak siał ale linia stała się na nie odporna. Przy okazji odłączyłem wspólną masę oraz ekran i jest OK.
    Zatem chodzę jedynie na gołej skrętce. Przy okazji podziękowania za "inspirację" odnośnie podłączenia dzielnika:)))
    Za co to za kontroler? Nie wiem czy warto się rozpisywać bo to staje się problem polityczny a chodzi o zasilanie palnika olejowego przepracowanym olejem do kotła CO. Jeśli ktoś byłby ciekawy o co chodzi to mogę coś więcej napisać tylko czy nie wiem czy to wypada:))
  • #10
    CosteC
    Level 36  
    RS485 Wymaga wspólnej masy wg standardu. Użyj wolnej pary jako wspólnej masy, tak jest najprościej. Często pomaga też nawinięcie przewodu na pierścionek z ferrytu - pomaga usuwać zakłócenia CM.
    Co do przepracowanego oleju... cóż miłego trucia siebie i sąsiadów.
  • #11
    rpal
    Level 27  
    przyjmijmy że standard wyznaczam ja w zakresie formatu przesyłanych informacji a jedynie używam układów do tego dedykowanych. Odnośnie trucia, napiszę tak i z góry zaznaczam że nie zamierzam wchodzić w polemikę czy też jakieś "kłótnie". Opalanie olejem o lepkości np. 32 do 46 w zasadzie niczym się nie różni od spalania oleju opałowego pod warunkiem że nie używa się olejów przekładniowych i o wyższych lepkościach. Po to opracowałem konstrukcję palnika a zaznaczam to nie jest to co na serwisach aukcyjnych jest oferowane oraz precyzyjne dawkowanie paliwa aby z komina wydobywały mi się resztki niespalonego oleju i jego opary a przy okazji zabijanie komina sadzą. W moim przypadku nie mam dymu ani smrodu ale to już jest tylko moja deklaracja w którą nikt nie musi wierzyć.
  • #12
    CosteC
    Level 36  
    rpal wrote:
    przyjmijmy że standard wyznaczam ja w zakresie formatu przesyłanych informacji a jedynie używam układów do tego dedykowanych.

    Układy RS485 są tak skonstruowane, że wymagają wspólnej masy do poprawnego działania. Często będą działać bez, ale mogą ulegać uszkodzeniom albo być wrażliwe na zakłócenia.
    Standard RS485 można sobie wygooglać, jeśli się w to nie wierzy.
  • #13
    rpal
    Level 27  
    CosteC wrote:
    rpal wrote:
    przyjmijmy że standard wyznaczam ja w zakresie formatu przesyłanych informacji a jedynie używam układów do tego dedykowanych.

    Układy RS485 są tak skonstruowane, że wymagają wspólnej masy do poprawnego działania. Często będą działać bez, ale mogą ulegać uszkodzeniom albo być wrażliwe na zakłócenia.
    Standard RS485 można sobie wygooglać, jeśli się w to nie wierzy.

    Dziękuję za sugestię, masę zawsze mogę podłączyć, mam jeszcze 3 wolne skrętki więc kabli u mnie dostatek a a póki co przyjmijmy że ta która jest chodzi po RS 422 a tam masy nie ma tylko goła skrętka.
  • #14
    tos18
    Level 40  
    Uważam że problemem jest protokół.Zakłócenia były, są i będą w magistralach.
    Nie ma w nim żadnych mechanizmów kontroli poprawności danych a wystarczy zwykła suma kontrolna dla każdej ramki oraz odrzucanie pakietów z niezgodną sumą.
    Przykładem niech będzie modbus RTU.

    terminacja i polaryzacja magistrali
    https://www.elektroda.pl/rtvforum/topic3165197.html
  • #15
    rpal
    Level 27  
    tos18 wrote:
    Uważam że problemem jest protokół.Zakłócenia były, są i będą w magistralach.
    Nie ma w nim żadnych mechanizmów kontroli poprawności danych a wystarczy zwykła suma kontrolna dla każdej ramki oraz odrzucanie pakietów z niezgodną sumą.
    Przykładem niech będzie modbus RTU.

    terminacja i polaryzacja magistrali
    https://www.elektroda.pl/rtvforum/topic3165197.html

    dziękuję za uwagę ale jak napisałem wcześniej problem został rozwiązany poprzez dodanie dzielnika rezystancyjnego. Kolega _jta_ zwrócił mi na to uwagę i dzieki niemu przypomniałem sobie o takim rozwiązaniu które występuję notabene w niektórych notach katalogowych. O sumach kontrolnych nie pisałem a na własne potrzeby taki format mojej "prywatnej" ramki opracowałem i wysyłane "z ręki" a w zasadzie z gotowych plików które na potrzeby sprawdzenia wysyłałem poprzez terminal Realterm. Dzięki temu zauważyłem "dziwne" bajty które się pojawiły i zakłócenia od silnika o czym pisałem wcześniej. Reasumując powodem były zakłócenia od silnika a konkretnie jego komutatora i na tym poprzestanę. Dziękuję za uwagi i zamykam temat bo dyskusja wchodzi na zupełnie niepotrzebne tory. Projekt nie jest komercyjny więc nikt poza mną nie będzie ewentualnie "pokrzywdzony" pozdrowienia dla kolegów.