Helaas ik werk met een antieke grundig besturing. Is niet meer beschikbaar. Niks customs aan.bartL schreef: ↑11 okt 2021 18:22Dat is wel een interessante! Mag ik vragen hoe je dit in de praktijk doet? Ik heb geen ervaring met "custom made Gcodes".hugo stoutjesdijk schreef: ↑11 okt 2021 08:55 (ik heb daarom 3 ijlgang keuze's, G0 niet interpolerend, G0*1 met positioneer logica, dus als het eindpunt naar Z- beweegt, eerst XY en dan Z, als het eindpunt naar Z+ beweegt eerst Z en dan XY (reuze handig), en een G0*2 die lineair interpoleert (gebruik ik nooit))
En hoe werk je met een niet interpolerende G0? Ik dacht ergens gelezen te hebben dat je met Eding werkt, deze software doet dit toch al standaard bij een G0?
Het "Bouwen" van Macro's voor USBCNC
Moderator: Moderators
- hugo stoutjesdijk
- Donateur
- Berichten: 12055
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
- Arie Kabaalstra
- Donateur
- Berichten: 13540
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Ja, das wel de bedoeling. . Als er mensen zijn die bepaalde trucjes willen weten, schriftelijk het op, dan kan ik wat voorbereiden.
Ik beschouw macro's als software, en zo benader ik het dan ook, daarom hou ik heelc bewust vast aan de door mijzelf opgestelde syntaxis, niet in de laatste plaats omdat getoond dan in notepad++ ook zo lekker werkt..
Ik hoop voor die tijd ook mijn dxf macro klaar te hebben.. zodat een tastroutine een dxf bestand kan genereren
- Arie Kabaalstra
- Donateur
- Berichten: 13540
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Ik heb het vaker geschreven.. en ik blijf het schrijven.. Manuals zijn er niet voor niets...
Zelfs ik ontkom er niet aan.. momenteel ben ik een nieuwe Draaibank Macro aan het schrijven.. en dan is een Manual een goede om als naslagwerk ernaast te hebben..
nou heb ik de luxe van 3 19"beelschermen op mijn Buro, en da's wel lekker.. Ik schrijf mijn Macro op het rechtse scherm, ik heb EdingCNC op het middelste scherm, en ik heb de Manual op het Linkerscherm..
de Parameters #1 tm #26:
met de regel "G00 X#24 Z#26" gaat de machine als je G00 X30 Z2 M99 uitvoert naar die positie, en voert ie M99 uit.. bij mij (en waarschijnlijk vele anderen) is M99 de code voor de Cyclusoproep, NIels heeft dat bij het schrijven van de Shopfloorprogrammer van mij overgenomen.. we hadden toendertijd veel contact.
En mensen die met een Heidenhain Controller kunnen werken.. die kennen M99 ook.. (het zou té mooi zijn als ik ook M89 kan maken.. die blijft elke regel de Cyclus oproepen tot je M99 programmeert.. maar laten we niet te veel willen..
Dit is in elk geval DE manier om je zelf geschreven MCode aan het eind van een regel te zetten.. en dat scheelt weer een boel regels..
dus.. Kort en goed:
G00 X30 Z2 M99 werkt. maar G00 M99 X30 Z2 werkt ook!..al geef ik persoonlijk de voorkeur aan M99 aan het eind... omdat M99 in E++ een andere kleur heeft.. en dus meer opvalt.
Hoe dan ook.. Doe er je voordeel mee!
Zelfs ik ontkom er niet aan.. momenteel ben ik een nieuwe Draaibank Macro aan het schrijven.. en dan is een Manual een goede om als naslagwerk ernaast te hebben..
nou heb ik de luxe van 3 19"beelschermen op mijn Buro, en da's wel lekker.. Ik schrijf mijn Macro op het rechtse scherm, ik heb EdingCNC op het middelste scherm, en ik heb de Manual op het Linkerscherm..
de Parameters #1 tm #26:
Dus... de X as Correspondeert met #24, en Z met #26...meer assen heb je op de draaibank niet nodig.. op de Freesbank wel.. maar dat is makkelijk genoeg uit te breiden..Bert Eding schreef:Variable 1-26 match with the letter of the alphabet, #1 will get the value
of parameter A, #26 will get the value of parameter Z.
Code: Selecteer alles
SUB M99
G00 X#24 Z#26
MSG"OPERATION CHECK"
IF [#3999==1]
GOSUB 1101
ENDIF
IF [#3999==2]
GOSUB 1102
ENDIF
ENDSUB
En mensen die met een Heidenhain Controller kunnen werken.. die kennen M99 ook.. (het zou té mooi zijn als ik ook M89 kan maken.. die blijft elke regel de Cyclus oproepen tot je M99 programmeert.. maar laten we niet te veel willen..
Dit is in elk geval DE manier om je zelf geschreven MCode aan het eind van een regel te zetten.. en dat scheelt weer een boel regels..
dus.. Kort en goed:
G00 X30 Z2 M99 werkt. maar G00 M99 X30 Z2 werkt ook!..al geef ik persoonlijk de voorkeur aan M99 aan het eind... omdat M99 in E++ een andere kleur heeft.. en dus meer opvalt.
Hoe dan ook.. Doe er je voordeel mee!
- hugo stoutjesdijk
- Donateur
- Berichten: 12055
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Ik lees toch echt iets anders, maar misschien zie ik nog een beetje dubbel na gisteren.
Maar die G00 X30 Z2 M99 of G00 M99 X30 Z2 is natuurlijk onzin. Daarin laat je lijken alsof het om een beweging gaat in ijlgang. Dat kan niet zo zijn als je wilt dat die parameters in je Mxxx als waarde gebruikt worden.
Dus die M99(9) moet gewoon vooraan staan, en daar geef je 2 parameters aan mee in het jasjes van de adressen X Z.
Die regel met je sub aanroep mag nl. GEEN beweging uitvoeren, anders is het hele idee van cyclus aan roep overboord en zou onderstaand voorbeeld een lijn onder 45 graden moeten geven.
Of het M99 of M999 is boeit me niet zo, Maar die G00 X30 Z2 M99 of G00 M99 X30 Z2 is natuurlijk onzin. Daarin laat je lijken alsof het om een beweging gaat in ijlgang. Dat kan niet zo zijn als je wilt dat die parameters in je Mxxx als waarde gebruikt worden.
Dus die M99(9) moet gewoon vooraan staan, en daar geef je 2 parameters aan mee in het jasjes van de adressen X Z.
Die regel met je sub aanroep mag nl. GEEN beweging uitvoeren, anders is het hele idee van cyclus aan roep overboord en zou onderstaand voorbeeld een lijn onder 45 graden moeten geven.
Code: Selecteer alles
M99 X40 Y50
SUB M99
G00 X#25 Y#24
ENDSUB
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
- Arie Kabaalstra
- Donateur
- Berichten: 13540
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
jij mag niet meer drinken..hugo stoutjesdijk schreef: ↑28 apr 2023 09:04 Ik lees toch echt iets anders, maar misschien zie ik nog een beetje dubbel na gisteren.
Nee.. Jij ziet dat als onzin, of je begrijpt nog niet hoe het grapje werkt.hugo stoutjesdijk schreef: ↑28 apr 2023 09:04 Maar die G00 X30 Z2 M99 of G00 M99 X30 Z2 is natuurlijk onzin. Daarin laat je lijken alsof het om een beweging gaat in ijlgang. Dat kan niet zo zijn als je wilt dat die parameters in je Mxxx als waarde gebruikt worden.
Ik programmeer een Cyclus, dus een reeks parameters geef ik een waarde, en die klinknagel ik ergens in mijn programmaatje. waar?.. boeit eigenlijk niet zo, als het maar de laatst geprogrammeerde cyclus is voordat ik em aanroep..
het zelfgeschreven M99 Commando kijkt van oorsprong alleen naar de waarde van #3999, voorheen #1100, en gaat aan de hand daarvan naar de juiste Subroutine, die dus de benodigde bewegingen uitvoert aan de hand van de zojuist ingeklinknagelde Parameters.
Dat is de oude situatie (voor ik dit Foefje in de Manuals ontdekte), om voor te positioneren moest ik eerst de machine naar de juiste plek sturen, en daar (op de volgende regel) M99..
maar.. door het gebruik te maken van de Parameters #1-#26 kan ik nu de geprogrammeerde X en Z Coordinaten uitlezen, en de machine daarheen sturen..
Dus, Dientengevolge, niet tegenstaande dat, rekening houdend met, enzovoorts, en zoverder..Kan ik Nu
G00 X30 Z2 M99 schrijven.. , die M99 Hoeft dus niet meer op een aparte regel..zodra EdingCNC nu een regel tegenkomt met M99 erop.. dan gaat ie dus even kijken in de Code, en daar treft ie de regel G00 X#24 Z#26. dus gaat ie in IJlgang naar de geprogrammeerde positie, ongeacht de waarden van #24 en #26.. die overschrijft ie direct.., ze worden ook niet in de Mxxx gebruikt, behalve op de Positioneer regel
zoals ik al zij, ze worden, en mogen niet in de verdere routine worden gebruikt.. er staat ook niet voor piet snot in de manual dat ze voor dit doel gereserveerd zijn.. derhalve zijn het halve Systeem parameters.. (klusje voor de volgende versie E++, Deze reeks ook een andere kleur geven)hugo stoutjesdijk schreef: ↑28 apr 2023 09:04 Dat kan niet zo zijn als je wilt dat die parameters in je Mxxx als waarde gebruikt worden.
nee.. dat laat ik niet.. dat IS precies wat het is.. een beweging in IJlgang.. immers.. je staat ergens in de machine.. dus ga je in IJLGANG naar je werk toe (op veilige afstand), en daar roep je deze Cyclus aan.. Heidenhain doet het niet anders.. en ik heb jaren zonder problemen gewerkt met die besturing.. ik zou niet weten wat daar mis mee is, behalve de hoeveelheid knoppen zonder Functie.. maar die heb ik er in E++ ook al inzitten..hugo stoutjesdijk schreef: ↑28 apr 2023 09:04 Daarin laat je lijken alsof het om een beweging gaat in ijlgang.
hugo stoutjesdijk schreef: ↑28 apr 2023 09:04 Die regel met je sub aanroep mag nl. GEEN beweging uitvoeren, anders is het hele idee van cyclus aan roep overboord en zou onderstaand voorbeeld een lijn onder 45 graden moeten geven.
Code: Selecteer alles
M99 X40 Y50
SUB M99
G00 X#25 Y#24
ENDSUB
en leg me dan ook even fijntjes uit waarom dat een lijn onder 45 graden is?
Code: Selecteer alles
L x10 Y15
CC
LP PA45 PR 40 R0 FMAX M99
- hugo stoutjesdijk
- Donateur
- Berichten: 12055
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Die #24 en #25 had ik bewust verwisseld om het kromme van het verhaal te laten zien.
Ik weet heel goed hoe het doorgeven van parameters werkt.
Als jij hier vrolijk van wordt, ga gerust door. Ik heb over sommige zaken een andere mening.
Line polar, polar angle 45, polar radius = lengte 40 zo lastig is dat niet hoor.
Verder ben ik niet zo van het ver plassen.
Ik weet heel goed hoe het doorgeven van parameters werkt.
Als jij hier vrolijk van wordt, ga gerust door. Ik heb over sommige zaken een andere mening.
Line polar, polar angle 45, polar radius = lengte 40 zo lastig is dat niet hoor.
Verder ben ik niet zo van het ver plassen.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
- Arie Kabaalstra
- Donateur
- Berichten: 13540
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Code: Selecteer alles
SUB M99
IF[#6>0]
IF [#7==1]
G01 X#24 Z#26 F#6
ENDIF
ELSE
G00 X#24 Z#26
ENDIF
IF [#3999==1]
GOSUB 1101
ENDIF
IF [#3999==2]
GOSUB 1102
ENDIF
ENDSUB
A=#1, B=#2,...Z=#26.. Ik kan daar met de beste wil van de wereld niets kroms in zien.. dat zijn dingen die waar je één keer over moet nadenken, als je de Macro inknopseld.. en daarna heb je er geen omkijken meer naar...hugo stoutjesdijk schreef: ↑28 apr 2023 20:46 Die #24 en #25 had ik bewust verwisseld om het kromme van het verhaal te laten zien.
't enige wat ik Graag nog eens zou zien in EdingCNC is een "Return Statement" omdat dat makkelijker is met Foutdetectie en dergelijke.. Je kunt nu wel met M2 uit een routine stappen..en voor Foutdetectie werkt dat prima, maar als je echt flink moet gaan zitten filteren met diverse Parameters, omdat je met 1 SUB als het even kan bewerkingen in 4 kwadranten wilt uitvoeren, zonder daar speciale subs voor hoeft te schrijven.. dan zou het een verademing zijn...
Ik heb dat al gemaild.. dus nu gewoon geduld hebben..
intussen ga ik gewoon verder met het "vervolmaken" van mijn Macro.. want ik wil ook Cirkelbogen aan kunnen lopen en dan een Cyclus aanroepen.. (Voor de Freesbank, als je op een rond werkstuk gaten wilt boren, maar je hebt een opstaande rand aan de binnenkant..
bij de Heidenhain besturing deed ik dat gewoon Zo:
Code: Selecteer alles
L X0 Y0 Z20 R0 FMAX
CC
LP PA 0 PR 60 R0 FMAX M3
G00 Z-23 FMAX M99
CP IPA 60 IPR0 R0 F6000 M99
CP IPA 60 IPR0 R0 F6000 M99
CP IPA 60 IPR0 R0 F6000 M99
CP IPA 60 IPR0 R0 F6000 M99
CP IPA 60 IPR0 R0 F6000 M99
L Z50 R0 FMAX
- Arie Kabaalstra
- Donateur
- Berichten: 13540
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Net even wat uitgeprobeerd.. vraag me niet waarom.. maar in Talen als C# kun je in een "IF THEN" beslissing besluiten om er op een bepaald moment uit te stappen..
De eerste Controle die ik doe is kijken of de Snedediepte op 0 staat.. zo ja.. dan hoeft ie alleen de Finishing pass maar te lopen.. voor Nadraaien dus..
Als dat klaar is.. dan hoef ik de andere controles niet meer af te lopen.. met Return stap je dus uit die reeks..en laat ie alle verder controles verder achterwege.. dat scheelt aanzienlijk in het inknopselen van code.. voldoe je aan een bepaalde voorwaarde.. dan loop je dat stuk af.. en dan geloof ik het verder wel.."
Hij gaat dan verder in het programma.. M99 Stuurt em naar die subroutine.. en zodra de Term "Return" gelezen wordt.. springt ie terug..
Dit foefje was al te gebruiken in Commodore Basic V3.0 van de Commodore 16, waar je in een programma Gosub 100 kon programmeren en dan een Reeks IF THEN's vanaf regel 100, en diverse Returns om terug te springen..
in C# heb ik er ook gretig gebruik van gemaakt in E++, en nu zoals blijkt, kan het ook in EdingCNC..Maar in de Manual of in de Releasenotes ben ik het nog niet tegengekomen.. moet ik morgen toch eens even over bellen...
In elk geval, zoals ik nu heb gemerkt.. werkt het.. en daar wordt Arie vrolijk van.. een dansje van vreugde gaat nog even niet lukken.. maar ik zal zo proberen om van blijdschap even te huppelen naar de keuken.. als ik daar mijn biertje ga inschenken!..
Doe er je voordeel mee!
Code: Selecteer alles
...
GOSUB CDOC
IF [#3002==0] (FINISH PASS ONLY)
GOSUB 1103_FINISH
RETURN
ENDIF
IF[#1603<#1003] (DETECT LEFT TO RIGHT, REVERSE FACING)
...
Als dat klaar is.. dan hoef ik de andere controles niet meer af te lopen.. met Return stap je dus uit die reeks..en laat ie alle verder controles verder achterwege.. dat scheelt aanzienlijk in het inknopselen van code.. voldoe je aan een bepaalde voorwaarde.. dan loop je dat stuk af.. en dan geloof ik het verder wel.."
Hij gaat dan verder in het programma.. M99 Stuurt em naar die subroutine.. en zodra de Term "Return" gelezen wordt.. springt ie terug..
Dit foefje was al te gebruiken in Commodore Basic V3.0 van de Commodore 16, waar je in een programma Gosub 100 kon programmeren en dan een Reeks IF THEN's vanaf regel 100, en diverse Returns om terug te springen..
in C# heb ik er ook gretig gebruik van gemaakt in E++, en nu zoals blijkt, kan het ook in EdingCNC..Maar in de Manual of in de Releasenotes ben ik het nog niet tegengekomen.. moet ik morgen toch eens even over bellen...
In elk geval, zoals ik nu heb gemerkt.. werkt het.. en daar wordt Arie vrolijk van.. een dansje van vreugde gaat nog even niet lukken.. maar ik zal zo proberen om van blijdschap even te huppelen naar de keuken.. als ik daar mijn biertje ga inschenken!..
Doe er je voordeel mee!
- Arie Kabaalstra
- Donateur
- Berichten: 13540
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
We hebben hier onlangs een topicje mogen verwelkomen van iemand die er klaarblijkelijk niets van snapt, en ook de manuals niet napluist als ie een vraag heeft.. Dat was weliswaar iemand met een LinuxCNC besturing.. maar dat maakt feitelijk geen bal uit, omdat ze min of meer dezelfde G-Code interpreter gebruiken..
Het ging om het "afsnijden van hoeken in een geprogrammeerd pad.. hij wilde dat ie het exacte pad volgde, of in elk geval geen grote stukken afsneed.. Nou.. Daar is G61 voor... Exact Stop., en als je het nou prettig vindt om juist wel een stukkie af te snijden (omdat het sneller gaat, of.. om juist een haartje materiaal te laten staan voor't nasnijden).. dan knopsel je G64 P in je Code.. en zodra je weer exacte paden wilt lopen.. dan zet je G61 weer aan..
zoals in bovenstaand voorbeeldje.. Ik heb een subroutine die vlakt tot aan de schuine kant.. , en daarna dezelfde subroutine die de schuine kant voorbewerkt , maar dit keer met G64 P#3002 (#3002 is de snedediepte), dus snijdt ie de bocht eenb eetje af.. op die manier blijft er net een haartje materiaal op de schuine kant staan voor de laatste snede, de tweede subroutine die ik afloop.. maar voor dat ie aangeroepen wordt.. staat G61 alweer aan..
Zodoende kun je dus handig gebruik maken van G61 en G64.. da'je't maar effe weet..
Het ging om het "afsnijden van hoeken in een geprogrammeerd pad.. hij wilde dat ie het exacte pad volgde, of in elk geval geen grote stukken afsneed.. Nou.. Daar is G61 voor... Exact Stop., en als je het nou prettig vindt om juist wel een stukkie af te snijden (omdat het sneller gaat, of.. om juist een haartje materiaal te laten staan voor't nasnijden).. dan knopsel je G64 P in je Code.. en zodra je weer exacte paden wilt lopen.. dan zet je G61 weer aan..
zoals in bovenstaand voorbeeldje.. Ik heb een subroutine die vlakt tot aan de schuine kant.. , en daarna dezelfde subroutine die de schuine kant voorbewerkt , maar dit keer met G64 P#3002 (#3002 is de snedediepte), dus snijdt ie de bocht eenb eetje af.. op die manier blijft er net een haartje materiaal op de schuine kant staan voor de laatste snede, de tweede subroutine die ik afloop.. maar voor dat ie aangeroepen wordt.. staat G61 alweer aan..
Zodoende kun je dus handig gebruik maken van G61 en G64.. da'je't maar effe weet..
Re: Het "Bouwen" van Macro's voor USBCNC
G61 is toch alleen nodig als je machine onder de 5000mm/s2 accelereert?
- andrefc101
- Donateur
- Berichten: 3733
- Lid geworden op: 26 dec 2007 08:39
- Locatie: Bergen op Zoom
- Contacteer:
- Arie Kabaalstra
- Donateur
- Berichten: 13540
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Of.. juist boven de 5000mm/s²... want dan zal de machine ook stevig moeten afremmen..
Maar het gaat erom dat je met G64 juist bewust iets materiaal kan laten staan.. zodat je beitel altijd wat materiaal te snijden heeft..
- hugo stoutjesdijk
- Donateur
- Berichten: 12055
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Nou lekker dan, heb je net de hele manual binnenste buiten gekeerd, had dat lezen van de manual ook al weer geen nut.Arie Kabaalstra schreef: ↑04 mei 2023 23:06 in C# heb ik er ook gretig gebruik van gemaakt in E++, en nu zoals blijkt, kan het ook in EdingCNC..Maar in de Manual of in de Releasenotes ben ik het nog niet tegengekomen.. moet ik morgen toch eens even over bellen...
Ik programmeer al een beetje sinds 1981 geloof ik, en ben echt nog nooit 1 taal tegen gekomen die GEEN if then else had (al heb ik het vermoeden dat ze er wel zijn, Forth ?). Dus ja logisch dat het in C# ook zit, en al die voorgangers. Maar dat hat een zekere schaker je vast wel kunnen vertellen, want die heeft dáár nu weer veel meer verstand van.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
- Arie Kabaalstra
- Donateur
- Berichten: 13540
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Het gaat in deze niet zo zeer over het IF argument.. dat heeft EdingCNC zeker wel.. en het beschikt over de volgens mij amper gebruikte AND en OR statements...
het ging in deze over "RETURN".. en dat, zo blijkt nu is wel een heel handige.. Ik ben momenteel bezig met een nieuwe draaimacro, één die veel minder rekening houdt met verplaatsingen, omdat je een "Begin coordinaat" in de Cyclus moest programmeren in de oude versie..
nu ga ik gewoon naar een bepaald coordinaat, geprogrammeerd in E++, en als ik mijn Cyclus aanroep, dan gebruik ik DAT coordinaat als "entry point" van de Cyclus.. zo werkt het op de EMCOtronic TM02 besturing ook, en ik vind dat wel een fijne manier van programmeren..
Maar goed.. het RETURN Statement dus.. Ik ben er inmiddels in geslaagd een VlakdraaiCyclus te schrijven met een Chamfer achter in het hoekje..
Uit bovenstaande Kun je opmaken dat: de machine naar X80 gaat, en vervolgens naar Z1, om aldaar de cyclus aan te roepen
Nu heb ik de diameter van het stuk tot aan de schuine kant vastgelegd met #1001 op X60, en de schuine kant begint op #1003, Z-10
het eind van de schuine kant, op de Coordinaten van #1011 en #1013 te weten X70 en Z-15, en van daar naar X80
Nu is dit een bewerking die ten opzichte van het Startpunt in het 2de kwadrant ligt.. en voor de snedeberekening heb ik 2 Subroutines gemaakt.. voor bewerkingen in het 2de en 3de kwadrant, want die komen het meeste voor, maar ook voor het 1e en 4de kwadrant,
Ik heb dus in de primaire sub voor deze Cyclus een aantal "scenario's" die ik moet uitfilteren.. allereerst.. IF snedediepte == 0, dan hoef ik verder niet uit te vlooien welk kwadrant ik zit.. want.. boeie.. hij loopt gewoon de coordinaten af op het rijtje..maar.. MAAR!.. als ie daarmee klaar is.. dan is het NIET de bedoeling dat ie verder gaat kijken want er zijn meer controles waar de Cyclusparameters aan kunnen voldoen, met snedediepte 0, maar omdat ie net dat stukje Routine heeft afgelopen.. RETURN.. klaar.
en datzelfde staat in de volgende controles.. zodat ie , zodra ie klaar is, terugspringt, en niet meer verder gaat zoeken..
Dit ook in de M99 Sub.. waar ik eerst Voorpostioneer, en dan ga kijken naar de waarde van #3999, en zodra ie een passende waarde gevonden heeft.. roept ie bijbehorende Sub aan.. is ie klaar, en keert ie terug in M99.. RETURN.. en dus stapt ie eruit.. zodat ie niet alle andere controles hoeft af te lopen..
Op deze manier dus..Want.. als je eenmaal de juiste Sub aangeroepen hebt.. dan heeft verder zoeken toch geen zin meer.. Dus stap je eruit..
het ging in deze over "RETURN".. en dat, zo blijkt nu is wel een heel handige.. Ik ben momenteel bezig met een nieuwe draaimacro, één die veel minder rekening houdt met verplaatsingen, omdat je een "Begin coordinaat" in de Cyclus moest programmeren in de oude versie..
nu ga ik gewoon naar een bepaald coordinaat, geprogrammeerd in E++, en als ik mijn Cyclus aanroep, dan gebruik ik DAT coordinaat als "entry point" van de Cyclus.. zo werkt het op de EMCOtronic TM02 besturing ook, en ik vind dat wel een fijne manier van programmeren..
Maar goed.. het RETURN Statement dus.. Ik ben er inmiddels in geslaagd een VlakdraaiCyclus te schrijven met een Chamfer achter in het hoekje..
Code: Selecteer alles
T2 M6 ( "MESBEITEL RUW" )
G00 X80 Z25 M3 S500
M100
;CYCLE CHAMFER
#1001=60 (X1)
#1003=-10 (Z1)
#1011=70 (X2)
#1013=-15 (Z2)
#4001=500 (FEED)
#4002=1.8 (DOC)
#3999=3 (CYCLE INDEX)
;ENDCYCLE
G00 Z1 M99
M101
M2
Nu heb ik de diameter van het stuk tot aan de schuine kant vastgelegd met #1001 op X60, en de schuine kant begint op #1003, Z-10
het eind van de schuine kant, op de Coordinaten van #1011 en #1013 te weten X70 en Z-15, en van daar naar X80
Nu is dit een bewerking die ten opzichte van het Startpunt in het 2de kwadrant ligt.. en voor de snedeberekening heb ik 2 Subroutines gemaakt.. voor bewerkingen in het 2de en 3de kwadrant, want die komen het meeste voor, maar ook voor het 1e en 4de kwadrant,
Ik heb dus in de primaire sub voor deze Cyclus een aantal "scenario's" die ik moet uitfilteren.. allereerst.. IF snedediepte == 0, dan hoef ik verder niet uit te vlooien welk kwadrant ik zit.. want.. boeie.. hij loopt gewoon de coordinaten af op het rijtje..maar.. MAAR!.. als ie daarmee klaar is.. dan is het NIET de bedoeling dat ie verder gaat kijken want er zijn meer controles waar de Cyclusparameters aan kunnen voldoen, met snedediepte 0, maar omdat ie net dat stukje Routine heeft afgelopen.. RETURN.. klaar.
en datzelfde staat in de volgende controles.. zodat ie , zodra ie klaar is, terugspringt, en niet meer verder gaat zoeken..
Dit ook in de M99 Sub.. waar ik eerst Voorpostioneer, en dan ga kijken naar de waarde van #3999, en zodra ie een passende waarde gevonden heeft.. roept ie bijbehorende Sub aan.. is ie klaar, en keert ie terug in M99.. RETURN.. en dus stapt ie eruit.. zodat ie niet alle andere controles hoeft af te lopen..
Code: Selecteer alles
SUB M99
IF[#6>0]
IF [#7==1]
G01 X#24 Z#26 F#6
ENDIF
ELSE
G00 X#24 Z#26
ENDIF
IF [#3999==1]
GOSUB 1101
RETURN
ENDIF
IF [#3999==2]
GOSUB 1102
RETURN
ENDIF
....
ENDSUB