automatisch gereedschap inmeten bij m6 toolchange

Nederlandse CNC controller op basis van de usb poort of Ethernet.

Moderator: Moderators

Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13527
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door Arie Kabaalstra »

Nog even een handigheidje.. als je Single Block inschakelt, dan kun je regel voor regel zien wat EdingCNC doet..

Single Block schakel je in door: [Ctrl] T, of het vinkje "Single" in Auto Menu.
niek_saxofoon
Berichten: 99
Lid geworden op: 09 mar 2010 20:07
Locatie: Den Haag/Utrecht
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door niek_saxofoon »

Caesar schreef: 14 nov 2020 21:17 Veel tekst, maar zie uiteindelijk de onderste code voor een voorbeeld hoe ik denk dat je op de 0-trigger van de toolsetter je Z-waarde kan wegschrijven. Maar ik denk dat het de moeite waard is alles even door te lezen omdat je een aantal fundamentele fouten in je M_tool hebt. Geen probleem natuurlijk, maar dan zie je i.i.g. waar het fout gaat.

het is even geleden dat ik zelf macro's geschreven heb dus ik bereid me alvast voor op Arie's kabaal ;).

Als sidenote: je foutmelding "ErrMsg "Tool must be in range of 0 .. 99" moet zijn: "range of 1..99": want je vangt immers af dat 0 niet ingevuld mag worden

Met bovenstaande code heb je nog steeds het probleem dat als je toolnumber 0 invult (5016) dat 2 if statements waar zijn: namelijk de eerste en de tweede, die parrallell en niet embedded van elkaar zijn. M.a.w. hij gaat de eerste if uitvoeren, volgend een M30. Maar ook je tweede if is waar bij #5016==0.

Ik weet niet zeker wat je doel is:

1. gebruiker vult per ongeluk toolnummer 0 in en dit wil je afvangen; dat mag niet en einde programma
2. gebruiker vult express toolnummer 0 in en je wilt dit wegschrijven als ingeladen toolnummer.

Bovenstaande situatie lijkt mij tegenstrijdig. Als je toch wilt dat allebei gebeurd:

-Gebruiker kan toolnummer 0 invullen voor een toolset cyclus, maar je wilt niet proben maar wel je tool nummer updaten (je misbruikt dus een toolset cyclus om toolnummer 0 in je machine weg te schrijven)

Je kunt dan beter de 2e if-code uitvoeren binnen de eerste if omdat de voorwaarde wanneer 5016==0 ingevuld wordt beide if's waar zijn (<1 en ==0):


+50 of +80mm?

Code: Selecteer alles

;move to toolsetter coordinates
                g00 g53 x#4997 y#4998 
                ;move to 50mm above chuck: height + approx tool length + 50
                g00 g53 z[#4999+80+#5017]
 
ik zou eerst de Z 80 (of 50 wat je ook wilt) mm boven de toolsetter zetten voordat je boven de toolchanger gaat hangen. Dit voorkomt dat de frees misschien te laag uitsteekt en eerst in je toolsetter crasht en dan pas 80(50?)mm omhoog gaat. Ik weet dat je ervoor in de code Z op safe height hebt gezet, maar het kan zijn dat je ondertussen omlaag gejogged hebt.

Code: Selecteer alles

g38.2 g91 z-10 f60	; Caesar: je start de probe cyclus naar Z-10
if [#5067 == 1]		; Caesar: Statement overbodig (onderdeel van G38.2), maar niet fout: echter
	g38.2 g91 z5 f20	; Caesar: je gaat nog een keer proben als je zojuist een trigger = 1 gekregen hebt....eerst de probe cyclus proper afmaken
	g90
	if [#5067 == 1]		;Caesar: Nu begint het een beetje rommelig te worden; je hebt nu 2 keer de G38.2 cyclus niet afgemaakt en je test nog steeds op de trigger ==1. M.a.w. zolang de trigger ==1 ga jij een probe actie uitvoeren. Daarnaast heb je beide G38.2 in elkaar ge-iffed. Die moeten na elkaar volgen, niet in elkaar.	
	g0 g53 z#4996		;back to safe height
	;Store tool length, diameter in tool table
	;but only if actually measured, 
	;so leave tool table as is while rendering 
mijn kennis kan te kort schieten, maar als ik bovenstaande vergelijk met de Edingcnc geleverde code heb je teveel onnodige en wederom tegenstrijdige if's. (zie mijn opmerkingen in bovenstaande code)

#5067 hoef je niet te 'iffen'. Dat is al ingebouwd in G38.2. Zie de originele code en informatie op pagina 138 in de manual. In G38.2 zit al ingebakken dat hij bij aanraken iets naar boven gaat, coordinaten opslaat en de volgende code uitvoert (wat dus opnieuw tasten of verder omhoog kan zijn).
Het is niet fout, het maakt het wel onnodig onoverzichtelijk. Je kunt 5067 inderdaad wel gebruiken voor je doel eind om op 0 trigger te testen omdat dit niet in 38.2 zit.

Terugkomend dat je je Z wilt proben op de 0-trigger, je maakt je het je onnodig moeilijk denk ik. Want je kunt G38.2 niet gebruiken om te testen op 0-trigger; voordat je je Z-waarde kunt wegschrijven is hij al iets omhooggegaan.

Je zou wel eerst G38.2 kunnen doen om een ruwe Z waarde te krijgen die weggeschreven wordt in #5053 meen ik. Dan kun je met de hand een verbasterde G38.2 uitvoeren (dus de routine zelf geschreven), bijvoorbeeld:
Je hebt gelijk over die dubbele if bij verkeerd ingegeven tool nummer. Dat ga ik aanpassen.

Wat betreft die probe routine, wat ik graag zou willen is dat de frees vanaf z80 naar beneden gaat proben met een f van 100-200. Tot 5mm boven de probe. Als de sensor dan nog niet geraakt wordt gaat deze vervolgens opnieuw proben met f50 totdat de sensor wordt getriggered, dan wil ik een probe naar boven, totdat de sensor weer open gaat waarna die waarde wordt genomen als z-offset. Ik had dit een beetje afgekeken van de sorotec macro. Maar dat werkt dus niet als na een G38.2 de sensor wordt getriggerd en z +10 gaat?
Gebruikersavatar
P1-Engineering
Donateur
Berichten: 435
Lid geworden op: 27 aug 2019 23:28
Locatie: Haarlem

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door P1-Engineering »

Misschien een stomme vraag, maar waarom niet gewoon de Sorotec macro gebruiken waar dit al standaard inzit?.
De laatste versie, 2.1D, hebben ze nog wat meer functies toegevoegd en bijvoorbeeld ook sensorbewaking toegevoegd.
Als de sensor niet is aangesloten gaat ie nooit triggeren natuurlijk, weet ik helaas uit ervaring..... :oops:
niek_saxofoon
Berichten: 99
Lid geworden op: 09 mar 2010 20:07
Locatie: Den Haag/Utrecht
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door niek_saxofoon »

P1-Engineering schreef: 15 nov 2020 17:26 Misschien een stomme vraag, maar waarom niet gewoon de Sorotec macro gebruiken waar dit al standaard inzit?.
De laatste versie, 2.1D, hebben ze nog wat meer functies toegevoegd en bijvoorbeeld ook sensorbewaking toegevoegd.
Als de sensor niet is aangesloten gaat ie nooit triggeren natuurlijk, weet ik helaas uit ervaring..... :oops:
Het is leuk om iets over te nemen wat werkt, maar door dat te doen leer ik niet hoe het werkt, en aangezien ik in de toekomst ook graag uitgebreidere macros wil schrijven wil ik dit graag leren.

Als we op die manier iets kunnen creëren wat ook goed werkt en wat doorgaat op de eding handleiding hebben misschien meer mensen daar iets aan.
Ik ben overigens helemaal niet vies van afkijken, beter goed gejat dan slecht bedacht. Als je denkt dat er functionaliteiten bij moeten sta ik daar helemaal voor open.
Jasper
Berichten: 691
Lid geworden op: 05 jul 2019 09:39
Locatie: Gorinchem X5 Y2
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door Jasper »

Als je snel wilt zakken tot 5mm boven de sensor zal je eerst de tool lengte moeten opgeven. Dat kan inderdaad in de sorotec macro. Was even vergeten dat het er standaard wellicht niet in zit.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13527
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door Arie Kabaalstra »

Jasper schreef: 15 nov 2020 17:37 Als je snel wilt zakken tot 5mm boven de sensor zal je eerst de tool lengte moeten opgeven. Dat kan inderdaad in de sorotec macro. Was even vergeten dat het er standaard wellicht niet in zit.
Zit er standaard wel in.. Dat heb ik indertijd zo geschreven, uitgaande van mijn ervaringen met de Heidenhain besturing en de Renishaw Toolsetter op de "Bridgeport-van-de-zaak"..

Als ik op die machine een tool wilde meten, dan moest ik de "ongeveer lengte" in de tooltabel ingeven, maar omdat er in EdingCNC de mogelijkheid is om met dialogen te werken, heb ik dat in een dialoog gegooid.

Bovendien.. en dat heb ik er zelf indertijd niet ingezet.. controleert de standaard EdingCNC macro of je toolnummertussen de 0 en 100 zit :

Code: Selecteer alles

if [[#5016 < 1] OR [#5016 > 99]]
Waarvan akte.
een ander verschil tussen de Eding versie en wat ik heb geschreven is dat mijn versie geen Comments had, dat heb ik voor mezelf niet nodig gehad, Bert heeft het erbij gezet, zodat het voor andere gebruikers ook duidelijk is wat er gebeurt.
Caesar
Berichten: 382
Lid geworden op: 30 sep 2014 13:26

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door Caesar »

niek_saxofoon schreef: 15 nov 2020 16:39

Wat betreft die probe routine, wat ik graag zou willen is dat de frees vanaf z80 naar beneden gaat proben met een f van 100-200. Tot 5mm boven de probe. Als de sensor dan nog niet geraakt wordt gaat deze vervolgens opnieuw proben met f50 totdat de sensor wordt getriggered, dan wil ik een probe naar boven, totdat de sensor weer open gaat waarna die waarde wordt genomen als z-offset. Ik had dit een beetje afgekeken van de sorotec macro. Maar dat werkt dus niet als na een G38.2 de sensor wordt getriggerd en z +10 gaat?
Er staat niet in de documentatie dat G38.2 na trigger 10mm omhooggaat (en ik kan het op dit moment niet testen), maar als dat zo is het alleen mogelijk dit te omzeilen door met de hand inderdaad op #5067 gaat testen. Maar nu ik onderstaande code geschreven heb stuiten we volgens mij op een probleem die ik niet zie hoe je die kan oplossen.

Code: Selecteer alles

g00 g53 z[#4999-5+#5017] f50

Code: Selecteer alles

if[5067==1]
		z#5053+10 f10; breng frees 10mm omhoog totdat de 0-trigger komt
Ik graag me namelijk af of de frees eerst bovenstaande commando afmaakt, vóórdat hij de volgende regel, de if-statement om te kijken wanneer de probe triggered in acht neemt. Als dat zo is dan zou de frees dus eerst tot z-5 in de toolsetter drukken en dan pas kijken of de toolsetter getriggered is.

Zie hieronder mijn brouwsel, maar ik denk niet dat het gaat werken door bovenstaand probleem.



Update: als ik de macro van Sorotec zo eens doorneem, dan zou onderstaande toch moeten werken!


Code: Selecteer alles

G00 G53 z[#4999+80+#5017]			; Zet de frees 80mm boven toolsetter (80mm tussen onderkant frees en bovenkant toolsetter): #4999=Z-hoogte gecompenseert voor toolsetter hoogte, #5017 approx tool length

G00 g53 z[#4999+5+#5017] f200			;Breng freesomlaag naar 5mm boven de toolsetter.
if [#5067==1]
	g0 g53 z#4996					;onverwachte trigger, breng frees terug naar veilige hoogte en geef de volgende foutmelding:
	ErrMsg "Tool length not as expected, early trigger, check tool length and try again"
else
	M49							;Tip van Arie set de feedoverride uit zodat je altijd met dezelfde ingestelde snelheid probed
	g00 g53 z[#4999-5+#5017] f50		; Breng frees omlaag (max -5mm) totdat frees de toolsetter triggered
	if[5067==1]
		z#5053+10 f10				; breng frees 10mm omhoog totdat de 0-trigger komt
		if[#5067==0]		;tijdens omhoog gaan wachten we totdat de trigger 0 wordt, als deze nul wordt dan:
			F0				;waarschijnlijk niet nodig omdat wegschrijven heel snel gaat
			#5053=#5073		; #5053 wordt nu ge-update met de Z-waarde toen #5067 nul werd. #5073 is het actuele machine Z-coordinaat.
			g0 g53 z#4996		; Tijdens omhoog gaan naar Z#5052 heb je Z naar huidig waarde veranderd: dus nieuwe code om verder omhoog te gaan, in dit geval veilige hoogte. 
			m48				; feedrate override on
		Endif
	Endif
Endif
misschien is het daarom handiger om het met een while te doen, maar dan heb je hetzelfde probleem, want je kunt dit schrijven: Update: overbodig omdat bovenstaande code toch lijkt te werken, op basis hoe Sorotec het geprogrameerd heeft

Code: Selecteer alles

while [#5067==0]
g0 g53 z[#4999-5+#5017] f50
endwhile


maar volgens mij stopt de frees dan niet tijdens naar beneden gaan, omdat de initiele while waarde 0 was.
Ik zat te denken om G94 te gebruiken: feedrate mode, maar volgens mij is dat ook niet mogelijk, omdat je nog steeds naar een Z-waarde toe gaat vorodat hij de volgende code (een If-statement voor #5067) uitvoert. Beste zou zijn als er een feedrate modus is die geen absolute Z-waarde vraagt, m.a.w. je wilt in pseudotaal:

Code: Selecteer alles

while [#5067==0]
	breng Z-as omlaag met feed 50
endwhile
Ik denk dat daarom G38.2 in het leven geroepen is, dan heb je bovenstaande problemen niet.

Als ik je ervan kan overtuigen om gewoon met G38.2 te werken (en zou net zo precies moeten zijn, maar wel op basis van jouw veiligheidsprocedure) dan kun je het volgende overwegen.
Ik weet niet wat er gebeurd als je een G38.2 uitvoert en probe raakt niets bij ingestelde waarde. Als hij gewoon terug gaat naar start positie of ingevoerde waarde +10, kun je daarna gewoon nog een keer de routine uitvoeren op lagere snelheid vanaf Z+5 naar Z-5 waarbij je verwacht dat hij rond Z=0 triggered.

Code: Selecteer alles

g00 g53 x#4997 y#4998 	 ;move to toolsetter coordinates
g00 g53 z[#4999+80+#5017] ;move to 80mm above chuck height + approx tool length + 80
g38.2 g91 z5 f200           	 ;measure tool length and pull 5mm back up
M49;
g38.2 g91z-5 f10		; measure tool length slow speed  
g90
M48
g0 g53 z#4996   
Jasper
Berichten: 691
Lid geworden op: 05 jul 2019 09:39
Locatie: Gorinchem X5 Y2
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door Jasper »

Ik laat hem gewoon helemaal omhoog gaan, kleine aanpassing in de macro gemaakt.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13527
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door Arie Kabaalstra »

Ik denk dat daarom G38.2 in het leven geroepen is, dan heb je bovenstaande problemen niet.
er is geen andere manier om te meten anders dan met G38.2, wel kun je aan de hand van #5068 kijken of je probe getriggerd is , en met #5067 of ie getriggerd heeft.

Ik heb in het verleden een Macrootje geschreven waarmee je 3D objecten in kan scannen:



Waarbij ik niet elke keer mijn Probe naar een bepaalde veilige Z-hoogte wilde terugtrekken.. het duurt zo al lang genoeg..
Wat ik daar gedaan heb is met #5068 na elke verplaatsing kijken of de probe raakt of niet.
Ik meet meteen 1x1 mm raster, alleen bij de eerste meting op een lijn komt de probe vanaf een bepaalde veilige hoogte naar beneden, daarna trekt ie terug, en loopt ie naar het volgende punt, in kleine stapjes (vanwege de beperkte zijdelingse uitslag van de Probe), raakt ie, dan wordt dat geregistreerd, en gaat de probe een stukje omhoog, raakt ie niet, dan gaat ie verder opzij naar zijn volgende meetpunt, raakt ie daar nog niet.. gaat ie naar benee, raakt ie wel.. gaat ie eerst omhoog, en dan proben..

Als ik nu een nieuwe gereedschapslengtemeetmacro (3 keer woordwaarde :lol: ) zou moeten schrijven, dan zou een Check van #5068 het eerste zijn wat er in staat..
Als die controle de verkeerde waarde doorgeeft, dan MSG "Toolsetter not ready" , dan dialoog voor de gereedschapsafmetingen, Voorpositioneren boven de taster, of er naast als je dat veiliger vindt (kan ik meteen setupmacrootje wel regelen, dan geef je daar de X of Y offset in, dan een M1.. als je jezelf niet vertrouwt dan zet je Option Stop aan), verplaatsen naar boven de taster.. wederom testen of er geen "aanvaring" is (#5068), geen aanvaring.. G83.2 incrementeel een stukje naar beneden, Controle heeft de taster geschakeld? #5067 bekijken, zo niet.. MSG "Tastpunt niet bereikbaar, controlleer gereedschapslengte", zo wel, Parameters berekenen, Tooltabel invullen, Tool omhoog trekken tot veilige hoogte (op mijn machine "Toolwisselhoogte" dus de kop helemaal bovenin (G00G53Z0 bij mij) en dan Endsub.

Of ik em nu met een Userfunctie, in MD1 of met een Toolchange in een programma aanroep, dat kukelt er ook niet tegenan.. maar als je het als aparte Sub schrijft, dan kun je em ook op al die manieren aanroepen.
Als ik een tool heb met een vaste lengte, dan hoef ik die niet te meten.. dan sla ik de meting ook over.. (dat kun je met een M-Functie na je TxM6 ook wel regelen.. of je zet gewoon de gereedschapsnummers met een vaste lengte in Parameters weg, en dan kijk je vantevoren of je tool één van die nummers heeft..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13527
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door Arie Kabaalstra »

Ik denk dat daarom G38.2 in het leven geroepen is, dan heb je bovenstaande problemen niet.
er is geen andere manier om te meten anders dan met G38.2, wel kun je aan de hand van #5068 kijken of je probe getriggerd is , en met #5067 of ie getriggerd heeft.

Ik heb in het verleden een Macrootje geschreven waarmee je 3D objecten in kan scannen:



Waarbij ik niet elke keer mijn Probe naar een bepaalde veilige Z-hoogte wilde terugtrekken.. het duurt zo al lang genoeg..
Wat ik daar gedaan heb is met #5068 na elke verplaatsing kijken of de probe raakt of niet.
Ik meet meteen 1x1 mm raster, alleen bij de eerste meting op een lijn komt de probe vanaf een bepaalde veilige hoogte naar beneden, daarna trekt ie terug, en loopt ie naar het volgende punt, in kleine stapjes (vanwege de beperkte zijdelingse uitslag van de Probe), raakt ie, dan wordt dat geregistreerd, en gaat de probe een stukje omhoog, raakt ie niet, dan gaat ie verder opzij naar zijn volgende meetpunt, raakt ie daar nog niet.. gaat ie naar benee, raakt ie wel.. gaat ie eerst omhoog, en dan proben..

Als ik nu een nieuwe gereedschapslengtemeetmacro (3 keer woordwaarde :lol: ) zou moeten schrijven, dan zou een Check van #5068 het eerste zijn wat er in staat..
Als die controle de verkeerde waarde doorgeeft, dan MSG "Toolsetter not ready" , dan dialoog voor de gereedschapsafmetingen, Voorpositioneren boven de taster, of er naast als je dat veiliger vindt (kan ik meteen setupmacrootje wel regelen, dan geef je daar de X of Y offset in, dan een M1.. als je jezelf niet vertrouwt dan zet je Option Stop aan), verplaatsen naar boven de taster.. wederom testen of er geen "aanvaring" is (#5068), geen aanvaring.. G83.2 incrementeel een stukje naar beneden, Controle heeft de taster geschakeld? #5067 bekijken, zo niet.. MSG "Tastpunt niet bereikbaar, controlleer gereedschapslengte", zo wel, Parameters berekenen, Tooltabel invullen, Tool omhoog trekken tot veilige hoogte (op mijn machine "Toolwisselhoogte" dus de kop helemaal bovenin (G00G53Z0 bij mij) en dan Endsub.

Of ik em nu met een Userfunctie, in MD1 of met een Toolchange in een programma aanroep, dat kukelt er ook niet tegenan.. maar als je het als aparte Sub schrijft, dan kun je em ook op al die manieren aanroepen.
Als ik een tool heb met een vaste lengte, dan hoef ik die niet te meten.. dan sla ik de meting ook over.. (dat kun je met een M-Functie na je TxM6 ook wel regelen.. of je zet gewoon de gereedschapsnummers met een vaste lengte in Parameters weg, en dan kijk je vantevoren of je tool één van die nummers heeft..
Mijn 3D taster bijvoorbeeld had een opname die altijd helemaal achterin de spindel aanlag, dus een vaste lengte.. daarom kon ik die ook gebruiken om mijn werk in te meten.. geen gepiel met freesjes raken en dergelijke.. gewoon stuk metaal op de machine knopen.. taster erin.. boven het werk zetten.. naar beneden laten tasten, en de Z-hoogte ingeven, dan ofwel in een gat meten, of voorkantje, zijkantje.. coordinaten ingeven.. Taster eruit, Tool erin.. Lengte meten, en start heien.. hoefde ik niet meer naar te kijken..
Gebruikersavatar
andrefc101
Donateur
Berichten: 3732
Lid geworden op: 26 dec 2007 08:39
Locatie: Bergen op Zoom
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door andrefc101 »

Vindt je het allemaal zo mooi dat je de berichten al twee gaat plaatsen? Kan ook teveel van het goede zijn hoor :lol:
Gebruikersavatar
Ballegooijen
Donateur
Berichten: 4922
Lid geworden op: 20 sep 2016 15:45
Locatie: 's-Gravendeel
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door Ballegooijen »

Ik heb in het verleden een Macrootje geschreven waarmee je 3D objecten in kan scannen:
Werkt die macro nog met de nieuwe versies van Eding en is hij ook voor anderen (mij) beschikbaar?
Kennis vermenigvuldigt zich alleen als je het deelt.
https://www.Baldas.nl
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13527
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door Arie Kabaalstra »

Die 3D scan macro zal hopelijk nog ergens op een harde schijf rondzwerven.. waar weet ik niet.. ik ben inmiddels 2 PC's verder.. weet niet of ik em nog ergens in een Backup heb staan..

bovendien, was ie nog niet helemaal naar mijn zin..
Er komt nog wel eens een dag dat ik een complete meetmacro ga schrijven, met de kennis die ik nu heb, moet ik een Macro kunnen bouwen om meetprogramma's te maken, dit ook met het oog op een 3D Coordinaten meetmachine die ik wil gaan bouwen, ik heb een heel precies kruistafeltje, waar ik een paar Nema 17 Steppertjes aan wil knopen, Portaaltje eroverheen met een Z-as en een Meettaster, dan moet ik een heel eind kunnen komen..

wat ik nog wel weet is dat die 3D Scan macro vol zat met geneste subroutines. allereerst had je de sub die het werkbereik in de breedte bewaakte, daaronder de sub die de lengte afliep, Daaronder de sub die de taster naar beneden stuurde, en de sub die em in stapjes opzij stuurde, met daaronder de sub die keek naar de status van de taster.
Als ik dat opnieuw ga bouwen, dan komt er een setup in die de zijdelingse maximale uitwijking van de taster meeneemt in de zijdelingse verplaatsing, zodat mijn stapgrootte afgestemd wordt op de beweging die de taster zijdelings kan verwerken..

kortom.. dan gaat het toch echt op software lijken.. da's geen simpel macrootje meer.
een XY gebiedje afscannen, gewoon elke keer vanaf een vaste hoogte is niet zo complex.. daar is het bij mij ook mee begonnen.. daarvandaan ga je verder.. 't is dan alleen een dermate complex geval dat ik nog niet weet of ik dat zomaar op het Internet wil plempen.
niek_saxofoon
Berichten: 99
Lid geworden op: 09 mar 2010 20:07
Locatie: Den Haag/Utrecht
Contacteer:

Re: automatisch gereedschap inmeten bij m6 toolchange

Bericht door niek_saxofoon »

Ik heb er weer even zitten sleutelen. Ik heb nog niet kunnen testen.

Dat "omhoog" proben heb ik gekopieerd uit de Sorotec macro. De volgende keer dat ik bij mijn machine ben ga ik dit eens uitproberen.

Verder heb ik het nu zo dat met de sub change_tool bij annulering van het m_tool dialoog je de vraag krijgt of je door wilt gaan met je programma met tool length offset off. Zelfde geld voor als je tijdens de sub change-tool 0 invoert als tool nummer.

Code: Selecteer alles

sub change_tool
    ;Use #5015 to indicate succesfull toolchange
    #5015 = 0 					; Tool change not performed
	
;-------------vult toolnumber en waarden die bekend zijn in in m-tool dlgmsg-------------------------------------------------------------------
	#5016 = #5011				;toolnumber = new tool during toolchange
	#5017 = #[5400 + #5016]		;tool length of new tool during toolchange if known in tooltable
	#5018 = #[5500 + #5016]		;tool diameter of new tool during toolchange if known in tooltable

;--------------Gereedshap inmeten---------------------------------------------------------------------------------------------------
    ; Als new tool during toolchange niet hetzelfde is als actual tool
    If [ [#5011] <> [#5008] ]
		
		gosub m_tool	
		
    else
        msg "Tool already in spindle"
		dlgmsg "Are tool dimensions for TOOL #5011 correct?" "TOOL LENGTH #5017" "TOOL DIAMETER #5018" "_" "When CANCEL is pressed M_TOOL will be started"
		
        if [#5398 == -1]			;If user pressed CANCEL
		
			gosub m_tool
			msg "zero workpiece Z and start program again"
			m30
		else
			#5015 = 1 					; Tool change performed
		endif
    endif 
;------------Als toolnumber is 0---------------------------------------------------------------------------------------------------------

	if #5008 == 0					;if actual tool is 0
		dlgmsg "Do you want to continue with tool length offset turned off?" "Was tool length offset off during workpiece zero?"
		if [#5398 == -1]			;If user pressed CANCEL
			msg "Program ended"
			m30
		endif
    endif
;-----------Als toolchange wel/niet plaatsgevonden heeft-----------------------------------------------------------------------------------------------------------

    If [[#5015] == 1]  				;if tool change performed
        msg "Toolchange complete, tool "#5008" in spindle"
	else							;if tool change not performed
		dlgmsg "Toolchange NOT performed" "Do you want to continue with tool length offset turned off?" "Was tool length offset off during workpiece zero?"
		if [#5398 == -1]			;If user pressed CANCEL
			msg "Program ended"
			m30
		endif
    endif        
EndSub      

Code: Selecteer alles

sub m_tool
    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"
			m30											;end program
        else
			g28
            g0 g53 z#4996 ; move to safe z
				
			dlgmsg "enter TOOL NUMBER" "TOOL NUMBER" 5016			
			dlgmsg "enter tool dimensions of TOOL #5016" "approx tool LENGTH" 5017 "tool DIAMETER" 5018
			
			if [#5398 == 1] 							;Check user pressed OK
				
;---------------Check tool number----------------------------------------------------------------------------------------------------
			
			    if [#5016 > 99]
                    ErrMsg "Tool must be in range of 1 .. 99"
					m30
				Endif
					
				if[#5016==0]							;If toolnumber is 0
					msg "no tool in spindel, tool length offset off"
					#5011 = #5016
					m6 T[#5011]							;tool 0 geselecteerd in controller
					G49									;toollength offset off
					#5015 = 1 							;indicate tool change performed
				endif
			
				if [[#5016 > 1] OR [#5016 <	99]]
				
;---------------Start measurement------------------------------------------------------------------------------------------------				

					g00 g53 x#4997 y#4998 				;move to toolsetter coordinates
					g00 g53 z[#4999+50+#5017]			;move to 50mm above chuck: height + approx tool length + 50
						
								;measure tool length to 5mm above: chuck height + approx tool length + 5
					g38.2 g53 z[#4999+5+#5017] f100					
					if [#5067 == 1]						;Als probe wordt getriggerd
						g91 z20 f1000					;Ga 20mm omhoog
						g90								;terug in absolute distance mode
						warnmsg "Toollength entered incorrectly"
						m30								;end program
					Endif
						
								;measure tool length tot 10mm naar beneden
					g38.2 g91 z-10 f60
					if [#5067 == 1]		;Als probe wordt getriggerd
						g38.2 g91 z5 f20
						g90
						if [#5067 == 1]		;Als probe wordt getriggerd
							g0 g53 z#4996	;back to safe height
							
							;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
								
										;set new tool in controller
								#5011 = #5016			;new tool during toolchange = toolnumber
								m6 T[#5011]
								g43
								#5015 = 1 				;indicate tool change performed

							else
								warnmsg "parameter 5397 Running mode in rendering"
								m30
							endif
						else
							errmsg "toolsensor not switching on upstroke"
							m30
						endif
					else
						g91 z20 f1000				;Ga 20mm onhoog
						g90							;terug in absolute distance mode
						warnmsg "Toolsetter not switching or entered toollength to short"
						m30							;end program
					endif
				endif				
			else
				msg "m_tool cancelled"
			endif
        endif
	else
		msg "controller in simulating or rendering mode"
		m30
    endif
endsub
Plaats reactie