Stránka 1 z 2

Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 18. 3. 2013, 5:55
od yaqwsx
Po dlouhé době jsem dal projekt, kterým jsem se v poslední době zabýval, do prezentovatelné podoby. Zabývá se řízením CNC stroje z pohledu dynamiky pohybu. S tímto projektem se hlásím do letošního ročníku SOČ a když už jsem tu viděl i nějaké jiné zmínky o SOČ, řekl jsem si, že se taky musím pochlubit :D

Navrhl jsem a realizoval jsem řídicí systém (tedy spíše technické démo - viz dále) pro CNC stroj, který používá pro akceleraci S-křivky. Zároveň je však schopen limitovat i maximální ryv (jerk) - např. narozdíl od EMC. Výše uvedné jsem schopen limitovat jak na lineárním pohybu, tak i na pohybu po oblouku. Také jsem si pohrál a implementoval korekci nástroje. Tolik k teorii.
Pro účely demonstrace projektu jsem natočil následující video, které má oslovit především publikum "CNC nepolíbené": http://www.youtube.com/watch?v=ZfNcF--LarA. Pokud vás můj projekt zaujal, můžete si přečíst mou práci: https://dl.dropbox.com/u/39138503/SO%C4%8C.pdf. V případě zájmu mohu nahrát i další videa techničtějšího charakteru - ukazují chování systému s různými nastaveními.

Jak jsem uvedl výše, projekt ve stádiu technického dema a tam jej i zanechám - názorňuje demonstruje to nejdůležitější - možnosti řízení CNC stroje z pohledu dynamiky, avšak pro nasazení do praxe mu chybí spousta funkcionality. Zabralo by obrovském kvantum času ji doplnit. Tento projekt jsem bral spíše jako možnost vyzkoušet si něco nového a nabrat další zkušenosti.

Budu rád za jakékoliv připomínky/podněty/návrhy na vylepšení, atd.

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 18. 3. 2013, 6:20
od packa
ahoj vypadá to velice zajímavě , dej sem nějaký ukázky vlastního prostředí ,jaké používáš rozhraní ? jaké to umí g kody ? pod čím to chodí ??

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 18. 3. 2013, 7:07
od yaqwsx
Systém běží pod Windows, resp. pod Androidem. Aplikace pro počítač funguje jako uživatelské rozhraní. Také vytváří kompenzaci nástroje, počítá mezní rychlost a generuje příkazy pro interpolátor, se kterým komunikuje přes USB. A proč zmiňuji Android? Původně jsem si pohrával s myšlenkou nahradit počítač levným čínským tabletem, který by se dal velice elegantně zakomponovat do ovládacího panelu. Tato aplikace existuje ve velmi raném stádiu. Tehdá jsem se ještě nevzdával myšlenky na nasazení systému do ostré praxe.
Interpolátor je postaven na ARM mikroprocesoru STM32F407. Ten provádí výpočet pohybu a generuje výstupní step-dir signály. V počítači se hlásí jako vendor-specified zařízení a komunikuje pomocí bulk-endpointů. Veškeré výpočty probíhají v kombinované aritmetice (jak floating, tak fixed-point) - tak abych dosáhl požadovaného kompromisu mezi přesností a rychlostí výpočtu.
V současné verzi podporuje systém tyto G-kódy: G00, G01, G02, G03, G20, G21, G40, G41, G42, G43, G44, G49.

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 18. 3. 2013, 7:23
od packa
když jsi to dotáhnul až sem tak je přece škoda to nedotáhnout dál , myslím že by jsi našel dost příznivců,
a třeba i spolupachatelů k dalšímu rozvoji :)

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 18. 3. 2013, 7:25
od bobik
Sakra, čéče, klobouk dolů. Jestli tohle je SOČ, tak jsem upřímně zvedavý na tvoji diplomku.

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 18. 3. 2013, 7:27
od robokop
tak to jako diplomku dodelej a po skole mas o zivobyti postarano

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 18. 3. 2013, 7:36
od prochaska
Fakt moc pěkné. Gratulace a klobouk dolů :-)

Jen jsem moc nechápal princip vzniku rázů při přechodu z přímého pohybu na tečný oblouk. Hledal jsem tam graf průběhu rychlosti (a derivací) v tom okolí přechodu přímka/oblouk, abych to pochopil, ale nenašel. Skoro bych doporučil tam ten graf přidat, dokonce hned dva grafy -- jeden pro kombinaci pohyb v X - oblouk - pohyb v Y (rozepsaný po složkách XY nebo aspoň jednu složku, ta druhá je logicky symetrická). Druhý by byl stejný, ale pro obecnou polohu těch pohybů (tj. šikmo, oblouk 1/4 kruhu, tečně šikmo).

EDIT: ještě jedna formální: žádné "můj systém" ale chtělo by to vymyslet jméno :-)

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 18. 3. 2013, 8:59
od testone
to je bomba, až se mi nechce věřit že je to práce gymnazisty
doporučuju prvních pár kapitol té práce dát sem na forum jako povinnou četbu pro začátečníky
ušetřilo by to spoustu dotazů na základy (i mých :D )

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 19. 3. 2013, 9:51
od ledvinap
Klobouk dolu, uz jsem videl podstatne horsi obhajene diplomky.

Par poznamek (snad bude pochopeno jako konstruktivni kritika ;-) ):

linuxcnc (drive emc2, zmenil se nazev kvuli ochranym znamkam) v oficialni verzi S-krivky nepodporuje(nebo jsem si nevsimnul zmeny), pouziva konstantni akceleraci, ale umi motion blending pro dva segmenty.

v bode 4.4 je tvuj postulat prilis tvrdy - pro omezeni ryvu (nejak jsem si zvyknul z anglictiny na jerk ... jak se vlastne jmenuji v cestine dalsi derivace?) staci mit omezenou derivaci akcelerace. Sin ma vyhodu, ze se jedna o hladkou funkci (existuji a jsou omezene vsechny derivace), ale takovych funkci je vic(treba polynom pateho stupne). Nejak me nenapada, proc by sin byla 'idealni'.
Lepsi by byla formulace „Pokud má zrychlení sinusový průběh, bude pohyb bez rázů." (nebo tak nejak)

V praci jsem si vsimnul nekolika predpokladu, ktere nemusi byt vzdy splneny. Byva to zdrojem tezko odhalitelnych chyb v limitnich pripadech, je treba si davat hodne pozor (treba motion blending v linuxcnc se ladil hodne dlouho)
[musim letet, jeste doplnim]

(preklep: zvládá jak pro lienární, tak i obloukový pohyb.)

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 19. 3. 2013, 10:12
od lubos
Moc pěkné, hodně štěstí. Je pravda že z mnohého VŠ maníka by toto nevypadlo ani náhodou.

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 19. 3. 2013, 11:22
od Josef
Na SOČ je to hooodně vysoko postavená laťka. Doufám, že bude po zásluze oceněna. Když člověk ještě zjistí, že to není student strojní průmky, ale gymnazista, tak opravdu klobouk dolů! Chlapče, pokud rozdělíš zájmy tak, že polovinu necháš pro baby a druhou se budeš věnovat takovýmhle věcem, tak to zřejmě někam dotáhneš. Ať nejsem za vola, někdy těm babám můžeš krátkodobě věnovat i více. Ale věz, že tím se neživíš...

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 19. 3. 2013, 2:04
od fupe
Moooc pekny,
taky bych chtel bejt chytrej. Ze sem se lip neucil.
Jak už tu zaznelo, videl sem hromadu slabsich diplomek nez je tohle. Obávám se že se to týká i té mé. :-)
Martin

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 19. 3. 2013, 2:55
od yaqwsx
Děkuji za reakce a cenné podněty!
ledvinap píše:Par poznamek (snad bude pochopeno jako konstruktivni kritika ;-) ):
Zajisté - konstruktivní kritiku potřebuji. Práci jsem totiž sepisoval celkem pod časovým stresem, abych to všechno stihl. Plánuji ji zatím v této podobě nechat; až v případě dalšího postupu bych některé pasáže přepsal (už mám určitý seznam).

To prochaska:
Díky za připomínku. Tenhle graf chybí a asi by byl vhodý. Když je člověk do toho ponořený, tak mu nepřijde, že takové věci chybí. Původně jsem chtěl tento graf nachystat a poslat ho sem, ale trochu teď nestíhám, tak snad v budoucnu dodám. Zkusím probém tedy popsat slovně. Představ si, že máš pohyb konstatní rychlostí po přímce, která navazuje na oblouk. Neprobíhá zde žádné zrychlování ani zpomalování. Jakmile dojedeš na konec úsečky, musíš začít okamžitě působit dostředivým zrychlením Ad = v^2/r. A zde vzniká ráz. Tomu nelze zabránit jinak než zastavením a postupným rozjetím se.
Můj systém je jenom provizorní označení - nad názvem jsem v průběhu vývoje nějak nepřemýšlel a jakmile jsem začal psát, tak mě opustila múza a nepřišel jsem s dostatečně "cool" názvem. Tohle je ale jeden z restů, které rozhodně chci napravit :D

To ledvinap:
1)Ohledně LinuxuCNC - mám v hlavě bordel; z jejich dokumentace a fóra nejsem vůbec moudrý. Díky za info ohledně názvu - z diskusních fór jsem pochopil, že je to přesně naopak - LinuxCNC je zastaralý název a EMC2 je nový. Tohle musím do další verze práce opravit.

2)Pokud omezím maximální ryv, tak tím vlastně omezuji derivaci zrychlení (vyplývá to z definice ryvu/jerku - mě osobně k srdci přilnul elegantní český název). Se sinem je to má chyba - vyznívá to jinak než jsem to zamýšlel (tuhle část mám v plánu také přepsat). V předcházející sekci píšu, že vyhovující křivkou je libovolnou taková, která je tečná na začátku s konstatní funkcí y=v0 a na konci s funkcí y=V (V je požadovaná rychlost). Křivku 1-cos x, která tuto podmínku splňuje, jsem si vybral, jelikož je jednoduše matematicky vyjádřitelná a dobře se pracuje s její derivací a integrací. Samozřejmě by šla použít i polynominální křivka, ale tam už bych rozhodně nedosáhl tak "pěkných" vztahů. Pojmem idální jsem měl na mysli špíše to, že se s ní dobře pracuje a nemá žádné záludnosti po matematické stránce. Ostatně i slovo postulát asi nebylo nejvhodnější - "když ono ale zní tak věděcky!" :D

3)Mohl by jsi mi poslat seznam těchto předpokladů? Rád bych se na ně mrkl a zkusil nad němi zapřemýšlet. Předpokládám, že motion blending znamená navazování pohybů z hlediska rychlosti (tedy např. nepřerušeného zrychlování při tečně navazujících obloucích). Můj systém nemá zcela dořešený motion blending - je schopný zrychlovat pouze v rámci jednoho úseku pohybu. Pokud by tedy mému systému byl předložen pohyb složený ze spousty tečně nevazujících oblouků a byla zadána dostatečně vysoká rychlost, zrychloval by "schodkovitě" - na každém úseku by zrychloval podle samostatné S-křivky, nikoliv pomocí jedné "velké", rozprostřené mezi jednotlivé úseky.

4) Překlepů je v práci stále požehnaně ačkoliv už prošla dvěma korekturami. Mám pocit, že ty písmenka snad sama nahodile přeskakují...
Josef píše:Chlapče, pokud rozdělíš zájmy tak, že polovinu necháš pro baby a druhou se budeš věnovat takovýmhle věcem, tak to zřejmě někam dotáhneš. Ať nejsem za vola, někdy těm babám můžeš krátkodobě věnovat i více. Ale věz, že tím se neživíš...
Beru si k srdci!

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 19. 3. 2013, 4:17
od packa
EMC2 je původní starý název dnes je LINUX CNC

Re: Můj projekt - Návrh řídicího systému CNC stroje

Napsal: 19. 3. 2013, 6:48
od prochaska
yaqwsx píše:To prochaska:
Díky za připomínku. Tenhle graf chybí a asi by byl vhodý. Když je člověk do toho ponořený, tak mu nepřijde, že takové věci chybí. Původně jsem chtěl tento graf nachystat a poslat ho sem, ale trochu teď nestíhám, tak snad v budoucnu dodám. Zkusím probém tedy popsat slovně. Představ si, že máš pohyb konstatní rychlostí po přímce, která navazuje na oblouk. Neprobíhá zde žádné zrychlování ani zpomalování. Jakmile dojedeš na konec úsečky, musíš začít okamžitě působit dostředivým zrychlením Ad = v^2/r. A zde vzniká ráz. Tomu nelze zabránit jinak než zastavením a postupným rozjetím se.
Já jsem si to zkusil představit. Když pojedu v X konstantní rychlostí a začnu opisovat čtvrtkruh, stále stejnou obvodovou rychlostí, tak mi v čase t = 0 .. pi/2 klesne x-ová složka rychlosti na nulu Vx = cos(t) a pak už zůstane nulová, zrychlení bude Ax = -sin(t) a pak se skokem vrátí do nuly, takže ryv (to jsem ještě nikdy před tím neslyšel :-) ) bude -cos(t), ale v čase pi/2 bude nekonečně velký, což nelze, takže se to zpětně projeví na překmitu rychlosti x do mínusu? Chápu to dobře?