Dzień dobry,
Próbuje uruchomić aplikację z udziałem:
PLC V1040-T20B
Port Ethernet V200-19-ET2
i serwo falownik ABB MicroFlex e190
Działanie ma polegać na tym, że PLC wysyła informację do serwa na jaką pozycję ma dojechać silnik i czeka na informację zwrotną o osiągniętej pozycji.
Założenie było takie, że komunikacja będzie odbywała się wyłącznie przez Modbus TCP ale niestety okazało się to o wiele trudniejsze niż zakładałem. (Gdy ponownie wrócę do tematu opiszę problemy na forum).
Postanowiłem wykorzystać cyfrowe wejścia i wyjścia serwa.
Pozycja na której ma się znaleźć silnik wysyłana jest przez modbus.
Gdy dostanę potwierdzenie, że udało się wysłać dane do serw odnośnie pozycji wystawiam stan wysoki na wyjście PLC O53 z 0,5sek opóźnieniem
Serwo w swoim kodzie reaguje uruchomieniem procedury jazdy na pozycję
Czekam na sygnał zwrotny od serwa na wejściu I62 od serwa
Zboczem narastającym tego wejścia kończę procedurę uznając że serwo jest na pozycji
Mój problem polega na tym, że czasami wykonanie utyka w procedurze wysłania pozycji do serwa. Wystawiany jest stan wysoki na wyjście O53, ale pojawiający się stan wysoki na wejściu I62 jak by nie przerywał wykonania procedury
Komunikację z serwem zamknąłem w subrutynie, która jest wywoływana w różnych miejscach w kodzie, w sytuacji, gdy trzeba wysłać serwo za zadaną pozycję.
Główna część programu to sekwencje które mają wykonywać się automatycznie, jedna po drugiej. Aby zachować kolejność używam countera.
Po każdym wykonanym etapie dokonuję incrementu countera, a przed wykonaniem kolejnego sprawdzam, czy counter ma już wartość numeru etapu który ma się wykonać.
Załączam dwa screeny. Miejsce wywołania procedury odczytu z serwa oraz subrutynę odpowiedzialną za wysyłanie pozycji serwa .
Kodu nie mogę załączyć bo dostaje komunikat "rozszerzenie VLP jest zablokowane"
Bardzo proszę o wskazówki, w czym może leżeć problem i czego ewentualnie spróbować. Chciałbym też wiedzieć czy:
Sposób wykonywania kolejnych kroków za pomocą countera jest poprawny
Czy sposób w jaki dodałem opóźnienia pomiędzy wykonaniem się kolejnych etapów jest ok
W jaki sposób najlepiej sprawdzić, czy komunikacja z serwem została nawiązana i czy dane wysłane.
Z góry dziękuję za pomoc