Komunikacja EtherCAT – konfiguracja i przykładowa aplikacja w środowisku Codesys, część 1
Kurs obsługi i konfiguracji serwonapędów Astraada SRV odc. 3
Kontakt w sprawie artykułu: Rafał Pilch - 2023-09-08
Z tego artykułu dowiesz się:
- jak przygotować serwonapęd Astraada SRV do komunikacji w protokole EtherCAT,
- jak skonfigurować komunikację EtherCAT w środowisku Codesys,
- jak skonfigurować pracę w trybie sterowania pozycją oraz w trybie sterowania prędkością.
Zapraszamy do kolejnego odcinka naszego kursu, w którym omówimy pracę w trybie sterowania prędkością oraz pozycją w środowisku Codesys na podstawie prostej aplikacji realizującej wymienione tryby działania urządzenia. Do komunikacji z serwonapędem wykorzystamy protokół EtherCAT.
Kurs obsługi i konfiguracji serwonapędów Astraada SRV
1. Z czego składa się zestaw serwonapędowy?2. Pierwsze podłączenie serwonapędu i przygotowanie do pracy.
3a. Sterowanie serwonapędem w EtherCAT – komunikacja i konfiguracja, część 1.
3b. Sterowanie serwonapędem w EtherCAT – komunikacja i konfiguracja, część 2.
4a. Sterowanie serwonapędem w Modbus RTU – komunikacja i konfiguracja, część 1
4b. Sterowanie serwonapędem w Modbus RTU – komunikacja i konfiguracja, część 2
5. Sterowanie Pulse Direction – jak sterować serwonapędem poprzez impulsy?
6. Czym jest oraz jakie możliwości daje tryb JOG?
7. Jak działa funkcja STO w serwonapędzie oraz jak podłączyć E-STOP?
Przypominamy, że ten kurs przeznaczony jest on dla osób posiadających podstawową wiedzę z zakresu funkcjonalności środowiska Codesys. Jeśli potrzebujesz zapoznać się z oprogramowaniem, skorzystaj z kursu programowania w Codesys, który pozwoli Ci opanować niezbędne zagadnienia. W całym kursie będziemy bazować na wersji Codesys V3.5 SP15 Patch4.
Odcinek został poświęcony sposobowi działania serwonapędu Astraada SRV w wersji EtherCAT bez dodatkowych licencji. Na samym początku przedstawię Ci rozwiązanie, które pozwoli Ci skonfigurować i skomunikować oprogramowanie Codesys z serwonapędem Astraada SRV poprzez sieć EtherCAT. Następnie poznasz tajniki parametrów umożliwiających pracę w wybranym trybie sterowania. Taki zasób wiedzy pozwoli Ci zrozumieć ideę tworzenia aplikacji.
Dzięki komunikacji EtherCAT informacje przekazywane są do wielu urządzeń jednocześnie. Dane przesyłane są za pomocą kart sieciowych oraz okablowania, a sam protokół bazuje na architekturze master – slave. Masterem nazywamy urządzenie nadrzędne – odpowiedzialne za wysyłanie komunikatów, natomiast slave to jednostka podrzędna – odbierająca informacje nadawane przez master.
Poczytaj więcej o serwonapędach Astraada.
Przygotowanie serwonapędu Astraada SRV do komunikacji w protokole EtherCAT
Przed przystąpieniem do konfigurowania serwonapędu zaleca się przywrócenie jego ustawień fabrycznych. Jest to realizowane poprzez wpisanie wartości 1 do rejestru P4.92 i ponowne załączenie zasilania.
Serwonapęd Astraada SRV domyślnie nie jest skonfigurowany do komunikacji za pośrednictwem sieci EtherCAT. Należy więc uaktywnić w nim opcję komunikacji w tym protokole. W tym celu:
1. Ustaw tryb pracy serwonapędu na sterowanie za pomocą sieci EtherCAT. W tym celu do parametru P0.03 wpisz wartość 8. Po zmianie tego parametru wyłącz i załącz zasilanie wzmacniacza.
2. Ustaw typ synchronizacji za pomocą sieci EtherCAT w parametrze P4.08 na
- 0 (Free-Run, tj. praca bez synchronizacji)
- lub 1 (DC Sync0, czyli praca z synchronizacją lokalnych zegarów poszczególnych urządzeń podrzędnych)
3. Skonfiguruj okres synchronizacji EtherCAT, tj. czas wymiany danych z użyciem tej sieci. W tym celu wpisz odpowiednią wartość do parametru P4.07:
- Wartość 0 oznacza 250 µs,
- Wartość 1 oznacza 500 µs,
- Wartość 2 oznacza 1 ms,
- Wartość 3 oznacza 2 ms.
4. W parametrze P4.09 ustaw czas Fault Detection Time, tzn. czas timeout, dla komunikacji EtherCAT (np. wpisz 100 ms). Posłuży on do wykrywania faktu utraty komunikacji na tej sieci.
Upewnij się, że w parametrze P0.00 został skonfigurowany taki model silnika, jaki rzeczywiście dołączony jest do serwowamacniacza. Numer modelu silnika jest nadrukowany na silniku. Po zmianie modelu silnika należy wyłączyć i włączyć zasilanie wzmacniacza.
UWAGA! Sterownik Astraada ONE musi być połączony ze wzmacniaczem serwonapędu Astraada SRV przy użyciu pierwszego (tj. górnego) portu EtherCAT w tym wzmacniaczu – gniazdo CN3.
Konfigurowanie komunikacji EtherCAT w oprogramowaniu Codesys
Pierwszym krokiem, od którego powinniśmy zacząć, jest stworzenie nowego projektu w środowisku Codesys. Następnie dodaj do niego swój sterownik i wybierz język Ladder Logic Diagram (LD). Język drabinkowy nie jest wyborem obligatoryjnym, w późniejszym etapie pisania aplikacji możesz go zmienić. Co więcej, Twoja aplikacja może zostać napisana w kilku językach jednocześnie.
Pamiętaj o dodaniu pliku deskrypcyjnego do obsługi serwonapędów Astraada SRV w celu poprawnego skonfigurowania połączenia. Jeżeli jeszcze nie konfigurowałeś serwonapędów Astraada SRV w oprogramowaniu Codesys wybierz polecenie Tool -> Device Repository i wskaż lokalizację pobranego pliku (np. Astraada_SRV_CoE_V106.xml). W razie napotkania problemów skorzystaj z kursu, który pomoże Ci podłączyć i przygotować Codesys do pracy ze sterownikiem PLC.
Następnie w celu uaktywnienia w sterowniku Astraada One obsługi protokołu EtherCAT kliknij prawym przyciskiem myszy w drzewku projektu na Device i zaznacz polecenie Add Device.
W następnej kolejności w polu Vendor wybierz <All vendors> i rozwiń listę, która pozwoli Ci przejść do EtherCAT Master. Zatwierdź wybór poprzez dwukrotne kliknięcie lewym przyciskiem myszy lub dzięki przyciskowi Add Device.
Podobnie jak w punkcie 2 kliknij opcję Add Device, jednak po wcześniejszym wybraniu EtherCAT_Master. Po chwili ujrzysz okno, w którym możemy wybrać nasze urządzenie podrzędne jakim jest serwonapęd serii Astraada SRV-63. Dodaj je do projektu.
W kolejnym kroku musimy zdefiniować port w sterowniku, który odpowiada za pracę
w roli urządzenia nadrzędnego – master sieci EtherCAT. Można wybrać go za pomocą adresu MAC portu lub nazwy karty sieciowej. Dokonanie wyboru poprzez nazwę karty sieciowej jest powszechnym i mniej problematycznym sposobem. W tym ćwiczeniu używamy sterownika, gdzie port eth1 możemy zdefiniować jako master w sieci EtherCAT, więc wybierając przycisk Browse…. W oknie Select Network Adapter w kolumnie Name zaznaczamy eth1.
Jak możesz zauważyć w polu Source Address (MAC) został dodany adres MAC wybranego przez nas portu komunikacyjnego sterownika Astraada One. Z kolei gdy zaznaczymy opcję Auto restart slaves, sterownik samoczynnie zacznie ponawiać próby komunikacji z serwonapędem w przypadku niepożądanych sytuacji takich jak np. rozłączenie na moment kabla komunikacyjnego EtherCAT.
Przechodzimy następnie do konfiguracji wcześniej dodanego urządzenia podrzędnego. Wybieramy więc Astraada_SRV_63 z drzewka projektu i w rubryce Additional zakładki General zaznaczamy opcję Enable Expert Settings.
Znajdując się w miejscu do konfiguracji naszego urządzenia podrzędnego przechodzimy do zakładki EtherCAT I/O Mapping i zaznaczamy opcję służącą do śledzenia zmiennych nieużywanych w programie. Dzięki niej przeprowadzamy testy serwonapędu, zanim zostanie napisany program sterujący z ich użyciem. W prawym dolnym rogu wybieramy, więc opcję Enable 2.
Świetnie, w tym momencie jesteśmy gotowi sprawdzić status komunikacji EtherCAT. Poprawna komunikacja z serwonapędem za pośrednictwem sieci EtherCAT będzie sygnalizowana następującymi ikonkami:
W przypadku niepowodzenia i wyświetlenia pomarańczowego trójkąta oznaczającego brak komunikacji, zweryfikuj poprawność konfiguracji serwowzmacniacza w protokole EtherCAT.
Dodawanie parametrów sterujących
Wchodząc poprzez drzewko programu w Astraada_ARV_63, a następnie w zakładkę EtherCAT I/O Mapping mamy dostęp do parametrów dostarczonych przez bibliotekę serwonapędu. Musimy mieć na uwadze, iż ilość danych wymienianych z serwonapędem jest ograniczona i pozwala na dodanie jedynie jednego parametru wyjściowego służącego do zapisu. Dlatego pamiętaj, aby rozważyć współczynniki, które będą niezbędne do użycia w danej aplikacji i ewentualnie usunąć zbędne z listy.
Podstawowa lista parametrów wygląda w następujący sposób:
Może się okazać jednak, że na wyświetlanej liście nie ma wszystkich elementów. Z reguły dodaje się ograniczenie momentu siły (Max Torque), a usuwa zatrzaskiwanie pozycji (Touch Probe Function). W tym przypadku pokażę Ci jakie działania przeprowadzić, aby dodać interesujące nas zmienne, które będą wymieniane między sterownikiem a serwonapędem.
W celu dodania parametru do listy, należy wykonać następujące operacje:
1) Wyłączamy tryb komunikacji ze sterownikiem Astraada One w środowisku Codesys za pomocą przycisku Logout:
2) Wchodzimy w ustawienia urządzenia podrzędnego, a dokładniej w zakładkę Expert Process Data. W oknie PDO List (Process Data Objects) należy wybrać lewym przyciskiem myszy indeks 16#1600 (DO Outputs). Dzięki temu mamy możliwość dodania nowej zmiennej w polu PDO Content. Z kolei w tym polu klikając lewym przyciskiem myszy w ikonę Insert, spowodujemy otwarcie nowego okna, gdzie można dodać nową zmienną. Istotnym faktem jest to, że do serwowzmacniaczy możemy dodać maksymalnie 10 parametrów.
3) W nowym oknie wpisujemy nazwę nowej zmiennej, jej adres w formacie szesnastkowym oraz wybieramy typ. Za przykład posłuży inkrementacja ograniczenia momentu obrotowego dla serwonapędu. W przypadku nowszej serii SRV-64 zadanie to jest ułatwione, ponieważ lista jest automatycznie wypełniona.
4) Jeśli chciałbyś odnaleźć adresy zmiennych, pozostań w oknie Astraada_SRV_63.W zakładce Startup Parameters, klikając przycisk „Add”, możesz podejrzeć adresy i typy zmiennych przekazywane za pośrednictwem sieci EtherCAT do serwonapęduAstraada SRV.
Jak sprawdzić status urządzenia i jak wysyłać polecenia sterujące do serwonapędu?
Status urządzenia możemy podglądać w parametrze Status Word (0x6041). Natomiast w celu wymuszenia działania na stan maszyny sterującej, wykorzystujemy przede wszystkim zadane przez nas polecenia w rejestrze kontrolnym Control Word (0x6040).
Opis słowa statusowego (STATUS WORD, 0x6041)
Znaczenie poszczególnych bitów jest następujące:
Użycie opisanych bitów może być następujące:
- O: użycie opcjonalne,
- M: bit musi być użyty.
Opis słowa kontrolnego (CONTROL WORD, 0X6040)
Znaczenie bitów w słowie kontrolnym jest następujące:
Użycie opisanych bitów może być następujące:
- O: użycie opcjonalne,
- M: bit musi być użyty.
W opisie słowa kontrolnego musimy skupić się głównie na 5 pierwszych bitach zapisanych
w rejestrze, z czego 4 muszą być zawsze używane. Poniżej przedstawiam Ci legendę, dzięki której zrozumiesz znaczenie przypisywanych bitów. Zwróć uwagę na pogrubioną czcionkę.
Bit | Pełniona funkcja |
Switch On | Załączenie serwonapędu |
Enable Voltage | Załączenie obwodu zasilania dla serwonapędu |
Quick Stop | Szybkie zatrzymanie (hamowanie dynamiczne) |
Enable Operation | Zezwolenie na pracę serwonapędu |
Operation Mode Specific | Bity poleceń zależne od skonfigurowanego trybu pracy (zobacz opis w dalszej części). Tryb pracy definiuje się w rejestrze Mode of Operation (0x6060); wartości do wpisania do tego rejestru podane są w punktach opisujących poszczególne tryby pracy. |
Fault Reset | Kasowanie błędu |
Halt | Polecenie zatrzymania z hamowaniem dynamicznym |
Praca w trybie sterowania pozycją
Ten rodzaj sterowania pozwala osiągnąć zadaną pozycję na podstawie przypisanej prędkości ruchu, przyspieszenia oraz zdefiniowanego momentu siły. Przedstawię Ci krok po kroku, jakie działania musisz przeprowadzić, aby popranie sterować pracą w trybie pozycji.
Swoją uwagę skupimy głównie na następujących rejestrach, którym przypisałem nazwy w celu łatwiejszej identyfikacji:
Połącz się ze sterownikiem i przejdź do zakładki EtherCAT I/O Mapping w Astraada_SRV_63. Wartości wpisujemy w kolumnę Prepared Value, a chcąc je wpisać do sterownika, należy nacisnąć przyciski Ctrl + F7. Chcąc wykonać force naciśnij przycisk F7.
Następnie ustawiamy tryb pracy, czyli parametr Mode of Operation (0x6060), na wartość1 – odpowiadającą trybowi sterowania pozycją.
W kolejnym kroku zadajemy prędkość ruchu w parametrze Profile Velocity (0x6081). Wartości prędkości powinny zawierać się w zakresie od 0 do 3000 rpm [obroty/minutę].
Następnie zdefiniuj przyspieszenie dla ruchu w parametrze Profile Acceleration (0x6083). Wartość tę wpisz jako czas w milisekundach, w którym zostanie zrealizowane przyspieszenie od spoczynku do prędkości znamionowej serwonapędu (rated speed).
Ustaw ograniczenie momentu siły dla serwonapędu Max Torque (0x6072), np. wartość 100 (przykładowo, wartość ok. 40 jest wartością progową dla pokonania oporów w samym silniku). Ta wartość podawana jest w dziesiątych częściach procenta, a więc wartości 1000 będzie odpowiadać 100% znamionowego momentu siły silnika.
Zadaj pozycję dla ruchu w parametrze Target Position (0x607A). Jednostki to: user unit. Przykładowo, wpisując wartości 100 000 spowodujesz wykonanie 10 pełnych obrotów (w przypadku użycia silnika z wbudowanym enkoderem 2500 działek/obrót, tj. 10 000 impulsów/obrót).
Ostatnim krokiem będzie przejście do słowa kontrolnego Control Word (0x6040). Rozwiń je
i w celu załączenia serwonapędu załącz cztery najmniej znaczące bity tego słowa. Należy je zmienić na wartość TRUE, ponieważ przed załączeniem ruchu serwonapęd musi być w stanie gotowości.
Zalecana kolejność załączania bitów to:
- Enable Voltage
- Quick Stop
- Switch On
- Enable Operation
Teraz możesz wydać polecenie ruchu, a więc, załączyć dodatkowo bity 4, 5, 6 (co jest równe wartości 127 dziesiętnie). Odpowiada to załączeniu trzech kolejnych bitów: New set-point, Change set immediately, Absolute/Relative. Po załączeniu bitów kontrolnych oś serwonapędu jest sterowana zadaną wartością prędkości i momentu siły.
Zatrzymanie ruchu może odbyć się przez wyzerowanie zezwoleń na ruch w słowie kontrolnym Control Word (0x6040) albo przez załączenie ósmego bitu w tym słowie, tj. bitu Halt.
Tak powinna wyglądać nasza lista parametrów z przykładowymi wartościami podczas włączenia trybu RUN, gdy rzeczywiście nasz serwonapęd działa i możemy zaobserwować obrót serwosilnika.
Jeżeli serwonapęd zgłosił błąd (np. na skutek niewłaściwie zadanych parametrów ruchu – przykładowo błąd o kodzie Er22-0 w przypadku nieutrzymania pozycji na skutek zadania zbyt małego momentu siły), można go skasować zmieniając stan bitu kontrolnego Fault Reset z 0 na 1 w słowie kontrolnym, tj. bit 7 w Control Word (0x6040).
Praca w trybie sterowania prędkością
Teraz zobaczysz, w jaki sposób serwonapęd realizuje ruch z zadaną prędkością. Zmiany prędkości realizowane są zgodnie z zadanym przyspieszeniem.
Pierwszy krok jest analogiczny, jak w poprzednim trybie pracy. Zacznij od połączenia się ze sterownikiem.
Następnie ustawiamy tryb pracy – parametr Mode of Operation (0x6060) na wartość3 – odpowiadającą trybowi sterowania prędkością.
Teraz zdefiniuj przyspieszenie dla ruchu w parametrze Profile Acceleration (0x6083). Wartość tę wpisz jako czas w milisekundach, w którym zostanie zrealizowane przyspieszenie od spoczynku do prędkości znamionowej serwonapędu (rated speed).
Następnie w parametrze Profile Deceleration (0x6084) zadaj przyspieszenie dla hamowania. Wartość zadawana jest w milisekundach, jako czas hamowania od prędkości znamionowej serwonapędu do zatrzymania. Jeśli nie posiadasz tego parametru, dodaj go w następującym formacie: Data type: UDINT, Bit length: 32.
Przejdź do słowa kontrolnego Control Word (0x6040). Rozwiń je i w celu załączenia serwonapędu załącz cztery najmniej znaczące bity tego słowa. Należy je zmienić na wartość TRUE, ponieważ przed załączeniem ruchu serwonapęd musi być w stanie gotowości. Zalecana kolejność załączania bitów to:
- Enable Voltage
- Quick Stop
- Switch On
- Enable Operation
Następnie musimy zadać prędkość ruchu w parametrze Target Velocity (0x60FF), w przeciwieństwie do trybu pozycjonowania nie jest to zmienna Profile Velocity (0x6081). Prędkość zadawana jest w obrotach na minutę. W odróżnieniu od procedury sterowania pozycją, w metodzie regulacji prędkości zmiana wartości zadanej prędkości spowoduje natychmiastową reakcję silnika serwonapędu.
Zmiana na ruchu parametrów, np. zadanej prędkości Target Velocity (0x60FF) oraz momentu siły Max Torque (0x6072) zostanie natychmiast zrealizowana przez serwonapęd.
Tak powinna wyglądać nasza lista parametrów z przykładowymi wartościami podczas włączenia trybu RUN, gdy rzeczywiście nasz serwonapęd działa i możemy zaobserwować obrót serwosilnika, w trakcie pracy w trybie sterowania prędkością.
Świetnie! Dzięki pierwszej części tego odcinka zrozumiałeś istotę działania danego trybu pracy zainicjowanego komunikacją EtherCAT. W drugiej części pokażę Ci, w jaki sposób za pomocą języka LD oraz wprowadzenia wizualizacji HMI możesz stworzyć swoją własną aplikację.
Sprawdź ofertę serwonapędów w sklepie internetowym firmy ASTOR.
Autor kursu:
Marcin Ryznar
Student Akademii Górniczo-Hutniczej w Krakowie, na kierunku Automatyka i Robotyka