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

RS485 - Modbus RTU: Losowe timeouty w sieci z 8 modułami slave i masterem

aju_cor 11 Lut 2013 18:25 4803 9
  • #1 11920399
    aju_cor
    Poziom 12  
    Witam!

    Od początku...

    Zbudowałem system pomiaru temperatury w którym komunikacja odbywa się po RS485 w protokole modbus rtu.
    Na całość składa się kilka (zazwyczaj ok 8) modułów slave i jeden master. Moduły połączone są przewodem YTKSY-EWK 3x2x0.8
    (trzy skręcone pary we wspólnym jednym ekranie), gdzie 1 para wykorzystana jest do transmisji, a pozostałe połączone równolegle stanowią zasilanie (GND i +12V).

    Sieć zaterminowana obustronne rezystorem 120 Ohms, linie A i B spolaryzowane, ekran uziemiony tylko od stony mastera.

    Długość sieci, od 30m do 700m

    Środowisko raczej słabo zakłócone.

    Problem dotyczy losowo wystepujących timoutów od strony modułów slave.
    Co jakiś czas jakiś moduł nie odpowie, nie ma żadnej reguły który i kiedy nie zwróci odpowiedzi...

    //--------------------------
    Na biurku przetestowałem system składający się z 24 modułów slave i mastera.
    Zastosowałem ten sam zasilacz i 900m przewodu jak powyżej. System nie wygenerował żadnego timeoutu, a pytałem całość w pętli ok 10 000 razy.

    System na "biurku" różnił się od faktycznego następująco:
    - na "biurku" cały przewód nawinięty był na szpuli, zaś na obiekcie przewód rozciągnięty jest po raczej po liniach prostych.
    - na obiekcie przewód rozciągnięty jest w metalowych rurkach ( i metalowych peszlach)

    Takich fizycznych systemów jest już zamontowanych kilka. Na każdym timeouty występują.

    Ciekawi mnie Wasza opinia i sugestie odnośnie przyczyn takiego zachowania.

    Pozdrawiam!
    Sławek
  • #2 11921820
    akajarz
    Poziom 23  
    Linia jest galwanicznie odizolowana? Izolacja przewodów sprawdzona? Wpinałeś tam oscyloskop i patrzyłeś czy są jakieś zakłócenia? Jaka jest obwiednia sygnału?
  • #3 11921893
    aju_cor
    Poziom 12  
    1. Interfejs nie jest izolowany galwanicznie
    2. Jakość przewodu wydaje się dobra - na moim testowym odcinku 900m nie było żadnych problemów. Sugerujesz uszkodzenie które można sprawdzić multimetrem?
    3. Niestety nie miałem jeszcze możliwości zbadania problemu na obiekcie...
    stąd nie badałem przebiegów oscyloskopem.

    Pozdrawiam!
    Sławek
  • #4 11922704
    akajarz
    Poziom 23  
    Izolacja galwaniczna interfejsu jest bardzo wskazana w tym przypadku. Uziemienie (o ile urządzenia są połączone z ziemią) jest różne, może dochodzić do sytuacji że potencjały ziemi są różne w różnych miejscach, przyczyną może być np. uziemienie robocze konkretnych urządzeń np. trafo w rozdzielni.
    Przyczyną może być również jakiś iskrzący obwód. Bez badań na obiekcie moim zdaniem się nie obejdzie zwłaszcza, że wszystko działa ci na biurku.
    Nie traktuj moich rad jak wyroczni, ja tylko głośno myślę.
  • #5 11922780
    aju_cor
    Poziom 12  
    Dzięki za odpowiedź.

    Ekran uziemiony jest w jednym punkcie, poszczególne moduły slave nie są dodatkowo uziemiane.

    Co do optoizolacji - rozumiem, że taka separacja może uwolnić system przed zakłóceniami i ochronić w przypadku jakiś nieprzewidzianych sytuacji.
    Co by nie było - sprzęt nie ma separacji i w tej chwili tego nie mogę zmienić.
    //-------------------------

    Testy które przeprowadziem u siebie pokazują, że (zaznaczę - w domowych warunkach) wszystko działa ok. Rozłączałem ekrany, podłączałem je do sygnału +-12V, zamieniałem sygnały A/B z innych par skrętek, nawet do linii zasilania modułów podłączyłem silnik prądu stałego, wszytsko bez jednego timeoutu.

    Wyeliminowałem wadliwą pracą zasilacza.

    Systemy montowane są głównie na Litwie, przez firmę zewnętrzną.
    Doszukiwałem się błędów monterskich: np podpięcie transmisji na żyłach niesparowanych (z różnych skrętek), złe ekranowanie. Po licznych konsultacjach telefonicznych - teoretycznie (bo nie mogę tego 100% potwierdzić) wszytsko zrobione jest zgodnie z regułami.

    Strasznie mnie męczą te timouty, choć finalny użytkownik nawet nie widzi ich występowania (w razie timoutu, master odpyta moduł jeszcze raz).

    Muszę znaleźć przyczynę, choćby dla utrzymania swojego zdrowia psychicznego choć na średnim poziomie :)

    Liczę na dalsze sugestie.

    Pozdrawiam!
    Sławek
  • #6 11923231
    akajarz
    Poziom 23  
    aju_cor napisał:
    poszczególne moduły slave nie są dodatkowo uziemiane

    A czy nie mogą być uziemione niecelowo, np przez przykręcenie obudowy metalowej do konstrukcji metalowej lub w jakiś inny sposób?
    Litwa to ciekawy kraj, ale jechać tam lepiej na wiosnę bo zimy mają nieciekawe (wiem bo pół zimy tam spędziłem).
  • #7 11923555
    aju_cor
    Poziom 12  
    Urządzenia zamykane w obudowach z ABS - zapinane na szynę din.
    Jak się sprawa nie wyjaśni - będę musiał się przejechać :)

    Pozdrawiam!
    Sławek
  • #8 11961009
    liberateme
    Poziom 19  
    Może odpal sieć na trochę niższej prędkości?

    Pozdrawiam
  • #9 11962751
    aju_cor
    Poziom 12  
    W przyszłym tygodniu będę na jednym z obiektów - dam znać co ustaliłem.

    Pozdrawiam!
    Sławek
  • #10 12054562
    aju_cor
    Poziom 12  
    No i wszystko się wyjaśniło. Problem wcale nie dotyczył warstwy sprzętowej, okazał się banalny, choć aby go znaleźć spędziłem kilka godzin na obiekcie.
    Finalne okazało się, że wartość czasu oczekiwania na odpowiedź była za mała - ustawiona na 500ms (zmieniłem na 1s) . Wystarczyło od strony mastera zmienić timeout na nieco większy i wszystko bzyka aż miło.

    Dlaczego na biurku wszystko działało? - odpowiedź jest prosta - moduły slave nie były obciążone obsługą takiej ilości czujników jak finalnie na obiekcie. W sumie obsługa 80 - 100 sensorów DS18B20 może wnieść małe opóźnienie...

    Sprawa zamknięta - znów zawiódł czynnik ludzki :).

    Pozdrawiam i dziękuję!
    Sławek
REKLAMA