Elektroda.pl
Elektroda.pl
X

Search our partners

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

Komunikacja modbus TCP/IP S7 1500

26 Mar 2018 10:44 1005 5
  • Level 3  
    Witam
    Próbuje stworzyć połącznie modbus TCP/IP sterownika S7 1500 z innymi urządzeniami teraz są ta trzy sterowniki Schneider M340 docelowo będą to jednak falowniki(jest to próba komunikacji ).
    Problem / pytanie polega na tym iż używam jednego bloczka „MB_CLIENT” w którym w bloku danych „CONNECT” deklaruje wszystkie parametry konfiguracyjne polaczenia takie jak IP, które jest inne dla każdego urządzenia(falownika/sterownika) a wiec muszę je zmieniać. Uzależniłem tą zmianę od parametru „REQ” jest on ustawiony na stalą częstotliwość 1 H. Niestety zmiana tego parametru nie zadziała bez zerwania polaczenia a wiec wystawienia jedynki na „DISCONNECT” robię to z częstotliwości 0.5 Hz i w przypadku odczytu wszystko działa, podmieniam sobie również rejestry w których zapisywane są zmienne zależnie od obecnego Ip i bezproblemowo odczuje dane umieszczone w sterownikach. Problem pojawia się gdy chce rozpocząć zapis zmiennych do sterownika tj. zmieniam parametr „MB_MODE” na 1 i obecne rejestry wypełniają się zerami a gdy chce wpisać z tabeli „Watch and Force” nie ma możliwości nadpisania tych zer…
    Może być to spowodowane takim interwalem czasowym rozłączania i załączania połącznia MB ?
    Drugie pytanie może inaczej można rozwiązać ten problem ? Próbuję użyć kilku bloków „MB_CLIENT” działa tylko jeden na pozostałych błąd „ 80A3”. Sprawdziłem sytuacje na S7 1200 i również to samo 80A3.

  • Automation specialist
    Musisz wywoływać wszystkie bloki sekwencyjnie i czekać na sygnał zakończenia każdej czynności, tzn. aż MB_CLIENT zwróci DONE lub ERROR. Wywoływanie ze stałym interwałem nie jest dobrym pomysłem, bo zawsze może się zdarzyć jakiś timeout albo inne opóźnienie dla pakietów.
    Proponuję zrobić pełną komunikację z jednym klientem w bloku FB, dla której parametrem będzie struktura CONNECT, a potem wywołać te bloki komunikacyjne jednocześnie, z różnymi bazami Instance, dla wszystkich klientów.
    W S7-1200 można jednocześnie otworzyć 8 połączeń, dla 1500 chyba najmniej 96 (każde CPU ma inna ilość, którą sprawdzisz w danych technicznych).
    Błąd 80A3 przychodzi z funkcji TCON, której używa MB_CLIENT, i oznacza, że próbujesz użyć kilka razy tego samego ID połączenia bez zamykania (ID w strukturze TCON_IP_v4).
  • Level 3  
    Po wykonaniu programu w tak jak pisałeś jestem w stanie wywołać kilka "MB_CLIENT" przez wywołanie FB . Każdy blok ma swoją instancje do ustawień "Connect" z rożnymi ip i kolejną do danych i tu jest problem. W wszystkich blokach danych są dane z jednego sterownika po kilku próbach wywołań jest tak samo, dodam iż dane są wpisane z sterownika wywoływanego w funkcji jako pierwszy.

  • Automation specialist
    Załącz program albo jakieś obrazki z niego, to się coś może wypatrzy.
    Zerknij online czy na pewno wartości w strukturach Connect są prawidłowe, może bazy nie zostały zainicjowane?
  • Level 3  
    Dobra, wrzucę wszystko co mam.
    Modscan z sterowników:

    Komunikacja modbus TCP/IP S7 1500

    Funkcja MB w FB :

    Komunikacja modbus TCP/IP S7 1500

    Funkcja FC1 i FC 2 :
    Komunikacja modbus TCP/IP S7 1500

    Wywołanie w main :

    Komunikacja modbus TCP/IP S7 1500

  • Automation specialist
    Nie pokazałeś jaki jest typ, ani struktura MyDB, ale wydaje mi się, że parametr DANE powinien być typu Variant, a nie Int.