Rozjezd a doběh KM

Uživatelský avatar
CZ_Pascal
Příspěvky: 884
Registrován: 14. 1. 2008, 8:24
Bydliště: Brno

31. 1. 2009, 9:23

PavelZ píše:Na EMC Documentation Wiki je toto
........
........
Což chápu tak, že se sice s implementací uvažuje, ale zároven se zde tvrdí, že časově nejsou optimální.
Ani bych to nenazval tak ze časově nejsou optimální, ale jsou mírně pomalejší za cenu přesnější trajektorie a podstatně menšího opotřebení stroje.
Je to stejné jako byste tvrdil ze konstantni akcelerace a decelerace není časově optimální. No ono máte pravdu že není protože časové optimální je pouze okamžitý skok na požadovanou rychlost, ale to zase není fyzicky realizovatelné. Kazdopadne rychlostní rozdíl mezi optimální rychlostí a rychlostí s konstantní akcelerací je řádově větší než rozdíl mezi konstantní akcelerací a plynulou akcelerací.
PavelZ
Příspěvky: 356
Registrován: 10. 3. 2008, 11:48
Bydliště: Praha

31. 1. 2009, 4:55

Procházel jsem zdroják EMC a myslím, že by se to možná dalo zkusit. Teda, abych byl přesnější, potřebovalo by to názor někoho, kdo se poměrně dobře orientuje ve vzájemných závislostech mezi jednotlivými částmi EMC.
Našel jsem tu část, kde je naprogramován Trajectory Planner. Je to teda docela masakr, když člověk vidí, co všechno se musí v této části řešit, hlavně spojité navazování pohybů (CV režim). Problém je, že pokud by se jednalo pouze o úpravu této části, nebylo by to až tak nereálné. Po první shlédnutí stačí patřičně upravit funci v tp.c
int tpRunCycle(TP_STRUCT * tp, long period)
Pokud by se to ale neblaze prolínalo s ostatními moduly, taková sranda by to nebyla.
Uživatelský avatar
Krutor
Sponzor fora
Příspěvky: 1029
Registrován: 2. 12. 2008, 8:58
Bydliště: Moravské Bránice
Kontaktovat uživatele:

1. 2. 2009, 8:13

No já o jiném než konstantním zrychlení neuvažuju, se svou průměrnou znalostí matematiky a programování jsem se docela slušně zapotil i při implementaci vzorečku s=1/2*a/t^2 :-) Obzvláště krokování zrychleného pohybu po kružnici už byl (aspoň pro mě) docela oříšek. Ale funguje mi to.

Ten svůj jazyk sem brzy dám, ať se pobavíte. Nebudu ho překládat do žádného mezikódu, prostě ho budu přímo interpretovat na kroky KM.
Uživatelský avatar
CZ_Pascal
Příspěvky: 884
Registrován: 14. 1. 2008, 8:24
Bydliště: Brno

1. 2. 2009, 10:37

Krutor píše:...... při implementaci vzorečku s=1/2*a/t^2 :-) Obzvláště krokování zrychleného pohybu po kružnici už byl (aspoň pro mě) docela oříšek. Ale funguje mi to.
No mozna pokud nebudete zastavovat "na nulu" mel byste zrejme do vzorecku pouzit i rychlost v a ne jen zrychleni a.
s= v*t + 1/2*a/t^2
Uživatelský avatar
Krutor
Sponzor fora
Příspěvky: 1029
Registrován: 2. 12. 2008, 8:58
Bydliště: Moravské Bránice
Kontaktovat uživatele:

1. 2. 2009, 1:38

Tak jestli to opravdu někoho zajímá, tak zde je definice mojeho vlastního jazyka. Je to vymyšlené pro můj konkrétní CNC soustruh. Vím, že to nesplňuje žádné zásady pro tvorbu programovacích jazyků, není to s ničím kompatibilní a určitě by to mohlo umět spoustu dalších věcí, ale cílem byl prostě co nejjednodušší a nejintuitivnější jazyk, který by postihoval to, co potřebuji, a přitom by se mi dobře implementoval. Na škole jsme se sice učili nějaký ty gramatiky a přepisovací pravidla a základy překladačů, ale já už z toho nic nevím, tak to budu dělat tak nějak humpolácky, jenom aby to fungovalo.

Jak jsem již psal, budu to přímo interpretovat na kroky KM, žádný mezikód. Nejtěžší věci jako krokování lineárního a kruhového pohybu a čtení DXF souboru už mám hotové.

To CZ_Pascal: Samozřejmě používám vzoreček zahrnující nenulovou počáteční rychlost, rozhodně nemíním brzdit na nulu na konci každé entity, když třeba další entita pokračuje ve stejném směru.
Přílohy
jazyk_pro_CNC_soustruh.txt
(4.99 KiB) Staženo 389 x
prochaska
Sponzor fora
Příspěvky: 8350
Registrován: 16. 7. 2006, 12:33
Bydliště: Praha Bohnice + Roudnice nad Labem
Kontaktovat uživatele:

1. 2. 2009, 2:08

Připomínky:

- chybí #include, #if, ... :-)

- Nepoužíval bych implicitní rychlost. Musí být někde dána, alespoň v nejaké sekci 'defaults' a chybí-li, hlásí se syntax error.

- doporučuji doplnit příkaz 'fillet' který vloží zaoblení mezi dva přímé úseky. Jasně, vím, že to znamená všechno předělat, ale proč nemít ten jazyk koncipovaný jako definice dráhy --> užití ve výkonném příkazu.

Pro zasmání připojuji vlastní (nedokončenou) definici jazyka z dob kdy jsem myslel, že tudy vede cesta :-) BTW, všechno co je v té definici je naprogramované na úrovni translátoru do G-kódu (v Delphi).
Přílohy
popis jazyka.txt
(12.07 KiB) Staženo 389 x
Aleš Procháska
Uživatelský avatar
Krutor
Sponzor fora
Příspěvky: 1029
Registrován: 2. 12. 2008, 8:58
Bydliště: Moravské Bránice
Kontaktovat uživatele:

1. 2. 2009, 2:21

Díky za cenné připomínky, samozřejmě jsem zapomněl dodat, že až praxe ukáže, jaké všelijaké další příkazy budu ještě potřebovat. Pak odběhnu do jiného kouta dílny a hbitě doprogramuji :-)
prochaska
Sponzor fora
Příspěvky: 8350
Registrován: 16. 7. 2006, 12:33
Bydliště: Praha Bohnice + Roudnice nad Labem
Kontaktovat uživatele:

1. 2. 2009, 3:24

Že furt rýpu, to je cesta do pekel... Stanovíte si špatnou počáteční koncepci, ta se rychle saturuje a doprogramujete si leda okrajové drobnosti. Spíš si ten jazyk stanovte jako nějaký maximalistický a naprogramujte jen kousek. Zbytek můžete potom i změnit, ale bude na něj připravený robustní základ.

Příklad: stanovím si, že všude kde smí být číslo může být i libovolný výraz, ale zatím naprogramuju jen parsování přímé konstanty. Díky tomu se vystříhám například použití lomítka jako oddělovače protože je to vlastně rezerva na binární operátor...
Aleš Procháska
Uživatelský avatar
Radek-B
Příspěvky: 2137
Registrován: 13. 9. 2006, 11:09
Bydliště: V:Karlovice
Kontaktovat uživatele:

1. 2. 2009, 3:52

Tak to je opravdu cesta do pekel.
Kdysi jsem touzil po necem podobnem a myslel jsem si ze si pak parametricky naprogramuju nejcasteji pouzivane tvary jako treba kolecko , trojuhelnik, ctverecek. A podprogramy budu rzne volat a kombinovat.

Ale pak jsem velmi rychle zjistil ze je jednodussi nakreslit v cadu presne to co potrebuju a kod nechat na camu.

RADEK
modernizace/repase CNC strojů a zařízení
automatizace/konstrukce
Svoby
Příspěvky: 267
Registrován: 25. 1. 2008, 2:42
Bydliště: Lysa nad Labem
Kontaktovat uživatele:

2. 2. 2009, 10:03

pro Krutor: Vcem to programujes? A pro jakej system? Ja se chystam udelat neco podobnyho ,jen to nebude pro obrabeci stroj a budou tam jen dve osy. Ja navic planuju hw interpolator, akorat pro muj ucel potrebuju jen pohyb po primce,zadny kruznice apod. Komunikace po RS232 ,pak mozna USB.
Kdo nic nedela ,nic nesku...
Uživatelský avatar
Krutor
Sponzor fora
Příspěvky: 1029
Registrován: 2. 12. 2008, 8:58
Bydliště: Moravské Bránice
Kontaktovat uživatele:

3. 2. 2009, 5:47

Kdo četl pozorně, našel tam příkaz DXF, který umožňuje jet po polyline, nakreslené v DXF souboru. Toto je vlastně základ celého softu, ostatní věci jsou jenom jednoduché pohyby, které se nevyplatí kreslit v CADu.

Jinak celé je to poplatné tomu, že prostě potřebuji co nejrychleji začít CNC-obrábět, a nechce se mi potýkat s jiným softem. Opravdu nemám ambice vyvtořit něco dokonalého, je to přesně podle hesla "účel světí prostředky".

Programuji v historickém MS VC++ 6.0 pod Win98, kde je ještě přímý přístup k LPT.
k
Příspěvky: 814
Registrován: 12. 8. 2008, 12:00
Bydliště: Kosice SK

3. 2. 2009, 6:40

Krutor píše:
Jinak celé je to poplatné tomu, že prostì potøebuji co nejrychleji zaèít CNC-obrábìt, a nechce se mi potýkat s jiným softem.
Najrychlejsie je IMHO skusit startnut tam live CD s ubuntu a EMC. Za tych 20 min co stravite nad napalenim EMC live CD a jeho spustenim nedate az tak vela .. a mozno budete nakoniec spokojny. Usetrite si kopec (dlhsie trvajucej) prace na programovani vlastneho softu.

Pripadne ak EMC resp. G kod nebude pre vase pouzitie nieco mat, tak doprogramujete len konvertor povedzme DXF entit do G-cka. To je predsa len menej prace ako pisat cely soft uplne od zaciatku.

Uznavam ze sa Vam nexe do nejakeho noveho softu .. ale skuste to zobrat ako "pohram sa co tam vlastne na tom live CD je .." odskusajte si rozlicne predkonfigurovane stroje .. aspon na obrazovke. A mozno vas niektore funkcie EMC zmotivuju aj pri pisani vlastneho softu.
PavelZ
Příspěvky: 356
Registrován: 10. 3. 2008, 11:48
Bydliště: Praha

3. 2. 2009, 7:26

Krutor píše:Programuji v historickém MS VC++ 6.0 pod Win98, kde je ještě přímý přístup k LPT.
Jen pro informaci, jestli to děláte pod Woknama včetně přímého zápisu signálů Step/Dir na LPT, tak od toho nečekejte nic moc. Shodou okolností já také 50% softu dělám v MSVC6 a zrovna před rokem jsem to zkoušel podobnou cestou (včetně zápisu signálů na LPT, ale pod XP). V user modu se na dobrém PC dostanete na smyčce tak na 1ms, což je pro generování pulzů děsně moc. Pokud by jste se pustil cestou driveru v kernel módu, tak to trochu vylepšíte, ale také nic moc. Ani se nebudu zmiňovat o kvalitě (peridiocitě) signálů. Začínal jsem podobně jako vy, ale časem jsem skutečně zjistil, že cesta vede přes EMC (pro mne).
V žádném případě Vás ale nehodlám zrazovat, směle vyvíjejte a uvidíte.
Uživatelský avatar
Krutor
Sponzor fora
Příspěvky: 1029
Registrován: 2. 12. 2008, 8:58
Bydliště: Moravské Bránice
Kontaktovat uživatele:

3. 2. 2009, 3:08

Ohledně definice jazyka - je vidět, že někteří z vás jsou profesionální programátoři. Já ale nemám čas si s tím moc hrát, nicméně si věřím, že pro to, co od svého stroje chci, mi to dobře poslouží.

To K: S Linuxem nechci mít nic společného :-P

To PavelZ: Já od toho žádné zázraky nečekám, hlavně to nesmí ztrácet kroky, jinak rychlost posuvů mě netrápí. Nemusí to být bleskový soustruh, stačí když bude chvíli pracovat sám, umožní jiné než pravoúhlé tvary, zvládne co nejvíc operací na jedno upnutí a umožní opakovatelnost bez toho, že bych zblbnul z točení kličkama.
V kernelu teda programovat rozhodně neumím, ale dám tomu co největší prioritu, zbytek systému ať klidně stojí, na tom PC nic jiného nepojede.
prochaska
Sponzor fora
Příspěvky: 8350
Registrován: 16. 7. 2006, 12:33
Bydliště: Praha Bohnice + Roudnice nad Labem
Kontaktovat uživatele:

3. 2. 2009, 4:09

A co to napsat treba pro ARM? Interpolace by si trvale jela pod prerusenim konstantni rychlosti a hlavni smycka by ji jen predzvejkavala data a cpala je do nejakeho bufferu. Zadny system, nic - jen by se to holt muselo vybavit nejakym USB portem a cpat tam soubory z PC.
Aleš Procháska
Odpovědět

Zpět na „Krokové motory“