Kruhová interpolace s LMC078 a kartézskými osami
Jak… … na interpolovaný pohyb s LMC078, servosystémem LXM32 a kartézským robotem.
17.3.2016
Klíčová slova: SoMachine, LMC078, kruhová interpolace, servo-pohony, kartézské osy, lineární vedení, LXM32, kartézský robot
Cíl: Pomocí LMC078 a kartézských os vykreslit oblouk.
OEM solution
1
Kruhová interpolace s LMC078 a kartézskými osami
NEŽ ZAČNETE Tento manuál předpokládá, že máte základní znalosti práce s vývojovým prostředím SoMachine v4.1. Je nutné znát, jak se připojit k PLC, jak provést stažení aplikace a jak nakonfigurovat osy. Jak na to popisuje dokumentace k Somachine. V tomto dokumentu bude popsáno, jak vytvořit jednoduchý program pro LMC078 vykreslující část kružnice pomocí kartézských os. Jedná se o požadavek na řízení jednoduchých pohybů. Pro vykreslení složitějších obrazců (složeného pohybu) vytvořeného například v programu typu CAD, doporučujeme využívat zadání pomocí G-kódu.
POUŽITÝ HARDWARE Motion controller LMC078 Servo-měniče LXM32 2D kartézský robot
OEM solution
2
Kruhová interpolace s LMC078 a kartézskými osami
ZADÁNÍ – VYKRESLENÍ OBLOUKU Kruhový oblouk je definován následujícími parametry: 1) Souřadnice středu oblouku 2) Poloměr oblouku 3) Počáteční úhel 4) Koncový úhel
TROCHA TEORIE – PARAMETRICKÉ VYJÁDŘENÍ Ze zadaných parametrů můžeme vypočítat počáteční a koncový bod oblouku. Počáteční bod: Koncový bod: Celý oblouk můžeme popsat parametrickou rovnicí ve tvaru: pro
OEM solution
3
Kruhová interpolace s LMC078 a kartézskými osami
KROK 1 – MOTION PROGRAM Ukázkový program pro pohyb po kruhové trajektorii se bude skládat z tří částí. Nejprve je potřeba aktivovat pohony a nastavit počáteční polohu. Nejdůležitější částí bude sekce starající se o kruhovou interpolaci.
Interpolovaný (kruhový) pohyb zajišťuje blok MakeCircleSection, jehož funkce je popsána dále.
KROK 2 – NAJETÍ NA POŘÁTEČNÍ POLOHU Na počáteční polohu můžeme najet pomocí standardních bloků MC_MoveAbsolute. Jeden z možných přístupů může vypadat takto:
Signál pro aktivaci další části programu
OEM solution
4
Kruhová interpolace s LMC078 a kartézskými osami POU StartPos pouze vypočítá počáteční polohu podle vztahu
Který v ST zapíšeme jako:
Funkční bloky MC_MoveAbsolute nyní najedou osami na požadovanou počáteční polohu (nezávisle na sobě) s danou maximální rychlostí s daným maximálním zrychlením (zpomalením). Při staru pohybu, signálem i_xExecute si ještě nahodíme příznak q_xBusy, který bude signalizovat probíhající prací na najetí na počáteční polohu a následném kruhovém pohybu. Když bude najetí dokončeno, aktivují se výstupy bloků MC_MoveAbsolute Done, což je signálem, že se můžeme pustit do samotného kruhového pohybu.
POZNÁMKA 2 – PRŮBĚH PARAMETRU V nejjednodušším případě bychom zvětšovali parametr o krok (kde rychlost a je délka cyklu), takže . V tomto případě, by ale zrychlení na začátku a na konci pohybu bylo neomezené, takže by docházelo k trhavému pohybu. Lepší možností je nejprve postupně zrychlovat a až po dosažení požadované rychlosti přejít na způsob popsaný v předchozím bodě. Takže . Podobným způsobem je nutné v dostatečném předstihu začít brzdit. Zrychlení v jednotlivých částech je v tabulce: Fáze pohybu
Rozsah
Zrychlení
Zrychlení Konst. Rychlost Zpomalení
-
Pozor: Pokud algoritmus nestihne dosáhnout maximální rychlosti, bude to dělat problémy. Je tedy nutné omezit maximální rychlost, tak aby se jednotlivé intervaly nepřekrývali. V programu funkci vytvoříme pomoví výpočtu z předchozí hodnoty a . Takže platí
OEM solution
5
Kruhová interpolace s LMC078 a kartézskými osami S počátečními podmínkami následujícím obrázku:
. Uvedený pohyb je znázorněn na
a
1,2
zrychlení, rychlost, pozice
1 0,8 0,6 t 0,4
v a
0,2 0 -0,2 -0,4
čas
Tento způsob pohybu už je z mechanického hlediska přijatelný. Pokud by se ovšem jednalo o řízení např. výtahu, byl by vysoký jerk (který v tomto případě neřešíme) pro přepravované osoby nepříjemný. Pokud chceme omezit jerk, musíme uvažovat zrychlení ve tvaru . Zrychlení nejprve dosáhne požadované hodnoty, pak musí být konstantní a v určitý čas se musí opět snižovat. Jedná se tedy o komplikovanější verzi předchozího případu. 1,2 1
zrychlení, rychlost, pozice
0,8 0,6 t
0,4
v 0,2
a
0
j
-0,2 -0,4 -0,6
OEM solution
čas
6
Kruhová interpolace s LMC078 a kartézskými osami Teoreticky lze vytvořit odpovídající předpis funkce, ale jednodušší je využití virtuální osy, kde můžeme omezení pro rychlost, zrychlení a jerk nastavit stejně jako u reálného pohonu.
KROK 3 – PŘÍMÉ ŘÍZENÍ OS Když jsou osy na počáteční poloze (pro jistotu chvíli počkáme), pokračujeme částí, která obstará kruhový pohyb. K tomu budeme potřebovat funkční bloky SMC_FollowPosition, které umožňují přímé ovládání os zadáváním požadované polohy (pozor, neprobíhá žádné ověření smysluplnosti požadavku!!). Až bude pohyb dokončen, použijeme k deaktivaci pohonů bloky MC_Stop. Celé to může vypadat například takto:
Signál Done z bloků MC_MoveAbsolute
KROK 4 – KRUHOVÁ INTERPOLACE Teď se pustíme do tvorby bloku, který bude počítat požadovanou polohu v reálném čase (v příkladu označen jako CircleInterpolator), jak jsme odvodili v poznámce o parametrickém vyjádření a průběhu parametru.
OEM solution
7
Kruhová interpolace s LMC078 a kartézskými osami V prvním cyklu, kdy se dostane interpolační blok na řadu ověříme, zda je cílový úhel vyšší než počáteční (pokud ne, tak je prohodíme), vypočítáme si potřebné parametry a provedeme přepočet do úhlové míry. Nakonec ověříme zda stihneme dosáhnout požadované maximální rychlosti (případně ji omezíme).
Když je vše připraveno aktivujeme příznak q_xStartFollow, který nám aktivuje řízení os bloky SMC_FollowPosition. Když jsou bloky SMC_FollowPosition aktivní můžeme se pustit do výpočtů podle teorie v poznámce.
Když pohyb dosáhne konce nebo je rychlost záporná (v ideálním spojitém světě dosáhne rychlost nulu v okamžiku dosažení koncové pozice) můžeme deaktivovat SMC_FollowPosition bloky a vydat signál q_xDone, že byl pohyb dokončen.
OEM solution
8
Kruhová interpolace s LMC078 a kartézskými osami
POZNÁMKA 3 – SLOŽENÉ OBRAZCE (BONUS) Podobným způsobem lze vykreslit jakoukoliv křivku, kterou lze parametricky popsat, případně lze složitější tvar rozdělit do více úseků a vykreslovat je po sobě. Důležité je, aby byla v přechodech mezi jednotlivými částmi zachována minimálně spojitost rychlostí (a z toho plynoucí omezenost zrychlení). Můžeme chtít vykreslit například následující tvar:
Délka vykreslované půlkružnice: Délka úsečky: Křivku rozdělíme na 4 části a všechny je parametricky popíšeme: 1) Levý půlkruh 2) Spodní úsečka 3) Pravy půlkruh 4) Horní úsečka
OEM solution
9
Kruhová interpolace s LMC078 a kartézskými osami Nyní upravíme rovnice, tak aby včechny popisovali příslušné části obrazce pro parametr . Dostaneme tedy: 1) Levý půlkruh
2) Spodní úsečka
3) Pravy půlkruh
4) Horní úsečka Program bude v podobný jako v případě kruhového oblouku, jen bude mít několi fází v závislosti na parametru.
Vše naleznete v přiloženém příkladu pro software SoMachine.
OEM solution
10
Kruhová interpolace s LMC078 a kartézskými osami
Schneider Electric CZ, s. r. o.
Schneider Electric Slovakia, s. r. o.
U Trezorky 921/2 – 158 00 Praha 5 Zákaznické centrum Tel.: 382 766 333 E-mail:
[email protected]
Karadžičova 16 – 821 08 Bratislava Zákaznícke centrum Tel.: 02 4552 4010 E-mail:
[email protected]
www.schneider-electric.cz
www.schneider-electric.sk
OEM solution
02 – 2016. S1545CZ_03
©2016 Schneider Electric. Všechna práva vyhrazena. Všechny ochranné známky jsou ve vlastnictví 11 společnosti Schneider Electric Industries SAS nebo jejích přidružených společností.