Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
MetalWorkMetalWork
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Modbus TCP/IP - jak to jest z tym master/slave?

15 Sep 2011 10:31 11388 21
  • Level 11  
    Witam.

    Pytanie jak w temacie; Czy w przypadku Modbusa TCP/IP obowiązuje zasada master<>slave? Czy sterownik PLC może być jednocześnie masterem i slave? No i czy przy modbusie tcp/ip może być wiele masterów w sieci?
  • MetalWorkMetalWork
  • Level 9  
    bzyk69 wrote:
    No i czy przy modbusie tcp/ip może być wiele masterów w sieci?

    Zależy co przez to rozumiesz. Jeżeli chcesz wpiąć kilka niezależnych maszyn i zbierać z nich informacje to możesz zostawić w nich hierarchię np. panel - master, sterownik - slave i podłączyć je pod sterownik zbierający informację jak głównego mastera. Co do samego protokołu TCP/IP to nie robiłem w nim nic ale wydaje mi się, że skoro to jest Modbus to zasada Master<> Slave działa normalnie
  • Automation specialist
    bzyk69 wrote:
    Czy w przypadku Modbusa TCP/IP obowiązuje zasada master<>slave

    Ogólnie tak. Jedno urządzenie (master, klient) wysyła żądania, drugie (slave, serwer) je realizuje i odsyła odpowiedzi.

    bzyk69 wrote:
    Czy sterownik PLC może być jednocześnie masterem i slave?

    Zależy od implementacji. Niektóre tak, inne nie.

    bzyk69 wrote:
    No i czy przy modbusie tcp/ip może być wiele masterów w sieci?

    Tak.
  • Level 11  
    Mamy scadę która zbiera dane z kilkunastu PLC. Jest to autorskie rozwiązanie nieistniejącej już firmy Mintech (nawiasem mówiąc to straszna kupa). W uproszczeniu wygląda to tak, że master jest wirtualnym sterownikiem pracującym pod windowsem, zbiera sobie sygnały z tych kilkunastu PLC i wystawia je do systemu SCADA. Jeden ze sterowników poszedł do bozi, próbujemy postawić nowy, prawie się udało, ale nie do końca.
    Aha, to wszystko pracuje w oparciu o Modbus TCP/IP właśnie.
    No i wychodzi na to, że sterowniki zapisują również coś pomiędzy sobą (niezależnie od mastera odpytującego o sygnały dla scady). Tak przynajmniej wywnioskowałem za pomocą Modbus Polla i Wiresharka. Dużo by pisać, ale generalnie wychodzi mi na to że każdy z tych sterowników musiałby być i masterm i slavem. To są sterowniki firmy ICP DAS, mam bardzo złą opinię o nich (tak BTW).

    Dlatego więcy pytam o ten master/slave.
    Zastanawia mnie, na ile popularnym jest zastosowanie PLC z funkcją jednoczesnego master i slave? Niestety nie mam dużego doświadczenia z takimi rozwiązaniami, więc jeżeli piszę głupoty, to proszę o naprostowanie i wybaczenie :)
  • Automation specialist
    bzyk69 wrote:
    Zastanawia mnie, na ile popularnym jest zastosowanie PLC z funkcją jednoczesnego master i slave?


    Nie napiszę "wszystkie", ale większość PLC, które obsługują Modbus TCP, są w stanie pracować jednocześnie jako master i slave. Jaki sterownik użyłeś w zastępstwie?
  • Level 15  
    Ale w czym jest problem? Nie masz kontaktu z producentem oprogramowania? Zakładam, że źródeł programu nie masz, stąd analiza pakietów krążących po sieci itp. Jeśli kontaktu z producentem brak, to może najwyższy czas pomyśleć nad wymianą tego systemu sterowania i tym razem nie oszczędzać pieniędzy, tylko kupić program ze źródłami, żeby potem nie zastanawiać się, co zrobić gdy coś padnie?
  • MetalWorkMetalWork
  • Level 11  
    Myślimy nad zaoraniem tego wszystkiego, i postawieniem od zera. Tym razem normalnie (marzy mi się GE-fanuc :-). Ale to duża korpo i tutaj wszystko musi iść drogą przez mękę, czyli biurokrację. Mam nadzieję, że w tym roku już coś ruszy.
    A w międzyczasie trzeba robić tym co się ma.
    Producent oprogramowania już nie istnieje. Oczywiście że źródeł programu nie ma :)
    Co do wydawania kasy, to ja jestem od fizycznej roboty i mam mały wpływ na to. Mój szef też :) Dopiero szef, szefa, szefa coś może powiedzieć - tak to jest w dużych państwowych firmach. Mniejsza z tym.

    Dzisiaj wreszcie udało mi się przeanalizować ruch i wychodzi jednak na to, że każdy z tych sterowników jest również masterem. Piszą między sobą funkcją 6 z modbusa.
    Wireshark rulez! Wcześniej tego nie widziałem, bo robiłem "czeski" błąd (włączony firewall w windowsie).
  • Level 14  
    Witam

    A takie banalne pytanie? Jak z adresacją IP? Czy sterowniki maja po jednym numerze IP, czy maja nadane np. dwa? Bo tak też można rozwiązać problem niejako dwóch masterów na sieci.
    Ponadto jaka długa jest ta wiadomość wymieniana pomiedzy PLC (odrzuciwszy oczywiście ramkę TCP) ile ona zawiera i jakie mniej wiecej wartości są przesyłane takie same czy różne?
  • Level 11  
    1. 192.168.0.0/16. Sterowniki mają po jednym IP.
    2. Nie rozbieraliśmy jeszcze pakietu, na razie wystarczy nam, że wiemy iż sterownik pisze funkcją 6 (write single register). No i Modbus Poll mówi, że zapisywany jest faktycznie dany jeden rejestr w innym PLC.
  • Level 14  
    Bo może to być zrobione na zasadzie Profibusa DP, że w danej chwili może nadawać (względnie odpytywać, pełnić funkcję mastera) tylko ten sterownik, który ma tokena (to może być właśnie ten jeden rejestr. Przekazują sobie nawzajem prawo głosu w sieci.
    Dlatego pytałem czy to jest stała liczba np.1 czy się zmienia, a jak się zmienia to w jaki sposób. Ale raczej to bedzie token o stałej wartości (ja bym to tak zrobił prosto i szybko).
  • Automation specialist
    niemy wrote:
    Czy sterowniki maja po jednym numerze IP, czy maja nadane np. dwa? Bo tak też można rozwiązać problem niejako dwóch masterów na sieci.


    Czy przeglądałeś kiedyś wiele stron www jednocześnie na swoim komputerze? Ile masz adresów IP?

    niemy wrote:
    Bo może to być zrobione na zasadzie Profibusa DP, że w danej chwili może nadawać (względnie odpytywać, pełnić funkcję mastera) tylko ten sterownik, który ma tokena (to może być właśnie ten jeden rejestr. Przekazują sobie nawzajem prawo głosu w sieci.


    Kolego, Twoje zgadywanie jest absolutnie błędne. Modbus TCP to nie Profibus DP.

    @bzyk69: ale w czym problem? Sprawdziłeś, że Twój sterownik może pracować jako master i slave jednocześnie - bo inne w sieci tak pracują.

    Program w każdym urządzeniu PLC niezależnie odpytuje inne PLC o dane które są mu potrzebne. Zdalne PLC odpowiada. SCADA odpytuje po kolei sterowniki o dane - sterowniki odpowiadają.
  • Level 15  
    jestam wrote:
    Kolego, Twoje zgadywanie jest absolutnie błędne. Modbus TCP to nie Profibus DP.

    Dokładnie. To nie interfejs szeregowy, gdzie można albo nadawać, albo odbierać dane. Przy TCP/IP można nawiązywać wiele równoległych połączeń.
  • Level 14  
    No dobrze, że każdy PLC i SCADA pyta każdego o co chce w sieci, tylko po jakim protokole? Bo generalnie w Modbusie nie może być dwóch zapytań na sieci (Masterów) w jednym czasie i nie ma znaczenia czy to RTU czy TCP. Siec bedzie działać, ale beda powtórzenia zapytań.
    Podgladałem kiedyś ruch na sieci gdzie znajdowały sie dwa mastery i były powtórzenia, taka sytuacja jest nienajlepsza.

    Pytanie do bzyk69 jesteś pewien, że to modbus i drugie pytanie, czy te PLC pytają sie w jednym czasie ?
  • Helpful post
    Automation specialist
    niemy wrote:
    Bo generalnie w Modbusie nie może być dwóch zapytań na sieci (Masterów) w jednym czasie i nie ma znaczenia czy to RTU czy TCP.


    Zdanie powyżej nie jest prawdziwe. Nie może być dwóch masterów na magistrali szeregowej - Modbus RTU/ASCII.

    Protokół Modbus TCP pozwala na pracę wielu Masterów z jednym Slave jednocześnie.
    Jest tylko jedno ograniczenie: możliwości samego Slave. To są urządzenia o niezbyt dużych zasobach, i nie są w stanie utrzymywać bardzo wielu aktywnych połączeń TCP jednocześnie.

    niemy wrote:
    Podgladałem kiedyś ruch na sieci gdzie znajdowały sie dwa mastery i były powtórzenia, taka sytuacja jest nienajlepsza.

    Jeśli to był Modbus TCP (nie piszesz) to niezbyt częste powtórzenia pakietów w sieci TCP/IP są zupełnie normalną sytuacją. Jeśli retransmisje są częste, szukaj problemu sprzętowego - kabel, wtyczka, karta sieciowa, switch/hub itd.

    Do poczytania: Modbus TCP i zakończmy tą niepotrzebną dyskusję.
  • Level 11  
    jestam wrote:


    Czy przeglądałeś kiedyś wiele stron www jednocześnie na swoim komputerze? Ile masz adresów IP?

    Zapewniam Cię, że w prawie każdym systemie można sobie ustawić więcej adresów IP. W niektórych maszynach/rozwiązaniach jest to wręcz standard. Ale mniejsza o to. Sterowniki o których piszę mają jeden adres IP.
    jestam wrote:
    .

    @bzyk69: ale w czym problem? Sprawdziłeś, że Twój sterownik może pracować jako master i slave jednocześnie - bo inne w sieci tak pracują.


    Cały pic w tym, aby się o tym na 100% przekonać.
    System w którym wstawiamy sterownik, jest systemem produkcyjnym - nie możemy pozwolić sobie na eksperymenty które wyłożyłyby produkcję. Dlatego macamy ostrożnie :) To o czym wiem dotychczas, to fakt że w systemie pracuje master który dość intensywnie odpytuje sterowniki i zbiera dane potrzebne dla SCADy. Jeżeli uruchomić 3 takie mastery - te mastery to programy pracujące pod windowsem, binarki zrobione przez firmę stawiającą kiedyś SCADe - to system zaczyna się wykładać. One (mastery) w jakiś sposób kolidują między sobą.
    jestam wrote:

    Program w każdym urządzeniu PLC niezależnie odpytuje inne PLC o dane które są mu potrzebne. Zdalne PLC odpowiada. SCADA odpytuje po kolei sterowniki o dane - sterowniki odpowiadają.


    Tutaj to tak nie działa.
    Jest kilkanaście PLC (slave). Master - soft pracujący pod windowsem - odpytuje je (funkcja 3 z modbusa) i składa dane do bazy SQL. SCADA gada sobie z bazą SQL i wyciąga dane z konkretnej tabelki, wkładając to na planszę.
    Bardzo syfiaste rozwiązanie (moim zdaniem), bo czasem zmiana sygnału może być widoczna dopiero po parunastu sekundach (bo master gada ze slavem, wrzuca do bazy, potem scada czyta tabele z bazy i troche to trwa).

    Dodano po 5 [minuty]:

    niemy wrote:

    Pytanie do bzyk69 jesteś pewien, że to modbus i drugie pytanie, czy te PLC pytają sie w jednym czasie ?


    Na 100%. Sterownik który restaurujemy już na 90% działa. To są tylko sygnaly z DI sterownika, zbierane przez mastera (sterownik jest slavem). Ale wychodzi nam, żę kilka sygnałów z DI ląduje w rejestrach innego sterownika. Tak to wygląda w innych sterownikach (przypominam, że jest ich kilkanaście). I na przykład zmiana wejścia w sterowniku "A" powoduje zmianę jednego z rejestrów w sterowniku "B" - z tym mamy problem i to próbujemy rozgryźć.

    Dodano po 3 [minuty]:

    jestam wrote:

    Protokół Modbus TCP pozwala na pracę wielu Masterów z jednym Slave jednocześnie.
    Jest tylko jedno ograniczenie: możliwości samego Slave. To są urządzenia o niezbyt dużych zasobach, i nie są w stanie utrzymywać bardzo wielu aktywnych połączeń TCP jednocześnie.


    O toto! To bardzo cenna dla mnie informacja! Dzięki wielkie! Z naszej analizy pakietów wygląda, że tak właśnie u nas jest.

    jestam wrote:

    Do poczytania: Modbus TCP i zakończmy tą niepotrzebną dyskusję.


    Ja czytałem, ale to taka kobyła (w sensie że opisuje wszystko), że ciężko tam znaleźć tą jedną konkretną informację.

    Jeszcze raz dzięki za pomoc :)
  • Automation specialist
    bzyk69 wrote:
    Zapewniam Cię, że w prawie każdym systemie można sobie ustawić więcej adresów IP.

    Nie o to chodzi. Wystarczy 1 IP żeby realizować wiele wpółbieżnych połączeń.
    bzyk69 wrote:
    Ja czytałem, ale to taka kobyła (w sensie że opisuje wszystko), że ciężko tam znaleźć tą jedną konkretną informację

    Ok, to był lekki oftop adresowany do kol. niemy. :)

    Ad rem.
    bzyk69 wrote:
    Ale wychodzi nam, żę kilka sygnałów z DI ląduje w rejestrach innego sterownika.

    Jeśli jesteś w stanie podejrzeć ruch między sterownikami Wiresharkiem, to będziesz wiedział co jest skąd i dokąd przesyłane.

    Zasadnicze pytanie:

    bzyk69 wrote:
    w systemie pracuje master który dość intensywnie odpytuje sterowniki i zbiera dane potrzebne dla SCADy. Jeżeli uruchomić 3 takie mastery - te mastery to programy pracujące pod windowsem, binarki zrobione przez firmę stawiającą kiedyś SCADe - to system zaczyna się wykładać. One (mastery) w jakiś sposób kolidują między sobą.

    Po co 3 mastery? Czy one pracują na jednym PC i każdy odpytuje inną grupę sterowników, czy one pracują na różnych komputerach i każdy pyta o wszystko?
  • Level 11  
    ]
    bzyk69 wrote:

    Po co 3 mastery? Czy one pracują na jednym PC i każdy odpytuje inną grupę sterowników, czy one pracują na różnych komputerach i każdy pyta o wszystko?


    Ad. wiresharka - doskonale wiem. Tyle że nie chce mi się rozbierać pakietu na kawałki żeby wyciągać wartości danych rejestrów. Na razie wystarczy wiedza, że sterowniki piszą pomiędzy sobą. Wartości rejestrów znam, więc wstawi się kawałek softu od nowa.

    3 mastery.
    Pracują dwa. Są dwie SCADy pracujące niezależnie od siebie. W razie padu jednego zestawu (master składający dane w bazie Mysql), pracuje druga SCADA która siedzi na odrębnym pececie. Chodzi o to, żeby operator w razie awarii miał natychmiastowy dostęp do zapasowej scady.

    Z tego co zaobserwowałem, to maksymalnie 3 mastery (wyprodukowane przez producenta kawałki softu) mogą pracować bez zakłóceń. Powyżej 3 sztuk zaczynają sie w systemie przekłamania na poziomie składania danych do bazy sql. No i mastery zgłaszają jakieś błędy w komunikacji ze slave'ami. Oczywiście żadnej dokumentacji, widać tylko czerwone errory w oknie programu (tak naprawdę nic nie mówiące).
    Problem jest taki, że tak naprawdę to nie wiemy co jeszcze - oprócz składania modbusowych wyników do tabeli sql - te binarki robią. To jest zamknięte rozwiązanie bez żadnego wsparcia producenta który już nie istnieje :) W dodatku system jest w ciągłym działaniu.. i nie można zbyt się w nim babrać żeby nie zepsuć czegoś.

    Mastery odpytują wszystkie sterowniki jak leci (znaczy, biorą sobie IP:port sterowników które mają odpytywać z bazy sql).
  • Automation specialist
    Dwa niezależne mastery piszące do dwóch niezależnych baz danych - rozumiem, redundancja.

    Po co trzeci i następne? Jeśli chcesz dodać kolejne stacje operatorskie, to wykorzystaj te dwie bazy i czytaj dane z nich.

    bzyk69 wrote:
    bo czasem zmiana sygnału może być widoczna dopiero po parunastu sekundach (bo master gada ze slavem, wrzuca do bazy, potem scada czyta tabele z bazy i troche to trwa).

    To nie powinno trwać aż tak długo. Szczególnie, gdy master, mysql i SCADA są na tym samym komputerze (bez komunikacji w sieci). Chyba że coś jest mocno spaprane w tym sofcie. Skoro producent się nie utrzymał na rynku, to coś w tym jest :(
  • Level 11  
    jestam wrote:
    Dwa niezależne mastery piszące do dwóch niezależnych baz danych - rozumiem, redundancja.

    Po co trzeci i następne? Jeśli chcesz dodać kolejne stacje operatorskie, to wykorzystaj te dwie bazy i czytaj dane z nich.


    Pracują dwa. Kiedyś były trzy - poprzedni opiekunowie (już nie producent) trochę za bardzo dmuchali na zimne, no i nie mieli chyba pełnego obrazu sytuacji.
    W chwili obecnej pracują dwa, jest pełna redundancja, mamy procedury w razie gdyby z jakiegoś powodu padły obydwie maszyny - jesteśmy w stanie postawić to od nowa na całkiem innych maszynach, w parę godzin.

    jestam wrote:

    To nie powinno trwać aż tak długo. Szczególnie, gdy master, mysql i SCADA są na tym samym komputerze (bez komunikacji w sieci). Chyba że coś jest mocno spaprane w tym sofcie. Skoro producent się nie utrzymał na rynku, to coś w tym jest :(

    Jest spaprane, i to mocno. Głównie na poziomie zapytań sql.
    Miałem okazję poprawiać inny soft tego samego producenta, sprzedany przy tej samej okazji (ale to nie SCADA). Coś w stylu klient-serwer opartego o bazę Mysql.
    Tak źle zaprojektowanego softu dawno nie widziałem :D Zapytania sql pisane chyba po pijaku.. zero pomysłu. Po roku baza się rozrosła, i banalne zapytania zajmowały po paredziesiąt sekund. Trochę to podkręciłem szlifując sam konfig serwera i odpowiednio przebudowując bazę, ale do dzisiaj mi się to czkawką odbija :)

    Anyway, jeszcze raz dzięki za pomoc!
  • Level 15  
    bzyk69 wrote:

    Z tego co zaobserwowałem, to maksymalnie 3 mastery (wyprodukowane przez producenta kawałki softu) mogą pracować bez zakłóceń. Powyżej 3 sztuk zaczynają sie w systemie przekłamania na poziomie składania danych do bazy sql. No i mastery zgłaszają jakieś błędy w komunikacji ze slave'ami. Oczywiście żadnej dokumentacji, widać tylko czerwone errory w oknie programu (tak naprawdę nic nie mówiące).

    Sprawdź jakie możliwości utrzymywania połączeń TCP oferują sterowniki. Być może po prostu limit jest przekraczany i część masterów nie jest w stanie dobić się do określonego sterownika. Druga sprawa to częstotliwość zapytań - być może sterowniki nie są w stanie sobie poradzić z za dużą ich liczbą i część jest zwyczajnie ignorowana.
    Soft wysyła zapytanie i czeka na odpowiedź. Jeśli zwiększasz liczbę klientów odpytujących sterowniki, to czas otrzymywania odpowiedzi się wydłuża. Jeśli soft jest zamknięty i nie konfigurowalny, to zapewne czas, po którym generowane są błędy braku odpowiedzi, jest ustawiony na sztywno i nic na to nie poradzisz.

    Dodano po 19 [minuty]:

    bzyk69 wrote:
    3 mastery.
    Pracują dwa. Są dwie SCADy pracujące niezależnie od siebie. W razie padu jednego zestawu (master składający dane w bazie Mysql), pracuje druga SCADA która siedzi na odrębnym pececie. Chodzi o to, żeby operator w razie awarii miał natychmiastowy dostęp do zapasowej scady.

    Dodam jeszcze, że tego się tak nie robi. Ze względu na ograniczenia sterowników, powinno się stosować jednego mastera komunikującego się ze sterownikiem, a inne najwyżej oczekujące na jego awarię i gotowe do przejęcia komunikacji. Oczywiście kłania się tu kwestia diagnostyki połączeń i autodiagnostyki masterów, co nie jest sprawą trywialną i zapewne dla wielu, łatwiej jest zrobić po prostu szereg równoległych połączeń.
  • Automation specialist
    macbe wrote:
    Dodam jeszcze, że tego się tak nie robi. Ze względu na ograniczenia sterowników, powinno się stosować jednego mastera komunikującego się ze sterownikiem, a inne najwyżej oczekujące na jego awarię i gotowe do przejęcia komunikacji. Oczywiście kłania się tu kwestia diagnostyki połączeń i autodiagnostyki masterów, co nie jest sprawą trywialną i zapewne dla wielu, łatwiej jest zrobić po prostu szereg równoległych połączeń.

    W sumie to też zależy. Jeśli zasobów PLC starczy - a na 1 dodatkowe połączenie zwykle starcza :) to tak jest znacznie mniej pracy - więc taniej. Problem się pojawia, gdy jest dużo transmisji PLC-PLC, jakieś panele (zwykle to też mastery bo prościej) i chcemy coś dołożyć.