Het "Bouwen" van Macro's voor USBCNC

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

Moderator: Moderators

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

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

Bericht door hugo stoutjesdijk »

Die RETURN hoort toch bij de GOSUB ?
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

hugo stoutjesdijk schreef: 06 mei 2023 20:19 Die RETURN hoort toch bij de GOSUB ?
Ja.. net zoals bij de Talen Commodore Basic 3.5 (misschien ook in 2.0, maar daar heb ik maar beperkt mee gewerkt), Visual Basic, C#, (talen waar ik ook in geprogrammeerd heb, en naar ik begrepen heb in een heleboel andere talen (waar ik (nog) niet in geprogrammeerd heb)

nou zijn er 2 soorten Return, die een Waarde terugkoppen, en die Geen waarde terugkoppen, maar gewoon uit een Subroutine stappen, terug naar de regel onder de aanroep van die Sub, het zogenaamde Return Adress, Die laatste is dus het geval in EdingCNC, hetgeen het dus mogelijk maakt om uit een Subroutine te springen als je in die Sub een aantal "beslissingen" moet nemen, middels IF.

Echter.. dat stond NIET vermeld in de Manual, noch in de Releasenotes.. dat is waarschijnlijk een gevolg van de beginperiode waar het nog meer Hobby was voor Bert Eding, en er soms dingen in EdingCNC , toen nog USBCNC werden geschreven die niet in de manuals of releasenotes terecht kwamen..

Ik vraag me nu af.. Heeft LinuxCNC ook een Return, en mach?.. Want die draaien voor zover ik weet beiden ook op de NIST interpreter...
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

Code: Selecteer alles

;REGION MCODES
SUB M33
	IF[#6>0]
IF [#7==1]
	G01 X#24 Y#25 F#6
	#3701=#24
	#3702=#25
ENDIF
ELSE
	G00 X#24 Y#25
	#3701=#24
	#3702=#25
ENDIF
ENDSUB

SUB M34
IF[#18>0]
	IF[#1>0]
		#3711=[SIN[#1]*#18]
		#3712=[COS[#1]*#18]
		G00 X[#3701+#3711] Y[#3702+#3712]
	ENDIF
ENDIF
ENDSUB
;ENDREGION
Hebbes!... zoals in het Draaibanken topic ook al zijdelings genoemd.. 't is nog "Quick and Dirty" maar de basis werkt..

Hoe het werkt?.. of belangrijker.. wat is het?.. Lineair Polair Positioneren!.. op de machines met Heidenhain besturing gebruikte ik het heel veel..

Hoe gebruik je het?.. Nou.. ik kan een G00 of G01 X.. Y.. M33 programmeren.. en dan wordt het Cirkelmiddelpunt opgeslagen in de Parameters #3701 en #3702
en als ik dan M34 A45 R100 programmeer.. dan gaat ie naar PoolCoordinaat R100 onder 45°

Dus.. Gaten op een Cirkel?.. "eitje", gewoon een 6kantje programmeren?.. Easy. 12 kant?.. Humor.. , maar zoals gezegd.. 't is nog "Quick and Dirty"

Met bovenstaande Subs in de Macro heb je dus de mogelijkheid.. zet ze in je Macro en Kopieplak het volgende stukje Code in een Programma..

Code: Selecteer alles

M33 X-40 Y-10
M34 A30 R20
M34 A90 R20
M34 A150 R20
M34 A210 R20
M34 A270 R20
M34 A330 R20
M34 A30 R20
M2
verander de hoeken, de Radii.. en programmeer je eigen Kerstversieringen in een paar minuutjes! (nee.. Niet doen!.. Ik heb de M34 regel alleen in G00 staan.. dus dan gaat ie met ijlgang door je Plexiglas.. dat gaat em niet worden.. :mrgreen: Dat moet ik nog even inknopselen..
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12050
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

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

Bericht door hugo stoutjesdijk »

Is die G niet adresseerbaar?? G#7

Dan wordt het misschien zoiets:

Code: Selecteer alles

;REGION MCODES
SUB M33
	; de waarde van F is voor het geval je in G0 beweegt eigenlijk ook niet belangrijk maar staat niet in de weg
	G[#7] X#24 Y#25 F#6 ;maak G1 modaal
	#3701=#24
	#3702=#25
ENDSUB

SUB M34
IF[#18>0]
	IF[#1>0]
		#3711=[SIN[#1]*#18]
		#3712=[COS[#1]*#18]
		G[#7] X[#3701+#3711] Y[#3702+#3712]
	ENDIF
ENDIF
ENDSUB
;ENDREGION
Maar die M33 begrijp ik echt niet, je wilt bij een steekcirkel toch naar het middelpunt toe bewegen?
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

G is helaas niet adresseerbaar. niet voor mij in elk geval..
hugo stoutjesdijk schreef: 11 mei 2023 16:02 Maar die M33 begrijp ik echt niet, je wilt bij een steekcirkel toch naar het middelpunt toe bewegen?
Dat is toch wat ik doe?.. M33 x20 Y10 beweegt naar X20 Y10 en legt dat punt vast in Parameters #3701-3703, want.. stel.. ik krijg een gekke bui.. dan kan ik ook zeggen.. M33 Y0 Z0, en dan polair in YZ positioneren.. Iets wat ik in Heidenhain heel veel gedaan heb.. Dingen afronden?.. Eitje.. gewoon met een standaard vingerfreesje ergens even een rond kantje aan fietsen.. ik heb alweer visioenen van Afrondingen programmeren op een XY contour.. met een Bolkopje..of een "lollipop" Frees.. Dat stelt allemaal niet heel veel voor (voor mij.. heb het eerder gedaan met een Heidenhain)... 'k moet er alleen een keer voor gaan zitten..

Als ik de Jongens en meisjes bij EdingCNC kan overtuigen dat het hout snijdt als je dit in G-Codes kan kloppen.. Dus bijvoorbeeld G1 A30 R20... Ja.. Ik wil!..
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12050
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

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

Bericht door hugo stoutjesdijk »

Ik bedoelde natuurlijk dat ik helemaal niet naar dat middelpunt wil (type voutje). Maar als jij dat wilt, het is jouw oplossing.

De keren dat ik blij ben dat mijn steekcirkel-cyclus netjes met een bocht naar het volgende gat positioneert zijn toch redelijk vaak. (als er weer eens een verloop ding voor een naaf oid gemaakt moet worden en er een dikke puist in het midden zit)
For example, G10 L2 could equally well be written G[2*5]
in NIST is het anders wel gespecificeert.

En als ik jouw was, zou ik van die A maar een W maken, anders kom je jezelf wel tegen als je ooit een 4e (A-as) op je machine gaat zetten.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

hugo stoutjesdijk schreef: 11 mei 2023 16:33 Ik bedoelde natuurlijk dat ik helemaal niet naar dat middelpunt wil (type voutje). Maar als jij dat wilt, het is jouw oplossing.
Nou.. het is niet mijn Oplossing.. zoals gezegd.. dit is een "proof of concept" en het is nog "Quick and Dirty geschreven.. want.. als A=0... dan doet ie't niet.. want X =sin(0) *r.. en Sinus 0 is.. 0.. dus doet ie niet veel.. Daarom moet ik controleren of A =0.. en dan gewoon R opschuiven in X..
en dat geldt dan ook voor 180..
hugo stoutjesdijk schreef: 11 mei 2023 16:33 En als ik jouw was, zou ik van die A maar een W maken, anders kom je jezelf wel tegen als je ooit een 4e (A-as) op je machine gaat zetten.
Daar zeg je zo wat.. maar een W?.. Die komt ook voor op meerassige machines.. zoals een Draadvonkmachine en.. op mijn EMCOturn 120.. betekent W een Incrementele beweging in Z.. en U doet het zelfde in X..

Het rare is eigenlijk.. op een A as.. doe je eigenlijk niet anders dan Polair positioneren.. :shock: 'k moet er nog even over nadenken.. Want.. Da's ook een Dingetje wat ik in Heidenhain Klartekst veel misbruikte is een Incrementele Hoek.. Want.. als je dan 6 gaatjes op een Cirkel wilt hebben.. dan knopsel je een Absolute hoek in op de eerste regel, en een Incrementele op de volgende regels.. En omdat Heidenhain ook een "Herhaal knop" had die de laatst ingevoerde regel opnieuw invoerde.. Kon je dat Razendsnel doen..
hugo stoutjesdijk schreef: 11 mei 2023 16:33 De keren dat ik blij ben dat mijn steekcirkel-cyclus netjes met een bocht naar het volgende gat positioneert zijn toch redelijk vaak. (als er weer eens een verloop ding voor een naaf oid gemaakt moet worden en er een dikke puist in het midden zit)
Dat aantal keren zal waarschijnlijk overeenkomen met de keren dat ik blij was om dezelfde reden, daarom moet ik ook nog wat extra Code knopselen voor de Definitieve versie.. Want.. ik wil ook in een Cirkel kunnen lopen.. , en.. ik wil dus ook een Coordinaat op kunnen geven zonder dat ik daar naartoe loop..

Dus.. Heb ik nog wat te doen.. M33 zonder Asletters is Huidige positie overnemen. M33 met G00/G01/G02/G03, beweging naar dat coordinaat, en dat dan vastleggen, M33 X..Y.. gegeven coordinaat vastleggen zonder beweging.. Zoiets moet het worden..

dan M34..Die moet ook G00/G01/G02/G03 ondersteunen zodat je inderdaad.. om een obstakel in het midden van je werk kunt manoeuvreren, maar ook .. om als je de Radius in een Algootje smijt.. met verschillende radii om een middelpunt kan lopen,beginnend en eindigend in het zelfde vlak..
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12050
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

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

Bericht door hugo stoutjesdijk »

Arie Kabaalstra schreef: 11 mei 2023 19:13
Daar zeg je zo wat.. maar een W?.. Die komt ook voor op meerassige machines.. zoals een Draadvonkmachine en.. op mijn EMCOturn 120.. betekent W een Incrementele beweging in Z.. en U doet het zelfde in X..
Duitse besturing : W van Winkel :lol:
Ja, als ABC, IJK, UVW, XYZ als potentiele as informatie gehouden wordt, heb je DEFGHLMNOPQ over.
D zou kunnen, Degree's (want die gereedschap correctie gebruik je toch niet :mrgreen: )
E ?? eigenlijk geen idee wat daar mee gedaan wordt, maar handig lijkt die letter me niet
H voor hoek, weinig internationaals aan
Q omdat het gewoon een vreemde letter is.
Maar als dat betreffende adres in die regel toch niet kan doen, kun je natuurlijk toch nog kiezen een adres uit het 'verkeerde' lijstje te nemen.

Als ze zich bij Eding even kwaad maken en ze maken een voorziening voor adressen van meer dan 1 character ben je spekkoper.
PA > #16+26 * 1= #42
ZZ > #26+26 * 26= #702
Dan kun je tenminste makro's schrijven.
PA voor polar angle en PR voor polar radius of PL voor polar length
Een extra I of A er als 3e adres achter zou het verhaal kompleet maken om de waardes gelijk als incrementele of absolute waarde te zien.

Volgens mij kan dit in LinuxCNC gewoon omdat parameters daar ook als naam-variabele ingegeven kunnen worden.

Ik begrijp niet dat je niet gelijk een makro maakt voor een steekcirkel, lijkt me net zo makkelijk.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

hugo stoutjesdijk schreef: 12 mei 2023 13:05 Duitse besturing : W van Winkel
Na Klar.. :lol: maar dat snijdt wel hout..
hugo stoutjesdijk schreef: 12 mei 2023 13:05 Ja, als ABC, IJK, UVW, XYZ als potentiele as informatie gehouden wordt, heb je DEFGHLMNOPQ over.
D zou kunnen, Degree's (want die gereedschap correctie gebruik je toch niet )
E ?? eigenlijk geen idee wat daar mee gedaan wordt, maar handig lijkt die letter me niet
H voor hoek, weinig internationaals aan
Q omdat het gewoon een vreemde letter is.
D.. die wil ik er zelf toch wel inhouden.. E.. inderdaad rare letter..de E van hoEk?..H.. ook niet echt voor de hand liggend.. M wordt verwarrend..Q?.. Q wordt ook gebruikt in Boorcycli maar dat is dan in Combinatie met een G Code..
hugo stoutjesdijk schreef: 12 mei 2023 13:05 Als ze zich bij Eding even kwaad maken en ze maken een voorziening voor adressen van meer dan 1 character ben je spekkoper.
PA > #16+26 * 1= #42
ZZ > #26+26 * 26= #702
Dan kun je tenminste makro's schrijven.
PA voor polar angle en PR voor polar radius of PL voor polar length
Een extra I of A er als 3e adres achter zou het verhaal kompleet maken om de waardes gelijk als incrementele of absolute waarde te zien.
Now you're talking my language!.. Ik heb het vaak genoeg over Heidenhain.. en laten die nou net dat toepassen?..

Je hebt daar bijvoorbeeld
L X0 Y20 R0 FMAX
CC
LP PA 30 PR 40 M99
LP IPA 30 IPR10 M99

En die laatste is 't em nou net.. LP = Lineair polair hoek 30° radius 40, de volgende regel lineair Polair, INCREMENTEEL 30° INCREMENTEEL Radius +10
dat Incrementeel verplaatsen is ook iets wat ik momenteel nog mis.. maar dat kan in een G01 of G00 regel al makkelijk met G00 X[#5001+10]

Binnenkort weer open dag.. dus daar moet ik dan even een dagje eerder heen, en dan de dag ervoor even om de tafel gaan zitten.. :lol:
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

'k heb het de afgelopen dagen al een paar keer uit mijn toetsenbord laten vallen.. maar ik heb er even de tijd voor genomen..
Cycli programmeren middels een M Code.. Het mooie hiervan is, dat je de hele Cyclus op 1 regel kwijt kan..

Code: Selecteer alles

SUB M84
#1001=[#24]
#1003=[#26]
#4001=[#6]
#4002=[#4]
GOSUB 1102
ENDSUB
Dit is de hele sub...

In plaats van :

Code: Selecteer alles

;CYCLE TURNING
    #1001=20      (X)
    #1003=-5      (Z)
    #4001=500      (FEED)
    #4002=0.5      (DOC)
    #3999=2      (CYCLE INDEX)
;ENDCYCLE
Krijg je dit :

Code: Selecteer alles

M84 X20 Z-5 F500 D0.5

in je programma...

Je ziet dat de Cycle Index is verdwenen.. maar dat kun je opvangen door afhankelijk van de bewerkings richting een M Code te kiezen..

in een compleet programma met 1 Cyclus ziet het er dan zo uit:

Code: Selecteer alles

T2 M6 ( "TOOL NUMBER 2" )
G00 X40 Z12
M100
G00 Z0 M3
M84 X20 Z-5 F500 D0.5
M101 
M2
Waarbij aangetekend moet worden dat M100 en M101 het vastleggen van het gereedschapwisselpunt , en het teruglopen naar dat wisselpunt is.

Ik heb dit inderdaad weer "afgekeken" van een Ouderwetsche besturing.. Noem me een verstokte ouwe zeur die niets heeft met nieuwerwetsch gedoe.. maar als het vroeger al zo mooi compact kon.. waarom zouden we dat nu niet gebruiken?..

Ja.. het komt van de EMCOtronic TM 02.. en het lollige is.. elke Lettervariabele wordt na het aflopen van de Sub weer op -1e10 (heel klein getal) gezet, dus kun je daar op controleren..zodra een parameter (letter) een waarde heeft >-1e10, dan heeft ie dus een waarde.. zodat je een "optionele" parameter kan maken.. !

#Jottum!.. want.. dat betekent.. dat ik weer helemaal opnieuw kan beginnen... :cry: Immers.. stel.. ik zet een Optionele Parameter in M84..R bijvoorbeeld.., dan krijg je zoiets als:

M84 X20 Z-10 R5 F500 D0.5

Dan is het een Cyclus met een Afronding.. Dus gewoon Tangentiaal.. Programmeer je in plaats daarvan :

M84 X20 Z-6 U26 W-10 R6 F500 D0.5

dan heb ik dus een LangsdraaiCyclus, met een secundair Coordinaat, en een Radius.. dus gaat ie tussen X, Z, en U, W een Radius R maken.. met snedediepte D.. en voeding F.. 't is haast TE mooi om waar te zijn.. met 1 M Code een hele reeks Cycli proggen.. afhankelijk van wat je erin stopt..

Betekent wel dat ik E++ ook weer aan moet passen.. Immers.. Ik kan nu een keuze schrijven in de Macro of ik in "klunsmodus" of "ouwe Rot modus" wil programmeren..

En dat betekent ook dat ik de Lineair Polaire Positionering nog eens kritisch tegen het licht moet houden..
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12050
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

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

Bericht door hugo stoutjesdijk »

Goed gedocumenteerd ook.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

Ik heb de Macro's er niet bij staan, maar je ziet wel de verwijzing naar de Macro.. 'k heb dit vanmorgen even snel bedacht.. hoewel het al een paar dagen door mijn hoofd speelde..

Als je in de Manual kijkt, dan wordt wel duidelijk hoe het werkt met het zelf maken van M-Codes, en met een beetje "if then werk" kun je de boel wel uitfilteren.. als je dat niet snapt.. moet je ook geen Macro's gaan schrijven.. 8)

Als ik alles uit den treure zou documenteren, dan is dat alleen hoe IK het gemaakt heb..

't gaat erom.. 'k heb een manier gevonden om een reeks parameters in één regel code te definiëren, waarbij je ook nog eens optionele parameters kan gebruiken.. en dat is wel lollig!
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12050
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

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

Bericht door hugo stoutjesdijk »

Arie Kabaalstra schreef: 02 jun 2023 10:43.. elke Lettervariabele wordt na het aflopen van de Sub weer op -1e10 (heel klein getal) gezet, dus kun je daar op controleren..
Vaak is het anders heel handig dat adressen modaal hun waarde houden, hoef je niet weer het hele riedeltje in te vullen wanneer de volgende cyclus maar 1 parameter aangepast wordt.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13520
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

hugo stoutjesdijk schreef: Vaak is het anders heel handig dat adressen modaal hun waarde houden, hoef je niet weer het hele riedeltje in te vullen wanneer de volgende cyclus maar 1 parameter aangepast wordt.
Dat is waar.. maar ik kopieer niet voor niets alle adressen even in andere variabelen.. bij de volgende hoef je in staat geval maar een parameter op te geven... alleen degene die je verandert...
Plaats reactie