Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Badanie sieci Modbus - propozycje badań?

j_r_k 04 Maj 2009 01:32 2656 3
  • #1 04 Maj 2009 01:32
    j_r_k
    Poziom 10  

    Witam!

    Jako projekt na uczelni (właściwie jest to praca mgr) mam stworzyć urządzenie, które będzie jako Modbus Master komunikować się przez RS485 ze sterownikami PLC GE Fanuc VersaMax. Potem mam użyć tego sprzętu do badania prędkości transmisji w sieci Modbus. Nie tworzę układu elektronicznego, lecz wykorzystuję gotową płytkę z µC ATmega32.

    Zaimplementowanie pierwszej warstwy protokołu Modbus nie było trudne. Na dzień dzisiejszy mam tylko zrobiony tryb ASCII, bo jakoś nie mogę się zabrać do napisania funkcji obliczającej CRC dla trybu RTU (troszkę jest to trudniejsze niż obliczenie LRC).

    Udało mi się skomunikować µC z windowsowym symulatorem Simply Modbus Slave przez interfejs RS232.

    Mam jedno pytanie – może trochę lamerskie, ale bardziej się znam na (o)programowaniu niż na sprzęcie i elektronice. Czy żeby komunikować się ze sterownikami przez RS485, wystarczy tylko zamienić w układzie kość MAX232 na MAX485? Rozumiem, że nóżki mogą mieć inne funkcje, ale generalnie podpięcie MAX485 do wyprowadzeń RXD i TXD UART-a wystarczy, tak? Czy może lepiej zastosować konwerter RS232↔RS485?

    A jeśli chodzi o protokół Modbus, to nigdy się nie zajmowałem sterownikami PLC i sieciami przemysłowymi.

    Nie mam pomysłu, co można badać w sieci Modbus. Zderzenia pakietów raczej nie występują. Ich ginięcie również.

    Myślałem o badaniu tolerancji sterowników na przekraczanie przerwy międzyznakowej (w dokumentacji określanej jako t 1,5).

    Myślałem również o wpływie generatora sygnału taktującego (wewnętrzny RC, zewnętrzny kwarc) na jakość generowanych przez UART znaków. Specyfikacja Modbusa przewiduje tolerancję 1% dla nadawania i 2% dla odbioru. Czy możliwe, żeby po lekkim ogrzaniu µC (np. suszarką do włosów) pojawiły się znaczące różnice?

    Wcześniej myślałem o wpływie zakłóceń elektromagnetycznych na transmisję, ale przeczytałem, że RS485 na takie zakłócenia jest odporny.

    Wpływ rodzaju kabla (ekranowany lub nie) na transmisję – głównie szybkość. Wpływ długości kabla na prędkość transmisji.

    Może jeszcze próba łączenia się szybciej niż przewidziane w standardzie 19200 b/s?

    Myślałem też o porównaniu transmisji przez RS232 i RS485.

    Co o tym myślicie i czy macie jakieś propozycje?

    0 3
  • #2 04 Maj 2009 09:32
    kemot55
    Poziom 30  

    Jeżeli chcesz sobie "wygrzebać" problem to zmień (dodaj) medium transmisyjne (radio, światłowód, podczerwień, Ethernet...).
    Jeżeli chodzi o CRC to jest wiele przykładów w C w których znajduje się cały algorytm (widziałem to niedawno również na Elektrodzie - trzeba tylko poszukać). Może na początek ściągnij sobie dokument o nazwie "PI_MODBUS_300.pdf"
    Z zamianą układów scalonych MAX232<->MAX485 będzie trochę "zabawy". Chodzi o dodatkowy sygnał kierunku transmisji w RS485. Lepiej (szybciej) zastosować jakiś profesjonalny konwerter.
    A w ogóle to zastanawiam się czy promotorowi nie chodziło bardziej o funkcję diagnostyczną protokołu (dotyczy monitorowania urządzeń podłączonych do sieci a nie samej sieci).

    0
  • #3 04 Maj 2009 16:57
    j_r_k
    Poziom 10  

    kemot55 napisał:
    Jeżeli chcesz sobie "wygrzebać" problem to zmień (dodaj) medium transmisyjne (radio, światłowód, podczerwień, Ethernet...).

    To by znacząco podniosło koszt całego przedsięwzięcia. Realny jest pomysł z IR, ale nawet z tym mam problemy – ile się namęczyłem, żeby rozkodować RC5 z pilota, a i tak się program zawiesza. Ethernet też mógłby być, ale implementowanie TCP/IP jest chyba ponad moje umiejętności.

    kemot55 napisał:
    Jeżeli chodzi o CRC to jest wiele przykładów w C w których znajduje się cały algorytm.

    Wiem. Są dwie metody: generowanie lub korzystanie z gotowych wartości. Po prostu mi się nie chciało tego rozgryzać. :P

    kemot55 napisał:
    Może na początek ściągnij sobie dokument o nazwie "PI_MODBUS_300.pdf"

    Mam ten dokument. I inne też. Z pliku MODBUS_materiały.rar.

    kemot55 napisał:
    Z zamianą układów scalonych MAX232<->MAX485 będzie trochę "zabawy". Chodzi o dodatkowy sygnał kierunku transmisji w RS485.

    Chyba mogę go podpiąć do któregoś pinu µC i sterować za pomocą zmiany stanu? Master nadaje: PINA=1; czeka na odpowiedź slave'a: PINA=0.

    kemot55 napisał:
    Lepiej (szybciej) zastosować jakiś profesjonalny konwerter.

    To to mi podraża całą konstrukcję. Musze pogadać z promotorem. Może ma coś takiego. Albo uczelnia by zakupiła.

    kemot55 napisał:
    A w ogóle to zastanawiam się czy promotorowi nie chodziło bardziej o funkcję diagnostyczną protokołu (dotyczy monitorowania urządzeń podłączonych do sieci a nie samej sieci).

    Szczerze mówiąc, nie wiem o co mu chodziło. Powiedział, żebym to najpierw zrobił, a potem będziemy się martwić (dobre ma facet podejście, co?).

    Chodzi Ci o funkcje diagnostyczne? Na przykład:
    08 00 00 – Echo query data
    08 00 02 – Return diagnostic register
    08 00 03 – Change ASCII delimiter
    08 00 0A – Clear counter and diagnostic register

    Wyślę zapytanie, slave wyśle odpowiedź. Wyświetlę ją na LCD i to wszystko. No nie wiem, co tu więcej można zrobić. Może jakieś statystyki do EEPROM-u zapisywać?

    0
  • #4 04 Maj 2009 19:39
    kemot55
    Poziom 30  

    Tak, miałem na myśli funkcję 08 i pod-funkcje 0-21 . Ale to wymaga wygenerowania błędów przez urządzenia co z kolei może być dość skomplikowane.
    Może spróbuj poszukać informacji na temat komercyjnych monitorów sieci np. SINEC (pamiętam, że przy okazji instalacji procesora 5412A2 instalował się w systemie taki monitor). Co do funkcji monitora, które można w miarę łatwo implementować to sprawdzenie czy medium fizyczne działa poprawnie, lub czy któreś z urządzeń nie zwiera linii) Ale to wszystko za mało na pracę mgr.

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo