EMC2 programování
Zdravím, nevíte někdo jak v EMC2 vyvolám podprogram( soubor )? Chtěl bych mít program a v něm vyvolat jiný program. Kde mám uložit ten vyvolávaný program? Jakou koncovku má mít ten soubor? Atd... Zkoušel jsem v programu napsat: "o<program> call" a to mi hlásí chybu, že chybí nějaké "o word" a v tom "program" jsem definoval to "sub" a endsub" atd... a nefunguje mi to... díky za odpověď
Zdar,
podprogram z externího souboru jsem nerozběhal, je tam nějaký opruz s umístěním těch souborů, zkusil jsem to, ale ani podle popisu to nechodilo. Možná se to tlouklo s jinym custom nastavenim, nevim, došla mi trpělivost a nasázel jsem to vše do jednoho souboru, viz. http://www.c-n-c.cz/viewtopic.php?f=15& ... 45#p183575, to fachalo pěkně.
T.
podprogram z externího souboru jsem nerozběhal, je tam nějaký opruz s umístěním těch souborů, zkusil jsem to, ale ani podle popisu to nechodilo. Možná se to tlouklo s jinym custom nastavenim, nevim, došla mi trpělivost a nasázel jsem to vše do jednoho souboru, viz. http://www.c-n-c.cz/viewtopic.php?f=15& ... 45#p183575, to fachalo pěkně.
T.
mimooborová naplavenina • kolowratský zázrak™ • NPS • GCU • HirthCalc • ncDP.ino
Nazdar,
podprogramy mam nahazene v adresari /home/cnc/linuxcnc/nc_files ,koncovka .ngc
cesta musi byt uvedena v ini souboru konfigurace stroje
parametr PROGRAM_PREFIX=cesta k programum
Priklad vyvolani frez. hranace, hlavni program frez-obvod.ngc :
%
G17
G40
G80
G90
T1
M6
M1
M3 S1500
M1
(PARAMETRY PODPROGRAMU)
(LEVY PREDNI ROH HRANACE X,Y,Z _Q7,_Q8,_Q9)
#<_Q7> = 0.0
#<_Q8> = 0.0
#<_Q9> = 0
(DELKA,SIRKA HRANACE,KONCOVE Z: _Q10,_Q11,_Q12)
#<_Q10> = 112.
#<_Q11> = 13.0
#<_Q12> = -5.5
(PRISUV Z,POSUV,NAJEZD,ROVINA RYCHLOPOSUVU Z)
#<_Q13> = 0.5
#<_Q14> = 800
#<_Q16> = 0.5
#<_Q17> = 10
(PRUMER NASTROJE, POKUD NULA, BERE SE Z TABULKY NASTROJU)
#<_Q18> = 5.0
O<OBVOD-VNEJSI> CALL
M30
%
Samostatny podprogram pro frez.hranace, soubor obvod-vnejsi-n.ngc:
o<OBVOD-VNEJSI-N> sub
(#<_Q7> = X START)
(#<_Q8> = Y START)
(#<_Q9> = Z START)
(#<_Q10> = X DELKA)
(#<_Q11> = Y DELKA)
(#<_Q12> = Z KONEC)
(#<_Q13> = Z KROK)
(#<_Q14> = POSUV)
(#<_Q15> = SRAZENI ROHU)
(#<_Q16> = BEZPECNA X)
(#<_Q17> = ROVINA RYCHLOPOSUVU Z)
(#<_Q18> = PRUMER NASTROJE)
g90
#14 = #<_Q14>
(RADIUS NASTROJE)
O1 IF[#<_Q18> GT 0]
#28=[#<_Q18> / 2]
O1 ELSE
#28 = [#5410 / 2]
O1 ENDIF
(POCATECNI Z)
#29 = #<_Q9>
(POSUNUTE SOURADNICE S OHLEDEM NA RADIUS)
#30 = [#<_Q7> - #28]
#31 = [#<_Q8> - #28]
#32 = [#30 + #<_Q10> + [#28*2]]
#33 = [#31 + #<_Q11> + [#28*2]]
(ODJEZD X)
#34 = [#30 + #28 + [[#<_Q10>+#28]/2]]
(NAJEZD Y)
#35 = [#31 - #28 - #<_Q16>]
(NAJEZD X)
#36 = [#34 - #28 - #28]
(NAJEZD Z)
M3 M8
G4 P0.25
G0 Z#<_Q17>
(SMYCKA Z)
O100 WHILE[#29 GT #<_Q12>]
G0 X[#36] Y[#35]
(NOVE Z)
#29 = [#29 - #<_Q13>]
O101 IF [#29 LT #<_Q12>]
#29 = [#<_Q12>]
O101 ENDIF
G0 Z[#29]
G1 Y[#31] F#<_Q14>
G1 X[#32]
G1 Y[#33]
G1 X[#30]
G1 Y[#31]
G1 X[#34]
G1 Y[#35]
O100 ENDWHILE
G90
G0 Z[#<_Q17>]
o<OBVOD-VNEJSI-N> endsub
podtrzitka pred jmenem promenne jsou nutne, aby emc poznal, ze se pracuje s globalnimi promennymi
podprogramy mam nahazene v adresari /home/cnc/linuxcnc/nc_files ,koncovka .ngc
cesta musi byt uvedena v ini souboru konfigurace stroje
parametr PROGRAM_PREFIX=cesta k programum
Priklad vyvolani frez. hranace, hlavni program frez-obvod.ngc :
%
G17
G40
G80
G90
T1
M6
M1
M3 S1500
M1
(PARAMETRY PODPROGRAMU)
(LEVY PREDNI ROH HRANACE X,Y,Z _Q7,_Q8,_Q9)
#<_Q7> = 0.0
#<_Q8> = 0.0
#<_Q9> = 0
(DELKA,SIRKA HRANACE,KONCOVE Z: _Q10,_Q11,_Q12)
#<_Q10> = 112.
#<_Q11> = 13.0
#<_Q12> = -5.5
(PRISUV Z,POSUV,NAJEZD,ROVINA RYCHLOPOSUVU Z)
#<_Q13> = 0.5
#<_Q14> = 800
#<_Q16> = 0.5
#<_Q17> = 10
(PRUMER NASTROJE, POKUD NULA, BERE SE Z TABULKY NASTROJU)
#<_Q18> = 5.0
O<OBVOD-VNEJSI> CALL
M30
%
Samostatny podprogram pro frez.hranace, soubor obvod-vnejsi-n.ngc:
o<OBVOD-VNEJSI-N> sub
(#<_Q7> = X START)
(#<_Q8> = Y START)
(#<_Q9> = Z START)
(#<_Q10> = X DELKA)
(#<_Q11> = Y DELKA)
(#<_Q12> = Z KONEC)
(#<_Q13> = Z KROK)
(#<_Q14> = POSUV)
(#<_Q15> = SRAZENI ROHU)
(#<_Q16> = BEZPECNA X)
(#<_Q17> = ROVINA RYCHLOPOSUVU Z)
(#<_Q18> = PRUMER NASTROJE)
g90
#14 = #<_Q14>
(RADIUS NASTROJE)
O1 IF[#<_Q18> GT 0]
#28=[#<_Q18> / 2]
O1 ELSE
#28 = [#5410 / 2]
O1 ENDIF
(POCATECNI Z)
#29 = #<_Q9>
(POSUNUTE SOURADNICE S OHLEDEM NA RADIUS)
#30 = [#<_Q7> - #28]
#31 = [#<_Q8> - #28]
#32 = [#30 + #<_Q10> + [#28*2]]
#33 = [#31 + #<_Q11> + [#28*2]]
(ODJEZD X)
#34 = [#30 + #28 + [[#<_Q10>+#28]/2]]
(NAJEZD Y)
#35 = [#31 - #28 - #<_Q16>]
(NAJEZD X)
#36 = [#34 - #28 - #28]
(NAJEZD Z)
M3 M8
G4 P0.25
G0 Z#<_Q17>
(SMYCKA Z)
O100 WHILE[#29 GT #<_Q12>]
G0 X[#36] Y[#35]
(NOVE Z)
#29 = [#29 - #<_Q13>]
O101 IF [#29 LT #<_Q12>]
#29 = [#<_Q12>]
O101 ENDIF
G0 Z[#29]
G1 Y[#31] F#<_Q14>
G1 X[#32]
G1 Y[#33]
G1 X[#30]
G1 Y[#31]
G1 X[#34]
G1 Y[#35]
O100 ENDWHILE
G90
G0 Z[#<_Q17>]
o<OBVOD-VNEJSI-N> endsub
podtrzitka pred jmenem promenne jsou nutne, aby emc poznal, ze se pracuje s globalnimi promennymi
Ahoj,
řeším problém s proměnnými, které mám použité pro určení pozice nástroje ve výměníku. Na začátku každého programu mám několik řádků, které mi určují pozici nástroje. Bylo to myšleno tak, že kdyby se někdy výměník posunul, prostě by se ty první řádky v každém programu přepsaly. No a to právě nastalo a já se chci zeptat, zda neexistuje možnost umístit tyto proměnné někde "centrálně" a odkazovat na ně v každém programu.
Příklad dosavadního programu:
G17 G21 G40 G49 G54 G80 G90 G94
#1000=-99.6 - nástroj č. 1 - souřadnice X
#1001=-0.4 - nástroj č. 1 - souřadnice Y
#1002=-49.8 - nástroj č. 2 - souřadnice X
#1003=-0.2 - nástroj č. 2 - souřadnice Y
#1004=50 - nástroj č. 3 - souřadnice X
#1005=0.1 - nástroj č. 3 - souřadnice Y
#1006=99.8 - nástroj č. 4 - souřadnice X
#1007=0.3 - nástroj č. 4 - souřadnice Y
G01 X0 Y0 Z0 F250
M152 - otevře zásobník nástrojů
M150 - otevře kleštinu pro upnutí nástroje
G00 X#1004 Y#1005 - najede nad nástroj č. 3
G00 Z-64.7 - nabere nástroj č. 3
M151 - uzavře kleštinu
.... - vyjede ze zásobníku a jede frézovat
Jde mi o to to #1000 až #1007 dát do nějakého externího ngc a na něj se odkazovat.
Díky za pomoc
Honza
řeším problém s proměnnými, které mám použité pro určení pozice nástroje ve výměníku. Na začátku každého programu mám několik řádků, které mi určují pozici nástroje. Bylo to myšleno tak, že kdyby se někdy výměník posunul, prostě by se ty první řádky v každém programu přepsaly. No a to právě nastalo a já se chci zeptat, zda neexistuje možnost umístit tyto proměnné někde "centrálně" a odkazovat na ně v každém programu.
Příklad dosavadního programu:
G17 G21 G40 G49 G54 G80 G90 G94
#1000=-99.6 - nástroj č. 1 - souřadnice X
#1001=-0.4 - nástroj č. 1 - souřadnice Y
#1002=-49.8 - nástroj č. 2 - souřadnice X
#1003=-0.2 - nástroj č. 2 - souřadnice Y
#1004=50 - nástroj č. 3 - souřadnice X
#1005=0.1 - nástroj č. 3 - souřadnice Y
#1006=99.8 - nástroj č. 4 - souřadnice X
#1007=0.3 - nástroj č. 4 - souřadnice Y
G01 X0 Y0 Z0 F250
M152 - otevře zásobník nástrojů
M150 - otevře kleštinu pro upnutí nástroje
G00 X#1004 Y#1005 - najede nad nástroj č. 3
G00 Z-64.7 - nabere nástroj č. 3
M151 - uzavře kleštinu
.... - vyjede ze zásobníku a jede frézovat
Jde mi o to to #1000 až #1007 dát do nějakého externího ngc a na něj se odkazovat.
Díky za pomoc
Honza
Deklaraci #1000-#1007 můžeš zabalit do podprogramu v externím souboru, viz. ruffův post nad tebou.
Osobně bych si tam zkusil zabalit celou výměnu (ne jen deklaraci) a volal ji při potřebě výměny. Nejdřív bych si tedy nastudoval, jestli se to nedá nějak napojit na standardní volání výměny nástroje (T<index nástroje> M6), to je asi správná cesta.
Mělo by: http://psha.org.ru/cgit/psha/emc2.git/p ... m6demo.ngc
T.
Osobně bych si tam zkusil zabalit celou výměnu (ne jen deklaraci) a volal ji při potřebě výměny. Nejdřív bych si tedy nastudoval, jestli se to nedá nějak napojit na standardní volání výměny nástroje (T<index nástroje> M6), to je asi správná cesta.
Mělo by: http://psha.org.ru/cgit/psha/emc2.git/p ... m6demo.ngc
T.
mimooborová naplavenina • kolowratský zázrak™ • NPS • GCU • HirthCalc • ncDP.ino