ATC pre cincinnati Arrow

Odpovědět
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

8. 2. 2017, 5:29

Postupne riešim veci na mojej frézke Arrow500. Teraz je treba rozchodiť automatickú výmenu nástrojov.
Zásobník po mechanickej stránke je hotový, funguje komplet ovládanie a snímanie stavov. Pôvodne tam nebol snímač pre home otáčania zásobníku, to dorobím ľahko aj neskôr, podľa potreby:

súčasný stav:
riadenie je pomocou LinuxCNC 2.7.0 + karty mesa 5i25+7i76

na začiatok mám zoznam signálov:
IN:
snímače na vretene 3ks
= nástroj je uvoľnený (pneu piest je vysunutý)
= nástroj je upnutý
= nástroj nie je upnutý (bez nástroju, alebo zle upnutý)
= natočenie vretena do správnej polohy zatiaľ nemám vyriešené, ---- úloha č.1 (orient spindle)
= výška Z pre odovzdanie nástroja, upnutie nástroja (túto hodnotu musím brať z linuxu)
= zásobník je v parkovacej polohe. 0= nie je v parkovacej polohe 1=parkovacia poloha
= zásobník je v polohe výmena. 0= nie je v polohe výmena 1=poloha pre výmenu dosiahnutá
= otáčenie zásobníku je v polohe pre výmenu 0=zásobník je v medzipolohe 1=zásobník je prípravený na výmenu (signál určuje o koľko polôh sa otočil zásobník)
= na zásobníku nebol žiadny index snímač, asi ho bude treba dorobiť

OUT:
= vzduchový piest upínania 0=vypnutý 1=uvoľnenie nástroja
= pootoč nástrojom (vretenom) do polohy pre výmenu (spindle orient?)
= zásobník do polohy výmena 0=presuň do parkovacej polohy 1=presuň do polohy výmena
= otoč zásobníkom. 0= neotáčaj 1=otáčaj
= zmeň smer otáčania 0=otáčaj nahor 1=otáčaj nadol (beriem podľa čísle vyrazených na zásobníku)
= ofuk zásobníku 0=vypnuté 1=zapnuté (ofuk prevodu, treba zapnúť pri otáčaní zásobníku. prípadne počas upínania nástroja. Možno to budem kombinovať s ofukom dutiny vretena)

video z výmeny:
https://www.youtube.com/watch?v=2nOUNocF2y0" onclick="window.open(this.href);return false;
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

8. 2. 2017, 5:33

Orient spindle - úloha č.1

na začiatok idem naštudovať a rozchodiť toto:
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... rientation
http://wiki.linuxcnc.org/uploads/orient.svg

to čo treba dopísať do INI súboru pôjde samozrejme do ARROW.INI. Kam je treba dať HAL komplnenty? máte to všetko v jednom súbore, alebo rozdelené vo viac CUSTOM.HAL súborov?

teraz mám čerstvo spravené zobrazenie otáčok vretena. Najnižšie otáčky, ktoré som zatiaľ schopný dosiahnuť sú cca 25/min. zatiaľ to ide nepravideľne a v podstate sa počas jednej otáčky mení rýchlosť od cca 14 do 40/min. musím sa s tým ešte pohrať.
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

9. 2. 2017, 10:57

r4cv píše:Orient spindle - úloha č.1

na začiatok idem naštudovať a rozchodiť toto:
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... rientation
http://wiki.linuxcnc.org/uploads/orient.svg

to čo treba dopísať do INI súboru pôjde samozrejme do ARROW.INI. Kam je treba dať HAL komplnenty? máte to všetko v jednom súbore, alebo rozdelené vo viac CUSTOM.HAL súborov?

teraz mám čerstvo spravené zobrazenie otáčok vretena. Najnižšie otáčky, ktoré som zatiaľ schopný dosiahnuť sú cca 25/min. zatiaľ to ide nepravideľne a v podstate sa počas jednej otáčky mení rýchlosť od cca 14 do 40/min. musím sa s tým ešte pohrať.
Ahoj Braňo
Jen na vysvětlenou pro ostatní čtenáře....
r4cv mě oslovil s prosbou při rozběhání ATC na své parádní frézce http://www.c-n-c.cz/viewtopic.php?t=20490. Aby z toho vzniklo něco použitelného i pro ostatní uživatele, rozhodli jsme se s požehnáním admina , že komunikaci uděláme misto SZ právě v tomto vlákně. Myslím, že je tu hromada lidí, kteří k tomu mají co říct i druhá hromada lidí, které čeká něco podobného a nevědí úplně přesně jak na to.

Nejdřív k tvému dotazu ohledně rozdělení HALu.
idealně rozdělit do nějakých ucelenych bloků, ale hodně s mírou. Ja mam třeba samostatny hal pro usb ovladač a lehce ho odřadím zakomentováním jednoho řádku v ini souboru. Ale je tu jedna potíž.
Kdyz to rozdělíš do několika souboru, tak může dojít k chybě při načítání stejných komponent.
například v hlavní halu použiješ
loadrt or2 count=2
a v custom. hal budeš chtit použít další or2, tak to skončí chybou. Prostě je potřeba natahnout stejné komponenty současně.
Před časem sem našel toto

[HAL] section
TWOPASS=ON - Use two pass processing for loading HAL comps. With TWOPASS processing, all [HAL]HALFILES are first read and multiple appearances of loadrt directives for each moduleb are accumulated. No hal commands are executed in this initial pass.

Přeloženo do češtiny by měl tento parametr zařídit to, že nejprve projede všechny hal soubory, podívá se kolik je kde komponent, ty posčíta a natáhne je najednou.
Je potřeba ty komponenty pojmenovat names=prvni-jmeno,druhy-jmeno a nepoužívat count, pak to nefunguje.
Tohle ti umožní si to rozdělit jak potřebuješ. Ale moc bych to nedělil.
Některé piny třeba z glade vznikají až po vykreslení grafického rozhraní a tudíš neexistují při zpracování hlavního hal souboru, Pak musíš použít POSTGUI_HALFILE =xxxx.hal který je zpracován až po natažení grafiky.



A ted k původnímu vláknu.
celý proces výměny nástroje bude rozdělen do několika sekcí. Každou bych asi dělal odděleně ať v tom není zmatek.
Jako první je potřeba orientace vřetena. Tak jak si začal.
Pak bude potřeba napsat vlastni modul pro ATC kde budou všechny piny souvisejicí s výměníkem
a dotřetice pak remap samotné funkce M6.
A samozřejmě hromada práce okolo.

Orientaci vřetene není zas tak složitá. v těch odkazech je téměř všechno. jen to shrnu do pochopitelné formulace.
Normálně je vřeteno ovládáno přímo, nebo pomocí nejaké rychlostní pid smyčky. Pro orinetaci je naopak potřeba polohová smyčka. To znamená že potřebuješ nejak mezi těmito dvěma stavy přepínat. To zajistí modul mux ovládaný pomocí motion.spindle-orient.
Rychlostní smyčku už máš asi vyřešenou jak chápu z textu a je potřeba nastavit polohovou smyčku. Ty, jestli si dobře pamatuju, tam máš nejaký relatko na změnu směru chodu, to by mohlo způsobovat problém při rychlém přepínání směru, takže bych se tomu snažil vyhnout a celou orientaci dělal jen v jednom směru pomoci orient.N.mode a měkké PID smyčky aby nedocházelo k překmitům. Proste ten pid to bude sice dotahovat o neznatelnou chvili dýl, ale pojede jen jedním směrem a bez překmitu a nežadoucího cvakaní relátka.
Na konec pouzijes modul near, kterej porovnává požadovanou hodnotu s aktualní hodnotou z encoderu a při dosažení požadované odchylky vyšle signal near.N.out napojený na motion.spindle-is-oriented a celá orientace je hotová.
Zůstává otázka, jestli je potřeba během výměny to "držet" v poloze, nebo stačí to zorientovat a nechat být a nemůže dojík samovolnému pootočení vřetene. To musíš vědět sám.
Zkus schválně namalovat podobný obrázek jako je ten http://wiki.linuxcnc.org/uploads/orient.svg celý i s tvym zapojenim vretena a všemi těmi near, mux atd. To mi přijde jako nejpřehlednejší a nejpochopitelnější.
A ještě jedno doporučení, který se mi osvědčilo.
Hodnoty které budeš ladit jako je Psložka I složka D složka pidu nebo třeba hodnoty požadovaného úhlu pro orientaci doporučuju zapsat do ucelené sekce v ini souboru aby si pak nemusel editovat na ruzných místech halu ale budeš mít všechno pohromadě na jednom místě.

Příklad pro pochopení.
v ini si udelej sekci

[VRETENO]
ORIENT_ANGLE = 45
POS_P = 75
POS_I = 100
POS_D = 0.1
atd
atd

[ATC]
POSITION_X_TOOL_CHANGE = xxxxx
POSITION_Z_TOOL_CHANGE = xxxxx

a v samotnem hal souboru pak pouzijes.

set orient.0.angle [VRETENO]ORIENT_ANGLE

a dokonce pak muzes tyhle proměné používat i v ngc kodu např.

G53 G1 Z #<_ini[ATC]POSITION_Z_TOOL_CHANGE>
jinak by si musel tuhle hodnotu při ladění zadávat na několika místech a často v tom pak člověk uděla chybu.

Tak doufám, že sem tě neodradil hned na začátku :-)

Martin







Martin
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

10. 2. 2017, 6:08

Dnes som chcel popracovať na pomalom pootáčaní vretena, zatiaľ som nepokročil. Nastavenie PID v meniči je neskutočne zložité (samé tlačítkovanie hore-dolu a milión parametrov). vrátim sa ku tomu priebežne, keď doštudujem návod ku meniču.

Spravil som alternatívnu konfiguráciu, aby som nerozhádzal funkčný stroj, prekopíroval som do neho existujúcu inštaláciu. Do INI súboru som doplnil potrebné parametre, zatiaľ s hodnotami z príkladu.
v HALe som sa zasekol a príklad budem musieť prebrať podrobne.
Spindle-encoder mám tvorený cez HW v mesakarte. tento zápis nebude treba
#set spindle encoder type
setp hm2_[HOSTMOT2](BOARD).0.encoder.03.counter-mode 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.03.filter 1
setp hm2_[HOSTMOT2](BOARD).0.encoder.03.index-invert 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.03.index-mask 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.03.index-mask-invert 0
velocity PID riešim cez menič vretena

Tu som sa dostal do problémov:
#spindle sync

net ori-index <= classicladder.0.out-17

#spindle sync
newsig tristate.index bit
sets tristate.index true
net tristate.index => tristate-bit.0.in
net spindle-index <= tristate-bit.0.out
net ori-index => tristate-bit.0.enable
net spindle-index <= motion.spindle-index-enable
net spindle-index <=> hm2_[HOSTMOT2](BOARD).0.encoder.03.index-enable

net spindle-velocity motion.spindle-speed-in <= hm2_[HOSTMOT2](BOARD).0.encoder.03.velocity
net spindle-deg <= hm2_[HOSTMOT2](BOARD).0.encoder.03.position
zatiaľ netuším, čo s odkazmi na classiclader
#convert degrees to revs for spindle sync moves
#1/360=0.002777778
#deg*0.002777778=revs
setp scale.6.gain 0.002777778
net spindle-deg <= scale.6.in
net spinde-revs scale.6.out => motion.spindle-revs

#ori
net spindle-deg => pid.4.feedback

# check position error with window comparator
# set a +/- 2 degree window
setp wcomp.0.min [SPINDLE_0]WCOMP_MIN
setp wcomp.0.max [SPINDLE_0]WCOMP_MAX
net sp-orient-pos-err wcomp.0.in <= pid.4.error
net ori-finish classicladder.0.in-17 <= wcomp.0.out
convert degrees a check position - toto by ostalo bez zmeny


Asi to rozmením na drobné kroky:
nahrať komponent ORIENT
získať aktuálnu polohu vretena a vypočítať odchýľku
nahrať a nastaviť polohové PID
nahrať MUX na prepínanie priame rýchlostné / polohové ovládanie vretena
dorobiť ovládanie ENABLE vretena, keď chcem polohovať.

Je to správne?
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

10. 2. 2017, 7:17

r4cv píše:
Tu som sa dostal do problémov:
#spindle sync

net ori-index <= classicladder.0.out-17

#spindle sync
newsig tristate.index bit
sets tristate.index true
net tristate.index => tristate-bit.0.in
net spindle-index <= tristate-bit.0.out
net ori-index => tristate-bit.0.enable
net spindle-index <= motion.spindle-index-enable
net spindle-index <=> hm2_[HOSTMOT2](BOARD).0.encoder.03.index-enable

net spindle-velocity motion.spindle-speed-in <= hm2_[HOSTMOT2](BOARD).0.encoder.03.velocity
net spindle-deg <= hm2_[HOSTMOT2](BOARD).0.encoder.03.position


Tak to se ti ani nedivim,
moje chyba. v tom odkazu je resená orientace vretena z doby kdy jeste neexistovala fce orient. takze hrozne slozite.
Zahod to a vychazej pouze z toho svg obrazku kterej je temer kompletni az na NEAR.
na clasicladder taky zapomen, ten nebude potreba. A stejne tak tristate.
Modul orient ma tohle vsechno v sobe, staci mu pripojit par pinu a dela uplne vsechno.
Wcomp nahrad pomoci NEAR a jako vstupy 1 a 2 pouzij polohu encoderu a pozadovanou hodnotu z orient.n.command. a vystup z near pak pripoj do motion.spindle.oriented nebo jak se to jmenuje pisu to z hlavy.
zapojeni mux mas v obrazku. staci doplnit ten NEAR a je to hotovy.
nevim jak presne mas reseny vystup do menice pomoci pwm, ale ten ABS co je v obrazku asi neni potreba.

Uplne nejvic je to srozumitelny, kdyz si to hodis na papir v podobe jako je ten svg obrazek. Klidne tuskou jako kosticky a pojmenovat piny a signaly.
Pak na to muzes koukak jako na schema v elektrice. A navic i ja si udelam predstavu jak mas reseny pripojeni do menice.

Martin

PS: jestli ti to nepujde, tak ti to nacrtnu v prvni fazi. Ale dej sem puvodni tvuj funkci HAL kde je reseno vreteno.
Omlouvam se za to, ze sem te zmatl spatnym odkazem.
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

10. 2. 2017, 7:55

takhle nejak. velmi na rychlo. snad je to videt.
orient.jpg
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

10. 2. 2017, 8:36

Nakresli som si prepojenie a je nasledovné:
mám iba 3 signály, ktoré idú z motion do Spindle (na mese)
Scan.jpg
teraz pozerám ten obrázok, tak by to nemuselo byť ťažké. Problém bude len odladiť správnosť zápisu.
A naladiť PIDky. Po dnešku mám z toho strach.
Přílohy
ARROW.hal.txt
(13.05 KiB) Staženo 278 x
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

11. 2. 2017, 10:07

r4cv píše:Nakresli som si prepojenie a je nasledovné:
mám iba 3 signály, ktoré idú z motion do Spindle (na mese)
Příloha Scan.jpg je dlouhodobě nedostupná.
teraz pozerám ten obrázok, tak by to nemuselo byť ťažké. Problém bude len odladiť správnosť zápisu.
A naladiť PIDky. Po dnešku mám z toho strach.
neni treba se toho bát. naladeni PIDky v tomhle pripade nehraje skoro roli. tady nehonis setiny milimetru a tisiciny vteriny.
Je jedno jestli se to otoci za 0.1 sec nebo 1 sec a nejaka uhlova minuta taky nehraje roli.

Ted sem koukal na jednu vec a sice, ze kdyz das M19 Rx orientaci, tak to nesepne automaticky spindle-on (ono je to logicky), takze je potreba pridat jeste enable v pripade orientace. Staci secist signaly orient a spindle on pres OR2. v obou pripadech chces aby se to tocilo.

Tady namalovano pro predstavu.
spindle.jpg
Martin
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

11. 2. 2017, 10:15

To relatko zkus nejak vyresit jinak
Asi se ti ucvaka k smrti pri dojizdeni na polohu
Dioda by to mohla resit
Vsechna prava na chyby vyhrazena (E)
fupe
Příspěvky: 638
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

11. 2. 2017, 1:04

robokop píše:To relatko zkus nejak vyresit jinak
Asi se ti ucvaka k smrti pri dojizdeni na polohu
Dioda by to mohla resit
Jak sem psal na začátku,když bude ta PID polohová smyčka dost měkká a nebude překmitávat a nastaví mod orientace jen jednim směrem CW tak by to podle mě nemělo cvakat. Prostě dojede na patřičný úhel jedním směrem a vypne.
Nicméně bych se taky přikláněl k tomu vytahnout CW i CCW. je to jeden pin navíc.

M
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

11. 2. 2017, 5:14

#*******************
# spindle orient
#*******************

loadrt orient names=orient
loadrt near count=1
loadrt or2 count=1
loadrt mux2 count=1
loadrt abs names=spindle-abs

net orient-angle motion.spindle-orient-angle orient.angle
#net orient-mode motion.spindle-orient-mode orient.mode
setp orient.mode [SPINDLE_9]ORIENT_MODE
net orient-enable motion.spindle-orient orient.enable pos-pid.enable mux2.0.sel or2.0.in0
net spindle-pos orient.position pos-pid.feedback near.0.in2
net orient-command orient.command pos-pid.command near.0.in1
net spindle-speed-out motion.spindle-speed-out mux2.0.in0
net spindle-on motion.spindle-on or2.0.in1
net spindle-enable or2.0.out
net spindle-oriented motion.spindle-is-oriented near.0.out
net pospid-out pos-pid.output mux2.0.in1

net mux-out mux2.0.out spindle-abs.in
net spindle-vel-cmd-rpm-abs spindle-abs.out
net spindle-ccw spindle-abs.is-negative
net spindle-cw spindle-abs.is-positive

net spindle-vel-cmd-rpm-abs => hm2_5i25.0.7i76.0.0.spinout
net spindle-enable => hm2_5i25.0.7i76.0.0.spinena
net spindle-ccw => hm2_5i25.0.7i76.0.0.spindir
fupe: podľa tvojho návodu som naklikal tieto riadky. odstránil som nejaké preklepy ale nejde to. Nedostal som sa ani ku základnému testu, neviem pretlačiť signál motion-spindle-on cez OR2. proste výstup z or2.0.out je stále FALSE. chýba tam ešte niečo?
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

11. 2. 2017, 5:23

chybi addf
Vsechna prava na chyby vyhrazena (E)
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

11. 2. 2017, 6:15

po doplnení addf to ide. :)

M3 a M4 funguje

keď som zadal M19 R100 tak nabehol signál spindle-ena, ale vreteno sa neotáča.
Niekde musím zadať min. otáčky.
Naposledy upravil(a) r4cv dne 11. 2. 2017, 6:21, celkem upraveno 1 x.
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22371
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

11. 2. 2017, 6:17

obcas se mi taky stane ze na to zapomenu
ale ty symptomy uz poznam
Vsechna prava na chyby vyhrazena (E)
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

11. 2. 2017, 6:24

kedže sa to pri M19 netočí, asi by som mal nalinkovať aj hodnoty pre PDI regilátor z INI súboru.
Odpovědět

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