MC_PositionProfile, MCP_PositionProfile – Generování trajektorie (poloha)
Symboly blokůPotřebná licence: MOTION CONTROL
Popis funkce
Bloky MC_PositionProfile a MCP_PositionProfile mají naprosto shodnou funkci,
jediným rozdílem je, že MCP_ varianta bloku má méně vstupů a potřebné konstanty se
zadávají jako parametry bloku.
Blok MC_PositinProfile generuje takovou trajektorii, aby poloha byla požadovaná funkce času. Existují dvě možnosti, jak tuto funkci zadat:
1. tabulkou: zadávají se dvojice čísel čas a poloha. Mezi jednotlivými časy se poloha interpoluje polynomem třetího řádu (lineární interpolace není v tomto případě vhodná, protože na okrajích intervalu by byl skok v rychlosti). Hodnoty času (v sekundách) se zadávají do pole/parametru times, příslušné hodnoty polohy do pole/parametru values . Posloupnost časových okamžiků musí být stoupající a musí začínat od 0 (resp. může začínat i zápornými hodnotami, ale profil se vykonává od času 0).
2. polynomy: celá funkce se v časové ose rozdělí na několik intervalů a pro každý interval se zadá aproximující polynom pátého řádu. Časové intervaly se definují jako v předchozím případě v poli times. Polynom pro každý interval je ve tvaru , přičemž na začátku časového intervalu je , a na konci . Koeficienty jsou uloženy v poli values ve vzestupném pořadí (tj. pole values obsahuje 6 hodnot pro každý časový interval). Tato metoda umožňuje snížit počet intervalů a pro určení koeficientů polynomů existuje speciální grafický editor.
Pro obě varianty je možné zvolit rozdělení na stejně dlouhé intervaly. pak je v poli times jen počáteční (obvykle 0) a koncový čas.
Poznámka 1: Přestože vstup/odkaz TimePosition je v PLCopen označen jako povinný, není zde použit, protože všechna potřebná data jsou uložena v parametrech bloku.
Poznámka 2: Parametr values musí být ve všech případech vektor - nesmí to být matice, tj. jednotlivé hodnoty nesmí být odděleny středníkem (lze použít mezeru nebo čárku).
Poznámka 3: Nesprávný parametr cSeg (větší než skutečná velikost polí times a/nebo values) vede k nedefinovanému chování, v krajním případě nestandardnímu ukončení aplikace (závisí to na mnoha okolnostech, použití tohoto bloku v SIMULINKu vede k pádu MATLABu).
Poznámka 4: V režimu zadání funkce polynomem je pátého řádu a nelze to nijak měnit. Polynomy na sebe musí hladce navazovat, jinak dochází ke skokům v rychlosti. Vzhledem ke komplikovaným výpočtům je doporučeno v tomto režimu vždy používat existující speciální grafický editor.
Poznámka 5: Block neobsahuje tzv. ramp-in mode. Pokud tedy rychlost nebo poloha osy v okamžiku spuštění profilu neodpovídá počáteční rychlosti a poloze profilu, blok skončí s chybou -707 (skok v rychlosti nebo poloze). Tomuto problému s rychlostí lze předejít, pokud se použije BufferMode=BlendingNext. Skok v poloze se musí řešit správně nastaveným parametrem Offset .
Poznámka6: Pokud na konci profilu je nenulová rychlost, osa se pohybuje dál touto rychlostí (to je v souladu se specifikací PLCopen ).
Vstupy
uAxis | Odkaz na osu (přípustné je jen spojení RM_Axis.axisRef–uAxis nebo yAxis–uAxis) | Reference |
Execute | Náběžná hrana aktivuje blok | Bool |
TimeScale | Konstanta násobení pro přepočet časové osy profilu | Double (F64) |
PositionScale | Konstanta násobení pro přepočet hodnotové osy profilu | Double (F64) |
Offset | Aditivní konstanta pro přepočet hodnotové osy profilu | Double (F64) |
BufferMode | Režim převzetí osy | Long (I32) |
|
|
|
Výstupy
yAxis | Odkaz na osu (přípustné je jen spojení RM_Axis.axisRef–uAxis nebo yAxis–uAxis) | Reference |
Done | Příznak dokončení algoritmu | Bool |
CommandAborted | Příznak přerušení funkce bloku | Bool |
Busy | Příznak, že algoritmus ještě neskončil | Bool |
Active | Příznak, že blok řídí osu | Bool |
Error | Příznak chyby | Bool |
ErrorID | Výsledek poslední operace | Error |
|
|
|
Parametry
alg | Typ interpolace 2 | Long (I32) |
|
|
|
cSeg | Počet segmentů profilu 3 | Long (I32) |
times | Posloupnost hraničních časů jednotlivých segmentů [0 30] | Double (F64) |
values | Hodnoty veličiny nebo koeficienty interpolačních polynomů (a0, a1, a2, ...) [0 100 100 50] | Double (F64) |
Příklad
[Předchozí] [Na začátek] [Výše] [Další]
2020 © REX Controls s.r.o., www.rexygen.com