RM_AxesGroup – Skupina os pro koordinované řízení pohybu

Symbol blokuPotřebná licence: COORDINATED MOTION
Qt SVG Document Exported by REXYGEN Studio uChain refGroup refPos State ErrorID RM_AxesGroup

Popis funkce

Blok RM_AxesGroup je základní blok skupiny os pro koordinovaný pohyb. Představuje sdílenou strukturu, kde jsou uloženy všechny stavy a parametry skupiny. Algoritmus tohoto bloku představuje kontrolu nastavených mezí, havarijní zastavení v případě potřeby, předávání dat do a z bloků RM_Axis podřízených os, přepočet všech stavů a výstupů pro případ, že žádný blok není aktivní, ale je potřeba generovat pohyb (např. zastavení v PCS a částečně i algoritmus pro generování požadované trajektorie). Výstupem tohoto bloku jsou pouze stavové a pomocné signály (viz dále).

Před spuštěním koordinovaného pohybu je nutné ke skupině (bloku RM_AxesGroup) připojit jednotlivé osy (spuštěním bloku MC_AddAxisToGroup pro každou osu), přiřadit kinematickou transformaci (spuštěním bloku jednoho z bloků MC_SetKinTransform_Xxx) a skupinu povolit (spuštěním bloku MC_GroupEnable).

Další důležité administrativní bloky pro řízení stavu skupiny os jsou MC_GroupReset (smaže chybu, tj. přepíná skupinu ze stavu ErrorStop do stavu Standstill), MC_GroupDisable (přepíná skupinu os do stavu PowwerOff) a MC_UngroupAllAxis (ruší všechna nastavení, tj. odebere osy, odebere kinematickou transformaci, přepne do stavu PowwerOff).

Implicitní hodnoty parametrů (zejména limity na rychlost a zrychlení) jsou záměrně nastaveny na 0, což je nedovolená hodnota. Všechny parametry tak musí nastavit uživatel podle skutečných možností připojeného motoru a stroje.

Víme, že blok RM_AxisSpline může být v rychlejší úloze než blok RM_Axis a pak se musí provádět interpolace polohy a rzchlosti. Podobně bloky RM_Axis mohou být v rychlejší úloze než RM_AxesGroup a pak je potřeba provádět interpolaci. Interpolaci je potřeba provádět v rychlejší úloze (tj. v blocích RM_Axis), ale režim interpolace se zadává v bloku RM_AxesGroup parametrem InterpolationMode.

Vektortové parametry min a max jsou nepovinné. Pokud jsou zadány, zadávají se ve stejném formátu jako poloha skupiny (tj. např. parametr Position bloku MC_MoveLinearAbsolute). Tento formát je definován kinematickou transformací, tj. blokem MC_SetKinTransform_Lin nebo podobným (tj. MC_SetKinTransform_Xxx). Pohyb je zastaven (a blok RM_AxesGroup přejde do stavu ErrorStop, pokud hrozí překročení hodnoty v kterékoliv souřadnici. Rotační souřadnice se ale nekontrolují.

Poznámka: U omezení na rychlost otáčení (parametr VelRot) je základní jednotka radián za sekundu. Připojená kinematická transformace však může změnit jednotku pro zadávání úhlu (např. na úhlové stupně nebo otáčky) a pak se rychlost zadává v těchto jednotkách za sekundu. Stejné pravidlo platí pro zrychlení a jerk, tj. parametry AccRot a JerkRot.

Parametry

Velocity

Maximální povolená rychlost [unit/s]

Double (F64)

Acceleration

Maximální povolené zrychlení [unit/s2]

Double (F64)

Jerk

Maximální povolená změna zrychlení [unit/s3]

Double (F64)

VelRot

Maximální povolená rychlost otáčení [rotunit/s]

Double (F64)

AccRot

Maximální povolené zrychlení v otáčení [rotunit/s2]

Double (F64)

JerkRot

Maximální povolená změna zrychlení v otáčení [rotunit/s3]

Double (F64)

InterpolationMode

Algoritmus pro interpolaci  2

Long (I32)

1 ....

linear (poloha interpolována lineárně, rychlost jako derivace polohy, zrychlení 0, tj. rychlost je po částech konstantní funkce se skoky)

2 ....

cubic spline (poloha je polynom 3. řádu vypočtený na základě polohy a rychlosti na začátku a konci intervalu, rychlost je derivace polohy, zrychlení derivace rychlosti)

3 ....

quintic spline (poloha je polynom 5. řádu vypočtený na základě polohy, rychlosti a zrychlení na začátku a konci intervalu, rychlost je derivace polohy, zrychlení derivace rychlosti)

4 ....

cubic Bspline aproximation (poloha je polynom 3. řádu vypočtený na základě dvou poloh před a dvou poloh za aktuálním intervalem, proložená funkce nemusí přesně procházet zadanými body, rychlost je derivace polohy, zrychlení derivace rychlosti)

5 ....

quintic Bspline aproximation (poloha je polynom 5. řádu vypočtený na základě tří poloh před a tří poloh za aktuálním intervalem, proložená funkce nemusí přesně procházet zadanými body, rychlost je derivace polohy, zrychlení derivace rychlosti)

6 ....

all linear (poloha, rychlost i zrychlení jsou interpolovány lineárně navzájem nezávisle, tj. rychlost neodpovídá přesně derivaci polohy a zrychlení neodpovídá přesně derivaci rychlosti)

7 ....

all cubic (poloha i rychlost jsou interpolovány polynomem 3. řádu navzájem nezávisle, tj. rychlost neodpovídá přesně derivaci polohy)

8 ....

reservováno pro pozdější použití

9 ....

reservováno pro pozdější použití

min

Minimální poloha v MCS (vektor). Při překročení kterékoliv souřadnice je pohyb zastaven a blok přejde do stavu ErrorStop  []

Double (F64)

max

Maximální poloha v MCS (vektor). Při překročení kterékoliv souřadnice je pohyb zastaven a blok přejde do stavu ErrorStop  []

Double (F64)

Výstupy

refGroup

Odkaz na skupinu os

Reference

refPos

Vektor generovaných poloh a rychlostí v MCS

Reference

iState

Stav skupiny

Long (I32)

0 ....

Disabled (skupina blokována)

1 ....

Standby (skupina připravena)

2 ....

Homing (hledání výchozí polohy)

6 ....

Moving (koordinovaný pohyb)

7 ....

Stopping (zastavování nebo dočasné blokování)

8 ....

Error stop (zastavování nebo blokování skupiny po chybě)

ErrorID

Výsledek poslední operace

Error

i ....

obecná chyba systému REXYGEN

Stavový diagram skupiny os
image/svg+xml

Čtení z výstupu refPos
Z výstupu refPos bloku RM_AxesGroup lze číst aktuální polohu a rychlost (stejně jako pomocí bloků MC_GroupReadActualPosition, MC_GroupReadActualVelocity; zrychlení zde není vyčíslováno a musí se použít MC_GroupReadActualAcceleration). Výstup refPos je vektorový, pro získání konkrétních hodnot je nutné použít blok VTOR z knihovny MATRIX. Tento blok má 8 výstupů. Pokud je souřadnic více než 8, vyřeší se to paralelním připojením dalšího bloku VTOR (viz. Obr. níže) do kterého je nutné zadat jako parametr správný offset (od jakého indexu se mají dát data na výstup). Např. robot AGEBOT (jeho sestavení jako skupiny os viz. níže) má čtyři osy. Bude mít tedy čtyři souřadnice pro polohu a rychlost. Jedním blokem VTOR získáme informaci o poloze a rychlosti (výstupy y1 y4 a y5 y8 bloku VTOR1).

image/svg+xmlskupina_os_reference [skupina_os] VTOR2 uVecy1y2y3y4y5y6y7y8 VTOR1 uVecy1y2y3y4y5y6y7y8 RM_AxesGroup refGrouprefPosiStateErrorID

Sestavení skupiny os
Pro správné spuštění bloku generujícího víceosý pohyb je nutné definovat jednotlivé osy RM_Axis a postupně je všechny přidat do skupiny os pomocí bloku MC_AddAxisToGroup. Dále je třeba nastavit kinematickou transformaci (dle typu stroje jeden z bloků MC_SetKinTransform_xxx). Nakonec je třeba aktivovat skupinu os blokem MC_GroupEnable. Pro pohyby v PCS je nutné ještě přidat kartézkou transformaci (blok MC_SetCartesianTransforms). Zpět do výchozího stavu (tj. před přiřazení os do skupiny) se skupina dostane spuštěním bloku MC_UngroupAllAxis. Příklad sestavení osy je uveden na obrázku níže.

image/svg+xmlpøidání jednotlivých os do skupiny os zavedení jednotlivých os zavedení skupiny os zrychleni_z_generatoru4 [pozadovana_poloha_pro_motor_menic4] zrychleni_z_generatoru3 [pozadovana_poloha_pro_motor_menic3] zrychleni_z_generatoru2 [pozadovana_poloha_pro_motor_menic2] zrychleni_z_generatoru1 [pozadovana_poloha_pro_motor_menic1] skupina_os_reference [skupina_os] skupina_os [skupina_os] rychlost_z_generatoru4 [pozadovana_poloha_pro_motor_menic4] rychlost_z_generatoru3 [pozadovana_poloha_pro_motor_menic3] rychlost_z_generatoru2 [pozadovana_poloha_pro_motor_menic2] rychlost_z_generatoru1 [pozadovana_poloha_pro_motor_menic1] rych4 [aktualni_rychlost_z_motoru_menice4] rych3 [aktualni_rychlost_z_motoru_menice3] rych2 [aktualni_rychlost_z_motoru_menice2] rych1 [aktualni_rychlost_z_motoru_menice1] poloha_z_generatoru4 [pozadovana_poloha_pro_motor_menic4] poloha_z_generatoru3 [pozadovana_poloha_pro_motor_menic3] poloha_z_generatoru2 [pozadovana_poloha_pro_motor_menic2] poloha_z_generatoru1 [pozadovana_poloha_pro_motor_menic1] pol4 [aktualni_poloha_z_motoru_menice4] pol3 [aktualni_poloha_z_motoru_menice3] pol2 [aktualni_poloha_z_motoru_menice2] pol1 [aktualni_poloha_z_motoru_menice1] osar2 [osa2] osa4_reference [osa4] osa4 [osa4] osa3_reference [osa3] osa3 [osa3] osa2_reference [osa2] osa1_reference [osa1] osa1 [osa1] RM_Axis4 HLDActualPosActualVelocityActualTorqueLIMNLIMZLIMPaxisRefCommandedPositionCommandedVelocityCommandedAccelerationCommandedTorqueiStateErrorID RM_Axis3 HLDActualPosActualVelocityActualTorqueLIMNLIMZLIMPaxisRefCommandedPositionCommandedVelocityCommandedAccelerationCommandedTorqueiStateErrorID RM_Axis2 HLDActualPosActualVelocityActualTorqueLIMNLIMZLIMPaxisRefCommandedPositionCommandedVelocityCommandedAccelerationCommandedTorqueiStateErrorID RM_Axis1 HLDActualPosActualVelocityActualTorqueLIMNLIMZLIMPaxisRefCommandedPositionCommandedVelocityCommandedAccelerationCommandedTorqueiStateErrorID RM_AxesGroup1234 refGrouprefPosiStateErrorID MC_Power4 uAxisEnableyAxisStatusBusyActiveErrorErrorID MC_Power3 uAxisEnableyAxisStatusBusyActiveErrorErrorID MC_Power2 uAxisEnableyAxisStatusBusyActiveErrorErrorID MC_Power1 uAxisEnableyAxisStatusBusyActiveErrorErrorID MC_GroupEnable_1234 uAxesGroupExecuteyAxesGroupDoneBusyErrorErrorID MC_AddAxisToGroup_O4 uAxesGroupuAxisExecuteIdentInGroupyAxesGroupyAxisDoneBusyErrorErrorID MC_AddAxisToGroup_O3 uAxesGroupuAxisExecuteIdentInGroupyAxesGroupyAxisDoneBusyErrorErrorID MC_AddAxisToGroup_O2 uAxesGroupuAxisExecuteIdentInGroupyAxesGroupyAxisDoneBusyErrorErrorID MC_AddAxisToGroup_O1 uAxesGroupuAxisExecuteIdentInGroupyAxesGroupyAxisDoneBusyErrorErrorID MCP_SetKinTransform_Agebot uAxesGroupExecuteyAxesGroupDoneBusyErrorErrorID CNB3 on CNB2 on CNB1 on CNB1 on CNB 1

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