Het "Bouwen" van Macro's voor USBCNC
Moderator: Moderators
- 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
Die RETURN hoort toch bij de GOSUB ?
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
- 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
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...
- 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
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
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
- 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
Is die G niet adresseerbaar?? G#7
Dan wordt het misschien zoiets:
Maar die M33 begrijp ik echt niet, je wilt bij een steekcirkel toch naar het middelpunt toe bewegen?
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
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
- 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
G is helaas niet adresseerbaar. niet voor mij in elk geval..
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!..
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..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?
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!..
- 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
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)
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.
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)
in NIST is het anders wel gespecificeert.For example, G10 L2 could equally well be written G[2*5]
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.
- 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
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..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.
en dat geldt dan ook voor 180..
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..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.
Het rare is eigenlijk.. op een A as.. doe je eigenlijk niet anders dan Polair positioneren.. '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..
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..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)
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..
- 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
Duitse besturing : W van WinkelArie 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..
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.
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.
- 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
Na Klar.. maar dat snijdt wel hout..
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 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.
Now you're talking my language!.. Ik heb het vaak genoeg over Heidenhain.. en laten die nou net dat toepassen?..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.
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..
- 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
'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..
Dit is de hele sub...
In plaats van :
Krijg je dit :
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:
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... 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..
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
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
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
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... 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..
- 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
Goed gedocumenteerd ook.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
- 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
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..
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!
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..
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!
- 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
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.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..
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
- 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
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...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.