Sterowanie serwonapędami ASDAS za pomocą sterownika AS300 – istnieje na to kilka sposobów:
- impulsowo (sygnały dir/step) PT
- PR mode (wykonywanie ścieżek zapisanych w serwonapędzie)
- zapisując ścieżki w serwonapędzie i wywołując je komendami poprzez protokół CANopen
- Za pomocą komend wysyłanych do serwonapędu w trybie CANopen Mode
- dedykowanymi instrukcjami „Delta CANopen Communication Instructions” dostępnymi w serii sterowników AS300
W poprzedniej części zajmowaliśmy się podstawami sterowania impulsowego, podłączeniami sygnałów oraz ruchami pojedynczą osią. Obecna część będzie dotyczyła ruchów interpolowanych i wywoływania ruchów zapisanych w specjalnej tabeli sterowniku.
Wszystkie poniższe przykłady były przetestowane na sterowniku AS332P-A z podłączonym panelem HMI serii DOP-B oraz serwonapędach ASDA-A2.
Sposób 1. sterowanie impulsowe. Część 2
5. Wchodzimy na wyższy poziom, czyli interpolacja ruchu dwóch osi
W wielu urządzeniach jest potrzeba jednoczesnego ruchu osi w płaszczyźnie XY, w taki sposób, aby napędy wykonały linię, łuk lub okrąg. Sterowniki AS300 mają wiele instrukcji, które pozwalają na wykonywanie takich operacji. W instrukcjach interpolowanych zamiast prędkości poszczególnych osi podajemy prędkość liniową, wówczas prędkości osi X/Y są tak dobierane, żeby wynikowa prędkość liniowa wyniosła tyle ile wynosi zadany parametr. Obliczanie tych prędkości zakłada, że kąt pomiędzy osiami wynosi 90° stopni.
Zacznijmy od ruchu liniowego pomiędzy dwoma punktami, służą do tego instrukcje: DPPMR oraz DPPMA.
S1 – ilość impulsów osi X
S2 – ilość impulsów osi Y
S3 – maksymalna prędkość liniowa
D1 – wyjście impulsowe osi X
D2 – wyjście impulsowe osi Y
Obydwie instrukcje powodują interpolowany przejazd liniowy, z tą różnicą, że DPPMP przyjmuje jako parametry S1 i S2 pozycję inkrementalną, a DPPMA pozycję absolutną (różnica jest taka sama jak pomiędzy instrukcjami DDRVI i DDRVA).
Kolejnym wzorkiem do narysowania jest okrąg, do rysowania okręgu z pozycją relatywną służy instrukcja DCCMR, a do rysowania okręgu z pozycją absolutną DCCMA.
S1 – współrzędna X środka okręgu
S2 – współrzędna Y środka okręgu
S3 – dokładność i kierunek obrotu
S4 – prędkość liniowa ruchu.
D1 – wyjście impulsowe osi X
D2 – wyjście impulsowe osi Y
Obydwie instrukcje zaczynają ruch od aktualnej pozycji, środek okręgu wyznaczany jest na podstawie parametrów S1 i S2. Np.: aktualne współrzędne to (-1000;500), wykonujemy instrukcje
[DCCMR -500 100 0 1000], jako środek okręgu jest użyty punkt (-1500;600) wykres czerwony
[DCCMA -500 100 0 1000], jako środek okręgu jest używany punkt (-500;100) wykres niebieski
W parametrze S3 zawarte są 2 informacje: kierunek obrotu oraz rozdzielczość, zależność przedstawia poniższa tabela:
Wartość S3 |
Kierunek obrotu |
Rozdzielczość |
0 |
Zgodny z ruchem wskazówek zegara |
10° |
1 |
Zgodny z ruchem wskazówek zegara |
5° |
2 |
Przeciwny do ruchu wskazówek zegara |
10° |
3 |
Przeciwny do ruchu wskazówek zegara |
5° |
Nie zawsze potrzebny jest nam cały okrąg, czasem potrzeba wykreślić łuk. Służą do tego instrukcje: DCICR (zgodnie z wskazówkami zegara, relatywny), DCICA (zgodnie z wskazówkami zegara, absolutny), DCICCR (przeciwnie do wskazówek zegara, relatywny) i DCICCA (przeciwnie do wskazówek zegara, absolutny).
S1 – współrzędna X punktu końcowego łuku
S2 – współrzędna Y punktu końcowego łuku
S3 – przesunięcie środka okręgu do którego należy łuk w stosunku do linii łączącej pozycje aktualna i docelową
S4 – prędkość ruchu
S5 – dokładność (0 = 10°, 1 = 5°)
Przy tych instrukcjach podajemy końcową pozycję na jakiej chcemy się zatrzymać.
Parametr S3 wymaga dokładniejszego wyjaśnienia, posłużę się rysunkiem z dokumentacji sterownika AS300:
Gdy parametr S3 jest większy od 0 wtedy instrukcja narysuje mniejszy wycinek łuku, gdy jest mniejsza wtedy rysowany jest większy wycinek łuku, gdy S3=0 wtedy rysowana jest dokładnie połowa okręgu.
6. Może byśmy coś zaplanowali? Czyli Position Planning Table.
Tworząc program na sterownik możemy zapisać zdefiniowane ruchy pojedynczej osi lub interpolowane ruchy dwóch osi do specjalnej tablicy, z której mogą być później w prosty sposób wywoływane. Utworzyć rekordy w tablicy możemy jedynie z poziomu oprogramowania ISPSoft, nie mamy dostępu do tworzenia rekordów z poziomu rejestrów dostępnych w sterowniku, jedynie za pomocą specjalnych instrukcji możemy zmieniać niektóre parametry ruchu (szczegóły w dalszej części rozdziału). Ale zacznijmy od początku czyli jak zapisać dane do tablicy.
W ISPSoft wybiaramy w menu Wizard/Position Planning Table.
otworzy nam się okno w którym trzeba wpisać typ sterowania każdą z wykorzystywanych osi, oraz można wpisać dane do obliczenia przekładni.
W zakładce Positioning Settings możemy ustawić parametry każdego rekordu z tablicy.
W pierwszej kolumnie podany jest numer rekordu, nie można go zmienić. W drugim polu wybieramy typ rekordu, od niego zależą pozostałe ustawienia więc każdy typ będziemy omawiali oddzielnie.
- Single-axis point-to-point motion -ruch pojedynczą osią
- Axis No. – numer osi która wykonuje ruch
- ABS/REL mode – tryb pracy: pozycja absolutna lub relatywna
- Target position – docelowa pozycja
- Target speed(Hz) – maksymalna częstotliwość pracy
- Bias speed(Vbias)(Hz) – częstotliwość początkowa i końcowa rampy.
- Acceleration time/ deceleration time – rampa rozpędzania/hamowania
- Completion action – akcja przy zakończeniu pracy danego rekordu, ustawienie flagi lub przejście do innego rekordu
- Completion flag – flaga zakończenia.
- No. of next segment – numer rekordu do wykonania po zakończeniu.
Kolejnymi typami są przejazdy interpolowane które zajmują po 2 rekordy.
- 2-axis linear interpolation -interpolacja liniowa
- Axis No. – numer osi która wykonuje ruch
- ABS/REL mode – tryb pracy: pozycja absolutna lub relatywna
- Target position – docelowa pozycja osi
- Target speed(Hz) – maksymalna prędkość liniowa pracy
- ACC/DEC time – rampa rozpędzania/hamowania
- Completion action – akcja przy zakończeniu pracy danego rekordu, ustawienie flagi lub przejście do innego rekordu
- Completion flag – flaga zakończenia.
- No. of next segment – numer rekordu do wykonania po zakończeniu.
- 2-axis arc interpolation -interpolacja łuku
- Axis No. – numer osi która wykonuje ruch
- ABS/REL mode – tryb pracy: pozycja absolutna lub relatywna
- Target position – docelowa pozycja osi
- Tangential speed – maksymalna prędkość liniowa pracy
- Center shift value(pulse) – przesuniecie środka okręgu
- Direction – zgodnie (CW) lub przeciwnie (CCW) do ruchu wskazówek zegara
- Completion action – akcja przy zakończeniu pracy danego rekordu, ustawienie flagi lub przejście do innego rekordu
- Completion flag – flaga zakończenia.
- No. of next segment – numer rekordu do wykonania po zakończeniu.
Gdy Completion action jest ustawiony na Completion, wtedy możemy uzupełnić pole Completion flag a No. of next segment jest nieaktywne, odwrotnie jest gdy Completion action ustawimy na Go to next segment, wtedy nie mamy możliwości ustawienia flagi zakończenia, ale musimy wpisać numer kolejno wykonywanej ścieżki.
Dla zobrazowania łatwości wykonania rekordów utworzyłem 2 rekordy interpolacji liniowej:
oraz 6 interpolacji łuku:
od ścieżki 3 do 15, po zakończeniu wykonywania ścieżki, będzie wywoływana kolejna. Nie mamy możliwości narysowania całego okręgu, więc chcąc narysować okrąg będą wywołane ścieżki 5 oraz 7 które rysują po pół okręgu.
Jeśli nie jesteśmy pewni jak będzie wyglądał ruch naszych napędów, możemy zasymulować wygląd wszystkich ruchów klikając na ikonę: zobaczymy okno w którym będzie narysowana symulacja naszych ruchów:
W symulatorze można zobaczyć dokładne współrzędne na jakich będą wykonywane ruchy.
Do wywołania ścieżki służy instrukcja TPO:
S – numer ścieżki do wywołania
D1 – numer aktualnie wykonywanej ścieżki
D2 – informacja o zakończeniu wykonywania ścieżki, wyzwalane po zakończeniu wykonywania ścieżki, gdy uruchomiona jest kolejna ścieżka to bit jest kasowany.
Sprawdźmy na panelu czy symulator poprawnie narysował wszystkie ścieżki.
Kwiatek wygląda tak samo jak na symulacji.
Najpierw uruchomiłem ścieżkę 1 aby mieć pozycję absolutną, a następnie wystarczyło wywołać ścieżkę 3 i czekać na zakończenie pracy… Proste.
7. Czasem plany się zmieniają czyli modyfikacja zapisanych ścieżek.
Jednak czasami przydało by się zmieniać współrzędne na jakich odbywają się zaplanowane ruchy, jest taka możliwość jednak ma pewne ograniczenia, które jednak przy dokładnym zaplanowaniu rekordów w Position Planning Table nie będą stwarzały nam problemów:
1. Ścieżka którą chcemy zmodyfikować musi już być wgrana do sterownika
2. Ścieżka musi być tego samego typu co ścieżka wgrana pod zapisywanym numerem
3. Można zmienić tylko niektóre parametry ruchu, takie jak pozycja czy prędkość (szczegóły w opisie każdej z instrukcji).
4. Zmiana dokonana podczas wykonywania ścieżki, będzie miała wpływ na ruch dopiero podczas kolejnego wywołania.
5. Zmiany nie są zapisywane w sposób stały, tzn. po wyłączeniu zasilania ścieżki będą miały takie wartości jak pierwotnie wgrane do Position Planning Table. Aby zachować nowe parametry ruchu, należy zapamiętać nowe parametry w rejestrach podtrzymywanych sterownika i modyfikować ścieżki po przejściu sterownika w tryb RUN.
Do zapisu do ścieżek dla pojedynczych osi służy instrukcja DTPWS:
S1 – numer modyfikowanej ścieżki,
S2 – docelowa pozycja
S3 – prędkość ruchu
Pozostałe parametry takie jak: ruch absolutny/relatywny, czas przyśpieszania i hamowania, akcja po zakończeniu ruchu (ustawienie flagi bądź wykonanie kolejnego rekordu), pozostają takie jak wgrane poprzez ISPSoft.
Modyfikacji ścieżek interpolowanych liniowo dokonuje się instrukcją DTPWL:
S1 – numer modyfikowanej ścieżki,
S2 – docelowa pozycja osi X
S3 – docelowa pozycja osi Y
S4 – prędkość ruchu
Pozostałe parametry bez zmian.
Modyfikacji ścieżek interpolowanych po łuku dokonuje się instrukcją DTPWC:
S1 – numer modyfikowanej ścieżki,
S2 – docelowa pozycja osi X
S3 – docelowa pozycja osi Y
S4 – przesuniecie środka
S5 – prędkość ruchu
Pozostałe parametry bez zmian.
Aby lepiej można było zrozumieć zasadę działania przedstawię przykład. Po wykonaniu rysunku, zmieniłem parametry ścieżki 3 na ruch o (500,2500) z prędkością 200:
i ponownie wywołałem wykonywanie od ścieżki 3, następnie ponownie zmieniłem współrzędne na (-1000,3000) z taka samą prędkością. Po kolejnym wywołaniu zamiast jednego kwiatka, otrzymaliśmy cały bukiet.
Tym kwiatowym akcentem zakończymy temat sterowania impulsowego. Pomimo, że jest to najstarszy i najprostszy sposób, jest jednocześnie najbardziej uniwersalny, ponieważ znaczna większość producentów serwonapędów (jak również sterowników silników skokowych) stosuje wejścia impulsowe, niektóre najprostsze sterowniki posiadają jedynie taki sposób sterowania. Nie potrzeba też szukać specjalnych plików konfiguracyjnych tak jak to bywa przy niektórych interfejsach komunikacyjnych.
Wadami takiego sterowania jest w większości przypadków brak sprzężenia zwrotnego o rzeczywistej pozycji (chociaż w niektórych napędach jest możliwość wyprowadzenia sygnału enkoderowego lub odczyt aktualnej pozycji przez interfejsy komunikacyjne) oraz konieczność podłączenia oddzielnych przewodów do każdego napędu.
Do artykułu są dodane przykłady działania wszystkich opisanych tutaj instrukcji.
1_AS322P_PTMODE – instrukcje ruchu pojedyncza osią oraz interpolowane.
2_AS300P_PPT – instrukcje wykorzystujące Position Planning Table.