Elektroda.pl
Elektroda.pl
X
Sklep HeluKabel
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Równoprawny dostęp na RS485-jak?

Wilk 08 Maj 2006 13:01 4474 26
  • #1 08 Maj 2006 13:01
    Wilk
    Poziom 12  

    Witam,
    Mam problem z podjęciem decyzji co do okablowania inteligentnego domu. Zdecydowałem się na RS485 (po długich rozważaniach). Założeniem projektu jest architektura peer2peer bez żadnych masterów i slave'ów.

    Problem polega na sposobie komunikacji. Nie wiem jak wygląda sprawa z zachowaniem układów podczas nadawania kilku nadajników. W notach katalogowych wyczytałem tylko że nadajniki rs485 mogą w stanie zwarcia pobierać 60mA (dużo jak na układy odbiorcze) i są na to odporne ale czy mogą tak pracować na stałe? Może ktoś z forumowiczów już przez to przeszedł i znalazł rozwiązanie?
    Jednym ze sposobów jest coś w rodzaju implementacji 1-wire przez rs485 zamieszczone przez autora na http://idom.wizzard.one.pl/ (LO-nadawanie,HI-pozostawienie linii w stanie Hi-Z). Pragnąłbym jednak nie schodzić do bitowego poziomu obsługi komunikacji a zostawić ją sprzętowemu uartowi atmegi. Czy jest na to sposób?


    Czy mogę (a może nie powinienem) zastosować losowy dostęp do medium(tutaj bez omożliwości równoczesnego odsłuchu linii)? W takim przypadku układy nadawcze będą bardzo często pracować na zwarciu na wyjściu.

    Rozwiązaniem mógłby być jeden master i slave'y ale to nie wchodzi w gre.

    Pozdrawiam i prosze o konkretne odpowiedzi.

    0 26
  • Sklep HeluKabel
  • #2 08 Maj 2006 20:55
    ak
    Poziom 11  

    Moze zamiast transiverow RS485 zastosuj trnsceivery CAN ?
    Pozwalaja one monitorowac aktualny stan na magistrali, czyli mozna sprawdzac czy to co odebrane zostalo z magistrali jest tym co zostalo wyslane i w ten sposob wykrywac konflikty.
    Albo nawet mozna by pojsc krok dalej i wykorzystac magistrale CAN do sterowani.
    Mozna kupi procesory z wbudowanym kontrolerem CAN, np. AVR Atmela lub PIC Microchipa.

    Pozdr
    ak

    0
  • #3 10 Maj 2006 08:04
    bis
    Poziom 21  

    RS485 jest tylko szyną do której dołącza się kolejne nadajniki/odbiorniki, należy zwrócić uwagę na ilość odbiorników dołączonych do szyny (znajdziesz to w nocie katalogowej uzytego układu, kiedyś to było 32 ale obecnie mozna znależć układy których może byc nawet 250) oraz na prawidłowe terminowanie szyny( rezystor terminujący powinien byc tylko na "końcach" szyny). Nadajniki RS485 są zbezpieczone (przecież właśnie po to je skonstruowano) przed "zderzeniem" (jednoczesnym nadawaniem przez kilka nadajników). Inną sprawą jest organizacja przepływu danych. To już nie jest sprawa RS485 ale protokołu którym sie posługuja urządzenia. Najcześciej jest to "master- slave" czyli jakieś urządzenie(nie musi to być zawsze to samo) wysyła zapytanie, odbierają je wszystkie dołączone do szyny a odpowiada tylko to które było zapytane. Taki sposób jest najłatwiejszy do zrealizowania i pozwala zminimalizować problemy "zderzeń", pozwala też na diagnostykę "on-line" całości systemu(można wykryć że jakieć urządzenie "umarło"). Ponieważ chcesz stosować UARTy to nie masz możliwości kontrolowania czy nastąpiło "zderzenie" z poziomu strony nadającej, a jedyna szansą strony odbierającej na stwierdzenie czy dane są poprawne jest stosowanie dobrych sum kontrolnych w komunikatach protokołu. Z tego powodu trudne będzie implementowanie protokołw opartych na "losowym" czasowo dostępie do szyny czy jakimś innym (nigdy nie ma pewności czy szyna jest "wolna" czy "zajęta"). Przykładem sprzętowego rozwiązania problemu zderzeń jest CAN gdzie jest kontrola na poziomie nadajnika poprawności każdego bitu transmisji co pozwala na zupełnie inny sposób arbitrażu dostępu do szyny, ale CAN jest drogi.

    0
  • Sklep HeluKabel
  • #4 10 Maj 2006 14:41
    Wilk
    Poziom 12  

    Ak wiem że can byłoby dobrym wyjściem, sprzętowa kontrola magistrali jest bardzo ułatwiającym życie rozwiązaniem ale, jak zauważył Bis, kosztuje.
    O kontrolę przepływu się nie martwię, zabezpieczę ją dobrze na poziomie bajtow, ramki i sesji.

    Więc narazie mam dwie możliwości:
    1. Wysyłanie ramek danych w ciemno (ze sprawdzeniem stanu linii tuż przed rozpoczęciem nadawania) i kontrolę przez potwierdzenie odbioru.
    2. Programowa obsługa na poziomie bitowym, z równoczesnym nasłuchem linii (0-nadawanie, 1-wys. mpedancja).

    wada 1: jak wszystkie będą nadawać na raz będą pobierać dużo prądu z centralnego zasilacza(np.30x60mA=1,8A=spadek nap.=reset wszystkich urzadzen lub wydajny zasilacz), albo każde urządzenie z własnym zasilaczem=większe koszty
    wada2: więcej zabawy z programem i wygospodarowanie wolnego timera do obsługi transmisji(w już testowanych i planowanych atmega8 ostatniego).
    Rozwiązanie drugie chyba lepsze. może jeszcze jakieś? Proszę o pomysły.

    0
  • #5 10 Maj 2006 19:40
    bis
    Poziom 21  

    Jeżeli masz niewiele do nadawania to czas zderzeń będzie stosunkowo krótki może wystarczy dać duże kondensatory w każdym urządzeniu. A tak ogólnie to nie ma możliwości uniknięcia tego zderzenia również wg propozycji nr2, ale gdyby ją zrobić podobnie do CAN (taki "software CAN") to zderzenie będzie tylko dla kilku urządzeń o zbliżonym bitowo adresie. Prawdziwym problemem będzie jednak konieczność ciągłego sledzenia (na piechotę) aktualnego stanu szyny. Jeżeli ma to być system inteligentnego domu to dlaczego nie chcesz jednak zastosować jakiegoś "mastera" do generowania zapytań w szynie do każdego punktu, przecież opóżnienie i tak będzie niewielkie (transmisja np. 250kb a są nadajniki/odbiorniki 2.5 Mb i więcej) a pewność i przewidywalność działania o niebo większa, a do tego wykrywanie uszkodzonych/niesprawnych punktów jest niejako "automatyczne".

    0
  • #6 11 Maj 2006 17:02
    Wilk
    Poziom 12  

    Docelowo sieć ma być połączeniem sieci opartej na połączeniu kablowym (rs-232) i na modemie ST7538. W takich sieciach dane przesyłane są bardzo rzadko (wyjątkiem jest moment po włączeniu zasilania, gdzie wszystkie urządzenia mogą się logować lub sprawdzać adresy), a generowanie co sekunde zapytań do urządzeń przez sieć zasilającą (odbiorniki podpięte przez st7538) jest niewskazane (poza tym będzie powodować korki na routerze spinającym obie sieci a mi takie problemy nie są potrzebne). Jeżeli chodzi o centralne urządzenie zarządzające - odpada. uszkodzenie takiego urządzenia wyłącza światło w całym domu. Z tego samego powodu widzę że osobne zasilacze będą również dobrym rozwiązaniem (podwyższy tyrochę koszty ale znacząco wpłynie na niezawodność całości systemu).
    Co do zderzeń w wariancie drugim: nie będzie takich. Drivery 485 będą wymuszać tylko stan niski na linii, stanem wysokim będzie stan wysokiej impedancji. Jeżeli kilka będzie nadawać na raz to wszystkie będą nadawać stan niski: na linii nie będzie zwarcia.
    Wpadłem na jeszcze jeden pomysł.:idea: Pomyślę nad nim, opiszę i poproszę o opinię.

    0
  • #7 11 Maj 2006 17:21
    bis
    Poziom 21  

    Coś chyba pokręciłeś albo stosujesz jakiś inny standard (nie RS485). Rs-485 jest linią różnicową. włączony nadajnik wymusza '1' lub '0' (płynie prąd w jedną lub w drugą stronę) i tylko wtedy na wejściu będziesz miał właściwe polaryzacje any odbiornik to odczytał jako "1' lub '0'. Oba stany są "aktywne" (płynie prąd w szynie). W tej szynie mie ma "trzeciego" stanu, jest tylko odłaczenie nadajnika, ale raczej nie jest wskazane używanie tego stanu do transmisji. Co do zasilania, pamiętaj że wszystkie punkty i tak MUSZĄ mieć wspólną masę. de facto szyna jest trzydrutowa.

    0
  • #8 11 Maj 2006 18:51
    Tomasz.W
    Poziom 35  

    bis napisał:
    ...pamiętaj że wszystkie punkty i tak MUSZĄ mieć wspólną masę. de facto szyna jest trzydrutowa.
    Wcale nie muszą , a wręcz nie powinny . Tak jak napisałeś jest to szyna różnicowa . Ta "różnicowość" występuje między linią A i linią B . I do przesłania informacji masa nie jest do niczego potrzebna . Natomiast przy bardzo długich przewodach które dodatkowo idą w torach kablowych i są narażone na jakieś zakłócenia wykorzystuje się ekran przewodu . Ale nie jako masę tylko właśnie jako ekran , i podłączony jest tylko z jednej strony . Często korzysta się z konwerterów z pełną izolacją galwaniczną .

    0
  • #9 11 Maj 2006 19:49
    bis
    Poziom 21  

    Tomaszu W: po pierwsze mowa jest o konkretnym standardzie RS485. po drugie nie istnieje coś takiego jak napiecie w pojedynczego przewodu, zawsze jest to napiecie względem punktu odniesienia, w tym konkretnym przypadku jest to masa. wtedy dopiero można mówić o napieciu w lini A i B oraz ich róznicy. W RS485 (w układach ndawczo/odbiorczych) KONIECZNE!! jest równiez łączenie MAS bo inaczej "polecą" końcówki (duża różnica potencjału pomiędzy nie połaczonymi masami rozładowuje się przez wejścia analogowe odbiorników uszkadzając je). Twoja interpretacja to bardzo częsty błąd wynikający z uproszczenia schematów ideowych w literaturze. Po trzecie w RS485 nie ma żadnej optoizolacji, może być w buforach/sprzegaczach segmentów ale wtedy całość toru nie jest RS485. Po czwarte ekran to ekran, jest uziemniany z JEDNEJ strony i służy temu by zakłócenia nie właziły do wnętrza a jest dlatego że RS485 i RS422 powstały by osiągnąć większe prędkości transmisji niż RS232, ale dla większych odległości właśnie zakłócenia wchodzące przez masę sa podstawowym mankamentem standardu.

    0
  • #10 12 Maj 2006 00:48
    Tomasz.W
    Poziom 35  

    bis napisał:
    Tomaszu W: po pierwsze mowa jest o konkretnym standardzie RS485.
    RS485 zawsze będzie RS485 . Nie wiem co masz na myśli pisząc o konkretnym standarcie .
    bis napisał:
    ...po drugie nie istnieje coś takiego jak napiecie w pojedynczego przewodu...
    Święta racja , dlatego mamy dwa przewody A i B .
    bis napisał:
    ...Po trzecie w RS485 nie ma żadnej optoizolacji
    Powiedz to konstruktorom z MAXIMA , bo pewnie tego jeszcze nie wiedzą . A ta ich nie wiedza skutkuje produkcją układów zapewniających całkowitą izolację galwaniczną poszczególnych elementów systemu RS485 .
    bis napisał:
    ...może być w buforach/sprzegaczach segmentów ale wtedy całość toru nie jest RS485.
    A według Ciebie co to wtedy jest ? Jeżeli wpinam się do sytemu laptopem poprzez interface USB <> RS485 z pełną izolacją galwaniczną to co to jest według Ciebie . Jeżeli to nie jest linia RS485 to co to jest ?
    bis napisał:
    ...Po czwarte ekran to ekran, jest uziemniany z JEDNEJ strony i służy temu by zakłócenia nie właziły do wnętrza....
    A co ja innego napisałem ?

    0
  • #11 12 Maj 2006 08:06
    bis
    Poziom 21  

    Tomaszu W: Cały czas tkwisz w często spotykanym błędzie. Chyba jednak nigdy nie sięgnąłeś do opisu standardu RS485 (a warto). Przy tak skrajnym braku wiedzy i rozumienia podstawowych pojęć (np. co tak naprawdę jest mierzone w linach A i B) to forum nie wystarczy. Ale jest google. polecam np.
    http://www.bb-elec.com/tech_articles/rs422_485_app_note/overview.asp#UnbalancedLD
    a jezeli już o Maximie to
    http://cn.maxim-ic.com/appnotes.cfm/appnote_number/763
    jak język jest obcy to popatrz uważnie na rysunki.
    Obejrzyj dokładnie opis do kości Maxima które w mają separację, jest całkowicie poza oobszarem opisanym w standardzie (dlateg moja uwaga o standardzie, ale skoro nigdy nie czytałeś...) , a po stronie RS485 jak wól jest zaznaczona wspólna masa obejrzyj Fig 5 z http://www.maxim-ic.com/appnotes.cfm/appnote_number/3776
    Naprawdę warto czasem poczytać, a potem może odwołasz te głupoty coś je powypisywał.



    Dodane:

    Cytat:
    A według Ciebie co to wtedy jest ? Jeżeli wpinam się do sytemu laptopem poprzez interface USB <> RS485 z pełną izolacją galwaniczną to co to jest według Ciebie . Jeżeli to nie jest linia RS485 to co to jest ?

    Jak rozumiem (wg twojej interpretacji) to Ty w tym przykładzie do gniazda USB wtykasz kabel RS485. Oczywisty absurd. Przecież RS485 skończył się gdzieś wewnątrz tej przejścówki, a potem do USB jest USB. coś logiką to nietęgo u Ciebie.

    0
  • #12 13 Maj 2006 21:10
    marek_Łódź
    Poziom 36  

    Wracając do meritum takim uporządkowanym sposobem dostępu do medium sieciowego, umozliwiającym unikanie kolizji, jest przekazywanie znacznika (token passing). Niestety porządne oprogramowanie tej metody jest bardziej złożone od prostych systemów wykrywających kolizje. Z drugiej strony widziałem gdzieś na forum post, w którym piszący żalił się, że przywrócenie porządku w RS485 po takiej kolizji też nie jest zadaniem trywialnym. Jak zwykle diabeł tkwi w szczegółach (w tym przypadku w sofcie).

    W układach pracujących na opornikach podciągających (LIN, CAN) istnieje możliwość wykrycia i uniknięcia kolizji w biegu, pod warunkiem, że sterownik nadajnika/odbiornika robi to na poziomie bitów. Wygląda to tak - w przypadku zgłoszenia transmisji na linii (liniach), pozostałe nadajniki wchodzą w stan oczekiwania buforując lub wstrzymując napływające dane do wysłania. Jedyna sytuacja kolizyjna jaka może wystąpić w przypadku, gdy dwa/więcej nadajników (niemal) jednocześnie rozpocznie transmisję. Ponieważ na liniach jeden ze stanów jest uprzywilejowany, pierwsza różnica na liniach transmisyjnych pomiędzy nadanymi i odebranymi danymi jest dla nadajnika informacją, że ma silniejszego konkurenta i powinien się wycofać do stanu oczekiwania na zwolnienie linii. Ten system można zrealizować zarówno programowo, jak i przy pomocy zintegrowanych sterowników sieci. Optymalnym z punktu widzenia technicznego wydaje się ethernet, ale w aplikacjach prywatnych dyskwalfikuje go cena.

    0
  • #13 13 Maj 2006 21:55
    Tomasz.W
    Poziom 35  

    AD. bis
    Jest sobie szafa , a w niej SIMATC . Do złącza SINEC L2 podpięty jest repeater L2<>RS485 . Od strony RS'a są cztery złącza śrubowe oznaczone jako A , B oraz A , B i to wszystko . Przyłącze zrobione dwoma dwużyłowymi kablami . Więc mi powiedz , gdzie mam podpiąć masę i czym ? I dlaczego od kilku lat działa to bezbłędnie ? Bo zgodnie z tym co piszesz działać nie ma prawa . No tak , przecież zawsze możesz powiedzieć że Siemens wyprodukował bubla bo nie wiedzą jak na prawdę działa RS485 . W załączniku jest kabelek nagminnie stosowany do sieci RS485 , zerknij i powiedz mi co mam podłączyć jako masę . Bo bo czego służy ekran to juz ustaliliśmy . A temacie firmy MAXIM , źle szukałeś , lub wybrałeś to co Tobie odpowiadało . Kończę bo to nie ma sensu .

    0
  • #14 13 Maj 2006 22:24
    bis
    Poziom 21  

    Szkoda że kończysz. Może jednak spróbój się czegoś nauczyć. tu masz instrukcję do tego modułu (albo podobnego) SIMENSA. W każdym opisie jest masa dla tych sygnałów
    http://www.c-profibus.com.cn/Download/SPM2%20manual.PDF
    na stronie 43 jest dokładny opis. Jak popatrzysz to pin 5 (oznaczony 2M albo 5M) to jest właśnie ta masa. Inny przykład to
    http://www.smcusa.com/si/si_manuals/IN313-PR1.PDF
    Rozdział 6 wykłada jasno. To że stosujesz jakieś kable nie patrząc do instrukcji co trzeba połączyć to już taka wada "prawdziwego fachowca". Tobie to działa bo prawdopodobnie masz to nadal na wspólnej masie ale okrężnie, przez uziomy zasilania szaf albo coś podobnego. Ci z Simensa to wiedzą co robią, ale ci co to używają ich produktów to już zupełnie inna sprawa (ale zawsze jest czas aby się douczyć)

    Dodane:
    jeszce tu masz jak w pewnych przypadkach używany jest shield do uwspólnienia masy (dla SIMENSA oczywiście)
    http://www.phoenixcontact.com/global_download_eng/TT_1188.pdf

    0
  • #15 13 Maj 2006 22:48
    marek_Łódź
    Poziom 36  

    W przedziwny sposób ta dyskusja toczy się stereo w dwóch tematach na elektrodzie. https://www.elektroda.pl/rtvforum/viewtopic.php?p=2622284#2622284

    Lubię takich, którzy reprezentują jedynie słuszną rację, ale fakty są czasem okrutne. Żeby zmierzyć różnicę potencjałów między dwoma punktami mojego telewizora nie muszę łączyć jego masy z masą mojego woltomierza, co sugeruje przedmówca. Podobnie jest w liniach transmisyjnych.

    http://www.lammertbies.nl/comm/info/RS-485.html

    Cytat:
    With RS485 on the contrary there is no such thing as a common zero as a signal reference. Several volts difference in the ground level of the RS485 transmitter and receiver does not cause any problems. The RS485 signals are floating and each signal is transmitted over a Sig+ line and a Sig- line. The RS485 receiver compares the voltage difference between both lines, instead of the absolute voltage level on a signal line. This works well and prevents the existence of ground loops, a common source of communication problems. The best results are achieved if the Sig+ and Sig- lines are twisted.

    0
  • #16 13 Maj 2006 23:02
    Tomasz.W
    Poziom 35  

    Projekt systemu oraz kompletną instalację wykonał Elektromontaż Północ .

    0
  • #17 13 Maj 2006 23:31
    bis
    Poziom 21  

    marek_Łódź: doskonały przykład z tym woltomierzem, ale RS485 NIE JEST standardem z "pływającą masą". Opisz jak byś mierzył tym woltomierzem gdyby jego masa była dołaczona do uziomu w gniazdku (wtedy jest to bliskie rzeczywistemu urządzeniu RS485). Np pomiar jakiejs małej różnicy napięcia w torze wysokiego napięcia telewizora. W cytownym tekście jest mowa o kilkunastu woltach róznicy pomiędzy masami ale w dobrze izolowanych miejscach, np. instalacje w budynkach mogą mieć te różnice dużo, dużo większe a wtedy sytuacja jest jak z tym telewizorem, "trzask" i po krzyku( tzn. odbiorniku)..
    tomku_w: Ja tobie pokazałem instrukcje producenta na którego się powoływałeś (jest tam nawet dokładnie podane że róznica pomiędzy masami NIE MOŻE przekroczyć 7V) to że instalację robiła TAKA firma to już tylko świadczy o firmie a nie o standardzie RS485.

    0
  • #18 13 Maj 2006 23:51
    marek_Łódź
    Poziom 36  

    Proponuję jeszcze raz przeczytać cytowany fragment powyżej i fragment dotyczący pływania nadajników/odbiorników w lustrzanej dyskusji. Poziom -7+12 w zupełnosci wystarcza do zapanowania nad układem, w którym sygnał pływa w zakresie 0..3V względem masy nadajnika, a terminator o niewielkiej rezystancji plus ewentualne diody zabezpieczające na wejściach odbiornika gwarantują, że układ nie odpłynie. Pamiętajmy, że dyskusja ta ma sens wyłącznie w przypadku dwóch układów zasilanych z dwóch źródeł odizolowanych od siebie galwanicznie. W takim układzie linie sygnałowe są wystarczające do ściągnięcia układu do wspólnego poziomu, a margines współbieżnego przesuwania zera, czy też jak kto woli margines pływania masy jest wystarczający do poprawnej pracy odbiornika, czego najlepszym dowodem są działające linie DWUPRZEWODOWE.

    Co do zgodności czy niezgodności ze standardem, nie będę się upierał dopóki nie zobaczę stosownego fragmentu normy. Natomiast takie, czy inne rozwiązanie jest dla mnie jedynie dowodem na to, że MOŻNA tak zrobić, ale nie dowodzi, ze TRZEBA.

    Dokumentacja urządzenia jakiejś firmy, jak już wcześniej napisałeś nie stanowi żadnego dowodu, bo rozwiązania firmowe często obchodzą lub rozszerzają ustalenia norm. Akurat Siemens nie jest tu zbyt silnym argumentem (widziałem parę simaticów, wcześniej pracowałem na ich wersji 51-ki i ostatnio wyeksploatowałem 2 telefony tej firmy i mogę stwierdzić, ze nie mają zbyt dobrych inżynierów).

    0
  • #19 14 Maj 2006 00:22
    bis
    Poziom 21  

    Cytat:
    Proponuję jeszcze raz przeczytać cytowany fragment powyżej i fragment dotyczący pływania nadajników/odbiorników w lustrzanej dyskusji. Poziom -7+12 w zupełnosci wystarcza do zapanowania nad układem, w którym sygnał pływa w zakresie 0..3V względem masy nadajnika, a terminator o niewielkiej rezystancji plus ewentualne diody zabezpieczające na wejściach odbiornika gwarantują, że układ nie odpłynie. Pamiętajmy, że dyskusja ta ma sens wyłącznie w przypadku dwóch układów zasilanych z dwóch źródeł odizolowanych od siebie galwanicznie. W takim układzie linie sygnałowe są wystarczające do ściągnięcia układu do wspólnego poziomu, a margines współbieżnego przesuwania zera, czy też jak kto woli margines pływania masy jest wystarczający do poprawnej pracy odbiornika, czego najlepszym dowodem są działające linie DWUPRZEWODOWE.

    Piękny tekst ale gdzie tu RS485. te 7-12 volt to różnica z powodu prądu własnie w przewodzie wspólnej masy (tyle jeszcze krzem wytrzyma). A opowiesć o "sciąganiu" do wspólnej masy liniami transmisyjnymi to już fantazja, Jak? Którędy? przez analogową część odbiornika? Widziałeś gdzieś opis parametrów dla takiego działania w notach katalogowych(np. max prąd)? Lepiej zastanów sie nad przykładem z umasionym woltomierzem albo instalacją w budynku, albo jak w twoich "przykładach" ma się masa do zasilania urządzeń i czy właśnie tamtędy nie były "ściągnięte" do wspólnej masy.


    Cytat:
    Co do zgodności czy niezgodności ze standardem, nie będę się upierał dopóki nie zobaczę stosownego fragmentu normy. Natomiast takie, czy inne rozwiązanie jest dla mnie jedynie dowodem na to, że MOŻNA tak zrobić, ale nie dowodzi, ze TRZEBA

    ręce opadają, to oczym do tej pory sie wypowiadałeś i na jakiej podstawie?

    Przyznam że ciągle widzę takie wypowiedzi o RS422/485 i specjalnie poruszyłem temat ilosci przewodów i masy, ale nie spodziewałem się że z takim uporem bedzie bronione calkowicie fałszywe i błędne przekonanie o sposobie działania tego połączenia.

    -1
  • #20 14 Maj 2006 00:38
    marek_Łódź
    Poziom 36  

    Nie bardzo wiem gdzie miałby się ten prąd zamykać, tym bardziej, że żeby wycisnąć kilka woltów na kilku omach przewodu zerowego, musiałby mieć wartość amperową. Chcesz użyć masy interfejsu komunikacyjnego do zamknięcia prądów wyrównawczych w sieci? Toż zaraz wywali różnicówka.
    Jedyny sensowny układ to zasilacze izolowane od sieci spięte masami (jeden zasilacz), gdzie problem wogóle nie istnieje, albo zasilacze odizolowane galwanicznie, gdzie trzeba wytracić wyłącznie ładunki statyczne i pływanie masy spowodowane zmianami sygnałów, co w układach dwuprzewodowych dzieje się bezproblemowo.
    Może inaczej - dwa pytania

    1. Czy standard RS485 wymusza stosowanie przewodu masowego, bo ja na podstawie przejrzanych materiałów jestem skłonny twierdzić, że nie ma takiego przymusu

    2. Czy odbiornik różnicowy RS485 będzie odbierał poprawnie sygnały nadajnika przy niepołączonych masach - TAK (idziałem takie układy).

    Gdzie jest problem? Linie interfejsu komunikacyjnego nie są przeznaczone do zamykania prądów błądzących generowanych przez bliżej nieokreślone źródła. Jestem skłonny się zgodzić, że przewód masowy może poprawić parametry układu, ale nigdzie nie widziałem stwierdzenia kategorycznie nakazującego stosowanie tego przewodu.
    Więc może wyprowadzając mnie z błędu wskażesz takie źródło.

    0
  • #21 14 Maj 2006 01:09
    bis
    Poziom 21  

    ad. 1 Tak, z samej zasady działania.
    ad. 2 Tak, do czasu gdy prąd wyrównujący różnicę potecjału nie zniszczy odbiornika. (zastanów się to co widziałeś miało naprawdę całkowicie izolowane masy)

    Nie wiem co oglądałeś ale proponuje żebyś (przy braku dostepu do normy) obejrzał opisy okablowania w notach katalogowych producentów kości (podałem takie dla Maxima) albo opisy okablowania dla profesjonalnych systemów opartych na RS485 (nie sa one domeną pojedynczych producentów) np. Profibus czy Modbus. I znajdź tam wskazanie aby stosować wyłącznie dwa przewody. Na stronie B&B Electonics jest precyzyjnie wyłożone DLACZEGO tak jest. Ta masa nie jest tak dla fantazji, czy aby podrażać system.

    0
  • #22 14 Maj 2006 02:21
    marek_Łódź
    Poziom 36  

    ad 1 Sygnał nadajnika jest symetryczny, odbiornik jest różnicowy - taka jest zasada działania RS485

    ad2. niby którędy ma się zamknąć ten prąd wyrównawczy w przypadku izolowanych galwanicznie obwodów?

    Ja jedynie twierdzę, że bez linii łączącej masy ten układ też działa. Twierdzisz, że jest inaczej?

    0
  • #23 14 Maj 2006 02:46
    bis
    Poziom 21  

    ad1. sygnałem jest róznica napiecia pomiędzy A i B (np 1V). Ale układy odbiornika, galwanicznie mają też masę. gdy napięcie na A lub B (względem masy odbiornika jest kilkanaście Voltów to ok. ale jeżeli A (względem masy odbiornika) będzie 1000V a B 1001V (równocześnie nadajnik ma generuje napiecie na A = 2V a na B=3V względem swojej masy) to co? Odbiornik na układzie krzemowym po prostu się pali. W notach katalogowych jest odpowiedni parametr. Jedyny sposób aby tego uniknąć to wspólna masa.
    ad2. obwody nie są galwanicznie izolowane, są połączone co najmniej liniami A i B i tędy właśnie wejdzie prąd uszkadzający, bez wspólnej masy wystarczy elektrostatyka.
    To że układ działa w danym momencie nie oznacza jest prawidłowo skonstruowany i że zawsze będzie działał.

    0
  • #24 15 Maj 2006 12:50
    Wilk
    Poziom 12  

    Widzę że rozgorzała dyskusja n.t. przewodu masowego, ja bym taki przewód użył, choćby ze względu na to że zasilacze impulsowe potrafią (chyba przez pojemnośc na transformatorze separacyjnym) te około 100V wygenerować (doświadczenia zauważyłem). Kłutnie jednak Wam pozostawiam, bardzo interesująca).
    Wracając do "trzeciego stanu" na linii transmisyjnej miałem na myśli stan gdy nie nadaja żaden zadajnik. Wtedy terminatory zwierają linię (nie płynie żaden prąd) i różnica napięć na linii powinna wynosić około 0V. I tutaj się zgodzę, że używanie tego stanu jest niewskazane. W nocie katalogowej texas instruments układu 75176 wyjście odbiornika jest wtedy nieokreślone, w nocie max845 nie wspomneli o takim stanie linii, określili jednak wyjście przy rozwartej linii. Jak pisałem wcześniej istotną dla mnie wartością jest prąd pobierany przez układy. każdą linię logiczną ujkładów rs485 można sterować z mikroprocesora osobno. pomysł polega na tym aby układy spiąć czterema przewodami: Vcc,A,B,GND. na końcach linii zastosować terminatory i rezystory podpinające linię A do Vcc oraz B do GND. Wtedy przy wyłączonych wszystkich nadajnikach na linii będzie wymuszony stan logicznego 0. Układ nadający na linii danych miałby ustawioną "1" a do linii TxD procka podpięty byłby wejście włączające nadajnik. Efektem tego "0" byłoby stanem spoczynkowym linii a "1" stanem aktywnym linii. Równoczesne nadawanie wielu nadajników wymuszałoby na linii stan "0" i ich prądy sumowałyby się więc równoczesne nadawanie kilku nadajników nie powodowałoby dużego pobory prądu.
    Równocześnie odbiornik mikroprocesora odbierałby dane, niezgodność danych nadanych z odebranymi oznaczałaby błąd transmisji i jej przerwanie, odczekanie losowwej wartości czasu i kolejną próbę nadania itp. (to już soft).
    Linie Vcci GND umożliwiłyby też zasilanie układów odbiorczych (ale niekoniecznie, jeżeli układ miałby swój zasilacz wystarczy podpięcie się pod przewody A,B i GND).
    Jak myślicie, sprawdzi się?

    0
  • #25 15 Maj 2006 14:11
    bis
    Poziom 21  

    Tak uzyskany trzeci stan ma kilka wad. Aby to zadziałało to te rezystory terminujące będą musiały być stosunkowo duże, a to spowoduje że "pewny" stan "1" będziesz uzyskiwał dopiero po czasie rozładowania linii. dla długich przewodów ich pojemność spowoduje że działanie będzie możliwe dla małych prędkości transmisji. Czas rozładowywania linii do stanu "1" w najgorszym przypadku musi być krótszy od czasu transmisji 1/4 bita. Inny problem to ilość urządzeń na jednej szynie( to powoduje dalsze zwiększanie wartości rezystorów tak aby sumarycznie linia dalej mogła działać). Tak po za tym to w tym trzecim stanie który chcesz traktować jako "1" linie są po prostu antenami zbierającymi zakłócenia (cały czas pamiętaj że te terminatory nie mogą być za małe). Na stole to będzie dzałało ale w większej skali to raczej nie pójdzie.
    Oczywiście takie łączenie nie ma nic wspólnego ze standardem.
    Tak na marginesie to chyba w RS485/422 nie ma szans na sensowne rozgrywanie kolizji. W trakcie kolizji urządzenia dołączone w różnych miejscach szyny mogą odczytać przeciwne stany. Inaczej mówiąc w takiej szynie nadajnik nie jest w stanie sam określić czy odbiornik/odbiorniki widzą na szynie to samo co on. Dlatego wszystkie znane mi protokoły dla tej szyny maja rozbudowane sumy kontrolne i sygnalizację zwrotną poprawności otrzymania komunikatów w wyższych warstwach.
    A może taki "simple token": urządzenie z najniższym piorytetem wysyła co jakiś czas "token" (oczywiście gdy szyna nie jest zajęta). pozostałe mają precyzyjnie określona hiearchię przekładającą się na czas który muszą odczekać po odebraniu "tokenu" aby nadać swoje (o ile inny, z większym priorytetem (krótszym czasem) nie zaczął nadawać) ale to jest modyfikacja "master-slave" której nie chcesz stosować;

    0
  • #26 15 Maj 2006 21:24
    Wilk
    Poziom 12  

    Tak jak napisałem wcześniej ewentualne błędy nie są dla mnie problemem, planuję kontrolę parzystośći i 16-bitową sumę kontrolną crc oraz kontrolę logiczną przesyłanych danych na poziomie warstwy aplikacji. Gdyby nie pobór prądu mógłbym nawet w ciemno wysyłać dane narażając na kolizję. Sprawę kolizji da się skutecznie załatwić w sposób trogramowy, a przy 32 układach nadawczych nie jest to problem. Mam oprcowany protokół transmisji danych przez sieć elektryczną gdzie ramkę danych wysyła się w ciemno (zgodny z normą PN-EN-50065-1). Ale wizja (teoretyczna) jednoczesnego rozpoczęcia nadawania 32 układów mnie przeraża (wg noty max 250mA na układ). Jeżeli mnie ktoś poprawi że nie mam racji co do takiego poboru prądu to się szczerze ucieszę:D

    Kolejny pomysł, proszę o opinie:

    Poszperałem jeszcze trochę, są połączenia ze wstępną polaryzacją linii rs485. Czyli linia jest wstępnie spolaryzowana w stanie "1". Ponieważ linia może mieć max 32 urządzenia (standardowo) możnaby zrobić ustawianie linii przez nadajnik w stan "0" przez czas adres_urzadzenia*T gdzie adres urzadzenia 1-32. Nadajnik sprawdza czy linia wolna, jak wolna nadaje. po skończeniu nadawania sprawdza czy linia jest nadal "0", jak tak (nadaje inny układ), odpada w arbitrażu, jak "1"(układ powrócił do tego stanu przez rezystory polaryzujące linię) wygrał arbitraż i dalej nadaje dane(oczywiście w jakimśtam slocie czasowym). Czas T może być około 1ms i wtedy czasy narastania nie będą odgrywać aż tak istotnej roli.

    0
  • #27 20 Maj 2006 22:34
    h0nza
    Poziom 14  

    Witam
    Wilku - ten opis który podałeś bardzo przypomina szynę CAN tam też jest stan dominujący (czyli stan aktywny tranzystory podciągające włączone) i stan pasywny(tranzystory podciągające wyłączone) - jak wspomniał kolega Bis będzie tutaj dużym problemem pojemność linii (aczkolwiek rezystancje terminujące rzędu 120 ohm będą działać na twoją korzyść no i w CAN'ie takie cuda działają z dużymi prędkościami w bardzo zakłóconym środowisku)
    sugerowałbym też zamianę stanu aktywnego na 0 a nie 1 (uC normalnie jak nie nadają mają 1 więc wszystkie by zajmowały linie i paraliż całkowity)

    0