Hallo allemaal,
Ik ben er uit!
Om te beginnen, het lijkt erop dat sub tool_change in de macro.cnc niet wordt aangeroepen bij een M6T..
Ik heb al vaker gelezen dat dit het geval is. Ik zou ook niet weten hoe de software weet dat als je M6T.. tegen komt dat hij dan die tool_change moet aanroepen.
Op verschillende forum posts was ik tegen gekomen dat je iets in de post Eding processor van Fusion 360 moet aanpassen, maar ik kon niet vinden waar dat dan moet gebeuren, want dit is een heel groot bestand. Totdat ik de post van Carlo was tegen gekomen:
https://cnczone.nl/viewtopic.php?f=13&t ... on#p155184
Code: Selecteer alles
writeBlock("T" + toolFormat.format(tool.number), mFormat.format(6));
if (tool.comment) {
writeComment(tool.comment);
}
// mijn verandering: automatisch toollengte opmeten na manueel wisselen
if (tool.number<(92)){
writeBlock("gosub m_tool");
}
Door te zoeken in de Eding post processor op " if (tool.comment) {", heb je gelijk de juiste regel gevonden. Daar verander je dus wat Carlo heeft beschreven. Echter, ik heb dit iets aangepast in:
Code: Selecteer alles
writeBlock("T" + toolFormat.format(tool.number), mFormat.format(6));
if (tool.number<(99)){
writeBlock("gosub m_tool_no_dlg");
Door "gosub m_tool_no_dl" aan te roepen, krijg je niet het menu waar je lengte en diameter moet ingeven, maar wordt alles direct uit de tool table gehaald. En ik heb de 92 veranderd in 99 omdat je niet meer tools in de tool table kan hebben en tool 99 doet niet mee want dit is je calibratie tool.
Ik heb de post processor gesaved as Eding toolsetter.cps Dan blijft de oorspronkelijke postprocessor nog bestaan. Wel bij het wegschijven van de gcode in fusion, de juiste post processor kiezen. Daarna onthoudt fusion dat je deze post processor gebruikt.
In de macro.cnc heb ik ook wat moeten aanpassen in sub m_tool_no_dlg:
Code: Selecteer alles
sub m_tool_no_dlg
if [[#5380==0] and [#5397==0]] ;do this only when not simulating and not rendering
;Check if toolsetter is calibrated
if [[#4996 == 0] and [#4997 == 0] and [#4998 == 0] and [#4999 == 0]]
errmsg "calibrate first, MDI: gosub calibrate_tool_setter"
else
;dlgmsg "enter tool dimensions" "tool number" 5016 "approx tool length" 5017 "tool diameter" 5018
;In stead of the dialog we get the values from the tool table.
#5016 = #5008 ;Tool number added Tom: was 5025 wordt 5008. Als M6T.. wordt aangeroepen, dan wordt gelijk #5008 geupdate met het tool nummer
#5017 = #[5400 + #5016] ;Approx tool-length from tool table
#5018 = #[5500 + #5016] ;Tool diameter from tool table
if [[#5016 < 1] OR [#5016 > 99]]
ErrMsg "Tool must be in range of 0 .. 99"
endif
;Check if tool is loaded, if not do so.
if [#5016 <> #5008]
m6 t#5016
endif
g0 g53 z#4996 ; move to safe z
;move to toolsetter coordinates
g00 g53 x#4997 y#4998
;move to 10mm above chuck height + approx tool length + 10
g00 g53 z[#4999+10+#5017]; change this to g00 g53 z[#5113] to go fully up.
;measure tool length and pull 5mm back up
g38.2 g91 z-20 f30
g90
;back to safe height
g0 g53 z#4996
;Store tool length, diameter in tool table
;but only if actually measured,
;so leave tool table as is while rendering
if [#5397 == 0]
#[5400 + #5016] = [#5053-#4999]
#[5500 + #5016] = #5018
#[5600 + #5016] = 0 ;Tool X offset is 0
msg "tool length measured="#[5400 + #5016]" stored at tool "#5016
G43 ;added Tom: Gebtuik de tool offset zoals die nu in de tabel staat
m6 t#5016 ;added Tom: laat nog eenkeer de tool, met de juiste offset
endif
endif
endif
endsub
Ik heb hier aangepast: #5016 = #5025 in #5016 = #5008. Ik begrijp de #5025 niet. Ik kan niet vinden waar deze vandaan komt of wordt aangemaakt. Wat ik wel weet is dat als de software M6T.. tegen komt, dat dan in #5008 direct de T.. wordt opgeslagen. Dus bij M6T12, wordt #5008=12. Dus ik geef nu #5016 de waarde mee van de tool die ik net in de machine heb gedaan.
Code: Selecteer alles
;In stead of the dialog we get the values from the tool table.
#5016 = #5008 ;Tool number added Tom: was 5025 wordt 5008. Als M6T.. wordt aangeroepen, dan wordt gelijk #5008 geupdate met het tool nummer
#5017 = #[5400 + #5016] ;Approx tool-length from tool table
#5018 = #[5500 + #5016] ;Tool diameter from tool table
Aan het eine van de sub sub m_tool_no_dlg heb ik nog G43 toegevoegd, zodat de tool lengte correctie gebruikt gaat worden. En vervolgens nog een keer de tool aanroepen met M6T#5016. Dan krijg je op het scherm nog een keer de vraag om de juiste frees in de spindel te doen. je drukt nog een keer op start en de spindel gaat draaien.
Code: Selecteer alles
msg "tool length measured="#[5400 + #5016]" stored at tool "#5016
G43 ;added Tom: Gebtuik de tool offset zoals die nu in de tabel staat
m6 t#5016 ;added Tom: laat nog eenkeer de tool, met de juiste offset
endif
endif
endif
endsub
Dus, wat gebeurd er nu: als je de Gcode in Fusion genereerd, dan wordt er onder de M6T.. direct gosub m_tool_no_dlg gezet.
Als je de Gcode in Eding laat, dan wordt er op een gegeven moment gevraagd "please insert Tool...." Dat doe je en vervolgens ruk je op start. Dan gaat de toolsetter macro "sub m_tool_no_dlg" zijn werk doen, schrijft de nieuw gemeten aarde weg in de tool table en vraagt je opnieuw om de juiste tool in de spindel te zetten. Die tool zit er natuurlijk al in, dus gewoon weer start drukken en de machine gaat verder.
Waarom nog een keer de tool met M6T.. aanroepen? Dan wordt de tool met de gecorrigeerde lengte gebruikt.
Oke, een heel verhaal, maar wel voor een ander bruikbaar hoop ik. Ik heb heel veel geleerd nu over het schrijven en lezen van macro's. Ik ben zeker nog niet goed genoeg om ze zelf te schrijven, maar lezen lukt nu redelijk goed. Ik ben gisteren de hele dag bezig geweest om dit alles uit te zoeken.
Ik hoop dat ik niemand tegen de schenen heb geschopt door mijn eerdere post.
Groeten Tom.