Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2019/06/obtyt.jpg

Sterowanie napędem Siemens Sinamics V90 przy wykorzystaniu instrukcji Motion Control

autor: PiotrekM86.

Jakiś czas temu miałem przyjemność uczestniczenia w projekcie budowy maszyny. Do moich zadań należało między innymi konfiguracja i uruchomienie napędów V90. Był to mój pierwszy kontakt z tym typem napędu. Do swojej dyspozycji miałem następujące „zabawki”:

  • sterownik S7-1511 wraz z odpowiednimi peryferiami;
  • przekształtnik serwo 0.75 kW z Profinet;
  • silnik serwo 0.75 kW, 3000 obr./min. z hamulcem i enkoderem absolutnym.

Aby móc odpowiednio skonfigurować całość, trzeba dysponować oprogramowaniem TIA Portal. W artykule tym postaram się przedstawić, jak skonfigurować pojedynczą oś do pracy w trybie prędkości oraz w trybie pozycjonowania.

Po włączeniu oprogramowania należy stworzyć nowy projekt (Start → Create new project), następnie podać jego nazwę i kliknąć OK. W kolejnym kroku należy dodać sterownik PLC do projektu (Device and networks → Add new device → Controllers → odszukać posiadany sterownik i kliknąć Add). Należy pamiętać, aby wersja firmware w projekcie była zgodna z firmware sterownika.

Widok Device configuration służy między innymi do dodawania kart wejść/wyjść, komunikacyjnych itp. do sterownika (projektu). Moduły te są dostępne w Hardware catalog. Po ich dodaniu dobrze jest skompilować hardware (kliknąć ppm na PLC, najechać na Compile, z menu kontekstowego wybrać Hardware (rebuild all).  W tym miejscu polecam zapisać projekt (i wyrobić nawyk częstego zapisywania).

Gdy mamy przygotowany sterownik, to możemy przystąpić do dodania głównego bohatera artykułu, czyli napędu  V90.

  • W tym celu klikamy w Devices & networsk w drzewku projektu,
  • z Hardeware catalog wybieramy Drivers & starters → SINAMICS drivers →SINAMICS V90 PN →interesujący nas napęd (można dodać przez przeciągnięcie w obszar Network view lub klikając w niego dwukrotnie lpm).
  • Dodając napęd, podobnie jak w przypadku sterownika, należy pamiętać, aby firmware falownika zgadzał się z tym, który  ujęto w projekcie.
  • Falownik należy przypisać do konkretnego kontrolera sieci Profinet – w moim przypadku PLC_1.
  • W widoku sieci należy najechać na napis Not assignet na Drive_1 i wybrać PLC_1.PROFINET interface_1.

Aby Profinet działał prawidłowo, należy jeszcze określić fizyczne połączenie obu urządzeń, co można wykonać w zakładce Topology view. W moim przypadku pierwotnie komunikacja odbywała się za pomocą switcha (można go znaleźć w Hardware catalog → Other filed devices → Additional Ethernet devices). Jednak próby skomunikowania napędu z PLC nie powiodły się, V90 musiał być podpięty bezpośrednio do PLC, być może wynika to z zastosowania trybu izochronicznego. Ze względu na czas nie drążyłem dalej tematu.

Starsze wersje TIA Portal mogą wymagać doinstalowania odpowiednich pakietów dla napędów V90, które można pobrać tutaj

Próba skompilowania projektu w tym momencie jednak się nie powiedzie, a Tia Portal wyrzuci błąd związany z telegramem. Wynika to z faktu, że domyślny telegram (105) korzysta z trybu izochronicznego. Ten zaś wymaga zastosowania generatora cyklicznych przerwań do wymiany danych w trybie ITR. Blok MC_Servo generujący przerwania cykliczne zostanie dodany przez system automatycznie w chwili stworzenia obiektu technologicznego (ale o tym później) lub można go również dodać samemu (Add new blokck → Organization block MC_Servo → OK).

Dodając go koniecznie trzeba wybrać w ustawieniach napędu, dotyczących cyklicznej wymiany danych, MC_Servo. Przechodzimy kolejno do Devices & networks w drzewie projektu, klikamy ppm na falownik i wybieramy Properties (właściwości). Następnie przechodzimy do zakładki Cyclic data exchange i w polu Organization block, zarówno dla Setpoint jak i Actual value, wybieramy MC_Servo.

Przed dalszymi etapami należy jeszcze określić, z jakim silnikiem będzie współpracował falownik. Należy kliknąć ppm na napęd i wybrać Parameters a następnie wskazać z listy odpowiedni silnik. W tym oknie można określić również limity prędkości oraz momentu.

Każde urządzenie pracujące w sieci Profinet musi, oprócz adresu IP oraz maski (pozostawiam ustawienia domyślne – jeżeli ktoś chciałby zmienić to można to zrobić w właściwościach → Ethernet addresses) posiadać nazwę. W celu nadania nazwy z menu kontekstowego falownika wybieramy Assign device name, klikamy Update list, gdy Tia Portal znajdzie urządzenie profinetowe odpowiedniego typu to naciskamy przycisk Assign name.

Po nadaniu nazwy, należy całą konfigurację wgrać do napędu (Download to device). Jeżeli ustawienia zostały poprawnie wgrane do napędu, (a zakładam, że tak powinno być) to możemy przejść do pisania prostego programu ( i zapisujemy ). O budowie poszczególnych telegramów oraz podstawowych zagadnieniach z zakresu Motion Control można poczytać w tej publikacji.

Teraz czas przystąpić do tworzenia obiektu technologicznego. Obiekt technologiczny jest to odtworzenie fizycznego układu mechanicznego w sterowniku. Aby go stworzyć w drzewie projektu klikamy w Technology  objects -> Add new object. Wybieramy typ obiektu technologicznego – TO_SpeedAxis – oś prędkości, TO_PositioningAxis – oś pozycjonująca itd. W pierwszej kolejności zajmę się TO_SpeedAxis – wybieramy go potwierdzamy OK. Następnie przechodzimy do konfiguracji.

W zakładce Hardware Interface dodajemy napęd, który będzie przypisany do obiektu technologicznego i zatwierdzamy. Następnie w Extended parameters trzeba określić przełożenie, limit prędkości rampy, wygładzenie przyspieszenia lub zwolnienia (jerk) oraz limit momentu.

Bloki służące do stworzenia programu znajdziemy w zakładce Technology -> Motion Control edytora programu.

W każdej funkcji technologicznej trzeba dodać oś, którą chcemy sterować. Funkcja MC_Power służy do załączania i wyłączania napędu. Do wejścia Axis dodajemy SpeedAxis_1, podanie logicznej 1 na wejście Enable załączy falownik, a w przypadku serwomotoru z hamulcem spowoduje jego zluzowanie. Wejście StopMode określa sposób zachowania się napędu w przypadku zmiany stanu z 1 na 0 w czasie pracy. I tak ustawienie na StopMode 0  wywoła zatrzymanie awaryjne napędu, 1 zatrzymanie napędu zgodnie z ustawieniami napędu, a 2 napęd wyhamuje zgodnie z ustawieniami  obiektu technologicznego (DynamicLimits -> MaxDeceleration).

Funkcja MC_Reset służy do pokwitowania błędów jak i alarmów oraz kasuje bit błędu w bazach danych obiektu technologicznego. Skwitowanie błędu następuje w chwili, gdy napęd jest załączony oraz gdy podamy zbocze narastające na wejście Execute. Ważna uwaga, aby można było zresetować napęd, musi być on załączony (1 na Enable w bloku MC_Power).

Funkcja MC_Halt ma z kolei za zadanie zatrzymanie obiektu technologicznego. Aktywowana jest zboczem narastającym na wejściu Execute. Jeżeli zostawimy wartość -1.0 na parametrze Jerk oraz Deceleration – dynamika hamowania – to te parametry zostaną pobrane z ustawień obiektu technologicznego.

Funkcja Move_Jog powoduje ruch ze stałą częstotliwością (prędkością) i aktywowana jest przez logiczną 1 na wejściu JogForward lub JogBackward. Prędkość ruchu w trybie JOG podawana jest na wejście Velocity. Podobnie jak w bloku MC_Halt pozostawienie wartości -1.0 na wejściach Deceleration Acceleration oraz Jerk spowoduje pobranie wartości tych parametrów z ustawień obiektu technologicznego.

Funkcja MC_MoveVelocity służy do aktywacji napędu z zadaną prędkością obrotową. Na wejście Velocity należy podać żądaną prędkość obrotową, natomiast stan wysoki na wejściu Execute spowoduje uruchomienie silnika z zadaną prędkością, pod warunkiem, że napęd nie ma żadnego błędu.

Jeżeli ktoś chciałby się dowiedzieć więcej o  wejściach oraz wyjściach funkcji technologicznych to polecam F1 w TIA Portal lub tą publikację.

Po sprzężeniu mechanicznym napędu z resztą maszyny, pozostaje już tylko zoptymalizować parametry regulatora prędkości oraz wgrać je do pamięci nieulotnej napędu, a program do sterownika nadrzędnego.

Aby przejść do autotuningu klikamy ppm na napęd i wybieramy Comissioning. Przechodzimy do zakładki Optimization. Podczas autotuningu napęd analizuje między innymi prąd oraz moment obrotowy.

W panelu sterującym przejmujemy kontrolę nad przekształtnikiem poprzez kliknięcie na przycisk Active.

W polu Configure ustawiamy dynamikę testu, czas trwania oraz dozwolony kąt obrotu osi. Po zakończeniu testu system wygeneruje parametry regulatora prędkości. Obliczone wartości trzeba jeszcze zapisać w pamięci ROM napędu – klikamy przycisk SAVE

Pozycjonowanie jest realizowane przez inny obiekt technologiczny. Chcąc przygotować napęd do zadawania pozycji najłatwiej będzie skasować oś prędkości (SpeedAxis_1) i stworzyć nowy obiekt technologiczny PositioningAxis_1 (analogicznie jak oś prędkości). Można również stworzyć nowy projekt. Ja ze względu na czas wybiorę pierwszą opcję. Po usunięciu osi prędkości do bloków MC_Power, MC_Halt, MC_Reset oraz MC_MoveJog należy przypisać oś pozycjonującą, natomiast funkcję MC_MoveVelocity trzeba usunąć z przygotowanego wcześniej FB. Następnie w zakładce Configuration dokonujemy konfiguracji obiektu technologicznego. W zakładce Basic Parameters określamy  typ osi – liniowa lub rotacyjna oraz jednostki pomiarowe – proponuje zostawić domyślne. Można również aktywować tryb modulo czyli stały powtarzający się ruch o określony kąt.

W zakładce Hardware Interface wiążemy napęd z obiektem technologicznym – w taki sam sposób jak w przypadku osi prędkości. Dalej, w Extendet parameters -> Mechanics trzeba określić przełożenie(w przypadku braku przekładni zostawiamy wartość 1:1) oraz skok śruby.

Podobnie jak w przypadku osi prędkości trzeba określić limity prędkości, akceleracji oraz tempa zmian przyspieszenia i hamowania, określamy softwerowe „krańcówki”. Istnieje możliwość włączenia wyłączników krańcowych sprzętowych – trzeba od razu podać wejścia cyfrowe, na które są one wpięte oraz określić czy będą aktywowane stanem wysokim czy niskim.

Ponadto można ustawić parametry związane z kontrolą pozycji (Position monitoring) – dopuszczalne opóźnienie czasowe przy pozycjonowaniu, błąd nadążania oraz osiągnięcie statusu zatrzymania.

W konfiguracji osi pozycjonującej znajdziemy także ustawienia dotyczące Homingu. Nie jest on wymagany w przypadku pozycjonowania relatywnego. Układ może być wybazowany w sposób aktywny lub pasywny. Bazowanie aktywne polega na fizycznym przemieszczeniu układu do ustalonej pozycji. Bazowanie pasywne nie spowoduje fizycznego przemieszczenia się osi, a jedynie przepisanie odpowiedniej wartości pozycji do pozycji aktualnej osi. Bazowanie aktywne oraz pasywne mogą być ustawione tylko dla silnika z enkoderem inkrementalnym. Bazowanie silnika z enkoderem absolutnym jest wykonywane tylko w kilku przypadkach: wgranie programu, wymiana jednostki centralnej, rekonfiguracja ustawień enkodera, wymiana enkodera.

W karcie ustawień dla homingu aktywnego oraz pasywnego, do wyboru mamy wybór źródła znacznika zerowego (Select the homing mode). Wybór Use zero mark via PROFIdrive telegram spowoduje, że znacznikiem bazowania będzie znacznik pozycji zerowej, znajdujący się na tarczy enkodera. Decydując się na Use reference cam and zero mark via PROFIdrive telegram, oprócz znacznika na tarczy enkodera pod uwagę będzie brany sygnał binarny. W przypadku wyboru Use homing mark via digital input pod uwagę jest brany jedynie sygnał binarny. W przypadku bazowania aktywnego można włączyć opcję nawracania układu podczas homingu, gdy oś najedzie na wyłącznik krańcowy. Zależnie od wyboru źródła znacznika zerowego można ustawić kierunek i prędkość homingu oraz kierunek i prędkość najazdu.

Oprócz opisanych wyżej opcji trzeba jeszcze ustawić dwa parametry Home position oraz Home position offset. Home position offset mówi nam, na jaką pozycję po wykryciu znacznika zerowego układ ma się przemieścić, Home position mówi jaka pozycja ma być przepisana do obiektu technologicznego po zakończeniu bazowania. Na tym temat homingu zakończę – jest to dość rozległy temat, więcej podstawowych informacji można znaleźć na helpie oraz we wskazanych wyżej publikacjach.

Aby skorzystać z funkcji bazowania do programu, trzeba dodać blok MC_Home. Podobnie jak w przypadku innych bloków technologicznych konieczne jest przypisanie osi. Aktywacja homingu odbywa się przez podanie zbocza narastającego na wejście Execute. Zależnie od posiadanego enkodera należy wybrać odpowiedni tryb.

Napęd V90 daje możliwość wyboru rodzaju pozycjonowania: relatywne oraz absolutne. W skrócie można powiedzieć, że pozycjonowanie absolutne odpowiada za przesunięcie do pozycji, a pozycjonowanie relatywne przesuwa o zadaną pozycję. I tak dla przykładu jeżeli w przypadku pozycjonowania absolutnego zadamy wpierw pozycję 50 mm, to układ przesunie się na pozycję 50 mm, jeżeli w następnym ruchu będziemy chcieli ustawić pozycję 20 mm, to napęd wykona ruch w kierunku negatywnym do pozycji 20 mm od punktu zero. W przypadku pozycjonowania relatywnego, wpierw napęd przesunie się na pozycję 50 mm, a następnie o 20 mm do pozycji 70 mm od punktu zero.

Chcąc zrealizować pozycjonowanie relatywne trzeba do programu dodać blok MC_MoveRelative.

W pierwszym kroku dodajemy oś, następnie trzeba zadać prędkość (wejście Velocity) oraz przesunięcie (wejście Ditance) – prędkość w mm/s, natomiast distance w mm  – można ustawić inną jednostkę – patrz ustawienia Basic Parameters). Stan wysoki na wejściu Execute spowoduje przesunięcie osi – pod warunkiem wcześniejszego załączenia falownika – stan wysoki na Enable bloku MC_Power.

Konfiguracja bloku MC_MoveAbsolute jest analogiczna jak MC_MoveRelative. Jedyną różnicą jest to, że zamiast wejścia Distance występuje wejście Position (w mm), na które trzeba podać pozycję, do której układ ma się przemieścić. Warunki załączenia są również takie same.

Gotowy program zarówno do ruchu obrotowego ( SpeedAxis) jak i pozycjonowania (PositioningAxis) trzeba wgrać do sterownika (klikamy Download to Device).

Technologia stworzona przez Siemensa oparta na standardzie OpenPLC pozwala w bardzo łatwy sposób sparametryzować i przygotować do pracy napędy, zarówno serwonapędy jak i silniki oparte na falownikach G120. Skraca to w znaczący sposób czas wymagany na uruchomienie napędów. Pewien  problem miałem natomiast z siecią – ze względu na brak doświadczenia w tej kwestii. Napędy V90 i G120 powinny być podłączone do sterownika w „szereg”. W pierwszej kolejności musiały się znajdować napędy wykorzystujące tryb izochroniczny. Próbując sterować napędami z użyciem switcha, PLC nie był w stanie się z nimi skomunikować. Minusem lub faktem, do którego trzeba się przyzwyczaić są dwa „miejsca” z diagnostyką. Występuje ona w napędzie oraz w obiekcie technologicznym.

Niekiedy dochodziło do sytuacji, w której silnik nie chciał ruszyć, na wyświetlaczu napędu nie było żadnego kodu o błędzie. Dopiero wchodząc w diagnostykę obiektu technologicznego był komunikat o błędzie. Po pewnym czasie dało się jednak do tego przyzwyczaić. Mogę jeszcze dodać, że w porównaniu do serwonapędów Festo (na których pracowałem w zeszłym roku) praca była przyjemniejsza, szybsza i w miarę bezproblemowa.

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Czerwiec 2019

Nagrodę Zasilacz EPSITRON + klucz do szaf + zestaw gadżetów dostarcza ambasador konkursu, firma WAGO.

 



Utworzono: / Kategoria: , , , ,

Reklama



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY