Vítejte u prvního dílu seriálu o kontroleru LinuxCNC, s jehož pomocí si v průběhu seriálu vytvoříme prostředí pro řízení našeho číslicového řízeného (NC – Numerical Control) stroje. Číslicové řízení slouží především k automatizaci strojů. To znamená, že místo klasického ručního ovládání, jsou stroje ovládány abstraktně programovanými příkazy. Takový stroj může vykonávat širokou škálu úkonů. Ať už se jedná o soustruh, frézku, vrtačku nebo na příklad 3D tiskárnu, jejich řízení je v principu stejné. Základem pohybu mohou být například krokové nebo servo motory, které přes pohybové ústrojí řízeného stroje, přeměňují jeho pohyb na pohyb rotační nebo pusuvný.

Řídící architektura

Abychom mohli řídit pohyby jednotlivých motorů musíme nějakým způsobem regulovat elektrické signály, které nám do motoru vstupují. Tyto signály nám pomáhá regulovat zařízení jménem driver. Spolu se zdrojem napětí je na něj napojena nějaká řídící jednotka, například PC, na které běží specializovaný software, který posílá driveru řídící instrukce, většinou přes paralelní nebo ethernetový port. Právě tímto softwarem bude náš LinuxCNC.
Každý driver obdrží dva nezávislé pulzní signály. Jeden signál mu říká v jakém směru má ovládat daný motor a druhý jakou rychlostí se má motor pohybovat.

Takto vypadá řídící architektura:

LinuxCNC

LinuxCNC, někdy uváděn pod starším názvem EMC (Enhanced Machine Controller), byl původně vyvinut Národním Institutem pro standardy a technologie (NIST) USA. Prošel určitým vývojem, byl vypuštěn jako open-source a v součastnosti za ním stojí poměrně velká skupina dobrovolných vývojářů. Ve světě CNC strojů má nepochybně své místo a obrací na sebe víc a víc pozornosti. Není to jen kontroler pro hobby frézky, ale svým návrhem je velice robustní a díky tomu je použit v hojné míře na velkých, komerčních CNC strojích. Pojďme si shrnout nějaké základní informace, které byly převzaty přímo ze stránek komunity LinuxCNC – https://www.linuxcnc.org :

  • LinuxCNC řídí CNC stroje. Může řídít frézky, soustruhy, 3D tiskárny, řezání laserem nebo plasmou, robotická ramena hexapody a další.
  • Jako vstup přijímá G-kód
  • Poskytuje PLC programovaní pomocí ladder diagramů
  • Běží pod Linuxem, může používat real-time rozšíření
  • Aktivní uživatelská a vývojářská komunita
  • V základu má několik GUI (grafických uživatelských rozhraní)
  • Je kompatibilní s řadou populárních hardwarových rozhraní pro řízení strojů
  •  Podporuje operace jako řezání závitů, poloměrová korekce, automatickou výměnu nástrojů (ATC) a další

První bod jsme naťukli už v úvodu. Můžete řídit prakticky jakkýkoliv reálný stroj. LinuxCNC může simultánně pohybovat až 9 osami. Většinou jsou trajektorie a rychlosti posuvů předem známé a jsou předány do LinuxCNC ve formě G-kódu. Jak G-kód pracuje a jak ho vytvořit se dozvíme v jiném článku podrobněji. Pro začátek bude stačit, že je to sada instrukcí, která stroji říká kam a jakou rychlostí se má posunout a otočit. Samozřejmě můžeme přidávat jednotlivé instrukce i za běhu. Další možností by bylo použití PLC prostředí a naprogramování logiky pomocí žebříčkového diagramu (ladder diagram). Tomu bychom se také měli v budoucnu věnovat.

Software lze nainstalovat na určité verze Debianu a Ubuntu. Můžeme si buď z flash-disku nabootovat rovnou .iso obraz verze, kde je LinuxCNC předinstalován nebo si můžeme stáhnout zdrojový kód přímo z gitHubu a poté ho nainstalovat. V příští lekci si ukážeme jak na to. Bude nutné si ještě doinstalovat real-time kernel, který zajistí, že instrukce splní určitý časový limit (deadline) jí vyhrazený. Kdybychom ho neměli, mohlo by se stát, že určitá aplikace běžící na počítače dostane přednost a pro řízení důležitá instrukce nesplní limit pro vykonání. S real-time kernelem ale dostávají instrukce větší prioritu, když se jejich deadline bude blížit.

Velkou výhodou je velice aktivní uživatelská komunita. Když si s něčím nevíte rady a obrátíte se s dotazem na fórum https://forum.linuxcnc.org/, většinou někdo během chvíle někdo zareaguje a pokud nevyřeší váš problém, minimálně ho s vámi začne řešit. Kdyby někdo chtěl zabřednout do jeho tajů opravdu podrobně, může nahlédnout do dobře zpracované dokumentace (v angličtině), kterou lze najít zde: http://linuxcnc.org/docs/devel/pdf/LinuxCNC_Documentation.pdf . Má téměř 900 stran, takže bych řekl, že je to ideální četba před spaním.

Uživatelské prostředí

Můžeme použít několik připravených uživatelských rozhraní (GUI). Buď jako klasické desktopové aplikace nebo i v dotykové verzi.
Nicméně pokud si chceme udělat vlastní GUI nebo stroj ovládat například z příkazového řádku, je pro nás připravené API (programové prostředí), které je vytvořeno v pythonu. Jsou v něm připraveny funkce, které nám z prostředkují ovládání mezi PC a strojem. V průběhu si seriálu si ukážeme, jak toto můžeme zrealizovat.

Ukázka připraveného uživatelského prostředí axis:

To by jako úvod stačilo. Příště si ukážeme jak LinuxCNC nainstalovat a spustit.