Stránka 1 z 1

EMC2 programování

Napsal: 18. 12. 2015, 5:07
od Crocop
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ěď

Re: EMC2 programování

Napsal: 18. 12. 2015, 7:31
od Thomeeque
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.

Re: EMC2 programování

Napsal: 3. 1. 2016, 10:01
od Ruff
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

Re: EMC2 programování

Napsal: 13. 7. 2016, 7:45
od hans
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

Re: EMC2 programování

Napsal: 13. 7. 2016, 10:11
od Thomeeque
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.

Re: EMC2 programování

Napsal: 13. 7. 2016, 10:38
od robokop
da
na to je remap

Re: EMC2 programování

Napsal: 13. 7. 2016, 10:41
od Thomeeque
jj, viz. přilinkované demo

Re: EMC2 programování

Napsal: 13. 7. 2016, 10:43
od robokop
jojo

remap je to kouzelne slovicko pod kterym se najde hafo informaci jak to udelat