LinuxCNC na OrangePi

Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

5. 7. 2020, 1:31

Hraju si s provozem LinuxCNC (resp. Machinekit) na malé desce OrangePi PC s procesorem ARM.
Konkrétně mám tuhle desku: https://www.aliexpress.com/item/32448079125.html

Hrál jsem si s tím už kdysi, skoro přesně před 2 roky, viz viewtopic.php?p=288663#p288663

Mezitím se udály dvě dost podstatné změny.
Jednak došlo ke sjednocení větví Linuxu pro tyhle různé malé krabičky. Dřív byla jiná větev pro OrangePi a jiná třeba pro RaspberryPi. S tím, že to RPi bylo podporované výrazně líp, protože to používá víc lidí. Teď se ale tyhle větve sjednotily a tím pádem je i podpora pro OPi lepší.

Hlavní změna ale je, že jeden šikovný Rus napsal podporu LinuxCNC pro embedded procesor OpenRISC, který na téhle desce je.
https://cnc32.ru/orangecnc/

Trocha teorie: všechny tyhle malé desky (RPi, Opi atd.) nepoužívají holý procesor, ale vždy SoC, tedy System on Chip. Součástí je vždy několikajádrový procesor ARM, grafický procesor, nějaké linky GPIO, čítače, sériové porty a další věci.
No a SoC na deskách OPi (značky Allwinner) má kromě toho ještě integrovaný další pomocný procesor OpenRISC 1000.
Původní předpoklad výrobce asi byl, že bude řešit nějaké pomocné věci kolem řízení napájení. Tak to i dřív bylo. Ale nakonec to řízení přebralo samotné jádro Linuxu, takže se tenhle procesor v praxi k ničemu nepoužíval.

No a ten šikovný Rus se opravdu pochlapil a napsal stepgeny pro řízení DIR/STEP právě pro tento procesor. Pokud znáte třeba desky BeagleBoard od Texas Instruments, kde na tohle mají integrované procesory PRU, tak to je něco podobného.
Ten OpenRISC není na vlastním Linuxu nijak závislý, takže nějaké latence, které na Linuxu zákonitě jsou, u něho nehrají roli. No a protože styk mezi hlavním procesorem a tímhle OpenRISC je přes sdílenou paměť, tak vazba LinuxCNC na stepgeny je maximálně rychlá.

Před těmi 2 roky jsem si říkal, že pokud LinuxCNC na něčem malém, tak asi správná cesta bude spíš RaspberryPi. A to OPi jsem uložil do šuplíku.
Ale teď už si to nemyslím. Po těch výše zmíněných změnách si myslím, že OPi je lepší cesta. A cesta opravdu použitelná.

Co je slabší stránka toho ruského vývojáře, to je dokumentace. Možná i proto, že přece jen angličtina není jeho mateřský jazyk.
Takže křivka učení je (aspoň u mě) dost plochá. Trvalo mi celou včerejší noc (začal jsem ve 20:00, skončil v 05:30), než jsem konečně pronikl do toho jak případně upravit a vygenerovat firmware pro ten speciální procesor. A ještě stále tam mám jednu nejasnost, jak případně ten firmware měnit za chodu systému. Zatím vždy po nějaké programové změně musím přebootovat systém. To se samozřejmě při běžném používání neděje, ale při programování to docela zdržuje.
Navíc je to okořeněno tím, že on třeba nadělal do zdrojáku nějaké změny, ale ty nikde nepopsal, a zbytek systému s tím zatím nepočítá. Pokud už to má člověk v ruce, tak na to rychle přijde. Ale když na to poprvé čumí jak tele na nová vrata, tak je docela slušná komplikace.

Ke spotřebě a teplotě:
Tahle deska, navíc s připojenou klávesnicí a myší, bere v klidu mezi 2-2.5W, při maximální zátěži 2.5-3W. Něco z toho si vezmou periferie (ta kláveska a myš), něco měniče, a trochu i paměť. Na vlastní SoC připadá při plné zátěži tak kolem 2W, řekl bych. Takže to je výkon, který je třeba uchladit.
Je to obecný problém podobných malých desek. Ty 2W jsou sice prd, ale je to na jednom chipu, takže ho to celkem zahřeje.
Aby se ten procesor nepřehřál, tak o to se stará jádro Linuxu. Je tam governor, který hlídá teplotu. Pokud by narostla moc vysoko, tak zasáhne a sníží rychlost procesoru a případně i napájecí napětí. Je možné použít různé strategie toho governoru, od těch nejúspornějších třeba jen pro nějaké monitorování, až po ten nejvýkonnější, který se používá i pro CNC.
Je dobré ten governor nenechat do toho moc kecat, protože to přepnutí frekvence něco trvá (kolem 2ms), a v té chvíli LinuxCNC vyhlásí chybu real-time. Ta sice asi nic moc nezpůsobí a obrábění jede dál, nicméně je dobré se toho vyvarovat.

Já jsem zatím nalepil na procesor maličký chladič 14x14x5mm. Měl jsem ho v šuplíku, koupil jsem ho v nějaké sadě pro RPi. Je to ta nejmenší velikost chladiče, která ještě vůbec má nějaký smysl. Ten chladič sice sníží tepelný odpor, ale zase naopak ta samolepka, kterou je přilepený, ho zvýší. Takže přínos takového chlazení je minimální. Odhadem to vychází na tepelný odpor někde kolem 22-25K/W.
Objednal jsem si z Číny už trochu větší chladiče 20x20x15mm, ty už by mohly trochu něco uchladit. Tam už by mohl tepelný odpor vyjít někde na 10-15K/W.

S tímto malým chladičem je teplota chipu v plné zátěži mezi 70-75C. V klidu má kolem 55C. Procesor snese 110C, takže je to v bezpečné oblasti. Měří se přímo teplota křemíku, nikoli teplota pouzdra. Takže měření je přesné.
Defaultně ta deska byla nastavená na rychlost 1386MHz. Pak už teplota při obrábění lezla nad 75C, a na této teplotě vždy zasáhl governor a stáhl rychlost na 1296MHz. Teplota spadla, on to zase zvýšil na těch 1386MHz.
Ale to se mi nelíbilo, a tak jsem nastavil maximum na 1296MHz. Výsledkem je, že od té chvíle governor už nikdy nezasáhl.
Zkusil jsem provozovat LinuxCNC pokusně i na nejnižší možné rychlosti 480MHz, a jede i tak.
Pokusně jsem nad desku přidal i ventilátor. Použil jsem z procesoru nějakého starého PC, ty jsou na 12V. Pustil jsem ho na 5V, takže se jenom tak líně točil. Teplota spadla na nějakých 55C.

S tou teplotou souvisí ještě jedna věc. Nastavuje se nezávisle rychlost hlavního procesoru (to je těch 1296MHz) a toho pomocného procesoru, který dělá stepgeny. Tam je maximálka 450MHz. No a při testech (hodně náročných) se mi občas stalo (tak jednou za půl hodiny), že se rozpadla komunikace se stepgeny. Musel se shodit a nahodit LinuxCNC. Zjistil jsem, že při nižší teplotě se to nestává (s tím ventilátorem).
Tak jsem využil toho, že už umím upravit firmware pro ten speciální procesor a nastavil jsem mu rychlost 400MHz. Je to stále mnohem víc, než je nezbytně třeba. Ale už je to v oblasti, kde teplota nehraje roli a tak už systém nepadá. Fajn.

Testuju to jen na stole, nemám k tomu připojenou reálnou frézku. Tím pádem si můžu dovolit tam nastavit docela drsné podmínky. Takže tam spouštím několikahodinové 3D frézování při rychlosti F12000. Generuje to STEP o frekvenci kolem 200kHz. A ty průběhy vypadají opravdu pěkně, kroky mají tvar 1:1.
Chystám teď na to tester, který připojím na signály DIR/STEP, abych ověřil, že to generuje správné průběhy. Ale ještě to nemám hotové.

Takže tolik k současnému stavu. Objednám si ještě jednu desku na pokusy.
Protože mě to zaujalo, tak pro to časem udělám malou oddělovací desku, která se nacvakne pod to OPi (nikoli nad, ale pod, aby to nebránilo případnému chladiči nad deskou). Rád bych na ni dal výstupy na 4 krokáče, 2xPWM pro nějaké vřeteno nebo laser, 2 silové výstupy, 8 galvanicky oddělaných vstupů a RS485 pro připojení měniče.
Největší problém bude na tak malou desku dostat tolik konektorů, řekl bych.
StoupaCZ
Příspěvky: 540
Registrován: 2. 6. 2017, 8:12

5. 7. 2020, 7:00

Díky Mexi, vypadá to hodně dobře. Ten Rus píše, že to zvládne pulzy až 400kHz :shock:. Jsem zvědavý na další testy.
Sieg SX4, Interkrenn IKD-400, Vernier Minishape 28
Uživatelský avatar
slezak77
Příspěvky: 1152
Registrován: 1. 6. 2012, 6:45

5. 7. 2020, 7:11

Oba palce nahoru.
I když tomu rozumím minimálně, po dlouhé době jsem si přečetl něco zajímavého. Toho rusa jsem taky študoval, ale moc nepobral, tak jsem rád, že je tady někdo, kdo se o to začal zajímat. A to vyloženě do hloubky.
Mexi Díky Ti a Perun s Tebou...
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

5. 7. 2020, 7:35

Velmi zajimave
Pises o nekolikahodinovem obrabeni 3d
Bezelo ti to i s nahledem 3d drah nastroje?
RPi s tim melo prpblem diky sw vykreslovani to vpodstate neslo pouzit. Zajima me zda je toto pouzitelne.
Dlsi vec jsou analogove pohony. Existuje tam i klasicky pwmgen?
A dalsi otazkou je, umi to i ethercat? Je tam vhodna sitovka? Nebo tam jde pripojit ten ethercat shield?
Vsechna prava na chyby vyhrazena (E)
testone
Sponzor fora
Příspěvky: 7174
Registrován: 3. 12. 2010, 5:56
Bydliště: Slaný

5. 7. 2020, 7:37

palec nahoru Mexi
Obvykle se dějí věci obvyklé. Méně často se dějí věci neobvyklé a zcela vyjímečně se dějí věci vyjímečné...
Masturn 40 CNC, Hermle UWF1200H CNC a pár klasik
http://www.radialengine.cz" onclick="window.open(this.href);return false;
http://www.autopejsek.cz" onclick="window.open(this.href);return false;
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

5. 7. 2020, 10:31

Díky všem za reakce.
Zatím jen stručně, podrobněji případně večer.

Ano, mělo by to zvládat snad až 400kHz. Já jsem to nakrmil konfigurací pro svou frézku, mikrokrokování jsem dal 2x jemnější než používám v reálu, maximální rychlost jsem nastavil na 12m/min, a stejně se vejdu do nějakých 200kHz.
Ale večer tomu zkusím ještě víc zasolit.

Ano, "obrábění" jelo s vizualizací. Graficky to zvládá slušně, za jízdy se to dalo zoomovat, natáčet atd. Opravdu docela použitelné.
Jezdil jsem g-kód se 150 tis. řádky a 300 tis. řádky. To bylo v pohodě. Jednou jsem zkusil i g-kód s 1.2 mil. řádků. Jelo to, ale v průběhu obrábění pak začal ukončovat ostatní programy, protože už se nevešel do paměti. Proto to chce koupit verzi s 1GB paměti, ne ty s 0.5GB.

Jestli pojede EtherCAT nevím. Ale síťovku to má přímo v HW toho SoC, není to přes USB jako to měly starší RaspberryPi. Takže kdo ví, možná by se to mohlo povést. Určitě pro to ale nebude napsaný ten speciální driver, který hoši z Etherlabu napsali pro těch několik síťovek.

K PWMgen: v té verzi, která se dá stáhnout jako předvařené řešení, není vůbec obsluha PWM. V přiložených demech to má nakonfigurované přes base-thread, který tam rozjíždí jen kvůli tomu.
Ale v nové verzi firmware pro ten speciální procesor už to PWM dodělal. To je právě to, o čem jsem psal, že udělá nějakou změnu na jednom místě a nijak to nepopíše. Pak to nejede s předchystanými drivery a člověk na to čumí jak puk. Zatím jsem se nedíval, jestli k tomu napsal i tu druhou stranu, tj. driver do LinuxCNC. Ale i kdyby ne, tak už bych možná věděl jak to udělat svépomocí.

Jinak obecně k těm dotazům na "vyšší HW", jako je EtherCAT nebo analog. Myslím, že je třeba k tomu přistupovat jako k extrémně levnému řešení pro malé stroje. Obrovská výhoda jsou ty stepgeny, díky kterým se dá dosáhnout parametrů, jakých přes LPT (tj. bez nějaké Mesy) asi nelze dosáhnout snad na žádném PC hardware. Uplatnění bych asi nehledal v nějakých několikatunových strojích s kilowattovými servy.
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

5. 7. 2020, 10:42

Velmi zajimave. Diky za doplneni. Myslim ze to pujde i na velky stroj, ty parametry se zdaji byt slusne.
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
zz912
Příspěvky: 1348
Registrován: 25. 5. 2008, 7:16

7. 7. 2020, 7:36

Chystám teď na to tester, který připojím na signály DIR/STEP, abych ověřil, že to generuje správné průběhy. Ale ještě to nemám hotové.
Budeš ochotný se podělit o know how tohoto testeru? Už delší dobu přemýšlím o tom, že by se mi něco takovéhi líbilo. Přece jenom ojíždět mašinu a vyrábět zmetky, jenom kvůli testu spolehlivosti řídícího systému je takové ........

Dále bych se chtěl zeptat, proč jsi se rozhodl jít cestou softwarovým generováním kroků, když se Ti v šuplíku válí Mesa 7i96 ?

Včera jsem na svou Mesu 7i96 zapojil už dvě osy X a Y, se kterýma jsem už nějak jezdil. Dneska mě čeká zapojení osy Z, koncáků a relátka na vřeteno. Je to jednoduchá mašinka, víc tam nic není. Každopádně mohou nastat 2 situace.

a) Opět to bude náhodně po pár hodinách blbnout, tudíž bude chyba někde v PC + linuxCNC. (Vše ostatní je už nové) Říkal jsem si že bych zkusil z Peter C. Wallace dostat instalaci na Raspbery + Mesa 7i96. Když jsme si psali ohledně něčeho jiného, tak se zmínil o tom, že mu to na Rawspbery běhá.

b) Bude to fungovat fantasticky. Ovšem i tak, nebudu moci pomoci kamarádům a rozchodit jim LinuxCNC, protože ten počítač, co teď mám, je "něco" nedefinovatelného.

Na velké projekty jsem si sehnal garanta projektu a tam už svůj problém se svou programátorsko-elektrikářskou negramotností už požaduji za vyřešený. Ovšem mám i kamarády, kteří nemají tak velký rozpočet, ale zase jejich mašinky jsou spíše hračky.

No a teď k mé otázce. Nemaluji si to moc růžově s nějakým jednodeskovým PC?

Finančně vychází MESA 7i96 + Rawspberry podobně jako legální licence MACHu.
(Když se dobře sežene)
https://www.alza.cz//raspberry-pi-4-mod ... gKkXvD_BwE

Takže cena by byla akceptovatelná. Ovšem co si nejvíce slibuji od jednodeskového PC, tak že by to mohla být jedna "součástka", která když bude zlobit, tak se vezme a vymění za jinou, stejnou. Tudíž by to byl "jeden" problém. Otázka je, jak dlouho bude takový jednodesková PC na trhu, než ji někdo zase zmodernizuje?

Co jsem tady z fóra vyčetl, tak jediný problém s jednodeskovým PC je v zobrazování náhledu drah. Na druhou stranu, tento problém, lze vyřešit velmi jednoduše jejich vypnutím. Existují nějaká další omezení?

Už tady bylo více vláken, o jednodeskových PC, ale vždy to někdo zabil s tím, že on má MB někde ze šrotu, stála ho desetinu toho co Rawsbery a je daleko výkonější. Ovšem, už se nezmínil tím, že se elektronice a programování věnuje X let a to na dost vysoké úrovni. Pro nás Lamy, kteří zjišťovali celý den co je to za výrobce počítačů MB, tudy cesta nevede.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

7. 7. 2020, 5:58

zz912 píše: 7. 7. 2020, 7:36
Tester:
*********************
Mám desku s procesorem STM32F407 (nějaký dev-kit, dostal jsem to myslím dokonce grátis na nějaké výstavě) s připojeným malým LCD displejem 2x16 znaků. Mám to zadrátované jenom jako bastl na kontaktním poli. Už jsem se mockrát chystal to udělat nějak pěkně na hotovo, ale vždycky se najde něco důležitějšího.

Mám to ve dvou verzích, ale chtěl bych ještě třetí (a tu už snad dám opravdu na tišťák a do krabičky).
Zatím mám verzi, která funguje se stepgeny typu 0 (tj. běžnými DIR/STEP). Ale dělá to pomocí SW, takže rychlost je omezena na nějaké nízké stovky kHz.
Pak mám druhou verzi, který už to čítá pomocí HW a umí tak i rychlosti v řádech MHz. Ale ta zase funguje jen na stepgeny typu 2 (tj. quadrature).
Zatím jsem používal buď první verzi na testování LPT, tam je rychlost s velkou rezervou dostatečná. Nebo druhou na testování Mesy, tam ale zase můžu nastavit ten stepgen typu 2 a čítat tak i vysoké rychlosti.

Jenže to řešení na OrangePi už umí hodně vysoké rychlosti, ale umí jen stepgen typu 0. Asi by se tam dal dopsat i ten stepgen typu 2, bylo by to ale hodně práce. To už je lepší a univerzálnější dotáhnout raději ten tester.

Proč jsem zkusil OrangePi když mám Mesu:
**********************************************************
Já těch Mes mám dokonce víc (PCI verzi 5i25, LPT verzi 7i90, Ethernet verzi 7i96). Jenže mě baví hlavně to rozjíždět a testovat, nikoli pak s tím rutinně obrábět. ;-)

No a to řešení na OrangePi je prostě nová výzva.
Je na tom krásné to, že je to kompletní řešení na jedné extrémně levné desce. Ta hračka stojí 15 USD, poštovné až na stůl necelých 7 USD. A je to deska o velikosti trochu přerostlé vizitky.

Navíc si od toho slibuju i další potenciál. Proto mi jde to rozjíždění trochu pomaleji, protože to nechci jen používat, ale chci se naučit to programovat a ohýbat to.
Ten potenciál vidím v tom, že je to levný kompletní počítač s Linuxem, včetně připojení na displej, síť, klávesnici atd. To se pro uživatelské rozhraní do nějaké technologie (i třeba úplně jiné než CNC) hodí. Ale kromě toho Linuxu je tam právě i ten univerzálně použitelný další procesor, na kterém se pak dá udělat řízení nějakých nestandardních nebo rychlých periferií.
No a tahle kombinace, navíc za cenu 500Kč, mi přijde opravdu zajímavá.

RaspberryPi a Mesa:
**********************************
No nevím. Aby sis nevzal z obou táborů kombinaci toho špatného.
Každopádně rozjet LinuxCNC na nějakém jednodeskovém stroji s procesorem ARM je složitější a potenciálně problematičtější než na PC.
U toho OPi to může mít smysl proto, že je to levné a kompletní řešení včetně stepgenů.
Ale u RPi už to není až tak levné, a navíc k tomu ještě potřebuješ tu Mesu. Takže ve výsledku to bude dost drahé, bude to dost elektroniky a případně přibudou problémy s tím, že je to ne-PC platforma.
Ale zrazovat Tě samozřejmě nechci, je to jen taková úvaha nahlas.

Jo - a pěkně tomu RaspberryPi komolíš jeho jméno. Aby se malina nenaštvala. ;-)
Uživatelský avatar
zz912
Příspěvky: 1348
Registrován: 25. 5. 2008, 7:16

7. 7. 2020, 9:25

Díky za odpověď.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Uživatelský avatar
zz912
Příspěvky: 1348
Registrován: 25. 5. 2008, 7:16

8. 7. 2020, 7:31

Mex píše: 7. 7. 2020, 5:58 To už je lepší a univerzálnější dotáhnout raději ten tester.
Plánuje vedení MexLab uvolnit tento výrobek i pro věřejnost? Měl bych zájem i o Beta verzi.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

8. 7. 2020, 7:51

Pripravek tedy pocita pulzy?
To preci kazdy normalni driver ukazuje na displayi 😉 (pokud se tedy nebavime o tech ultra low cost) a tam uz je to zase, rekl bych, jedno....
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
zz912
Příspěvky: 1348
Registrován: 25. 5. 2008, 7:16

8. 7. 2020, 8:28

robokop píše: 8. 7. 2020, 7:51 Pripravek tedy pocita pulzy?
Ideálně pro 3 až 5 os ideálně s možností nastavení přepočtu SCALE unit/pulze.

Pro mnoho lidí neocenitelná věc. Ztrácí se mi pulzy v řídícím systému, nebo v krokáčích bez zpětné vazby?

Kdybych takový přípravek měl v minulosti, tak bych možná nemusel měnit krokáče s driverama.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

8. 7. 2020, 4:14

robokop píše: 8. 7. 2020, 7:51 Pripravek tedy pocita pulzy?
To preci kazdy normalni driver ukazuje na displayi 😉 (pokud se tedy nebavime o tech ultra low cost) a tam uz je to zase, rekl bych, jedno....
Který driver krokáčů ukazuje požadovanou polohu na displeji?
A který to umí logovat do souboru?
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

8. 7. 2020, 4:57

tak i tech krokacovych par je ale o tech se tu par let nebavim :lol:
Vsechna prava na chyby vyhrazena (E)
Odpovědět

Zpět na „LinuxCNC - drive pod nazvem EMC2“