ATC pro Mikron UME 600

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

12. 9. 2019, 6:36

Problém je v tom že po vykonání celého programu to zůstává viset. Jakoby se to nedokončí, musím vypnout pohony a znovu zapnout (Machine enable).
Jakoby to ignorovalo to M2.
Nebo musím poslat signál na Tool changed nebo jak?
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C CNC
Uživatelský avatar
robokop
Site Admin
Příspěvky: 17087
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

12. 9. 2019, 7:02

Jestli mas vporadku epilog melo by to normalne ukoncit.

Jsi si jistej ze to dobehne az na ten konec?
Hod si tam debug hlasku
Vsechna prava na chyby vyhrazena (E)
lukin1156
Příspěvky: 399
Registrován: 7. 11. 2012, 8:42

12. 9. 2019, 9:59

Jo. Poslední signál je vypnutí hydrauliky a to udělá.
Přikládám zkrácené NGC. Přijde mi, jakoby byl problém v tom sub a end sub.

o<vymena>sub
M5
M64 P0
M9
G0 G53 Y-115Z0X0

;OTEVRENI DVERI
M64 P3
M64 P1
M66 P0 L3 Q3
o101 if [#5399 LT 0]
(abort, FAIL DVERE)
M65 P0
o101 endif
;POHYB RUKY
M64 P4 ;ZAJETI DO ZASOBNIKU
M66 P2 L3 Q3
....
....
M65 P2
M65 P0
M65 P3
o<vymena>endsub
m2


V ini je to takhle
REMAP=M6 modalgroup=6 prolog=change_prolog ngc=vymena epilog=change_epilog
Soubory prolog a epilog jsem ale nikam nedával.
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C CNC
Uživatelský avatar
robokop
Site Admin
Příspěvky: 17087
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

12. 9. 2019, 11:05

To bude ono ty dva soubory tam dej to musis mit jinak ti to spolehlive nepreda parametry a nedokonci vymenu

Bez prologu ti to nepreda sys. Promenne
A epilog to dokoncuje aby system vedel ze se to povedlo
Vsechna prava na chyby vyhrazena (E)
lukin1156
Příspěvky: 399
Registrován: 7. 11. 2012, 8:42

13. 9. 2019, 7:32

A jak takový soubor má vypadat ? Nějaký vzor ?
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C CNC
Uživatelský avatar
robokop
Site Admin
Příspěvky: 17087
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

13. 9. 2019, 7:35

Mas je v dokumentaci linuxcnc od instalace
Myslim ze kdyz vyhledas na disku soubor prolog* a epilog* tak je najdes
Hlavne je needituj proste zkopiruj k tve konfiguraci a nalinkuj k nim cestu v ini
Vsechna prava na chyby vyhrazena (E)
lukin1156
Příspěvky: 399
Registrován: 7. 11. 2012, 8:42

13. 9. 2019, 7:59

Zkopírovat do složky konfigurace ?
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C CNC
Uživatelský avatar
robokop
Site Admin
Příspěvky: 17087
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

13. 9. 2019, 10:53

ano
tady mas vsechno kolem tech scriptu do podrobna
vpodstate potrebujes v ini toto:

[PYTHON]
# where to find Python code:
# code specific for this configuration
PATH_PREPEND=./
# generic support code
PATH_APPEND=
# import the following Python module
TOPLEVEL=./toplevel.py
# the higher the more verbose tracing of the Python plugin
LOG_LEVEL = 99

pak tam mit ten toplevel stdglue a dalsi py soubory
a ono se to postupne na sebe odkazuje

tim se ti natahnou prolog a epilog a provedou se vzdy pred a po vymene
tim padem se ti tam dostane cislo soucasneho a budouciho nastroje a dalsi dulezite veci
Vsechna prava na chyby vyhrazena (E)
lukin1156
Příspěvky: 399
Registrován: 7. 11. 2012, 8:42

13. 9. 2019, 12:16

Takže nějak tahle ?


[PYTHON]
# where to find Python code
PATH_PREPEND=python
# generic support code
PATH_APPEND= (tady nevím)
# import the following Python module
TOPLEVEL=python/toplevel.py
# the higher the more verbose tracing of the Python plugin
LOG_LEVEL = 99

v mojí konfiguraci je pak složka python kde jsou ty soubory. Ale když je otevřu přes mousepad tak jsou většinou prázdné. To je v pořádku nebo by tam mělo něco být ?

EDIT-
asi jsem našel.

[source,python]
---------------------------------------------------------------------
def change_prolog(self, **words):
try:
if self.selected_pocket < 0:
return "M6: no tool prepared"

if self.cutter_comp_side:
return "Cannot change tools with cutter radius compensation on"

self.params["tool_in_spindle"] = self.current_tool
self.params["selected_tool"] = self.selected_tool
self.params["current_pocket"] = self.current_pocket
self.params["selected_pocket"] = self.selected_pocket
return INTERP_OK
except Exception, e:
return "M6/change_prolog: %s" % (e)




[source,python]
---------------------------------------------------------------------
def change_epilog(self, **words):
try:
if self.return_value > 0.0:
# commit change
self.selected_pocket = int(self.params["selected_pocket"])
emccanon.CHANGE_TOOL(self.selected_pocket)
# cause a sync()
self.tool_change_flag = True
self.set_tool_parameters()
return INTERP_OK
else:
return "M6 aborted (return code %.1f)" % (self.return_value)

except Exception, e:
return "M6/change_epilog: %s" % (e)
---------------------------------------------------------------------


Akorát vím že jsem možná udělal chybu v tom že jsem při první kofiguraci pncconf nezaklikl random tool changer. Zkusím udělat druhou konfiguraci jestli to vygeneruje správný prolog a epilog.
Naposledy upravil(a) lukin1156 dne 13. 9. 2019, 12:22, celkem upraveno 1 x.
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C CNC
Uživatelský avatar
Juro
Příspěvky: 1283
Registrován: 19. 3. 2007, 12:14
Bydliště: Kamanová (Topoľčany)

13. 9. 2019, 12:20

Ale ved toto sme robili uz na zaciatku tohoto vlakna. :cry:
Su tam cesty a aj ten prolog , epilog, toplevel a stdglue subor v jednom zabalenom subore "Python" . :!: :!: :!: :!:

Jedine ze by bol vadny alebo nie su patricne povolenia. :?:

EDIT vidim ze si ma obeol s prispevkom.
Rozbal si ich esteraz a musis tam mat samotny program.
rocnik 1976 -stolár, trosicka uz aj strojar.
Uživatelský avatar
Juro
Příspěvky: 1283
Registrován: 19. 3. 2007, 12:14
Bydliště: Kamanová (Topoľčany)

13. 9. 2019, 12:29

Tak to je trocha ine co som to dal ja.

# stdglue - canned prolog and epilog functions for the remappable builtin codes (T,M6,M61,S,F)
#
# we dont use argspec to avoid the generic error message of the argspec prolog and give more
# concise ones here


# cycle_prolog,cycle_epilog: generic code-independent support glue for oword sub cycles
#
# these are provided as starting point - for more concise error message you would better
# write a prolog specific for the code
#
# Usage:
#REMAP=G84.3 modalgroup=1 argspec=xyzqp prolog=cycle_prolog ngc=g843 epilog=cycle_epilog


import emccanon
from interpreter import *
throw_exceptions = 1

#REMAP=S prolog=setspeed_prolog ngc=setspeed epilog=setspeed_epilog
#exposed parameter: #<speed>

def setspeed_prolog(self,**words):
try:
c = self.blocks[self.remap_level]
if not c.s_flag:
self.set_errormsg("S requires a value")
return INTERP_ERROR
self.params["speed"] = c.s_number
except Exception,e:
self.set_errormsg("S/setspeed_prolog: %s)" % (e))
return INTERP_ERROR
return INTERP_OK

def setspeed_epilog(self,**words):
try:
if not self.value_returned:
r = self.blocks[self.remap_level].executing_remap
self.set_errormsg("the %s remap procedure %s did not return a value"
% (r.name,r.remap_ngc if r.remap_ngc else r.remap_py))
return INTERP_ERROR
if self.return_value < -TOLERANCE_EQUAL: # 'less than 0 within interp's precision'
self.set_errormsg("S: remap procedure returned %f" % (self.return_value))
return INTERP_ERROR
if self.blocks[self.remap_level].builtin_used:
pass
#print "---------- S builtin recursion, nothing to do"
else:
self.speed = self.params["speed"]
emccanon.enqueue_SET_SPINDLE_SPEED(self.speed)
return INTERP_OK
except Exception,e:
self.set_errormsg("S/setspeed_epilog: %s)" % (e))
return INTERP_ERROR
return INTERP_OK

# REMAP=F prolog=setfeed_prolog ngc=setfeed epilog=setfeed_epilog
# exposed parameter: #<feed>

def setfeed_prolog(self,**words):
try:
c = self.blocks[self.remap_level]
if not c.f_flag:
self.set_errormsg("F requires a value")
return INTERP_ERROR
self.params["feed"] = c.f_number
except Exception,e:
self.set_errormsg("F/setfeed_prolog: %s)" % (e))
return INTERP_ERROR
return INTERP_OK

def setfeed_epilog(self,**words):
try:
if not self.value_returned:
r = self.blocks[self.remap_level].executing_remap
self.set_errormsg("the %s remap procedure %s did not return a value"


atd.
atd.
Naposledy upravil(a) Juro dne 13. 9. 2019, 2:47, celkem upraveno 1 x.
rocnik 1976 -stolár, trosicka uz aj strojar.
fupe
Příspěvky: 575
Registrován: 27. 5. 2008, 9:10
Bydliště: Praha

13. 9. 2019, 1:21

Tak na to koukam a mam malinko pocit že metodou pokusu omylu to budeš davat dohromady dlouho.
Staci procist dokumentaci, neni toho zas tak moc a vetsina veci tu uz zaznela.
pokud nemas ve sve konfiguraci prolog a a epilog a pritom ho definujes v ini, tak je jasny ze to chodit nemuze.
Neni potreba nejakej specialni staci ten co tam uz je a dokonce je tam toho asi 80 procent navic ale klidne to tam nech.jen je dej kam patrej.


Juro píše:
11. 9. 2019, 8:18
lukin1156 píše:
11. 9. 2019, 7:17
Pak už by zbývalo vyřešit již zmíněné uložení čísla nástroje ve vřeteni :D
Ulozit- sa to ulozi, ale je problem to nacitat pri spusteni stroja. To je na zopar riadkov halu, halui.mdi prikazu atd. Realne a bezpecne to vidim na ten python.
V tvem pripade potrebujes nastavit randomtoolchager v ini
http://linuxcnc.org/docs/html/code/code ... oolchanger
to znamena, ze z jedny kapsy vezme nastroj a vlozi do nej ten z vretena. pricemz P0 je vreteno. System si sam po kazde vymene poupravi tbl soubor a pri startu si dokonce precte P0 a nastavi nastroj ve vreteni. u nonrandom je to trochu slozitejsi s tim ukladanim.
tohle sem nikde v tvem ini nenasel, bez toho to taky nebude behat. ty nastroje v držákach si menej pořadí pri kazdy vymene, nemuzes caruselu rikat cisla nastroje,ale cisla pocket. opet je to asi tak stranka dve dokumentace.

Dál nikde nevidim signal iocontrol.0.tool-changed tim rikas systemu ze muze pokracovat v praci, že uz ma vymenu hotovou. Bez toho ti nikdy program dal nepojede. Asi by bylo dobry to dat nekam na konec souboru vymena az budou zavreny dcere a podobne aby to neceho nabouralo.



Umis se halshowconfig nebo z cmdline podivat co na kterem pinu zrovna mas? Bez toho se to blbe dohledává.


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

13. 9. 2019, 5:36

Metoda pokus omyl se nezdá! Akorát to nakopnutí od tebe pomohlo :D
Zkopíroval jsem Pythonovské soubory co mi poslal Juro. Měl jsem to udělat na začátku, hold jsem byl moc hrrr.
Díky Juro :)

Na začátek svého NGC jsem přidal následující řádky:
o<equaltool> if [ #<tool_in_spindle> EQ #<selected_tool> ]
o<change> endsub [1]
o<equaltool> endif


Díky robokope :)

Na konec programu jsem přidal sepnutí digitálního výstupu kterým sepnu iocontrol.0.tool-changed. Na začátku programu výměna NGC ho zase vypínám. Sice to není úplně korektní ale nic jiného mě nenapadlo :(.

Díky fupe :)

Random toolchanger jsem tam měl přidaný ale už jsem to sem pak znovu nedával celou tu konfiguraci.
Nyní mi to teda funguje, pozici nástroje v zásobníku to zapisuje též správně. Ještě musím vylepšit referák kolotoče, jednou se mi zreferovalo špatně a já se divil co tomu šibe :/
Ještě bych chtěl aby se kolotoč točil během toho co jede program. Když zadám Tx bez M6 (Tool prepare) tak se kolotoč natočí ale blokuje pohyb os. Dá se to nějak nastavit?
Díky všem :)
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C CNC
Uživatelský avatar
robokop
Site Admin
Příspěvky: 17087
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

13. 9. 2019, 6:53

T prepare > prepared
Korektni navrat a nemelo by to blokovtat
Vsechna prava na chyby vyhrazena (E)
lukin1156
Příspěvky: 399
Registrován: 7. 11. 2012, 8:42

16. 9. 2019, 8:10

Tak nakonec to během běhu programu načítá řádky dopředu a připravuje si to nástroje samo i bez toho příkazu Tx.
Takže vypadá že je to už komplet :)
SN320,SUI 32 CNC,Maho 700 CNC, Mikron UME 600, Boley BKN 100C CNC
Odpovědět

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