While statement in macro

Vragen die je boven niet kwijt kunt, kan je hier stellen.

Moderator: Moderators

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

Re: While statement in macro

Bericht door hugo stoutjesdijk »

Sven schreef: 24 jun 2022 06:32 Ik spreek geen mach maar linuxcnc maar moet de macro niet gesloten worden?
ik ook niet, maar volgens mij heb je wel een punt
Hij wordt als ik het goed zie wel gedefinieerd maar komt daarna niet terug.
DO1 wordt wel gesloten met END1

Of moet die macro uberhaupt wel geopend worden, als ie in deze do1 end1 staat?

Of moet O7001 worden aangeroepen (o7001 call in linuxcnc) en wordt ie dan niet te vroeg aangeroepen?
Dan bedoel je waarschijnlijk dat dat subprogram uit het hoofdprogramma gehaald moet worden, lijkt me heel logisch.

Code: Selecteer alles

( Made by Frans Berkers)
( Untitled 6/20/2022 9:35:54 PM )
( T0 : 3.0 )
G21 G90 G64 G40
G0 X0 Y0 Z3 (T0 : 3.0)
M68 (start motor spindel)
M4 P1000 (wacht een sec opdat spindel motor op toren is)
M98 P7001 A-0.2 B0 C-3

M69 (stop spindel motor)
M5
M30

O7001 (macro)
#1=-0.2 (diepte per keer)
#2=0 (Cumm diepte)
#3=-3 (Totale diepte)
G0 Z0
WHILE[#2 GT #3]DO 1;
#2 = [#2+#1]
G0 Z3
M4 P500
G1 Z#2
END 1 ;
M99
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Grafjan
Berichten: 731
Lid geworden op: 16 aug 2018 23:01
Locatie: Tilburg

Re: While statement in macro

Bericht door Grafjan »

DO 1, maar waar is N1?
En wat is het verschil eigenlijk tussen while en if?
Spanen maak je, het werkstuk hou je over!Dus wat ik maak kan rechtstreeks de schrootbak in.
hfjbuis
Donateur
Berichten: 3057
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: While statement in macro

Bericht door hfjbuis »

Ik heb nog eens gezocht (gebruik ook geen Mach3) en hier staat het antwoord:
https://www.machsupport.com/forum/index ... ic=14476.0
The only way to do loops at the moment is by using subs or VB macros
You can use # vars and operators but no IF's or WHILE, GOTO's or conditions LE, etc.
Search the forum for M98 and you will find lots of examples to do loops and conditions
Heb ik gedaan, hier een voorbeeld:
https://www.youtube.com/watch?v=lbM_-aawCV8
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Rocnc
Berichten: 312
Lid geworden op: 02 dec 2008 20:39

Re: While statement in macro

Bericht door Rocnc »

Ik los dit op met een loop procedure. Ik laat die loop een aantal maal herhalen waarbij ik de Z-as steeds met een vaste afstand verplaats. Misschien kan je zo'n loop zelfs nesten voor 2,5 D werk, maar dat heb ik nog niet geprobeerd. Die loop procedure heb ik gevonden in de Mach3 handleiding. Als er interresse is wil ik wel een voorbeeldje plaatsen.
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 11995
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: While statement in macro

Bericht door hugo stoutjesdijk »

Als je blijkbaar niet met vergelijkingen kunt werken, kun je het beter zo doen lijkt me:
Even een opzetje gemaakt welke kant het op zou kunnen gaan.

Code: Selecteer alles

( Made by Frans Berkers)
( Untitled 6/20/2022 9:35:54 PM )
( T0 : 3.0 )
G21 G90 G64 G40
G0 X0 Y0 Z3 (T0 : 3.0)
M68 (start motor spindel)
M4 P1000 (wacht een sec opdat spindel motor op toren is)
M98 P7001 A-0.2 C-3

M69 (stop spindel motor)
M5
M30

O7001 (macro voor de berekening)
; #1=-0.2 (diepte per keer)
#2=0 (Cumm diepte)
; #3=-3 (Totale diepte)
M98 P70010 A#1 L[#3/#1] (, nog iets toevoegen voor afronden naar heel aantal)
M99

O70010 (macro voor het werk)
G0 Z0
#2 = [#2+#1]
G0 Z3
M4 P500
G1 Z#2
M99
Die #1 en #3 moet je natuurlijk niet in je subprogramma invullen, dat doe je immers al in de 1e M98 regel.
Het aantal herhalingen bereken je uit de stapdiepte en de totale diepte.
Ik ben er eigenlijk voorstander van om in uit te gaan van aantal stappen en totale diepte, dat is wat makkelijker, hoef je geen controle te doen of het uitkomt, en kun je door de stappenteller op iets anders dan 1 ook halverwege weer instappen zonder dat je het hele traject door moet lopen.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
F. Berkers
Berichten: 16
Lid geworden op: 16 feb 2022 21:57

Re: While statement in macro

Bericht door F. Berkers »

F. Berkers schreef: 23 jun 2022 21:28
F. Berkers schreef: 23 jun 2022 21:27
Grafjan schreef: 23 jun 2022 19:54 Ik heb wel een gekochte versie maar ik kreeg die loops ook niet voor elkaar. Ben benieuwd of het U wel lukt.
Beste Grafjan bedankt voor dat je hebt geprobeerd in jouw machine. Ik vond het ook al vreemd omdat ik het in een machine onafhankelijke simulatie heb getracht te laten draaien maar daar kreeg ik ook een foutmelding.
Wordt vervolgt.
Groetjes Frans
Beste Grafjan,
Ik heb nu een versie die werkt in den simulatie van Gwizzed editor. maar loop niet in mijn demo versie.
Zou jij willen kijken of deze in jouw versie wel loopt.
Hieronder de nieuwe Gcode:
O00001
(Diepte boren in MM)

#1=.25 (FIRST DEPTH OF CUT)
#2=.25 (DEPTH OF CUT)
#3=5 (TOTAL DEPTH)

T3M6 (Change Tool)
S2500M3 ( M68 In DDCS)
G90G0G54X0Y0 (START POSITION X0 en Y0)

WHILE[#2LE#3]DO1
G1 Z-#2F50
G0 Z2
G4 P500
#2=[#2+#1]
END1

G0Z3
M5 (moet M69 voor DDCS)
M30

Met vriendelijke groet
Frans
F. Berkers
Berichten: 16
Lid geworden op: 16 feb 2022 21:57

Re: While statement in macro

Bericht door F. Berkers »

F. Berkers schreef: 28 jun 2022 10:05
F. Berkers schreef: 23 jun 2022 21:28
F. Berkers schreef: 23 jun 2022 21:27
Beste Grafjan bedankt voor dat je hebt geprobeerd in jouw machine. Ik vond het ook al vreemd omdat ik het in een machine onafhankelijke simulatie heb getracht te laten draaien maar daar kreeg ik ook een foutmelding.
Wordt vervolgt.
Groetjes Frans
Beste Grafjan,
Ik heb nu een versie die werkt in den simulatie van Gwizzed editor. maar loop niet in mijn demo versie.
Zou jij willen kijken of deze in jouw versie wel loopt.
Hieronder de nieuwe Gcode:
O00001
(Diepte boren in MM)

#1=.25 (FIRST DEPTH OF CUT)
#2=.25 (DEPTH OF CUT)
#3=5 (TOTAL DEPTH)

T3M6 (Change Tool)
S2500M3 ( M68 In DDCS)
G90G0G54X0Y0 (START POSITION X0 en Y0)

WHILE[#2LE#3]DO1
G1 Z-#2F50
G0 Z2
G4 P500
#2=[#2+#1]
END1

G0Z3
M5 (moet M69 voor DDCS)
M30

Met vriendelijke groet
Frans
F. Berkers
Berichten: 16
Lid geworden op: 16 feb 2022 21:57

Re: While statement in macro

Bericht door F. Berkers »

F. Berkers schreef: 28 jun 2022 10:12
F. Berkers schreef: 28 jun 2022 10:05
F. Berkers schreef: 23 jun 2022 21:28
Beste Grafjan,
Ik heb nu een versie die werkt in den simulatie van Gwizzed editor. maar loop niet in mijn demo versie.
Zou jij willen kijken of deze in jouw versie wel loopt.
Hieronder de nieuwe Gcode:
O00001
(Diepte boren in MM)

#1=.25 (FIRST DEPTH OF CUT)
#2=.25 (DEPTH OF CUT)
#3=5 (TOTAL DEPTH)

T3M6 (Change Tool)
S2500M3 ( M68 In DDCS)
G90G0G54X0Y0 (START POSITION X0 en Y0)

WHILE[#2LE#3]DO1
G1 Z-#2F50
G0 Z2
G4 P500
#2=[#2+#1]
END1

G0Z3
M5 (moet M69 voor DDCS)
M30

Met vriendelijke groet
Frans
Afbeelding
Grafjan
Berichten: 731
Lid geworden op: 16 aug 2018 23:01
Locatie: Tilburg

Re: While statement in macro

Bericht door Grafjan »

Snap ik het nou niet helemaal? Maar #2 zit in de loop en word dus elke keer weer op 0.25 gezet op het einde word er 0.25 bij op geteld maar dan gaat hij weer naar regel 1 en word #2 weer op 0.25 gezet. Kan zijn dat ik het verkeerd zie.
Spanen maak je, het werkstuk hou je over!Dus wat ik maak kan rechtstreeks de schrootbak in.
Kjelt
Donateur
Berichten: 6259
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: While statement in macro

Bericht door Kjelt »

Grafjan schreef: 28 jun 2022 12:14 Snap ik het nou niet helemaal? Maar #2 zit in de loop en word dus elke keer weer op 0.25 gezet op het einde word er 0.25 bij op geteld maar dan gaat hij weer naar regel 1 en word #2 weer op 0.25 gezet. Kan zijn dat ik het verkeerd zie.
Nee je zit in een while-do loop.
Dus op regel 17 springt hij naar de while evaluatie op regel 12.
Het is dus 12.13.14.15.16.17.12.13.14.15. etc. totdat variabele #2 groter is dan variabele #3

Hij heeft de while loop de naam '1' gegeven. Dat is verwarrend inderdaad.
Normaal geef je een while loop een naam die weergeeft wat je doet.
F. Berkers
Berichten: 16
Lid geworden op: 16 feb 2022 21:57

Re: While statement in macro

Bericht door F. Berkers »

Kjelt schreef: 28 jun 2022 12:53
Grafjan schreef: 28 jun 2022 12:14 Snap ik het nou niet helemaal? Maar #2 zit in de loop en word dus elke keer weer op 0.25 gezet op het einde word er 0.25 bij op geteld maar dan gaat hij weer naar regel 1 en word #2 weer op 0.25 gezet. Kan zijn dat ik het verkeerd zie.
Nee je zit in een while-do loop.
Dus op regel 17 springt hij naar de while evaluatie op regel 12.
Het is dus 12.13.14.15.16.17.12.13.14.15. etc. totdat variabele #2 groter is dan variabele #3

Hij heeft de while loop de naam '1' gegeven. Dat is verwarrend inderdaad.
Normaal geef je een while loop een naam die weergeeft wat je doet.
F. Berkers schreef: 28 jun 2022 10:12
F. Berkers schreef: 28 jun 2022 10:05
F. Berkers schreef: 23 jun 2022 21:28
Beste Grafjan,
Ik heb nu een versie die werkt in den simulatie van Gwizzed editor. maar loop niet in mijn demo versie.
Zou jij willen kijken of deze in jouw versie wel loopt.
Hieronder de nieuwe Gcode:
O00001
(Diepte boren in MM)

#1=.25 (FIRST DEPTH OF CUT)
#2=.25 (DEPTH OF CUT)
#3=5 (TOTAL DEPTH)

T3M6 (Change Tool)
S2500M3 ( M68 In DDCS)
G90G0G54X0Y0 (START POSITION X0 en Y0)

WHILE[#2LE#3]DO1
G1 Z-#2F50
G0 Z2
G4 P500
#2=[#2+#1]
END1

G0Z3
M5 (moet M69 voor DDCS)
M30

Met vriendelijke groet
Frans
Bedankt voor de reacties. Maar mijn vraag is eigelijk kan mij iemand vertellen of dit programma in Mach3 loopt?
Grafjan
Berichten: 731
Lid geworden op: 16 aug 2018 23:01
Locatie: Tilburg

Re: While statement in macro

Bericht door Grafjan »

Ik ben komende dagen niet in de buurt van mijn machine. Als het geen haast heeft wil ik het wel een keer proberen. Maar ik ben bang dat hij dat while enzo niet pikt.
Spanen maak je, het werkstuk hou je over!Dus wat ik maak kan rechtstreeks de schrootbak in.
F. Berkers
Berichten: 16
Lid geworden op: 16 feb 2022 21:57

Re: While statement in macro

Bericht door F. Berkers »

Grafjan schreef: 28 jun 2022 12:14 Snap ik het nou niet helemaal? Maar #2 zit in de loop en word dus elke keer weer op 0.25 gezet op het einde word er 0.25 bij op geteld maar dan gaat hij weer naar regel 1 en word #2 weer op 0.25 gezet. Kan zijn dat ik het verkeerd zie.
F. Berkers schreef: 28 jun 2022 15:06
Kjelt schreef: 28 jun 2022 12:53
Grafjan schreef: 28 jun 2022 12:14 Snap ik het nou niet helemaal? Maar #2 zit in de loop en word dus elke keer weer op 0.25 gezet op het einde word er 0.25 bij op geteld maar dan gaat hij weer naar regel 1 en word #2 weer op 0.25 gezet. Kan zijn dat ik het verkeerd zie.
Nee je zit in een while-do loop.
Dus op regel 17 springt hij naar de while evaluatie op regel 12.
Het is dus 12.13.14.15.16.17.12.13.14.15. etc. totdat variabele #2 groter is dan variabele #3

Hij heeft de while loop de naam '1' gegeven. Dat is verwarrend inderdaad.
Normaal geef je een while loop een naam die weergeeft wat je doet.
F. Berkers schreef: 28 jun 2022 10:12
F. Berkers schreef: 28 jun 2022 10:05 Beste Grafjan,
Ik heb nu een versie die werkt in den simulatie van Gwizzed editor. maar loop niet in mijn demo versie.
Zou jij willen kijken of deze in jouw versie wel loopt.
Hieronder de nieuwe Gcode:
O00001
(Diepte boren in MM)

#1=.25 (FIRST DEPTH OF CUT)
#2=.25 (DEPTH OF CUT)
#3=5 (TOTAL DEPTH)

T3M6 (Change Tool)
S2500M3 ( M68 In DDCS)
G90G0G54X0Y0 (START POSITION X0 en Y0)

WHILE[#2LE#3]DO1
G1 Z-#2F50
G0 Z2
G4 P500
#2=[#2+#1]
END1

G0Z3
M5 (moet M69 voor DDCS)
M30

Met vriendelijke groet
Frans
Bedankt voor de reacties. Maar mijn vraag is eigelijk kan mij iemand vertellen of dit programma in Mach3 loopt?
F. Berkers schreef: 28 jun 2022 10:12
F. Berkers schreef: 28 jun 2022 10:05
F. Berkers schreef: 23 jun 2022 21:28
Beste Grafjan,
Ik heb nu een versie die werkt in den simulatie van Gwizzed editor. maar loop niet in mijn demo versie.
Zou jij willen kijken of deze in jouw versie wel loopt.
Hieronder de nieuwe Gcode:
O00001
(Diepte boren in MM)

#1=.25 (FIRST DEPTH OF CUT)
#2=.25 (DEPTH OF CUT)
#3=5 (TOTAL DEPTH)

T3M6 (Change Tool)
S2500M3 ( M68 In DDCS)
G90G0G54X0Y0 (START POSITION X0 en Y0)

WHILE[#2LE#3]DO1
G1 Z-#2F50
G0 Z2
G4 P500
#2=[#2+#1]
END1

G0Z3
M5 (moet M69 voor DDCS)
M30

Met vriendelijke groet
Frans
Beste Grafjan de boor gaat er eerst 0,25 mm in. daarna wordt er in de loop telkens 0.25 bijgeteld. In de tweede slag is de diepte 0,5 daarna 0,75 en daarna 1mm en zo lang tot de diepte van 5mm is bereikt.
F. Berkers
Berichten: 16
Lid geworden op: 16 feb 2022 21:57

Re: While statement in macro

Bericht door F. Berkers »

Grafjan schreef: 28 jun 2022 15:28 Ik ben komende dagen niet in de buurt van mijn machine. Als het geen haast heeft wil ik het wel een keer proberen. Maar ik ben bang dat hij dat while enzo niet pikt.
Ik heb geen haast en zo het fijn vinden als je het wilt proberen want dan weet ik of Mach3 een while do loop kan. het programma is correct want hij loopt in Gwizzerd
vast bedankt Groetjes Frans
Plaats reactie