Tryby sterowania serwonapędami Unitronics

01.06.2021 How to / Sterowanie i akwizycja danych
Tryby sterowania serwonapędami Unitronics
Wizerunek autora
Producent: UNITRONICS
  • Zakłady przemysłowe
  • Logistyka

Artykuł dostępny również w wersji PDF.

Aby uzyskać dostęp do większej liczby lekcji, powróć na stronę startową kursu.

Powrót do strony startowej

 

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:

  1. Ruch dyskretny (kontrola pozycji):
    1. Absolutny (MC Move Absolute),
    2. Inkrementalny (MC Move Relative / MC Move Additive).
  2. Ruch ciągły:
    1. Sterowanie prędkością (MC Move Velocity),
    2. 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 ProjectLadder →  Module1 Function1. Dodajemy do gałęzi blok MC Move Velocity, który znajdziemy w oknie ToolboxMotion 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 ProjectMotion →  Axes Axis1 w oknie Solution Explorer. Wybrać element wykonawczy (w tym przypadku Aktuator obrotowy) i po lewej stronie w oknie Properties WindowUnits 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  ProjectHMI →  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 AttributesActions 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 AttributesNumeric 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 ToolboxGraphs/Meters →  Slider. W oknie Properties WindowAttributes 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 WindowAttributes 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.

Powrót do strony startowej

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.

Skontaktuj się ze specjalistą Elmark

Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!