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

Ocena koncepcji sieci RS485 z czujnikami na działce i w budynkach

_lukaszg 16 Maj 2018 08:28 1095 6
  • #1 17223048
    _lukaszg
    Poziom 6  
    Zamiast trawić układ składam prototypy na płytkach stykowych i później ew. myślę o ich wykonaniu. Małe kroczki przybliżające do celu, dające szybki efekt, pozwalają w razie co zmienić kierunek. Wykonanie płytki, zlutowanie urządzenia i uruchomienie może trwać dni czy tygodnie by przekonać się, że koncepcja jest słaba. Z tego też powodu, rysunek, który przedstawie powstał w imię KISS, i znalazł się na papierze. Wykonanie jego zajęło mi 30m, a kurs Eeagla ma sporo więcej ;) Dlatego jest on bardzo koncepcyjny - posiada wiele niestandardowych oznaczeń, czy pomijam zbędne elementy jak np. układy pasywne który mogły by wynikać z noty katalogowej ATmega8 czy DS18B20. Proszę wybaczyć, za jego amatorskie wykonanie, i proszę o wyrozumienie. W razie niejasności chętnie wytłumaczę co jest czym.

    Generalnie prosił bym o ocenę koncepcji. Już spieszę z jej opisem. Otóż, planuję zrobić sieć czujników. Czujniki te mają być rozsiane po całej działce, obiektach przemysłowych, kotłowni, pod chmurką, między kratownicami, koło silników mocy 3KW, czy liniach napięcia 3 fazowego. Czujniki te mają mierzyć różne rzeczy - na rysunku mamy pomiar akurat temperatury za pomocą DS18B20, ale będą to też pomiary natężenia światła, czy również odległości. Z uwagi na odporność na zakłócenia oraz prostotę implementacji wybrałem sieć RS485. Rozumiem, że RS485, to standard napięć, więc na chwilę obecną zaprojektowałem protokół (i sprawdziłem), gdzie urządzenie nasłuchuje i w momencie gdy rozpozna rozkaz, zaadresowany do niego zaczyna odpowiadać. Taki arbitraż powoduje bezkolizyjna komunikacje. Być może zmienię to na coś bardziej cywilizowanego i uniwersalnego jak MODBUS, ale to pieśń przyszłości i na razie nie ma takiej potrzeby. Z powodu charakterystyki urządzania, nazwałem prototyp koncepcyjny wstępnie WA1 czyli Węzeł Adresowany 1. Jeśli chodzi o układ CJP1 jest to Centralna Jednostka Pomiarowa 1, składa się z komputera PC wraz z możliwością komunikacji RS485. Komputer tutaj przyjmuję rolę zarządcy w sieci RS485 i to on wysyła komendy z odpowiednim adresem i przetwarza odpowiedzi. Później za pomocą ethernetu dalej serwuje te wyniki. Wykonałem opisany projekt na płytce stykowej, BEZ SEPARACJI GALWANICZNEJ, żeby skupić się na oprogramowaniu czujników i protokołu.

    Po testach pierwszej wersji protokołu i wsadów, chciał bym wykonać 1-2 urządzenia i sprawdzić działanie w praktyce w środowisku docelowym. Jak wspomniałem jest to miejscami środowisko gdzie mogą występować zakłócenia i ew. awarie (silniki 3KW, linie 3 fazowe, konstrukcje metalowe, warunki zewnętrzne czy wyładowania atmosferyczne). Pomyślałem, więc o bezpieczeństwie. Poszperawszy w sieci stwierdzam, że wypadało by jakoś zabezpieczyć owe urządzenia, żeby w razie jakiejś draki odszedł jedynie jeden układ/element a nie wszystko co znajduje się w sieci. Pomyślałem, więc o separacji galwanicznej - powiedzcie proszę teraz - Q1 Czy opisany układ i charakterystyka środowiska pracy faktycznie daje przesłanki ku separacji galwanicznej? Jeśli tak, to w takim razie, Q2 Czy zaproponowana separacji w postaci transoptorów oraz przetwornic DC/DC ma sens? Moja ideą jest puszczenie magistrali 6 lini. Tutaj, pójdzie zasilanie 12V dla urządzeń, oraz zasilanie 5V dla linii komunikacyjnej, oraz sama linia komunikacyjna RS485 (A/B). Z linii 12V każde urządzenia poprzez przetwornice ma dostarczyć sobie zasilanie. Układy MAX485 zasilane maja być osobną linią 5V. Z tego co napisałem klaruje się kolejne pytanie Q3 Czy prawdą jest, że prezentowany układ posiada 2 główne obwody A (5V RS485), oraz D(zasilanie 12V + przetwornice urządzeń), oraz n obwodów w każdym urządzeniu wewnętrznie, które są separowane galwanicznie? Q4 Jeśli tak, to czy ma to sens? Co do warstwy fizycznej, to chciał bym te dwie linie zasilające i komunikacyjną puścić skrętką UTP kat. 5, od punktu do punktu tworząc magistrale Q5 czy taka skrętka się nadaje do komunikacji na kilkadziesiąt/ kilkaset metrów? , ostatecznie Q6 Czy należy taki układ uziemić, a jeżeli tak to jak?

    Bardzo proszę o wyrażenie waszych opinii oraz o wszelkie odpowiedzi. Z góry przepraszam za zaistniałe niejasności i chętnie wyklaruję zamglone części mojego wywodu/ projektu. Jednocześnie chciałbym podziękować za zainteresowanie oraz poświęcenie Waszego czasu - to chyba najcenniejsze co dziś posiadamy, a dysponujemy jedynie ograniczoną jego ilością.


    Ocena koncepcji sieci RS485 z czujnikami na działce i w budynkach
  • #2 17223065
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #3 17223095
    tmf
    VIP Zasłużony dla elektroda
    Q1 - niekoniecznie. Spearacja galwanicza przydaje się, jeśli spodziewasz się dużej różnicy mas, przekraczającej tolerancję transceiverów.
    Q2 - IMHO pokazana separacja nie za bardzo ma sens. Zasilanie transceiverów ze wspólnej magistrali IMHO jest słabe.
    Q5 - nadaje się, musisz tylko policzyć ile prądu pobierają układy i sprawdzić czy obciążalność skrętki oraz spadki napięć na to pozwolą. Zawsze można dać wyższe napięcie i przetwornicę step down przy układach (tak jak to jest w PoE).
    Q6 - ściągnij noty producentów transceiverów i zalecenia projektowe dla RS485.
    Ja bym zrobił to wszystko tak, że puściłbym wspólne zasilanie, natomiast ew. separację dodałbym na każdym module (o ile będzie potrzebna). Aczkolwiek wydaje mi się, że w twojej sieci, jeśli wszystko jest zasilane z jednego źródła separacja nie jest potrzebna.
  • Pomocny post
    #4 17223552
    Mkrasuski
    Poziom 22  
    Dzień dobry,

    Niedawno zadawałem sobie bardzo zbliżone pytania gdyż pierwszy raz projektowałem urządzenie z RS485.
    Poczytałem i podpatrywałem jak robią to inni producenci w mojej branży.
    Otóż WSZYSCY stosują separację galwaniczną nawet jeśli ich produkty pracują tylko w obrębie np. jednej maszyny i zasilane są z tego samego źródła. Dotyczy to zarówno CAN jak i RS422/RS485. Żaden z nich nie wie, gdzie ostatecznie będzie pracował jego moduł i skąd będzie zasilany.

    Mam następujące sugestie/przemyślenia:
    1. Podniesienie napięcia zasilania (12V) lub przynajmniej przygotowanie modułów do pracy przy szerszym zakresie napięć zasilania np. 10-36V. Wspólna magistrala 12V to nienajlepszy pomysł przy bardzo rozległym systemie z uwagi na spadki napięć. Oczywiście wszystko zależy od tego jak wiele mocy będą wymagać poszczególne węzły ale rozsądnie założyć przynajmniej 50mA na węzeł.
    2. Lokalne wytwarzanie zasilania do transceiver-ów RS485. Magistrala 5V to fatalny pomysł i trzeba szybko o nim zapomnieć.
    3. Nie napisałeś jaką prędkość transmisji chcesz osiągnąć, ale jeżeli zostanie zastosowana izolacja galwaniczna w torze komunikacyjnym to transoptor PC817 jest słabym rozwiązaniem. Jest zbyt wolny. Policzyłem na szybko i wyszło mi w najlepszym przypadku 19200bps przy dobraniu transoptora o najwyższym CTR i pracy przy wysokich If i Ic (co wpłynie na pobór z zasilania gdyż sterowanie transoptorami pochłonie pewnie tyle co pozostałe obwody danego węzła).
    4. Od czasów debiutu MAX485 na rynku pojawiło się sporo lepszych układów, bardziej odpornych i lepiej dostosowanych do środowisk o wysokim poziomie zakłóceń. Przykładowo MAX485 wytrzymuje 12.5V common voltage podczas gdy ADM3095 wytrzyma 48V.
    W swoim projekcie przyjąłem zastosowanie izolacji toru komunikacyjnego i rozważałem zastosowanie ISO3080 (i dodatkowej przetwornicy do zasilania np. AIMTEC) lub ADM2587 i ostatecznie wybrałem ten ostatni.
    5. Kwestia uziemień węzłów
    Tak jak pisał tmf nie jest w zasadzie wymagana ale...
    Interfejs RS485 jest różnicowy ale bufory magistrali wytrzymają skończona wartość common voltage (pkt4) i dlatego oprócz pary AB często do dyspozycji jest jeszcze zacisk COM, który ustala wspólny potencjał odniesienia dla uczestników magistrali (w ogólnym przypadku jest to (-) zasilania transceiver-ów).
    Ponadto, oprócz terminacji na końcach, często stosowane jest (np. w Profibus) dodatkowe polaryzowanie linii A i B czyli tzw. idle-bus fail-safe biasing.
    Warto też zastosować zabezpieczenie przed przepięciami. Powszechnym w RS485 jest element SM712. Podłączą się go pomiędzy liniami A i B oraz COM ale jeżeli spodziewasz się dużych poziomów zakłóceń to dobrą praktyką jest zastosowanie dodatkowych rezystorów ograniczających 10Ohm na obu wyjściach transceiver-a.
    Więcej szczegółów można znaleźć w nocie Texas Instruments: The RS-485 Design Guide (SLLA272C), są też tam na końcu odniesienia do innych ciekawych artykułów na ten temat.

    Powodzenia

    mkrasuski

    P.S. A tak na marginesie, w jaki sposób twój protokół realizuje sterowanie kierunkiem transmisji (flow control)?
  • #5 17226809
    _lukaszg
    Poziom 6  
    Dziękuję koledzy za odzew. Postatram się dzisiaj zebrać wszystko do kupy i zmodyfikować schemat i projekt. Na razie odpowiem jedynie na ostatnie pytanie. Wszystkie WA1 są ustawione jako odbiorniki. CJP1 używa przejściówki UART/USB która za pomocą MAX485 jest wpięta w sieć RS485. To właśnie ta przejściówka steruje kierunkiem owego MAX485 - gdy nadaje to przełącza w nadajnik, a potem przełącza od razu na odbiór. Od strony WA1, gdy któryś z WA1 odbierze rozkaz ze swoim adresem, odczekuje 100ms i zaczyna przetwarzanie i nadawanie - przełączając MAX485 w nadajnik. Zaraz po nadaniu od razu przechodzi w stan odbioru. Odpowiedzialny jest za to jeden pin mikro kontrolera. W chwili obecnej przyjąłem, że maksymalny czas od nadania rozkazu to 1si master nie zacznie znów nawoływać, przed upłynięciem tego czasu, a zarazem do tego czasu czeka na odpowiedź. Dla pewności dołożyłem diody, żeby w razie czego nadajników szlag nie trafił. Jest to prosty protokół - jedna ramka 32 znaki jako rozkaz i taka sama jako odpowiedź. Dla mojego zastosowania starcza. W przyszłości chcę to rozbudować o definiowanie rozmiaru ramki, wydzielenie parametrów etc. (myślałem, czy by MODBUSA nie zaimplementować), oraz wprowadzenie informacji o timeoutach danych operacji. Obecnie mam 1s gdyż program działa synchronicznie - tj. po otrzymaniu komendy przez WA1 zaczyna on odczytywać temperaturę i ja odsyła, co trwa ok 800ms. Zdaje sobie sprawę, że temperatura powinna być mierzona w sposób periodyczny, asynchronicznie a odpowiedź na komendę powinna być w postaci przekazania tego co akurat jest aktualnym pomiarem, jednak obecnie system działa. Chcę małymi krokami go realizować, za każdym razem osiągając wartość dodaną - obecnie przerobienie tego nic mi nie da. No chyba, że faktycznie chciał bym generalnie mierzyć temperaturę, a za 200ms odczytywać naświetlenie fotorezystora - wtenczas 1s na odpowiedź to za dużo i należało by wprowadzić asynchroniczność programu WA1.
  • #6 17233924
    _lukaszg
    Poziom 6  
    @tmf

    A1 Rozumiem. Rozważ, czy jest to zupełnie niezbędne. Wydaje mi się dodatkowym poziomem zabezpieczenia. W sensie, że nie zaszkodzi, a też jakiś element poznawczy dojdzie.

    A2 Dlaczego nie ma sensu? Przez te wspólne zasilanie 5V?

    A5 Dzięki za info.

    A6 Dzięki, sięgnę do noty.

    @Mkrasuski

    A1 12V, ma być właśnie napięciem wyższym, gdyż układy działac mają na 5V. Mimo, to uważasz, że to za mało? Natomiast jeśli bym puścił tam 24V i przetwornice DC/DC 24V/5V czy każdym WA1 ?

    A2 Faktycznie, wszyscy to powtarzają. Postaram sie zasilić trasncivery lokalnie z tych 24V.

    A3 Faktycznie, można wybrać wybsze transcivery. Prędkość w tym projekcie nie musi być szybsza niż kilka set bitów na sekunde, niemniej może warto coś szybszego włożyć.

    A4 Polecił byś może inny układ, ale w technologi przewlekanej? Raz, że nie potrafię lutować SMD i sprzętu nie mam. Dwa utrudnione jest prototypowanie na płytce stykowej, a w razie uszkodzenia układu w gotowym urządzeniu DIP'y wystarczy na dostawce wymienić, a SMD, należy "na warsztat" zabrać.

    A5 Dzięki za porady.

    Prosił bym o opinię drugiego pseudo-schematu, z uwzględnieniem waszych uwag. Dzięki za wasz czas.

    Ocena koncepcji sieci RS485 z czujnikami na działce i w budynkach
  • #7 17233931
    NoweMillennium
    Poziom 17  
    Ocena koncepcji sieci RS485 z czujnikami na działce i w budynkach

    Dodano po 3 [minuty]:

    _lukaszg napisał:
    Polecił byś może inny układ, ale w technologi przewlekanej?

    Trzeba się przestawić na SMD. Wiele układów nie jest produkowanych w obudowach THT albo są drogie. Np MAX3485 w DIP ok 20zł, SMD 6zł. Czy można kupić układy FTDI (FT2xx) w obudowach DIP? Nie. SFTM32F w DIP? XMEGA?

    Dodano po 1 [minuty]:

    _lukaszg napisał:
    Dwa utrudnione jest prototypowanie na płytce

    Płytki przejściowe SMD-DIP

    Dodano po 54 [sekundy]:

    _lukaszg napisał:
    razie uszkodzenia układu w gotowym urządzeniu DIP'y wystarczy na dostawce wymienić, a SMD, należy "na warsztat" zabrać.

    1 - można go dobrze zabezpieczyć
    2 - przejściówka SMD-DIP

    Co do izolacji to używałem NM485D (załącznik). Firma była bogata a innych sensownych rozwiązań nie było. Teraz szukał bym w tanich ADuMxxxx.
REKLAMA