Kapitola 22
MC_COORD – Koordinované řízení pohybu

Tato kategorie bloků zahrnuje bloky pro koordinovaný pohyb více os, jak jsou definovány ve specifikaci PLCopen. Pro bloky této kategorie platí stejné obecné zásady, jaké byly uvedeny v kategorii MC_SINGLE (bloky pro řízení pohybu v jedné ose). Dále platí, že sdílená struktura AXES_GROUP_REF popisovaná v PLCopen je reprezentována blokem RM_AxesGroup.

Pohybové bloky jsou opět ve variantě s parametry na vstupech a v parametrech, tj. s prefixem MC_ a MCP_. Protože nelze dopředu říci, kolik bude souřadnic (je to parametr bloku RM_AxesGroup ), musí být údaje o poloze vektorové parametry, respektive vstupy (předpokládá to i norma PLCopen ). Pro variantu MC_ se na příslušný vstup připojí blok RTOV (popřípadě řetězec těchto bloků, pokud je vektor delší), který umožňuje složit vektor ze skalárních vstupů. Pro výstupní vektory se analogicky použije blok VTOR. Oba tyto bloky se nacházejí v knihovně MATRIX. V případě MCP_ varianty se příslušný vektor zapisuje přímo do bloku jako jeho parametr.

Rychlost, zrychlení, zpomalení a jerk se zadává skalárně (jedno číslo, nikoliv vektor) a je to vždy ve smyslu tečném k výsledné trajektorii. Hodnota se kontroluje jen při spuštění bloku (zda není větší, než zadané maximum v bloku RM_AxesGroup), takže v některých případech může být rychlost vyšší. Tyto limity se zadávají buď v absolutních jednotkách nebo relativně k parametrům v bloku RM_AxesGroup. Řídí se to hodnotou parametru LimitMode.

 RM_AxesGroup – Skupina os pro koordinované řízení pohybu
 RM_Feed – MC „krmič“
 RM_Gcode – CNC řízení pohybu
 MC_AddAxisToGroup – Přidání osy do skupiny os
 MC_UngroupAllAxes – Odebrání všech ose ze skupiny
 MC_GroupEnable – Převedení skupiny do stavu GroupStandby
 MC_GroupDisable – Převedení skupiny do stavu GroupDisabled
 MC_SetCartesianTransform, MCP_SetCartesianTransform – Kartézská transformace
 MC_ReadCartesianTransform – Přečtení použité kartézské transformace
 MC_GroupSetPosition, MCP_GroupSetPosition – Nastavení polohového offsetu skupiny os
 MC_GroupReadActualPosition – Aktuální poloha skupiny os
 MC_GroupReadActualVelocity – Aktuální rychlost skupiny os
 MC_GroupReadActualAcceleration – Aktuální zrychlení skupiny os
 MC_GroupStop, MCP_GroupStop – Zastavení koordinovaného pohybu
 MC_GroupHalt, MCP_GroupHalt – Zastavení koordinovaného pohybu (přerušitelné)
 MC_GroupInterrupt, MCP_GroupInterrupt – Přerušení pohybu skupiny os
 MC_GroupContinue – Pokračování v přerušeném pohybu
 MC_GroupReadStatus – Stav skupin os
 MC_GroupReadError – Chyby ve skupině os
 MC_GroupReset – Nulování chyb os ve skupině
 MC_MoveLinearAbsolute, MCP_MoveLinearAbsolute – Pohyb do pozice po přímkách (absolutní souřadnice)
 MC_MoveLinearRelative, MCP_MoveLinearRelative – Pohyb do pozice po přímkách (relativní souřadnice)
 MC_MoveCircularAbsolute, MCP_MoveCircularAbsolute – Pohyb do pozice po kružnicích (absolutní souřadnice)
 MC_MoveCircularRelative, MCP_MoveCircularRelative – Pohyb do pozice po kružnicích (relativní souřadnice)
 MC_MoveDirectAbsolute, MCP_MoveDirectAbsolute – Nekoordinovaný pohyb do pozice (absolutní souřadnice)
 MC_MoveDirectRelative, MCP_MoveDirectRelative – Nekoordinovaný pohyb do pozice (relativní souřadnice)
 MC_MovePath, MCP_MovePath – Generování obecné trajektorie v prostoru
 MC_GroupSetOverride, MCP_GroupSetOverride – Nastavení násobivých faktorů na osách ve skupině
 MC_SetKinTransform_Lin – Nastavení kinematické transformace
 MC_SetKinTransform_Arm – Nastavení kinematické transformace
Transformace a souřadné systémy

Transformace mezi polohou v kartézských souřadnicích a polohou motorů je obecně nelineární a není tak jednoduše možné určit, zda naplánovaná trajektorie nepřekračuje limity na rychlost a zrychlení v jednotlivých osách (motorech). Proto se provede vygenerování trajektorie dle zadaných parametrů a její spuštění. Pokud dojde k překročení limitu polohy, rychlosti nebo zrychlení v ose, skupina přejde do chybového stavu a spustí se zastavovací sekvence po původní trajektorii. Pokud přesto dojde k překročení systémového limitu polohy, rychlosti nebo zrychlení na některé z os, jsou všechny osy skupiny brzděny s maximální možnou intenzitou samostatně a tedy již ne po požadované trajektorii.

Norma PLCopen dále rozlišuje tři souřadné systémy. To, jaký souřadný systém se použije (tj. ve kterém je zadávána poloha) určuje parametr CoordSystem příslušného pohybového bloku. Možnosti jsou:

  • ACS (Axis Coordinate System) – V tomto souřadném systému jsou jednotlivé souřadnice přímo polohy jednotlivých motorů/připojených os.
  • MCS (Machine Coordinate System) – Pravoúhlý souřadný systém spojený se strojem. Předpokládá se, že tento souřadný systém obsahuje tři (popř. dvě pro planární stroje) na sebe navzájem kolmé osy pro určení polohy (tzv. kartézký souřadný systém; obvykle se používá pravotočivý) a dále až 3 souřadnice pro určení natočení koncového efektoru stroje. Pro reprezentaci směru/úhlu natočení se obvykle používá směrový vektor (tři souřadnice polohy, přičemž směr od bodu [0, 0, 0] k zadanému bodu určuje směr koncového efektoru) nebo tzv. eulerovy úhly (obdoba zeměpisné šířky, zeměpisné délky a azimutu na zeměkouli). Vazbu mezi MCS a ACS určuje kinematická transformace (tj. některý z bloků MC_SetKinTransform_xxx ), která tím pak také určuje jak je MCS definován.
  • PCS (Product Coordinate System) – Pravoúhlý souřadný systém spojený s výrobkem. Je to vlastně posunutý a otočený MCS. Někdy se PCS oproti MCS pohybuje. Vazbu mezi MCS a PCS zajišťuje (pro statický případ) blok MC_SetCartesianTransform

Níže uvedený obrázek ukazuje reprezentaci bodu P (ležícím na obrobku – červený lichoběžník) v různých souřadných systémech. V PCS je dán polohou PPCS = (xPCS,yPCS). Translací a rotací lze převést do MCS jako PMCS = (xMCS,yMCS). Nakonec může být popsán v ACS jako dvojice úhlů natočení os PACS = (ϕ1,ϕ2)

PIC

Pokud stroj nepracuje jen s polohou, ale i orientací/natočením, pro reprezentaci lze použít:

  • eulerovy úhly – Obdoba souřadnic na zeměkouli (tj. zeměpisná délka, zeměpisná šířka, azimut). Geometricky to představuje otočení souřadného systému podle osy Z o 1. úhel, potom podle nové osy Y o 2. úhel a nakonec podle nové osy X o 3. úhel. Výhoda je, že pro reprezentaci máme pouze 3 nezávislá čísla (ostatní reprezentace vyžadují více čísel, která mezi sebou mají nějakou vazbu). Nevýhoda je nejednoznačnost representace (zejména „na pólu“, ale někdy také vadí, že 3615o je totéž co 15o).
  • kvaternion – Obdoba komplexního čísla, ale má celkem 4 složky (1 reálnou a 3 imaginární). Pro vyjádření orientace se používají jen kvaterniony velikosti 1, tj. q12 + q22 + q32 + q42 = 1. Lze ukázat, že libovolnou orientaci lze získat jedním otočením z výchozí polohy o určitý úhel α okolo určité osy definované jednotkovým směrovým vektorem o = (o1,o2,o3). Geometrický význam kvaternionu je právě toto otočení ze základní polohy, přičemž q = (cosα) 2 ,o1 sinα) 2 ,o2 sinα) 2 ,o3 sinα) 2 ). Tato reprezentace se vždy používá interně. Výhoda je, že skládání otočení je násobení kvaternionu.
  • Rodriguez vektor – Vzhledem k tomu, že kvaternion je normován (jinak by to nebyla jednoznačná reprezentace), lze 1. složku vždy dopočítat ze zbylých 3, což je právě tato reprezentace. Je definována jako r = (o1 α,o2 α,o3 α), přičemž některé implementace zadávají úhel ve stupních a jiné v radiánech.
  • matice rotace – Matice rozměru 3x3, kde sloupce představují po řadě jednotkové vektory ve směru otočené osy X, otočené osy Y, otočené osy Z. Matice rotace se interně používá pro některé výpočty, protože skládání transformací představuje násobení matic. Nevýhoda je samozřejmě redundance zápisu a možnost vzniku nekonzistence.

Druhy pohybů

Generované pohyby lze rozdělit na dva základní druhy:

Pohyb z bodu do bodu (Point - to - Point movements)
– Při tomto pohybu se chceme dostat do zadané pozice co nejrychleji. To se provede tak, že se pomocí inverzní kinematiky spočte požadované natočení pohonu, které je nutné pro dosažení zadané pozice. Každý pohon se pak bude do této pozice řídit nezávisle na ostatních a to s maximální rychlostí a zrychlením nastavenými jako limity na osách. Pokud se budou takto pohybovat všechny osy, tak výsledná trajektorie mezi počátečním a koncovým bodem v MCS není definována. Je tedy nutné dát pozor, jestli je bezpečné tento blok použít. Použitelné bloky pro tento pohyb jsou:
Pohyb po dané trajektorii (Cartesian Path Movement)
– Podporované trajektorie jsou pohyb po přímce, po kružnici a po spline křivce. Trajektorie je vygenerována obecně v prostoru a následně převedena inverzní kinematikou do souřadnicového systému pohonů ACS. Takto přepočtenou trajektorii je pak již možné přivést jako požadovanou hodnotu na regulátory pohonů. Použitelné bloky pro tento pohyb jsou:

PIC

Míchání pohybů

Důležitá část při generování pohybu je navazování po sobě jdoucích pohybových příkazů na skupinu os (blending). Bez zapnutí blending módů provede skupina os vždy pohyb do požadované pozice, kde zastaví přesně na cílovém místě a uvede se do klidu. Následující pohyb se do této doby nespustí. Po zastavení je tedy nutné se opět znovu rozjet. V mnoha aplikacích může být toto neustálé zastavování a rozjíždění nežádoucí a pohyby je nutné nějak prokládat. Blending je vhodné použít například pro:

  • Zrychlení výroby.
  • Generování hladších trajektorií a tím zmenšení mechanického namáhání.
  • Některé aplikace vyžadují pohyby s konstantní rychlostí (např. nanášení lepidla, barvení, svařování, …)

Všechny výše uvedené příklady lze vyřešit použitím různých druhů blendingů. Společné pro všechny druhy je modifikace původní trasy v hladkou trajektorii bez rohů (zastavování). Na obrázku níže jsou uvedeny příklady některých možných navazování pohybu.

PIC

Přehled režimů převzetí osy

Tabulka režimů převzetí osy:



režim funkce


1: Aborting Start následujícího bloku okamžitě.


2: Buffered Start následujícího bloku ihned po dokončení předcházejícího
(dojde k zastavení pohybu).


3: BlendingLow Rychlost je proložena s menší z rychlostí obou bloků.


4: BlendingHigh Rychlost je proložena s vetší z rychlostí obou bloků.


5: BlendingPrevious Rychlost je proložena s rychlostí prvního bloku.


6: BlendingNext Rychlost je proložena s rychlostí druhého bloku.


Přehled režimů míchání pohybu

Tabulka režimů míchání pohybu:



režim funkce


1: TMNone Nevkládá žádnou přechodovou křivku.


2: TMStartVelocity Přechod s danou počáteční rychlostí.


3: TMConstantVelocity Přechod s danou konstantní rychlostí.


4: TMCornerDistance Přechod s daným corner distance.


5: TMMaxCornerDeviation Přechod s daným maximálním corner deviation.


11: Milanův režim Nový blok se spustí po dokončení předchozího,
původní pohyb skončí s počáteční rychlostí nového bloku.


Synchronizace

Pro správnou synchronizaci je nutné, aby se všechny osy (jejich bloky RM_Axis) přiřazené do jedné skupiny (k jednomu bloku RM_AxesGroup) byly buď před blokem RM_AxesGroup nebo až za ním. Aby byla jistota ohledně pořadí zpouštění bloků, jsou bloky RM_AxesGroup i RM_Axis vybaveny vstupem uChain. Tento vstup blok nijak nezpracovává, ale lze tam napojit libovolný signál a tím definovat pořadí zpouštění bloků. To je totiž v systému REXYGENvždy podle toku signálu. Pokud jsou bloky RM_AxesGroup a RM_Axis v jiném tasku (s jinou periodou) funguje podobný interpolační mechanismus jako mezi bloky RM_Axis a RM_AxisSpline. Pak pořadí zpouštění nelze zajistit. Konzistence dat je zajištěna jiným mechanismem, ale dochází ke zpoždění mezi generovanou hodnotou a její aplikací do motoru.

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