G02 - jak to funguje?

Avenger
Příspěvky: 382
Registrován: 19. 10. 2006, 8:41
Bydliště: Litoměřice

17. 1. 2010, 6:26

Potřebuju vyříznout z plechu 2.5mm dvě kolečka o průměru 47mm frézou o průměru 3.2mm.
Použil jsem k tomu příkaz G02 takto (mám ve smyčce):
G00 X0 Y0 Z1
G01 Z0 F60
G02 R25.1 X50.2 Y0 Z-0.125 F200
G02 R25.1 X0 Y0 Z-0.25 F200
.....
G02 R25.1 X50.2 Y0 Z-2.375 F200
G02 R25.1 X0 Y0 Z-2.5 F200

(Z se s půlkruhy inkrementuje o -0.125 a ve spirále dojde k vyříznutí potřebného kolečka)

Ale to mi funguje bohužel jen teoreticky. Po natažení programu do EMC2 se vykreslí správně spirála. Po spuštění programu softwarově funguje vše jak má a osa Z se inkrementuje jak se postupně vykresluje spirála, ale motor na ose Z se vůbec netočí (interpretují se pouze příkazy G00 a G01 ale G02 i G03 prostě s osou Z nehne).

V čem je problém? :roll:
Naposledy upravil(a) Avenger dne 17. 1. 2010, 10:37, celkem upraveno 3 x.
RaS
Příspěvky: 8631
Registrován: 26. 3. 2009, 9:12
Bydliště: Úvaly

17. 1. 2010, 8:45

sice nevím jak v EMC ale mě takový příkaz v machu funguje.. jestli ti to k něčemu pomůže..
Uživatelský avatar
sysel
Příspěvky: 655
Registrován: 12. 6. 2007, 9:24
Bydliště: Šenov u Ostravy
Kontaktovat uživatele:

17. 1. 2010, 8:54

G00 X0 Y0 Z1
G01 Z0 F60
G02 R22.6 X45.2 Y0 Z-0.125 F200
G02 R22.6 X0 Y0 Z-0.25 F200
G02 R22.6 X45.2 Y0 Z-0.375 F200
G02 R22.6 X0 Y0 Z-0.5 F200

42+3.2 průměr frézy je kolečko 45,2 čili rádius R22.6 jest tak? :) a u G02 dáváš koncový bod kam má dojet, takže nechápu těch 5.2 co jsi tam měl....
Doufám že jsem dobře pochopil že potřebuješ ty kolečka... Pokud potřebuješ díry tak 42-3.2 :wink:
5/2007 přístup na přestavěnou BF20
5/2009 dokončeno vlastní CNC
http://cnc.usysla.eu/
Avenger
Příspěvky: 382
Registrován: 19. 10. 2006, 8:41
Bydliště: Litoměřice

17. 1. 2010, 10:19

sysel píše:G00 X0 Y0 Z1
G01 Z0 F60
G02 R22.6 X45.2 Y0 Z-0.125 F200
G02 R22.6 X0 Y0 Z-0.25 F200
G02 R22.6 X45.2 Y0 Z-0.375 F200
G02 R22.6 X0 Y0 Z-0.5 F200

42+3.2 průměr frézy je kolečko 45,2 čili rádius R22.6 jest tak? :) a u G02 dáváš koncový bod kam má dojet, takže nechápu těch 5.2 co jsi tam měl....
Doufám že jsem dobře pochopil že potřebuješ ty kolečka... Pokud potřebuješ díry tak 42-3.2 :wink:
Sorry jsem se upsal v průměru (mělo být 47mm) a dal jsem omylem desetinnou tečku (X mělo být 50.2 a ne 5.2).

Problém je takový že když zadám:
G00 X0 Y0 Z1
G01 Z-0.25 F60
G02 R25.1 X50.2 Y0 F200
G02 R25.1 X0 Y0 F200
..tak se mi vyfrézuje kružnice o průměru 47mm to je OK.
Pokud ale do G02 zadám i osu Z abych mohl frézovat po spirále takto:
G00 X0 Y0 Z1
G01 Z0 F60
G02 R25.1 X50.2 Y0 Z-0.125 F200 (po prvním půlkuhu by Z mělo sjet do -0.125)
G02 R25.1 X0 Y0 Z-0.25 F200 (po druhém půlkuhu by Z mělo sjet do -0.25)
... tak osa Z fyzicky zůstane v 0 (naposledy dle G01 Z0 F60) a jakýkoli pohyb v ose Z vyvolaný příkazem G02 zcela ignoruje. Ovšem na obrazovce se mi korektně vykresluje dráha nástroje a Z zobrazuje hodnoty až na finálních -0.25.
Naposledy upravil(a) Avenger dne 17. 1. 2010, 10:42, celkem upraveno 1 x.
Avenger
Příspěvky: 382
Registrován: 19. 10. 2006, 8:41
Bydliště: Litoměřice

17. 1. 2010, 10:41

Ještě mě napadlo, může být problém způsoben tím, že radius 25.1 je příliš malý na to, aby překlenul vzdálenost z X0,Y0,Z0 do X52,Y0,Z(cokoli jiného od nuly, v mém případě -0.125), protože by se ten rádius musel z 2D přepočítat na 3D dle pytagorovy věty rádius =odmocnina(50.2^2+0.125^2)/2=25,100077814?
Naposledy upravil(a) Avenger dne 17. 1. 2010, 10:43, celkem upraveno 1 x.
Uživatelský avatar
sysel
Příspěvky: 655
Registrován: 12. 6. 2007, 9:24
Bydliště: Šenov u Ostravy
Kontaktovat uživatele:

17. 1. 2010, 10:42

Tak to je zajímavé, protože Mach to normálně sežere a i tak jede... Nedávno jsem to frézoval.... Používáš příkaz G17 pro vyběr roviny ve které pracuješ? Možná by to mohlo pomoct....
Je vidět že i EMC má své neduhy :)
5/2007 přístup na přestavěnou BF20
5/2009 dokončeno vlastní CNC
http://cnc.usysla.eu/
Avenger
Příspěvky: 382
Registrován: 19. 10. 2006, 8:41
Bydliště: Litoměřice

17. 1. 2010, 10:48

sysel píše:Tak to je zajímavé, protože Mach to normálně sežere a i tak jede... Nedávno jsem to frézoval.... Používáš příkaz G17 pro vyběr roviny ve které pracuješ? Možná by to mohlo pomoct....
Je vidět že i EMC má své neduhy :)
G17 jsem nepoužil, zítra to zkusím i když už jsem to ze zoufalství vyříznul jinak než po spirále.

Edit: tak jsem v manuálu zjistil, že: G17 je default zapnuté - XY (default), ale ještě to ověřím v reálu.
vladosk
Příspěvky: 155
Registrován: 5. 6. 2008, 7:48
Bydliště: Prievidzsko SK

18. 1. 2010, 1:56

Tak mi to nedalo a zkusil jsem ten příklad - mám emc2 verzi 2.3.4 a tak jak to napsal Avenger to jede. Ale šel jsem dál, protože se mi nezdálo že se musí přidávat do hloubky jen po 180 stupních. S parametrem R to nešlo. Tak jsem skusil I,J a jede to.

G2 I25.1 J0 X50.2 Y0 Z-0.125 F200
G2 I-25.1 J0 X0 Y0 Z-0.25 F200
nebo
G2 I25.1 J0 X0 Y0 Z-0.25 F200
...
vlado
Avenger
Příspěvky: 382
Registrován: 19. 10. 2006, 8:41
Bydliště: Litoměřice

18. 1. 2010, 6:03

Taky jsem to blíže zkoumal a vypátral jsem, že Z v příkazu G02 s radiusem nesmí být menší než absolutní hodnota "1". Zde je můj celý kód (nesmějte se je to můj první :-) ):

Kód: Vybrat vše

G21
G17

#1=200 (XY feed)
#2=3.2 (tool diameter)
#3=47 (main diameter)
#4=0 (cut deep)
#5=-2 (cut add, nesmí být menší jak 1)
#6=-4 (overall deep)
#7=0 (X offset)
#8=[[#3 / 2]+[#2 / 2]] (Y diameter offset)
#9=1 (Z secure plane)
#10=60 (Z feed)
#11=0 (pomocna)

(start)
G00 X#7 Y#8
G01 Z#4 F#10

o101 while [#6 LT #4]
#4=[#4+#5]
#11=[#4-[#5 / 2]]
G02 R[[#3 / 2]+[#2 / 2]] X[#3+#2+#7] Y#8 Z#11 F#1
G02 R[[#3 / 2]+[#2 / 2]] X#7 Y#8 Z#4 F#1
o101 endwhile

(konec)
G00 Z#9
G00 X#7 Y0

M02
Je to takto normální, nebo je to nějaký bug?? Pokud je to normální, tak se tímto skvělým příkazem zcela rozjede skutečná poloha stroje od polohy co si drží EMC. Inkrement +1 na jeden rádius je strašně moc.
vladosk
Příspěvky: 155
Registrován: 5. 6. 2008, 7:48
Bydliště: Prievidzsko SK

18. 1. 2010, 6:36

Já to nechápu, okopíroval jsem tvůj příklad, zadal jsem do parametru 5 -0.02 a jede to. Prozraď aspoň jakou máš verzi emc2.
vlado
Avenger
Příspěvky: 382
Registrován: 19. 10. 2006, 8:41
Bydliště: Litoměřice

18. 1. 2010, 6:57

vladosk píše:Já to nechápu, okopíroval jsem tvůj příklad, zadal jsem do parametru 5 -0.02 a jede to. Prozraď aspoň jakou máš verzi emc2.
EMC2 mám ve verzi 1.2.3.4-1 a verzi firmware pro mesa kartu 5i20 taktéž 1.2.3.4-1. Pokud je ten program v pořádku kde by se mohl vyskytovat ještě problém mezi EMC a strojem?

Je tu ještě někdo s Mesa kartou co by mohl testnout ten prográmek a do parametru #5 zadat cokoli menšího než 2?
Uživatelský avatar
Radek-B
Příspěvky: 2137
Registrován: 13. 9. 2006, 11:09
Bydliště: V:Karlovice
Kontaktovat uživatele:

18. 1. 2010, 9:04

Nemas nejaky bug v INI , nenastavoval si tam presnosti kruznic a dalsich parametru ?
Tvuj program normalne funguje.

RADEK
Přílohy
Snímek obrazovky.png
modernizace/repase CNC strojů a zařízení
automatizace/konstrukce
Avenger
Příspěvky: 382
Registrován: 19. 10. 2006, 8:41
Bydliště: Litoměřice

18. 1. 2010, 9:39

Určitě jsem nic ohledně kružnic nenastavoval, v originálním ini jsem jen nastavil rampy, počet kroků na 1mm a rozsahy os. Zítra sem hodím svůj ini.
V Axisu mi vše funguje taky OK, ale do krokáče na ose Z se nedostane ani krok.
Avenger
Příspěvky: 382
Registrován: 19. 10. 2006, 8:41
Bydliště: Litoměřice

19. 1. 2010, 5:53

Zde je můj 5i20.ini:

Kód: Vybrat vše


[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i20
CONFIG="firmware=hm2/5i20/SVST8_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"




[EMC]

# Name of machine, for use with display, etc.
MACHINE =               HM2-Stepper

# Name of NML file to use, default is emc.nml
NML_FILE =              emc.nml

# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG =                0x00000003
#DEBUG =                0x00000007
DEBUG = 0




[DISPLAY]

# Name of display program, e.g., tkemc
#DISPLAY =               tkemc
DISPLAY =              axis

# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME =            0.0500

# Path to help file
HELP_FILE =             tkemc.txt

# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET =       RELATIVE

# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK =     ACTUAL

# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE =     1.5

# Prefix to be used
PROGRAM_PREFIX = /home/landys/emc2/nc_files

# Introductory graphic
INTRO_GRAPHIC =         emc2.gif
INTRO_TIME =            5




[TASK]

# Name of task controller program, e.g., milltask
TASK =                  milltask

# Cycle time, in seconds, that task controller will sleep between polls
CYCLE_TIME =            0.010




[RS274NGC]

# File containing interpreter variables
PARAMETER_FILE =        hm2-stepper.var




[EMCMOT]

EMCMOT =                motmod

# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT =          1.0

# Interval between tries to emcmot, in seconds
COMM_WAIT =             0.010

BASE_PERIOD = 25000

# Servo task period, in nanoseconds
SERVO_PERIOD =          1000000




[HAL]

# The run script first uses halcmd to execute any HALFILE
# files, and then to execute any individual HALCMD commands.

# list of hal config files to run through halcmd
# files are executed in the order in which they appear

HALFILE =		hm2-stepper.hal

# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD =               save neta




[TRAJ]

AXES =                  3
COORDINATES =           X Y Z
#HOME =                  0 0 0
LINEAR_UNITS =          mm
ANGULAR_UNITS =         degree
CYCLE_TIME =            0.010




[AXIS_0]

# 
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#


TYPE =              LINEAR
MAX_VELOCITY =       30
MAX_ACCELERATION =   10
BACKLASH =           0.000

# scale is 200 steps/rev * 5 revs/inch
SCALE =           1600

MIN_LIMIT =             -115.0
MAX_LIMIT =             115.0

#FERROR =     0.050
#MIN_FERROR = 0.005
FERROR =     1.000
MIN_FERROR = 1.000

#HOME =                  0.000
#HOME_OFFSET =           0.10
#HOME_SEARCH_VEL =       0.10
#HOME_LATCH_VEL =        -0.01
#HOME_USE_INDEX =        YES
#HOME_IGNORE_LIMITS =    YES

# these are in nanoseconds
DIRSETUP   =              200
DIRHOLD    =              200
STEPLEN    =              1000
STEPSPACE  =              1000




[AXIS_1]

TYPE =              LINEAR
MAX_VELOCITY =       30
MAX_ACCELERATION =   10

BACKLASH =           0.000

SCALE = 1600

MIN_LIMIT =             -85.0
MAX_LIMIT =             85.0

#FERROR =     0.050
#MIN_FERROR = 0.005
FERROR =     1.000
MIN_FERROR = 1.000

#HOME =                  0.000
#HOME_OFFSET =           0.10
#HOME_SEARCH_VEL =       0.10
#HOME_LATCH_VEL =        -0.01
#HOME_USE_INDEX =        YES
#HOME_IGNORE_LIMITS =    YES

# these are in nanoseconds
DIRSETUP   =              200
DIRHOLD    =              200
STEPLEN    =              1000
STEPSPACE  =              1000




[AXIS_2]

TYPE =              LINEAR
MAX_VELOCITY =      30
MAX_ACCELERATION =  10

BACKLASH =           0.000

SCALE = 1600

MIN_LIMIT =             -70.0
MAX_LIMIT =             70.0

#FERROR =     0.050
#MIN_FERROR = 0.005
FERROR =     1.000
MIN_FERROR = 1.000

#HOME =                  0.000
#HOME_OFFSET =           0.10
#HOME_SEARCH_VEL =       0.10
#HOME_LATCH_VEL =        -0.01
#HOME_USE_INDEX =        YES
#HOME_IGNORE_LIMITS =    YES

# these are in nanoseconds
DIRSETUP   =              200
DIRHOLD    =              200
STEPLEN    =              1000
STEPSPACE  =              1000




[EMCIO]

# Name of IO controller program, e.g., io
EMCIO =                 io

# cycle time, in seconds
CYCLE_TIME =            0.100

# tool table file
TOOL_TABLE =            tool.tbl
Uživatelský avatar
RadekCX
Příspěvky: 622
Registrován: 14. 7. 2006, 10:12
Bydliště: Č.Budějovice
Kontaktovat uživatele:

22. 1. 2010, 11:02

ahoj, pokud to je na profistepech tak si zvetsi delky pulzu na 7500-10000 v nastaveni os.

resil jsem to pred vanoci a byl jsem z toho dost zoufalej - jednalo se o nevysvetlitelne chyby - v podstate se mi ztracely kroky ale specificky podle toho o jaky kod se jednalo

problem je v tom, ze pouzite optocleny maji propagation delay 5us je pak jasne ze to muze fungovat ne zcela dobre s nastavenim 1us

vstup profistepu byl navrzenej tak aby fungoval skoro na vsem od pofidernich NB az po klasickou TTLku

P.S. uz jsem skoro zavahal zda neni bota ve FW kdyz jsem to resil, ale naprogramovano je dobre - udelal jsem si specialni FW, kterej indikuje 0 (jednim pinem se to vynuluje a na druhem sviti LED kdyz je nula) - testoval jsem to a sedi to na krok
FW zvlada na MESA cca 85kHz na vstupu - je to vic nez bylo deklarovano
RadekCX
======================================================================
http://www.cncnet.info - problematika CNC a automatizace
http://www.jakjevenku.info - webová meteostanice
Odpovědět

Zpět na „Ostatní veci kolem programovani“