Spis treści
Artykuł dostępny również w wersji PDF.
Aby uzyskać dostęp do większej liczby lekcji, powróć na stronę startową kursu.
1. Podstawowy podział ruchu
W serwonapędach Unitronics mamy możliwość sterowania ruchem poprzez pozycję, prędkość i moment obrotowy. Ze względu na sposób wykonywania ruchu wyróżniamy dwa podstawowe rodzaje kontroli:
- Ruch dyskretny (kontrola pozycji):
- Absolutny (MC Move Absolute),
- Inkrementalny (MC Move Relative / MC Move Additive).
- Ruch ciągły:
- Sterowanie prędkością (MC Move Velocity),
- Sterowanie momentem obrotowym (MC Torque Control).
Ruch dyskretny został omówiony w instrukcji „Konfiguracja serwonapędów Unitronics” dlatego w tej instrukcji szczególna uwaga zostanie poświęcona ruchowi ciągłemu.
2. Sterowanie pozycją
Kontrola pozycji jest szczególnie przydatna gdy zależy nam na dokładnym i powtarzalnym ruchu. Oczywiście dojazd do konkretnej pozycji możemy osiągnąć również za pomocą funkcji porównania aktualnej pozycji z docelową jednak takie rozwiązanie jest obarczone znacznie większym błędem pozycjonowania.
Do sterowania pozycją służą bloki:
- MC Move Absolute,
- MC Move Relative,
- MC Move Additive.
MC Move Absolute służy do sterowanie pozycją w serwosilnikach wyposażonych w enkoder absolutny. Pozwala na dojazd do konkretnej pozycji.
Symbol |
Nazwa zmiennej |
Funkcja |
A |
Axis |
Wybór osi, która będzie sterowana |
B |
Execute |
Zmienna odpowiadająca za zezwolenie ruchu (zbocze narastające uruchamia) |
C |
Continuous Update |
Jeśli wartość 1, ustawione parametry są sprawdzane przy każdym cyklu |
D |
Position |
Docelowa pozycja (wartość w jednostce ustawionej w Project → Motion → Axes) |
E |
Velocity |
Maksymalna prędkość (niekoniecznie osiągnięta, wartość w jednostce ustawionej w Project → Motion → Axes) |
F |
Acceleration |
Przyśpieszenie (narastanie prędkości do momentu osiągnięcia maksymalnej, wartość w jednostce ustawionej w Project → Motion → Axes) |
G |
Deceleration |
Spowolnienie (spowolnienie serwosilnika, jeśli wartość 0, to wartość przyśpieszenia zostanie użyta, wartość w jednostce ustawionej w Project → Motion → Axes) |
H |
Jerk |
Zryw serwosilnika (brany pod uwagę tylko przy wyborze profilu ruchu S-Curve w Project → Motion → Axes) |
I |
Done |
Stan wysoki, gdy serwosilnik osiągnął docelową pozycję |
J |
Busy |
Stan wysoki, gdy blok ma kontrolę nad osią serwonapędu |
K |
Active |
Stan wysoki, gdy blok wykonuje działania na osi serwonapędu |
L |
Command Aborted |
Stan wysoki, gdy blok został zatrzymany przez inną komendę |
M |
Error bit |
Stan wysoki, gdy wystąpił błąd |
N |
Error ID |
Wskazuje wartość błędu |
MC Move Relative służy do wykonania ruchu o zadany dystans w stosunku do pozycji w momencie egzekucji bloku funkcyjnego.
Symbol |
Nazwa zmiennej |
Funkcja |
A |
Axis |
Wybór osi, która będzie sterowana |
B |
Execute |
Zmienna odpowiadająca za zezwolenie ruchu (zbocze narastające uruchamia) |
C |
Continuous Update |
Jeśli wartość 1, ustawione parametry są sprawdzane przy każdym cyklu |
D |
Position |
Docelowa pozycja (wartość w jednostce ustawionej w Project → Motion → Axes) |
E |
Velocity |
Maksymalna prędkość (niekoniecznie osiągnięta, wartość w jednostce ustawionej w Project → Motion → Axes) |
F |
Acceleration |
Przyśpieszenie (narastanie prędkości do momentu osiągnięcia maksymalnej, wartość w jednostce ustawionej w Project → Motion → Axes) |
G |
Deceleration |
Spowolnienie (spowolnienie serwosilnika, jeśli wartość 0, to wartość przyśpieszenia zostanie użyta, wartość w jednostce ustawionej w Project → Motion → Axes) |
H |
Jerk |
Zryw serwosilnika (brany pod uwagę tylko przy wyborze profilu ruchu S-Curve w Project → Motion → Axes) |
I |
Done |
Stan wysoki, gdy serwosilnik osiągnął docelową pozycję |
J |
Busy |
Stan wysoki, gdy blok ma kontrolę nad osią serwonapędu |
K |
Active |
Stan wysoki, gdy blok wykonuje działania na osi serwonapędu |
L |
Command Aborted |
Stan wysoki, gdy blok został zatrzymany przez inną komendę |
M |
Error bit |
Stan wysoki, gdy wystąpił błąd |
N |
Error ID |
Wskazuje wartość błędu |
MC Move Additive wykonuje ruch o zadany dystans (podobnie jak MC Move Relative) w stosunku do ostatniej zadanej pozycji (nawet gdy ruch został przerwany w trakcie wykonywania).
Symbol |
Nazwa zmiennej |
Funkcja |
A |
Axis |
Wybór osi, która będzie sterowana |
B |
Execute |
Zmienna odpowiadająca za zezwolenie ruchu (zbocze narastające uruchamia) |
C |
Continuous Update |
Jeśli wartość 1, ustawione parametry są sprawdzane przy każdym cyklu |
D |
Position |
Docelowa pozycja (wartość w jednostce ustawionej w Project → Motion → Axes) |
E |
Velocity |
Maksymalna prędkość (niekoniecznie osiągnięta, wartość w jednostce ustawionej w Project → Motion → Axes) |
F |
Acceleration |
Przyśpieszenie (narastanie prędkości do momentu osiągnięcia maksymalnej, wartość w jednostce ustawionej w Project → Motion → Axes) |
G |
Deceleration |
Spowolnienie (spowolnienie serwosilnika, jeśli wartość 0, to wartość przyśpieszenia zostanie użyta, wartość w jednostce ustawionej w Project → Motion → Axes) |
H |
Jerk |
Zryw serwosilnika (brany pod uwagę tylko przy wyborze profilu ruchu S-Curve w Project → Motion → Axes) |
I |
Done |
Stan wysoki, gdy serwosilnik osiągnął docelową pozycję |
J |
Busy |
Stan wysoki, gdy blok ma kontrolę nad osią serwonapędu |
K |
Active |
Stan wysoki, gdy blok wykonuje działania na osi serwonapędu |
L |
Command Aborted |
Stan wysoki, gdy blok został zatrzymany przez inną komendę |
M |
Error bit |
Stan wysoki, gdy wystąpił błąd |
N |
Error ID |
Wskazuje wartość błędu |
3. Sterowanie prędkością
Sterowanie prędkością jest głównie wykorzystywane w aplikacjach o stałym ruchu. Pozwala na płynną zmianę prędkości bez potrzeby zatrzymywania serwosilnika. Do kontroli prędkości służy blok funkcyjny MC Move Velocity. Aby zakończyć ruch, praca bloku funkcyjnego musi zostać przerwana za pomocą innego bloku (np. MC Stop).
Symbol |
Nazwa zmiennej |
Funkcja |
A |
Axis |
Wybór osi, która będzie sterowana |
B |
Execute |
Zmienna odpowiadająca za zezwolenie ruchu (zbocze narastające uruchamia) |
C |
Continuous Update |
Jeśli wartość 1, ustawione parametry są sprawdzane przy każdym cyklu |
D |
Velocity |
Maksymalna prędkość (niekoniecznie osiągnięta, wartość w jednostce ustawionej w Project → Motion → Axes) |
E |
Acceleration |
Przyśpieszenie (narastanie prędkości do momentu osiągnięcia maksymalnej, wartość w jednostce ustawionej w Project → Motion → Axes) |
F |
Deceleration |
Spowolnienie (spowolnienie serwosilnika, jeśli wartość 0, to wartość przyśpieszenia zostanie użyta, wartość w jednostce ustawionej w Project → Motion → Axes) |
G |
Jerk |
Zryw serwosilnika (brany pod uwagę tylko przy wyborze profilu ruchu S-Curve w Project → Motion → Axes) |
H |
Direction |
Kierunek ruchu: 0 – do przodu, 2 – do tyłu, 3 – aktualny kierunek |
I |
Done |
Stan wysoki, gdy serwosilnik osiągnął docelową prędkość |
J |
Busy |
Stan wysoki, gdy blok ma kontrolę nad osią serwonapędu |
K |
Active |
Stan wysoki, gdy blok wykonuje działania na osi serwonapędu |
L |
Command Aborted |
Stan wysoki, gdy blok został zatrzymany przez inną komendę |
M |
Error bit |
Stan wysoki, gdy wystąpił błąd |
N |
Error ID |
Wskazuje wartość błędu |
4. Sterowanie momentem
Ostatni sposób sterowania ruchem serwosilnika wykorzystuje moment obrotowy. Za pomocą tego trybu możemy wytworzyć moment/siłę na wale serwosilnika gdy nie są przyłożone żadne zewnętrzne obciążenia/siły. Aby zakończyć działanie, praca bloku funkcyjnego musi zostać przerwana za pomocą innego bloku (np. MC Stop).
Symbol |
Nazwa zmiennej |
Funkcja |
A |
Axis |
Wybór osi, która będzie sterowana |
B |
Execute |
Zmienna odpowiadająca za zezwolenie ruchu (zbocze narastające uruchamia) |
C |
Continuous Update |
Jeśli wartość 1, ustawione parametry są sprawdzane przy każdym cyklu |
D |
Torque |
Wartość momentu obrotowego (wartość w jednostce ustawionej w Project → Motion → Axes). Tysięczne części momentu znamionowego (np. moment znamionowy 0,25 Nm, wartość 500 to 50% z znamionowego czyli 0,125 Nm). |
E |
Torque Ramp |
Maksymalny czas narastania do wartości docelowej (wartość w jednostce ustawionej w Project → Motion → Axes) |
F |
Direction |
Kierunek ruchu: 0 – do przodu, 2 – do tyłu, 3 – aktualny kierunek |
G |
In Torque |
Stan wysoki, gdy serwosilnik osiągnął docelową moment lub siłę |
H |
Busy |
Stan wysoki, gdy blok ma kontrolę nad osią serwonapędu |
I |
Active |
Stan wysoki, gdy blok wykonuje działania na osi serwonapędu |
J |
Command Aborted |
Stan wysoki, gdy blok został zatrzymany przez inną komendę |
K |
Error bit |
Stan wysoki, gdy wystąpił błąd |
L |
Error ID |
Wskazuje wartość błędu |
5. Przykładowy program
W przykładzie zostanie użyty układ serwosilników UMM-0001BA-B4 połączonych pasem zębatym. Zmodyfikowany zostanie program występujący w instrukcji „Konfiguracja serwonapędów Unitronics”. Program można pobrać z instrukcji lub bezpośrednio tutaj.
Dodamy dwa ekrany, które posłużą do płynnej kontroli prędkości oraz sekwencję sterowania: ruch do przodu o 5000 stopni i utrzymanie momentu przez 3 sek.
Sterowanie prędkością
Pierwszy z programów sterowania jest stosunkowo prosty. Głównie będzie opierać się o dodanie bloku MC Move Velocity i przypisanie odpowiednich zmiennych. W tym celu przechodzimy do Solution Explorer i wybieramy Project → Ladder → Module1 → Function1. Dodajemy do gałęzi blok MC Move Velocity, który znajdziemy w oknie Toolbox → Motion Control.
Zmienna „Rozpocznij prędkość” zezwoli na sterowanie prędkości serwosilnika natomiast „PredkoscDEG” jest zmienną której przypisujemy wartość prędkości. Jak w naszych poprzednich przykładach blok wymaga resetowania zmiennej „Rozpocznij prędkość” po zakończeniu ruchu lub w przypadku wystąpienia błędu. Dlatego musimy utworzyć poniższy schemat drabinkowy (styki od góry: MC_MoveVelocity.Command Aborted, MC_MoveVelocity.Error).
Używany model serwosilnika posiada prędkość znamionową 3000 RPM, ale do celów demonstracyjnych zmniejszymy do 2000 RPM, jako że używamy w ustawieniach osi wartości prędkości w stopniach/s prędkość znamionowa będzie odpowiadać 12 000 stopni/s. Oczywiście możemy wykorzystywać inne jednostki prędkości. W celu zmiany jednostki należy przejść do Project → Motion → Axes → Axis1 w oknie Solution Explorer. Wybrać element wykonawczy (w tym przypadku Aktuator obrotowy) i po lewej stronie w oknie Properties Window → Units setting możemy wybrać interesującą nas jednostkę, a program automatycznie przeliczy pozostałe parametry związane z tą jednostką.
W przykładzie użyto jednostki RPM, którą przeliczono dzieląc przez 6 odczyty prędkości w jednostce stopni/s, ale nie jest to wymagany krok.
Pozostało przygotować ekran odpowiadający za kontrolę prędkości. Część elementów wchodzących w skład ekranu do sterowania pozycją zostanie użyta do sterowania prędkością, dlatego najlepiej zduplikować istniejący ekran. W tym celu przechodzimy do Project → HMI → Module1 w oknie Solution Explorer, kliknąć prawym przyciskiem myszy w Main i wybrać opcję Duplicate Screen.
Po skopiowaniu ekranu należy dokonań kilku zmian w ekranie. Przede wszystkim dodać możliwość zmiany ekranów za pomocą odpowiednich przycisków. Następnie dodać suwak odpowiadający za regulację prędkości i zamienić wyświetlacze.
Przyciskom do zmiany ekranów należy przypisać odpowiednie właściwości. W tym celu przechodzimy do okna Properties Window → Attributes → Actions i dodajemy akcję Load Screen o tagu Main. Tą samą czynność należy wykonać w ekranie Main. Dodajemy przycisk o akcji Load Screen o tagu Predkosc (lub inna nazwa utworzonego ekranu).
Następnie zamienimy podmienimy wyświetlacze tak by wyświetlały zadaną prędkość i aktualną prędkość. Oprócz kosmetycznych zmian napisów najważniejsza jest zmiana wyświetlanej wartości w Properties Window → Attributes → Numeric Value. Poniższa tabela pokazuje zmienne przypisane poszczególnym wyświetlaczom.
Nazwa wyświetlacza |
Numeric Value |
Zadana prędkość |
Predkosc |
Prędkość |
Axis1.Actual velocity |
Aktualna pozycja |
Axis1.Actual position |
Moment obrotowy |
Axis1.Actual torque |
Na koniec pozostało dodać suwak odpowiadający za zmianę prędkości serwosilnika. Suwak znajdziemy w oknie Toolbox → Graphs/Meters → Slider. W oknie Properties Window → Attributes należy przypisać do Tag:Link zmienną „Predkosc” i Maximum value ograniczyć do prędkości znamionowej serwosilnika (w naszym wypadku 12000). Dodatkowo aby umożliwić wykonanie ruchu należy do przycisków Start i Stop przypisać Tag „Rozpocznij ruch” na „Rozpocznij prędkość” w Properties Window → Attributes → Actions.
Napisany program oraz przygotowany ekran pozwala na płynną zmianę prędkości serwosilnika podczas ciągłego ruchu.
Sterowanie momentem
Schemat ruchu pokazuje poniższy diagram. Zostaną użyte dwa bloki Motion Control: MC Move Relative – do wykonania obrotu o 5000 stopni i MC Torque Control – do utrzymania wyznaczonego momentu obrotowego.
Rozpoczniemy od przygotowania programu sekwencji ruchowej. W przykładzie z instrukcji „Konfiguracja serwonapędów Unitronics” został użyty blok MC Move Additive. Należy zamienić ten blok na MC Move Relative pozostawiając wszystkie parametry bez zmian.
Zmiana ta wymaga również zmiany funkcji resetowania „Rozpocznij ruch” (od góry MC_MoveRelative.Done, MC_MoveRelative.Command Aborted, MC_MoveRelative.Error).
Za kontrolę momentu obrotowego będzie odpowiadał blok MC Torque. Za załączenie sterowania momentem będzie odpowiadać utworzona zmienna „Rozpocznij moment” a wartość momentu podamy w zmiennej „Moment”.
Tak samo jak w przypadku pozostałych bloków należy dodać funkcję resetowania zmiennej „Rozpocznij moment” (od góry: MC_Torque.Command Aborted, MC_Torque.Error).
Pozostało zaprogramować sekwencję ruchów. W tym celu dodamy do środowiska parę zmiennych odpowiadających za sygnalizację stanu cyklu.
Nazwa zmiennej |
Rodzaj zmiennej |
Funkcja |
Pierwszy ruch |
BIT |
Informuje o rozpoczęciu sekwencji ruchowej |
Cykl załączony |
BIT |
Informuje że serwonapęd jest w trakcie cyklu |
Koniec cyklu |
BIT |
Informuje o zakończeniu cyklu |
Timer |
BIT |
Uruchamia timer po osiągnięciu określonego momentu |
Czas postoju |
Timer |
Utrzymuje moment przez 3 sek |
Początkowo utworzymy funkcję rozpoczynającą cykl pracy i załączającą MC Move Relative. Blok Store nadpisuje wartość zmiennej „Pozycja” na 5000, by przy rozpoczęciu ruchu serwosilnik wykonał obrót o 5000 stopni (gdyby wartość została nadpisana wcześniej przez użytkownika).
Następnie należy przełączyć tryb z sterowania pozycją na sterowania momentem.
Zmienna bloku „MC_Torque.In Torque” dostarcza informacji o osiągnięciu wybranego momentu obrotowego co załącza zmienną odpowiedzialną za działanie Timera.
Timer ustawiony na 3 sek zwraca informację o końcu czasu za pomocą zmiennej „Czas postoju.Out”.
Po zakończeniu cyklu następuje reset poszczególnych bitów i cykl może rozpocząć się od nowa.
Pozostało wykonać ekran odpowiedzialny za sterowanie momentem obrotowym. Ekran będzie podobny do ekranu od sterowania prędkością. Należy dodać przycisk do przełączania się między ekranami, suwak do regulacji i zmodyfikować wyświetlacze. Wyświetlaczom przypisujemy następujące zmienne:
Nazwa wyświetlacza |
Numeric Value |
Zadany moment |
Moment |
Moment obrotowy |
Axis1.Actual torque |
Aktualna pozycja |
Axis1.Actual position |
Prędkość |
Axis1.Actual velocity |
Do suwaka należy przypisać zmienną „Moment” w rubryce Tag:Link i ustawić wartość minimum -250 i maksimum 250 odpowiednio w rubryce Minimum Value i Maximum Value. Dodatkowo należy wpisać odpowiednie akcje do przycisków Start, Stop żeby były jak w tabeli poniżej.
Nazwa przycisku |
Action |
Tag/Screen/File |
Trigger |
Start |
Set Bit |
Pierwszy ruch |
Press |
Reset Bit |
Stop serwo |
Press |
|
Stop |
Set Bit |
Stop serwo |
Press |
Reset Bit |
Pierwszy ruch |
Press |
|
Reset Bit |
Cykl załączony |
Press |
|
Reset Bit |
Wł/Wył serwo |
Press |
W wyniku dokonanych zmian otrzymaliśmy następujący ekran do sterowania momentem obrotowym serwosilnika.
Serwonapędy Unitronics pozwalają na różne tryby sterowania ruchem. Od rodzaju aplikacji zależy jaki tryb sterowania będzie odpowiedni i mimo że na raz może działać tylko jeden z trybów to szybkie przełączanie między poszczególnymi blokami funkcyjnymi pozwoli zachować płynność sterowania. Innym sposobem jest zastosowanie bloków porównawczych (np. do określenia pozycji) jednak należy pamiętać że metoda ta jest wolniejsza i mniej dokładna od zastosowania dedykowanych bloków dla poszczególnych trybów sterowania.
6. Do pobrania
Poniżej można pobrać program, w którym znajdują się przykłady omówione w kursie.
>>>PRZYKŁADOWY PROGRAM TRYBY PRACY<<<
7. Film instruktażowy
Więcej o konfiguracji serwonapędu dowiedzą się Państwo z filmu poniżej. W filmie poruszam kwestię:
- sterowania pozycją, prędkością, momentem,
- programowania ruchu ciągłego i dyskretnego.
Aby uzyskać dostęp do większej liczby lekcji, powróć na stronę startową kursu.
Jeśli masz pytania, skontaktuj się z nami pod adresem e-mail: sterowniki@elmark.com.pl . Chętnie wysłuchamy również każdą konstruktywną krytykę na temat jakości tego kursu.