Problem z RS-485

Witam,

3 urządzenia spięte razem, master i 2 slave'y. Przewód to skrętka ekranowana, przy masterze jest tylko wtyczka wpięta w port (RJ45, plastikowe gniazdo). Przewód idzie do pierwszego slave'a, tam we wtyczce d-sub15 jest rozdzielenie na drugie urządzenie, gdzie w takiej samej wtyczce są dolutowane 2 rezystory 220 omowe. Przewód jest długości 8-10m. Czasem komunikacja działa dobrze, czasem wysypuje się co jakiś czas, na kilka-kilkadziesiąt sekund, po czym wraca. Cudowanie z ekranami nic nie daje. Wszystkie urządzenia zasilone z tego samego zasilania 24V. Co można zrobić, żeby to zaczęło normalnie działać? Czy warto by zrobić po obu stronach przewodu terminatory po 120 omów? Czy może zmniejszyć/zwiększyć rezystancję tego co jest w tej chwili? A może jakiś inny pomysł... Dostępu do softu tych urządzeń nie ma, nie wiem jakie tam parametry tego są, wiem tyle że rs-485 i modbus. Aha, ekran jest tylko jeden, tzn. poszczególne pary skrętki nie są osobno ekranowane. Hilfe!

L.

Reply to
Lisciasty
Loading thread data ...

A próbowałeś odłączyć ekran? Może robisz gdzieś jakieś pętle z masy?

Reply to
Jakub Rakus

W dniu środa, 9 października 2013 22:04:56 UTC+2 użytkownik Jakub Rakus napisał:

Oryginalna koncepcja : przewód przy wtyczce - ekran nie podłączony (zresztą jak pisałem gniazdo plastikowe, i tak nie byłoby styku). Ekran doczepiony do wtyczki d-sub (wtyczka metalowa, gniazdo metalowe). Ostatni krótki odcinek, ekran doczepiony też tylko do jednej wtyczki d-sub (tej ostatniej). Oba slave'y w metalowych obudowach, połączonych z masą całej szafy.

Kombinowałem z ekranami jak się dało, łączyłem, rozdzielałem, odczepiałem zupełnie, efekt żaden :/

L.

Reply to
Lisciasty

A kiedykolwiek to działało? Ja bym spróbował rozdzielić zasilania - skoro nie działa na wspólnym... RS485 jest niby różnicowy, ale różnie z tym bywa - widziałem urządzenie, w którym jedna linia była podpięta przez rezystor do procka (pod rx) a druga przez rezystor do masy - nawet działało.

Zobaczyć oscyloskopem co się dzieje, ewentualnie zdemontować wszystko i sprawdzić na krótkich kablach na stole.

Reply to
Mirek

W dniu środa, 9 października 2013 22:33:12 UTC+2 użytkownik Mirek napisał:

Tak, potrafi działać normalnie. Potem przychodzi nowy sprzęt, działa na postoju, jak się włączy resztę złomu to zaczyna świrować. A czasem po prostu działa...

Nie da się.

A co ma się dziać a co nie dziać? Tzn. kiedy widać że dzieje się źle?

Krótkich... Ten kabel ma 10m. Dłuższy odcinek 9,5m a ten krótki między slave'ami jakieś 0,5m.

L.

Reply to
Lisciasty

W dniu środa, 9 października 2013 22:27:08 UTC+2 użytkownik yabba napisał:

Urządzenia są te same, ale całe układy są wciąż nowe. Montuje się, sprawdza i w świat. Całość to jakby szafa automatyki, a te cosie są w niej zamontowane, z reguły w ten sam sposób.

L.

Reply to
Lisciasty

No to separacja galwaniczna RS-a.

No tam właściwie cudów nie ma - normalny rs, tyle, że sygnał różnicowy między A i B - zobacz czy jest ładny przebieg kiedy działa i co się zmienia kiedy zaczyna się psuć. Może być tak, że sygnał różnicowy będzie ok, ale potencjał linii względem masy będzie poza zakresem możliwiości układów wejściowych.

Bardziej mi chodzi o długość kabli zasilających.

Reply to
Mirek
1) czy slave nie ma własnej terminacji włączanej jakąś zworką albo dipswitchem ? Odlutować rezystory końcowe (220R) i zobaczyć co wtedy.

2) można sprawdzić, czy działa poprawnie z jednym slave'm ?

Sam nie robiłem urządzeń z RS485 , ale sporo podłączałem gotowych (np. kontrola dostępu) , i tam nie było potrzeby zewnętrznych rezystorów. A odległości kabli po kilkadziesiąt metrów.

Reply to
sundayman

W dniu środa, 9 października 2013 23:22:56 UTC+2 użytkownik sundayman napisał:

Chyba nie ma, schemat przewodu jest podany przez producenta tego slave'a. Myślałem coby dać tam potencjometry i regulować patrząc czy coś się poprawia czy nie, ale czy to dobry pomysł...

Jak nie działa to to nic nie daje. Jak zadziała to czasem znikają oba, a czasem tylko jeden.

L.

Reply to
Lisciasty

Jak można być niewrażliwym na odbicie, które idealnie przykrywa następny bit? Trzeba mieć oczywiście pecha żeby takie odbicie złapać (kombinacja długości przewodów i prędkości transmisji), ale w takim przypadku terminatory to jest być albo nie być dla transmisji. W większości przypadków terminatory po prostu nie przeszkadzają, a jak przeszkadzają to już coś jest nie tak, i po rozbudowie systemu będzie loteria.

Reply to
Mirek

W dniu 2013-10-09 21:53, Lisciasty pisze:

Terminator 120R na masterze i na ostatnim slave. Jeśli to RS485 to do czego są wykorzystywane pozostałe parki w przewodzie? Przydałoby się, żeby linie +D i -D były odpowiednio podciągnięte do +5V i GND w jednym z urządzeń np w masterze.

Reply to
Mario

W dniu 2013-10-09 21:53, Lisciasty pisze:

Terminacja to powinna byæ chyba na obu koñcach magistrali. Mo¿e u¿ycie terminatora z trzech rezystorów a nie z jednego poprawi sytuacje?

--
AWa.
Reply to
Andrzej W.

Użytkownik "Mario" snipped-for-privacy@w.pl napisał w wiadomości news:l34pfp$k0$ snipped-for-privacy@mx1.internetia.pl...

Też bym od tego zaczął przypuszczając, że zastosowano scalaki bez fail-save.

Gdy zaczynaliśmy z RS485 mieliśmy taki przypadek (nie udało się tego zmierzyć - jedynie logika sugeruje, że tak to się (mogło) dziać): A nadaje coś do B i kończy. Na linii robi się A=2.5V, B=2.5V, A-B=0. Odbiornik (ten konkretny scalak) w A widzi to jako 1 (bo nie jest zdefiniowany stan dla A=B). Potencjały na A i B stopniowo spadają do 0 (pojemność kabla do GND i rezystancja wejściowa scalaków). Gdy po iluś us na przykład A=B=1V (lub spadają nierówno) odbiornik w A widzi

0 (bo nie jest zdefiniowany stan dla A=B i może zależeć od common mode). Odbiornik w A widzi bit startu i bajt samych zer bez bitu stopu. Po odebraniu takiego bajtu pominie go i dalej czeka na odpowiedź. Pech polegał na tym, że B (po przetworzeniu zadania) zaczynało (prawie zawsze) odpowiadać w trakcie tego bajtu. Jedna na kilkadziesiąt prób się udawała. Objaw był taki, że reakcja urządzeń na zdarzenie zamiast następować w niezauważalnym czasie następowała po kilku s. Nie udało się nic pomierzyć - jakiekolwiek podłączenie się do linii oscyloskopem natychmiast usuwało problem. Nie mieliśmy też wtedy jeszcze oscyloskopu cyfrowego - może dało by się coś wyczaić na wyjściu odbiornika w A. Jakakolwiek zmiana konfiguracji (dodatkowe urządzenie na linii) też usuwało problem. Wymiana dowolnego ze scalaków RS485 rozwiązywało problem. Problem pojawiał się mniej więcej raz na kilkanaście zestawów urządzeń. Zaczęliśmy stosować wyłącznie scalaki z fail-save (również dla zwarcia linii) i problem już nigdy się nie pojawił. Jak nie masz wpływu na scalaki to musisz rozciągnąć A-B>0.2V rezystorami. Jak linia nie musi być zakończona to można to zrobić bardzo delikatnie (nawet po 100k). Można też zakończyć linię szeregowym RC i rozciągnięcie też delikatne. Albo siłowo 2k-100om-2k (czy coś koło tego). Zawsze wymagany jest dostęp do zasilania - nie piszesz czy masz. Mam też inny pomysł, ale to zależy od prędkości komunikacji, której nie znamy. Może zwiększenie pojemności kabla między A-B rozwiązało by problem - czyli kondensator zamiast rezystora terminalowego (tak samo zadziała zakończenie szeregowym RC z odpowiednio dużym C). Każdy kończy nadawanie 1-ką. Jeśli kondensator utrzyma ją aż do wejścia na linię kolejnego urządzenia problemu nie będzie. To wszystko przy założeniu, że źródłem problemu jest brak fail-save a uważam to za najbardziej prawdopodobną przyczynę. P.G.
Reply to
Piotr Gałka

[...]

Tak mi się skojarzyło, jak dawno temu, w ramach sprawdzania możliwości, zrobiłem interfejs do Spectrum obsługujący dalekopis. I to z wyjścia... audio. Miał jedną wadę - dopóki nie przesłało się choć jednego znaku, cały czas był bit startu. Na wejściu interfejsu był tylko jFET (teraz już nie pamiętam, czy 2SK41E czy BF245) i diody zabezpieczające - bez jakiegokolwiek rezystora do masy. Tranzystorem wykonawczym był bodaj BF257, do tego zasilacz 24V i rezystor ustalający prąd pracy na 40mA. Po wysłaniu jednego znaku ładunek na kondensatorze sprzęgającym trzymał przez jakieś pół godziny.

Napisałem do tego driver, bazujący na fakcie, że w Spectrum było przerwanie wywoływane co 20ms - w Basicu odpowiadało to PAUSE 1 a w asemblerze po prostu HALT. Driver asemblerowy obsługiwał bezpośrednio polecenia LPRINT i LLIST, a wersja w Basicu również działała podobnie ale z wywołania GOSUB. Program w Basicu potrafił sam się wylistować na dalekopisie :)

Reply to
RoMan Mandziejewicz

Przy 10m długości żadna terminacja pomiędzy D+ i D- nie jest potrzebna. Natomiast NIEZBĘDNE jest wsadzenie 1k pomiedzy +5V a D+ oraz D- i masę mastera oczywiście przy wyjściu mastera. Na 99% pomoże jak ręką odjął.

Reply to
zapinio

W dniu 2013-10-10 21:56, zapinio pisze:

Z drugiej strony, to podobne elektrycznie magistrale jak Profibus czy CAN bez obustronnej terminacji nie pociągną nawet na 5 metrach. Jeszcze jest pytanie jaka jest prędkość transmisji. Dla 1Mbit/s niezaterminowane 10 m może być problemem.

Reply to
Mario

No wlasnie - jaka predkosc transmisji ?

Bo 1Mb/s to jest jakies 200m w kablu, a teraz policzyc amplitude odbicia i sprawdzic tlumiennosc kabla na tych 200m ...

J.

Reply to
J.F.

W dniu 2013-10-09 21:53, Lisciasty pisze:

A czy ta skrętka - to nie jest naprawdę skrętka, czy może ktoś radośnie użył FTP/STP ethernetowego i losowo wybranych dwóch drutów z ośmiu, bez patrzenia co z czym jest parami?

Reply to
BartekK

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.