Het "Bouwen" van Macro's voor USBCNC

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

Moderator: Moderators

Plaats reactie
Gebruikersavatar
audiomanics
Donateur
Berichten: 4654
Lid geworden op: 28 feb 2007 09:31
Locatie: Appelscha
Contacteer:

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door audiomanics » 20 okt 2015 17:41

Bedoel je dat je in plaats van, bijvoorbeeld, het uitvoeringscommando G1 X[#10] Y[#11], naar de machine te sturen dit in een bestand opslaat?
Dat zou er dan als volgt uit zien:
LOGMSG "G1 X["#10"] Y["#11"]"
En dan natuurlijk de regel G1 x[#10] Y[#11] even comment maken door er een ;(puntkomma) voor te zetten..

Kees
<klik>... euh..test... 123.... einde test... uit.<klik>

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

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door Arie Kabaalstra » 20 okt 2015 18:49

Ik heb mijn macro zo opgebouwd dat ik vanuit de Usersubs een dialoog open:

Code: Selecteer alles

	DLGMSG "FACING" "X1"1001 "Z1"1003 "X2"1011 "Z2"1013 "R-FEED"4001 "R-DOC"4002 "R-TOOL"4060 "F-FEED"4011 "F-DOC"4012 "F-TOOL"4061 "F-STOCK"4050 "SAFETY DISTANCE"4000
Daarmee heb ik alle parameters voor een vlakdraaibewerking

dan.. zet ik het met LOGMSG weg in een NC bestandje, genaamd "Teach_in.NC".. dit bestand wordt automatisch geladen bij het opstarten van EdingCNC, en Automatisch Herladen als ik 't wijzig..

in dit bestand komen alleen de Parameters te staan..

Code: Selecteer alles

	LOGMSG ";FACING" 
	LOGMSG "	#1001="#1001"		(X1)" 
	LOGMSG "	#1003="#1003"		(Z1)"		
	LOGMSG "	#1011="#1011"		(X2)"
	LOGMSG "	#1013="#1013"		(Z2)"
	LOGMSG "	#4001="#4001"		(R-FEE)D"
	LOGMSG "	#4002="#4002"		(R-DOC)" 
	LOGMSG "	#4060="#4060"		(R-TOO)L"
	LOGMSG "	#4011="#4011"		(F-FEED)" 
	LOGMSG "	#4012="#4012"		(F-DOC)" 
	LOGMSG "	#4061="#4061"		(F-TOO)L"
	LOGMSG "	#4050="#4050"		(F-STOCK)"
	LOGMSG "	#4000="#4000"		(SAFETY DISTANCE)"
	LOGMSG "	#1100="#1100"		(CYCLE INDEX)"
	LOGMSG "M99"
het idee is duidelijk.. dit maakt dat je de code makkelijk kan lezen en eventueel aanpassen..
M99 verwijst naar een Subroutine in mijn Macrofile die kijkt naar de waarde van #1100, die wijst namelijk naar de subroutine die het algoritme bevat om met deze parameters een vlakdraaibewerking te doen.. ( omdat langs en vlakdraaien dezelfde parameters bevatten, kan ik deze waarde ook veranderen in 2.. en gaat ie langsdraaien.. het enige verschil tussen deze twee bewerkingen is immers de bewerkingsrichting..

Zodra dus deze parameters weggeschreven zijn naar Teach_in.nc merkt EdingCNC dat het gewijzigd is.. en wordt het bestand opnieuw geladen..en toont ie de bewerking op het scherm...

Nou ben ik doende met het herschrijven van mijn macro.. met meer functionaliteit.. vandaar dat ik alles in aparte subs heb opgedeeld.. en in mijn Usersub alleen nog maar Gosubs staan.. want.. als ik een bewerking gedaan heb.. dan vraagt de machine (afhankelijk van een instelling) of ik de bewerking wil opslaan in het programma "Partprogram.nc".. inplaats van overschrijven, schrijft mijn macro dan de parameters erbij!.. zodat ik meerdere cycli in één programma af kan lopen.. een toolchange wordt ook als cyclus gezien.. dus ook die komen erbij..

Als ik nu een serie onderdelen moet gaan draaien.. dan zet ik de "Vraag" opslaan in partprogram aan, ik programmeer eerste cyclus, loop em af.. goed?.. toont ie opnieuw de dialoog.. zodat ik dingen kan veranderen indien nodig.. dan Ok heien.. en dan wordt ie opgeslagen.. Volgende cyclus proggen en aflopen.. goed?.. opslaan.. en zo verder.. als dan het eerste onderdeel klaar is, dan zet ik nummer 2 in de machine.. laad het programma PartProgram, druk op start, en ga koffie drinken.. :lol:

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

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door Arie Kabaalstra » 20 okt 2015 19:03

Code: Selecteer alles

;file created at: 20151020-150509
m100
m6t5
(cycle definition facing)
	#1100=1			(cycle index)
	#1020=0			(internal/external)
	#4000=0.5		(safetydistance)
	#1001=29.5		(x1)
	#1003=0.5		(z1)
	#1011=47		(x2)
	#1013=0.1		(z2)
	#4002=0.05		(depth of cut)
	#4001=40		(feed)
	#4005=30		(finish feed)
(end cycle)
m99
(cycle definition turning)
	#1100=2			(cycle index)
	#1020=0			(internal/external)
	#4000=0.5		(safetydistance)
	#1001=29.5		(x1)
	#1003=0.1		(z1)
	#1011=32.7		(x2)
	#1013=-6		(z2)
	#4002=0.1		(depth of cut)
	#4001=40		(feed)
	#4005=30		(finish feed)
(end cycle)
m99
(cycle definition turning)
	#1100=2			(cycle index)
	#1020=0			(internal/external)
	#4000=0.5		(safetydistance)
	#1001=32.7		(x1)
	#1003=0.1		(z1)
	#1011=35.7		(x2)
	#1013=-3.5		(z2)
	#4002=0.1		(depth of cut)
	#4001=40		(feed)
	#4005=30		(finish feed)
(end cycle)
m99
(cycle definition turning)
	#1100=2			(cycle index)
	#1020=0			(internal/external)
	#4000=0.5		(safetydistance)
	#1001=35.7		(x1)
	#1003=0.1		(z1)
	#1011=42.5		(x2)
	#1013=-1.1		(z2)
	#4002=0.1		(depth of cut)
	#4001=40		(feed)
	#4005=30		(finish feed)
(end cycle)
m99
m6 t1
(cycle definition facing)
	#1100=1			(cycle index)
	#1020=0			(internal/external)
	#4000=0.5		(safetydistance)
	#1001=42		(x1)
	#1003=0.1		(z1)
	#1011=47		(x2)
	#1013=0		(z2)
	#4002=0.05		(depth of cut)
	#4001=40		(feed)
	#4005=30		(finish feed)
(end cycle)
m99
(cycle definition turning)
	#1100=2			(cycle index)
	#1020=0			(internal/external)
	#4000=0.5		(safetydistance)
	#1001=42.4		(x1)
	#1003=0		(z1)
	#1011=43		(x2)
	#1013=-1.1		(z2)
	#4002=0.05		(depth of cut)
	#4001=40		(feed)
	#4005=30		(finish feed)
(end cycle)
m99
(cycle definition turning)
	#1100=2			(cycle index)
	#1020=0			(internal/external)
	#4000=0.5		(safetydistance)
	#1001=35.6		(x1)
	#1003=-1.1		(z1)
	#1011=36.2		(x2)
	#1013=-3.5		(z2)
	#4002=0.05		(depth of cut)
	#4001=40		(feed)
	#4005=30		(finish feed)
(end cycle)
m99
(cycle definition turning)
	#1100=2			(cycle index)
	#1020=0			(internal/external)
	#4000=0.5		(safetydistance)
	#1001=32.5		(x1)
	#1003=-3.5		(z1)
	#1011=33.2		(x2)
	#1013=-6		(z2)
	#4002=0.05		(depth of cut)
	#4001=40		(feed)
	#4005=30		(finish feed)
(end cycle)
m99
m6 t3
g00 x35 z0.5
g00 z-2.7
g01 x38.2 f5
g00 x35
g00 z0.5 
m101
m2
zo ziet bij mij een part-program eruit.. ik draai voor met Tool 5, draai na met tool 1, en steek een groefje met tool 3..
Omdat ik nog geen algoritme voor groefsteken heb geschreven,is dat deel nog "met het handje" geprogrammeerd.
Ook staan er minder parameters in dan in het hierboven geschreven voorbeeld..
Ik heb namelijk in de nieuwe macro het voor en nadraaien in één cyclus gezet.. maar als je het voordraaien, of het nadraaien met voeding 0 programmeert.. dan slaat ie dat over.. zo kun je dus gewoon de nominale maten programmeren.. in plaats van dat je moet gaan staan rekenen.. dat rekenen , dat laat ik wel aan de Emco over.. die is daar beter in dan ik.. ik programmeer gewoon een F-stock van 0.25 (half millimetertje in diameter)
Daarmee kan ik ook voor en nadraaien met verschillende tools.. de wissel gaat tenslotte ook automatisch.. en omdat het tool nu in de cyclus zit.. hoef ik daar ook niet meer om te denken.. ik kan gewoon "doorkloppen"

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

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door Arie Kabaalstra » 03 nov 2015 00:31

Ik trek deze weer even open.. waarom?... omdat ik weer iets ontdekt heb..

Eigenlijk stom.. ik gebruikte het foefje op de Heidenhain freesbank ook wel.. waarom ben ik het al die jaren vergeten?..

Waar gaat het om?.. welnu.. Incrementeel verplaatsen.. zonder G91!.. Hoe kan dat?..
Isse simpel.. leg ik even uit..

G00 X20 Y 0 ; dat lijkt me duidelijk
;en dan.. let op het springen van de lintworm!
G00 X[#5001+10] Y[#5002+10]

In die regel zit em de kneep.. #5001 en #5002 zijn de parameters voor de actuele X en Y waarden.. en daar tel ik gewoon 10 bij.. die regel heeft dus hetzelfde effect als

G00 G91 X10 Y10

Maar.. je hoeft de volgende regel dus niet meer je G90 aan te zetten.. :lol:

'k dacht.. zal het maar even delen hier.. ( kan van pas komen in Macrootjes.. terugtrekken met veiligheidsafstand.. hoef je niet te rekenen.. geen aparte parameters aan te maken.. of G91/G90 te proggen.
"dajjetmaareffeweet"

Gebruikersavatar
audiomanics
Donateur
Berichten: 4654
Lid geworden op: 28 feb 2007 09:31
Locatie: Appelscha
Contacteer:

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door audiomanics » 03 nov 2015 00:43

Ik neem aan dat je 't wel even geprobeerd hebt.. want als je vooruit leest (LAF) is dat register nog niet gevuld met de juiste waarde..misschien..
Heb je trouwens iets voor "random" getallen??? (kan ik wel gebruiken bij mijn Voronoi implementatie.. Geheel in EdingCNC..)

Kees
<klik>... euh..test... 123.... einde test... uit.<klik>

Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 6382
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door hugo stoutjesdijk » 03 nov 2015 08:46

Waarom je dat foefje ook al op de heidenhain gebruikt ontgaat me, daar schrijf je gewoon XI10 als je die ene beweging incrementeel wilt hebben.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.

Gebruikersavatar
DaBit
Donateur
Berichten: 7916
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door DaBit » 03 nov 2015 08:59

audiomanics schreef:Ik neem aan dat je 't wel even geprobeerd hebt.. want als je vooruit leest (LAF) is dat register nog niet gevuld met de juiste waarde..misschien..
Jawel, want dat zit in de interpreter. Die kan best een eindje vooruit lopen en z'n segmenten naar de trajectplanner spugen.
Heb je trouwens iets voor "random" getallen??? (kan ik wel gebruiken bij mijn Voronoi implementatie.. Geheel in EdingCNC..)
Hmm, normaal doe je dat o.a. met een LFSR
Het zal het nog niet helemaal triviaal zijn om losse bitjes te isoleren, maar met wat round() en delen kom je d'r wel.

Gebruikersavatar
audiomanics
Donateur
Berichten: 4654
Lid geworden op: 28 feb 2007 09:31
Locatie: Appelscha
Contacteer:

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door audiomanics » 03 nov 2015 09:59

DaBit schreef:Hmm, normaal doe je dat o.a. met een LFSR
Duidelijk verhaal en ook goed in programma te vatten (misschien wat omslachtig, maar bij gebrek aan een Random() functie)

Kees
<klik>... euh..test... 123.... einde test... uit.<klik>

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

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door Arie Kabaalstra » 03 nov 2015 12:04

op de Heidi gebruikte ik het om vanuit actuele positie nieuwe posities te berekenen.. zoals CC's.. voor polaire bewegingen.. of een CC voor een polaire array..

't nut is niet altijd het belangrijkste criterium.. dat het kan..daar gaat het soms ook om.. :lol:

Ik probeer altijd alle mogelijkheden uit.. bijvoorbeeld het foefje in mijn macro's.. dat ik de macro het programma laat schrijven dat de machine moet uitvoeren.. daardoor krijg ik eerst een preview na het invoeren van mijn dialoog.. normaliter als je een programma met een dialoog schrijft.. gaat ie meteen aan de slag met de ingegeven parameters.. dat was voor mij niet acceptabel.. ik wilde eerst een preview.. dus.. dan zo maar..

Zelfs Bert Eding begreep in eerste instantie niet hoe ik dat geflikt had.. Ok.. hij kent alle ins en outs van zijn software.. maar hij had LOGMSG nog nooit gebruikt voor het schrijven van Code.. dat was simpelweg nog niet bij em opgekomen..

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

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door Arie Kabaalstra » 25 nov 2015 00:21

Ik heb vandeweek een nuttige toepassing gevonden voor het Abs/inc programmeren in één regel.. Schroefdraadfrezen.. je kunt een spiraal programmeren met :

G02 x-20 y0 z[#5003-0.25] r20
G02 x20 y0 z[#5003-0.25] r20

zo krijg je een cirkeltje om x0 y0, radius 20, met een spoed van 0.5.. kan handig zijn in een macrootje.. zeker als je de spoed in een hoek verrekend... hoef je niet op hele halve cirkels uit te komen.. bereken je gewoon de z voor de laatste gedeeltelijke gang.. en presto!.. :)

Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 6382
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door hugo stoutjesdijk » 25 nov 2015 09:26

Ik vind een G2 zonder middelpunt toch altijd een beetje kaal, zou het zo oplossen.

Code: Selecteer alles

G0 X20 Y0
G2 I0 J0 ZI-0.5   

En als ik in 3 omwentelingen naar beneden wil:

Code: Selecteer alles

G9 G2 I0 J0 WI(3*360) ZI-1.5
( G9 =poolcoordinaten, WI is incrementele hoek ZI is incrementeel zakken )
Maar ja ik heb ook een exoot, die zo makkelijk is dat iedereen er bang van is. :mrgreen:
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.

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

Re: Het "Bouwen" van Macro's voor USBCNC

Bericht door Arie Kabaalstra » 25 nov 2015 10:09

en dat gaat nou net weer niet in EdingCNC.. :lol: .. ik zal het eens bij Bert op zijn bord gooien.. :)
op zich is een "I" volgens mij nog wel te verwezenlijken in de Software van de Interpreter.. komt neer op..

IF (Aswoord contains :"I")
movement =(#500X/Y/Z/A/B/C+Coordinate)
ENDIF

Ik zal het eens voorstellen...G90/G91 is me te omslachtig.. :mrgreen:

Plaats reactie