MC_PositionProfile, MCP_PositionProfile – Generování trajektorie (poloha)

Symboly blokůPotřebná licence: MOTION CONTROL
PIC PIC

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(x) = a5x5 + a4x4 + a3x3 + a2x2 + a1x + a0, přičemž na začátku časového intervalu je x = 0, a na konci x = 1. Koeficienty ai 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: 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 2: 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 a/nebo poloze. 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 3: 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ámka 4: Pokud na konci profilu je nenulová rychlost, osa se pohybuje dál touto rychlostí (to je v souladu se specifikací PLCopen ).

Poznámka 5: pokud je parametr alg=1 nebo alg=5 nebo alg=9 je možné nechat pole times prázdné (popř. nepřipojený vstup) a pak zadávat celou vačku v poli values, kde první sloupec jsou časové okamžiky, druhý sloupec polohy, třetí (nepovinný) sloupec rzchlosti, čtvrtý (nepovinný) sloupec zrychlení.

Vstupy

uAxis

Odkaz na osu (přípustné je jen spojení RM_Axis.axisRefuAxis nebo yAxisuAxis)

Reference

Execute

Náběžná hrana aktivuje blok

Bool

alg

Typ interpolace  2

Long (I32)

1 ....

tabulka čas/hodnota (interpolace polynomem 3. řádu)

2 ....

hodnoty ve stejném intervalu (interpolace polynomem 3. řádu)

3 ....

interpolace polynomy 5. řádu

4 ....

polynomy 5. řádu s ekvidistantními intervaly

5 ....

tabulka čas/hodnota + počáteční a koncová derivace

6 ....

hodnoty ve stejném intervalu + počáteční a koncová derivace

7 ....

hodnoty ve stejném intervalu (aproximace B-splinem 3. řádu)

8 ....

hodnoty ve stejném intervalu (aproximace B-splinem 5. řádu)

9 ....

tabulka čas/hodnota (lineární interpolace)

nmax

maximalni počet intervalů/bodů profilu  3

Long (I32)

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)

uTimes

vektor s časovými hodnotami

Reference

uValues

vektor s hodnotami polohy nebo koeficienty polynomů

Reference

BufferMode

Režim převzetí osy

Long (I32)

1 ....

Aborting (nový blok se spustí okamžitě)

2 ....

Buffered (nový blok se spustí po dokončení předchozího)

3 ....

Blending low (nový blok se spustí po dokončení předchozího, původní pohyb skončí s nižší rychlostí z obou bloků)

4 ....

Blending high (nový blok se spustí po dokončení předchozího, původní pohyb skončí s vyšší rychlostí z obou bloků)

5 ....

Blending previous (nový blok se spustí po dokončení předchozího, původní pohyb skončí se svojí koncovou rychlostí)

6 ....

Blending next (nový blok se spustí po dokončení předchozího, původní pohyb skončí s počáteční rychlostí nového bloku)

BeginVelocity

počáteční hodnota rychlosti (jen alg=5 nebo 6)

Double (F64)

EndVelocity

koncová hodnota rychlosti (jen alg=5 nebo 6)

Double (F64)

Výstupy

yAxis

Odkaz na osu (přípustné je jen spojení RM_Axis.axisRefuAxis nebo yAxisuAxis)

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

i ....

obecná chyba systému REXYGEN

Příklad
PIC

PIC

2023 © REX Controls s.r.o., www.rexygen.com