ATC pro Mikron UME 600

lukin1156
Příspěvky: 579
Registrován: 7. 11. 2012, 8:42

13. 8. 2019, 10:44

Mikron už je půl roku v provozu ale pořád jsem nepohnul s automatickou výměnou nástrojů.
Automatická výměna se skládá z kolotoče a trochu víc pofiderní ruky pro výměnu nástroje mezi kolotočem a vřetem.
https://www.youtube.com/watch?v=F1sjcD7kH_4&t=24s
Otáčení kolotoče mám už vyřešené pomocí komponenty carousel. Po zapnutí stroje se kolotoč automaticky zreferuje. Potom mu řeknu na jakou pozici má najet a až jí dosáhne tak vydá signál že je na poloze.
Polohování vřetene je řešeno přes měnič. Dám signál na měnič a vřeteno se napolohuje a zůstane zabržděné na poloze.
A to je tak všechno co k výměně funguje.
Nemám moc tušení co dál.
Mám nějak zhruba sepsaný postup výměny.
Po zadání TxM6 by si měl stroj zkontrolovat jestli nástroj už není ve vřeteni- pokud jo tak zůstává stát tam kde stojí- nevím jestli tohle Linux cnc neřeší už sám o sobě.
Pokud už pojede na výměnu tak takhle:
1. Najede na pozici G0 G53 X0 Y120 Z0, vypne vodu a vřeteno (M5, M9) a zároveň zapolohuje vřeteno, sepne čerpadlo hydrauliky a napolohuje kolotoč na požadovanou polohu.
2. Až dosáhne polohy pro výměnu (podmínka že stojí na G53 Z0) se otevřou dvířka a zároveň vidlička se protočí na polohu nový nástroj. Obě dvě fuknce mají koncový spínač- signál že pístnice stojí na požadované poloze.
3. Ruka zajede do kolotoče pro nástroj
4. Sjede dolu do mezi polohy.
5. Ruka jede s nástrojem směrem ke vřetenu a zároveň se otočí vidlička na polohu předchozí nástroj. Operace končí tím že je do vidličky zacvaknutý předchozí nástroj.
Zároveň se kolotoč začne natáčet do polohy předchozího nástroje- vyčte si z parametru který se zapíše na konci každé výměny.
6. Vřeteno odjistí nástroj a zůstává odjištěné.
7. Ruka sjede do nejnižší polohy
8. Vidlička se natočí na nový nástroj
9. Ruka vyjede do mezi polohy (zajede nástroj do vřetene)
10. Vřeteno zajistí nástroj do vřetene
11. Ruka zajede ke kolotoči
12. Zavřou se dveře
13. Pokračování programu (pokud je to možné).
14. Ruka zajede nahoru do kolotoče (pokud je kolotoč na požadované poloze)
15. Ruka vyjede z kolotoče a zůstane stát před kolotočem
16. Do konstanty se zapíše číslo nástroje ve vřeteni a funkce najede zase na začátek.

Detaily jako T0, a nástroje větší než jsou v zásobníku zatím nebudu řešit.

Už jsem to s pár lidma konzultoval ale přišlo mi fajn to řešit veřejně.
Bude se muset napsat funkce v pythonu popřípadě nějaká jiná komponenta nebo se to bude dát vyřešit nějak jinak ?

Díky všem :)
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C, Brother TC 201
Uživatelský avatar
Juro
Příspěvky: 1612
Registrován: 19. 3. 2007, 12:14
Bydliště: Kamanová (Topoľčany)

20. 8. 2019, 6:04

Ja som karusel neriesil ale rack. To je asi jedno, ak uz mas component carusel rozchodeny.
Predpokladam , ze ked karusel pride do polohy POZADOVANEHO konkretneho nasroja, tak zastavi a da nejaky vystupny dig. signal, ze je na mieste a caka. Alebo co mam rozumiet pod pojmom " Potom mu řeknu na jakou pozici má najet" ? Je to nejaky konkretny uhol od 0 do 360st, alebo zadas napr T8 M6 atd?

V hal. subore mas uz nalinkovane cesty k prolog a epilog, modul rucnej vymeny nastroja zmeneny na automaticku vymenu a prislusny python subor vytvoreny?

Vies si vytvorit svoje vlastne G a M kody?

Priklad v ini. subore:

FEATURES = 12
LOG_LEVEL = 9
ON_ABORT_COMMAND=O <on_abort> call
REMAP=M6 modalgroup=6 prolog=change_prolog ngc=vymena epilog=change_epilog

REMAP=M20 modalgroup=6 ngc=atc_off
REMAP=M21 modalgroup=6 ngc=atc_on
REMAP=G6 modalgroup=1 argspec=xy ngc=g6
REMAP=G6.1 modalgroup=1 ngc=g6_1
REMAP=G12 modalgroup=1 ngc=g12
REMAP=G13 modalgroup=1 ngc=g13


TOPLEVEL = /home/hcnc/linuxcnc/configs/Behrenger/python/toplevel.py
PATH_APPEND = /home/hcnc/linuxcnc/configs/Behrenger/python


Priklad vlastneho G kodu:

O<g12> sub
;vlastny g kod na otocenie vretena 4tej osi na 90st
; cislo 219.335 je moj polomer otacania vretena (osA)
g17 ;volba roviny

#<TEMP> = [[ #<_hal[pyvcp.pris]>] *[-1]] ;nacitanie vysky prisavky
G0 G53 Z0.00



G10 L20 P0 Z[[231.077+219.335+#5403] -#5403 +[#<TEMP>] ] ;zmena vysky zetka pri 90st 4tej osi
G10 L2 P0 Y-[#5403+219.335] ;zmena offsetu osi Y pri 90st. 4tej osi
g0 A 90

g64 P0.001
G43
g18 ;volba roviny

O<g12> endsub [1]
M2


Takto si zapinam a vypinam in/out v M kode :

#!/bin/bash
halcmd setp hm2_5i25.0.7i76.0.0.output-11 False
halcmd setp hm2_5i25.0.7i76.0.0.output-12 False
sleep 1
halcmd setp hm2_5i25.0.7i76.0.0.output-10 True
exit 0


Priklad programu mojej vymeny:


o<vymena> sub

;M73 (vrati po tomto programe vsetky modalne nastavenia, ake boli pred tymto prog.)
o100 if [#<_current_pocket> EQ #<_selected_pocket>] (safe, pri zvoleni nastroja, ktory uz je vo vretene)
o<vymena> endsub [1] ;ukonci vymenu, vlastne sa ani nepohne a pokracuje v programe
M2
o100 endif


o101 if [#4000 NE 0] ;ak je v premennej zapisany nejaky nastroj a samozrejme vo vretene je nastroj tak pokracuje vo vymene (najskor odlozi nastroj podprogramom "un1" atd)a potom pokracuje dalsim podprogramom "poc1" atd.

o201 if [#<_current_tool> EQ 1]
o<un1> call
o201 endif

o202 if [#<_current_tool> EQ 2]
o<un2> call
o202 endif

o203 if [#<_current_tool> EQ 3]
o<un3> call
o203 endif

o204 if [#<_current_tool> EQ 4]
o<un4> call
o204 endif

o205 if [#<_current_tool> EQ 5]
o<un5> call
o205 endif

o206 if [#<_current_tool> EQ 6]
o<un6> call
o206 endif

o207 if [#<_current_tool> EQ 7]
o<un7> call
o207 endif

o208 if [#<_current_tool> EQ 8]
o<un8> call
o208 endif

o209 if [#<_current_tool> EQ 9]
o<un9> call
o209 endif

o210 if [#<_current_tool> EQ 10]
o<un10> call
o210 endif

o211 if [#<_current_tool> EQ 11]
o<un11> call
o211 endif

o212 if [#<_current_tool> EQ 12]
o<un12> call
o212 endif


o101 endif



o150 if [#<_selected_tool> EQ 0]
o<poc0> call
o150 endif

o301 if [#<_selected_tool> EQ 1]
o<poc1> call
o301 endif

o302 if [#<_selected_tool> EQ 2]
o<poc2> call
o302 endif

o303 if [#<_selected_tool> EQ 3]
o<poc3> call
o303 endif

o304 if [#<_selected_tool> EQ 4]
o<poc4> call
o304 endif

o305 if [#<_selected_tool> EQ 5]
o<poc5> call
o305 endif

o306 if [#<_selected_tool> EQ 6]
o<poc6> call
o306 endif

o307 if [#<_selected_tool> EQ 7]
o<poc7> call
o307 endif

o308 if [#<_selected_tool> EQ 8]
o<poc8> call
o308 endif

o309 if [#<_selected_tool> EQ 9]
o<poc9> call
o309 endif

o310 if [#<_selected_tool> EQ 10]
o<poc10> call
o310 endif

o311 if [#<_selected_tool> EQ 11]
o<poc11> call
o311 endif

o312 if [#<_selected_tool> EQ 12]
o<poc12> call
o312 endif



#<TEMP> = [[#<_hal[pyvcp.mat]> + #<_hal[pyvcp.pris]>] *[-1]] ;tu mi nacita vysku prisaviek a materialu ktore mam zadane v "spinboxe"


G10 L20 P0 Z[231.077 -#5403 +[#<TEMP>] ] ;prepise vysku pracovnej roviny



G64 P0.001
#4000=#<_selected_tool> ;zapise novy nastroj do premennej
o<vymena> endsub [1]
M2



Priklad vyvolaneho podprogramu programom na vymenu "vymena.ngc"

M110 ;zasunie kos
M66 P2 L4 Q11 ;caka na potvrdenie nepritomnosti nastroja vo vretene

o122 if [#5399 LT 0] ;ak zisti pritomnost nastroja
(abort, Vo vretene je uz nejaky nastroj a program pise, ze vo vretene nie je ziadny nastroj "No tool ". Manualne vyber nastroj z vretena a zasun do zasobnika tam, kam patri podla tbulky nastrojov) ;tuto celu hlasku vypise obsluhe cnc stroja a ukonci vymenu
o122 endif




G53 G0 X3460 Y[-217+[111.5*0]] A0
M20 ;otvori kliestinu
G4 P0.5 ;pre kazdy pripad este pocka
G53 G0 Z-362 ;uroven zasobnika
M21 ;uchopenie nastroja
G4 P1
M66 P2 L3 Q5 ;caka na potvrdenie pritomnosti nastroja vo vretene

o121 if [#5399 LT 0] ;zaciatok podmienky, ak zisti nepritomnost nastroja
#4000=0 ; prepise premennu na nulu
M61 Q0 ; prepise v programe nastroj na "No tool"
(abort, CHYBA NASTROJ, teraz opatrne dvihaj os Z) ;tuto celu hlasku vypise obsluhe cnc stroja a ukonci vymenu
o121 endif ;koniec podmienky

G53 G0 X3583 ;vysunutie zo zasobnika
G0 G53 Z0
G43
M66 P3 L3 Q10 ;caka na dosiahnutie pozadovanych otacok (signal HIGH)do 10sekund ale nie celych 10 sekund. Moj FM ma dig. vystup, ak dosiahol pozadovane otacky(frekv, alebo napetie potenciometra) tak sa nastavi na 1 (true)







o<poc1> endsub

M2
rocnik 1976 -stolár, trosicka uz aj strojar.
lukin1156
Příspěvky: 579
Registrován: 7. 11. 2012, 8:42

3. 9. 2019, 1:24

Kolotoč dokážu ovládat tak že mu v Hal řeknu na jakou pozici (číslo pozice) se má natočit a on se rozjede, potom dá signál že dojel na tu pozici.
Momentálně mám všechno přizpůsobené na ruční výměnu takže ani prolog ani nic nemám nalinkované.
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C, Brother TC 201
Uživatelský avatar
Juro
Příspěvky: 1612
Registrován: 19. 3. 2007, 12:14
Bydliště: Kamanová (Topoľčany)

5. 9. 2019, 10:21

Rozchodime ATC vymenu:
Uprav svoj modul vymeny v HAL. Je to na konci tvojho halu.
.
.
.
hal atc modul.jpg
.
.
.
Uprav svoj INI subor:
.
.
.
emc i-o.jpg
rs274.jpg
python.jpg
.
.
.
Vo svojom konfiguracnom subore rucne vytvor tuto zlozku.
.
.
.
Mcodes.png
.
.
.
.
Skopiruj tento subor do tvojej konfiguracnej zlozky. Samozrejme korektne rozbaleny.
python.rar
(11.28 KiB) Staženo 106 x
.
.
zlozka phyton.png
.
.
Nezabudni pri kazdom povolit spustenie
.
.
7.png
.
.
.
potom v zlozke Mcodes vytvor nejaky gkod tvojej buducej vymeny s nazvom "vymena.ngc". Priklad:
.
.
o<vymena> sub

o100 if [#<_current_pocket> EQ #<_selected_pocket>] (safe, pri zvoleni nastroja, ktory uz je vo vretene)
o<vymena> endsub [1]
M2
o100 endif


o101 if [#5400 NE 0]
M5
M9
G53 G0 Z0
o101 endif

#5400=#<_selected_tool>
o<vymena> endsub [1]
M2

.
.
.
Na karte MIDI zadaj prikaz T1 M6
Ak sa ti stroj pohne do G53 G0 Z0 tak mas funkcnu vymenu.
Ak toto spravis tak sa pohneme delej.
rocnik 1976 -stolár, trosicka uz aj strojar.
lukin1156
Příspěvky: 579
Registrován: 7. 11. 2012, 8:42

5. 9. 2019, 9:52

Díky za radu, něco jsem tam už napsal, zítra akorát přetáhnu ten python.
Jinak tedy do souboru vymena.ngc zkopírovat program tak jak jsi ho napsal jo ?
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C, Brother TC 201
Uživatelský avatar
Juro
Příspěvky: 1612
Registrován: 19. 3. 2007, 12:14
Bydliště: Kamanová (Topoľčany)

6. 9. 2019, 8:21

lukin1156 píše: 5. 9. 2019, 9:52 Jinak tedy do souboru vymena.ngc zkopírovat program tak jak jsi ho napsal jo ?
V podstate ano, ide hlavne o ten zaciatok a koniec identifikacie volania tohoto programu.

o<vymena> sub
.
.
.
.
o<vymena> endsub [1]
M2


To co si napiseme medzi tym, zalezi len na nas. To co je v zobacikoch sub a endsub sa musi volat aj tento samotny .ngc program, cize "vymena.ngc". Taktiez musis tymto nazvom volat tento program v ini. subore REMAP=M6 .........ngc=vymena
rocnik 1976 -stolár, trosicka uz aj strojar.
lukin1156
Příspěvky: 579
Registrován: 7. 11. 2012, 8:42

6. 9. 2019, 9:25

Dobře. Jak dokážu připojit k volným M funkcím např. sepnutí výstupu ?
příklad: Při M101 sepnu výstup na kartě 7i.... a při M102 ho zase vypnu.
Nebo jak by se dalo zapínat hydraulické čerpadlo, které musí jet během celého cyklu výměny a zároveň aby nesepnulo když je nástroj ve vřeteni a není potřeba ho měnit.
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C, Brother TC 201
Uživatelský avatar
Juro
Příspěvky: 1612
Registrován: 19. 3. 2007, 12:14
Bydliště: Kamanová (Topoľčany)

6. 9. 2019, 10:48

Velmi jednoducho.
Mas uz ATC rozchodene?
rocnik 1976 -stolár, trosicka uz aj strojar.
Uživatelský avatar
Juro
Příspěvky: 1612
Registrován: 19. 3. 2007, 12:14
Bydliště: Kamanová (Topoľčany)

6. 9. 2019, 11:09

Ako vyzera ta komponenta carousel? Je to .ngc program alepo phyton?
Posli hal a ini.
rocnik 1976 -stolár, trosicka uz aj strojar.
lukin1156
Příspěvky: 579
Registrován: 7. 11. 2012, 8:42

6. 9. 2019, 12:06

Je to tahle komponenta
http://linuxcnc.org/docs/html/man/man9/carousel.9.html

běh čerpadla právě potřebuju jako první pro rozchození atc :D
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C, Brother TC 201
Uživatelský avatar
Juro
Příspěvky: 1612
Registrován: 19. 3. 2007, 12:14
Bydliště: Kamanová (Topoľčany)

6. 9. 2019, 4:51

Pozeram na to a pises ze ti to funguje tak potom to uz mas davno hotove. Tie riadky budes zrejme duplikovat a to bude chyba. Musis tam mat aj ten .ngc program s nazvom "toolchange.ngc".
Skoda ze si skupy na konfiguraciu.
Ak by som ju videl a je to ako predpokladam , tak staci vysvetlit a dopisat ten .ngc program.
rocnik 1976 -stolár, trosicka uz aj strojar.
lukin1156
Příspěvky: 579
Registrován: 7. 11. 2012, 8:42

6. 9. 2019, 5:06

Tady je celá konfigurace, je tam už něco začaté, ale většinou zakomentované.
Programátor co mi to dělal tak má teď letní sezonu a mě už se nechtělo moc čekat :D
Mikron2.zip
(31.22 KiB) Staženo 96 x
EDIT: nejaktuálnější konfigurace
EDIT: nyní při TxM6G43 se vypne vřeteno,voda a stroj najede na polohu napsanou v souboru výměna.ngc
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C, Brother TC 201
Uživatelský avatar
Juro
Příspěvky: 1612
Registrován: 19. 3. 2007, 12:14
Bydliště: Kamanová (Topoľčany)

6. 9. 2019, 7:00

Podla tvojej novej konfiguracie MIKRON2 co si poslal to nie je mozne.
rocnik 1976 -stolár, trosicka uz aj strojar.
r4cv
Příspěvky: 2681
Registrován: 8. 12. 2009, 8:32
Bydliště: Topoľčany

6. 9. 2019, 7:40

lukin1156 píše: 6. 9. 2019, 9:25 Dobře. Jak dokážu připojit k volným M funkcím např. sepnutí výstupu ?
příklad: Při M101 sepnu výstup na kartě 7i.... a při M102 ho zase vypnu.
Nebo jak by se dalo zapínat hydraulické čerpadlo, které musí jet během celého cyklu výměny a zároveň aby nesepnulo když je nástroj ve vřeteni a není potřeba ho měnit.
M64 P0 - zapne výstup 0 z riadiaceho systému
M66 P0 L3 Q10 - čaká na príchod signálu na vstup 0, kontrola či sa zaplo čerpadlo
M65 P0 - vypnutie čerpadla

samozrejme treba v hale napojiť výstupy systému na konkrétne výstupy dosky IO.
napr. u mňa na plazme
net probe_ON motion.digital-in-00
net probe_OFF motion.digital-in-01
net probe_setON motion.digital-out-00

net probe_ON pidi-3809.1.bin.6.in
net probe_OFF pidi-3809.1.bin.7.in
net probe_setON pidi-3809.1.bout.11.out
lukin1156
Příspěvky: 579
Registrován: 7. 11. 2012, 8:42

6. 9. 2019, 8:37

Juro píše: 6. 9. 2019, 7:00 Podla tvojej novej konfiguracie MIKRON2 co si poslal to nie je mozne.
Já nevím jestli je to správně, ale mně přijde že jo :(
https://youtu.be/yVm2O16RnS0
Nebo co myslíš že je špatně?
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C, Brother TC 201
Odpovědět

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