Het "Bouwen" van Macro's voor USBCNC
Moderator: Moderators
Re: Het "Bouwen" van Macro's voor USBCNC
Vervang de eerste GOSUB CONTOUR door GOSUB UITVOER en verwijder de GOSUB UITVOER van de SUB DIALOG en ik ben het met je eens.
Een andere optie is om het GOSUB UITVOER statement in het ELSE gedeelte te zetten van de foutcontrole. Dan kun je ook weer terug naar alleen GOSUB DIALOG aan te roepen aan het begin zonder daarna UITVOER of CONTOUR apart aan te roepen.
Een andere optie is om het GOSUB UITVOER statement in het ELSE gedeelte te zetten van de foutcontrole. Dan kun je ook weer terug naar alleen GOSUB DIALOG aan te roepen aan het begin zonder daarna UITVOER of CONTOUR apart aan te roepen.
- Arie Kabaalstra
- Donateur
- Berichten: 13481
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Je hebt helemaal gelijk.. kan ik weer een post gaan bewerken..B.Reitsma schreef:Vervang de eerste GOSUB CONTOUR door GOSUB UITVOER en verwijder de GOSUB UITVOER van de SUB DIALOG en ik ben het met je eens.
enniewee..
Code: Selecteer alles
GOSUB DIALOG
GOSUB UITVOER
M2
SUB DIALOG
; PARAMETERS
; #1000 = DIEPTE
; #1001 = DIEPTESTAP
; #1002 = VEILIGHEIDSAFSTAND
DLGMSG"VOER WAARDEN IN" "DIEPTE" 1000 "DIEPTESTAP" 1001 "VEILIGHEIDSAFSTAND" 1002
;FOUTCONTROLE
IF [#1000<#1001] ;ALS DIEPTE <DIEPTESTAP
GOSUB DIALOG
ENDIF
ENDSUB
SUB UITVOER
;#2000 = WERKPARAMETER DIEPTE
#2000 = [#1001] ;WERKDIEPTE=DIEPTESTAP.. EERSTE STAP
G0 Z#1002 ;GA NAAR VEILIGHEIDSAFSTAND
G1 Z0 M3
WHILE [#2000<#1000] ; WERKDIEPTE < EINDDIEPTE
GOSUB CONTOUR
#2000=[#2000+#1001] ; VERGROOT WERKDIEPTE MET DIEPTESTAP
ENDWHILE
#2000=[#1000] ;MAAK WERKDIEPTE = EINDDIEPTE
GOSUB CONTOUR
G0 Z#1002 ;GA NAAR VEILIGHEIDSAFSTAND
ENDSUB
SUB CONTOUR
G01 Z-#2000
; CONTOURBESCHRIJVING
G1 G91 X1
G1 Y1
G1 X-2
G1 Y-2
G1 X2
G1 Y1
G1 X-1
G90
; EINDE CONTOURBESCHRIJVING
ENDSUB
de structuur is nu zoals we't hebben moeten.. we hebben een Sub Dialog, om de waarden in te geven, daar blijft ie dankzij de recursieve algoritme in hangen tot ie voldoet aan de gestelde voorwaarden.. komt ie daaruit, dan springt ie naar Sub Uitvoer.. daar moet sub Contour een aantal malen worden uitgevoerd, In Sub Uitvoer zit dan ook het algoritme dat regelt dat ie in stapjes naar zijn diepte gaat..
Ik moet ook geen programma's meer schrijven als ik een zware verkoudheid heb.. watten in mijn hoofd.. maar goed.. ik heb deze getest.. en deze doet het echt..
Let wel.. dit is nog maar de Basis.. maar wel een werkende basis.. als je zelf een zooi progjes en macro's wilt maken.. dan moet je er dus nog wel een Foutdetectie ingezet. dat heb ik hier omzeild door aan te geven dat je alle waarden positief moet ingeven..
een trucje dat ik je dan wel even wil meegeven.. je kunt het eenvoudig zo maken dat alle waarden automatisch Positief zijn, wat je ook invult..
de Functie ABS.. Absolute waarde.. die haalt indien aanwezig de - voor het getal weg..
#1=-20
#2=[ABS[#1]]
msg#2
vul maar eens in in MDI.. dan zie je precies wat ik bedoel..
die optie heb ik liever niet.. je kunt nu in één oogopslag de hierarchische structuur van het programma zien..R.Beitsma schreef: Een andere optie is om het GOSUB UITVOER statement in het ELSE gedeelte te zetten van de foutcontrole. Dan kun je ook weer terug naar alleen GOSUB DIALOG aan te roepen aan het begin zonder daarna UITVOER of CONTOUR apart aan te roepen.
er hangen nu geen subs onder andere subs, met uitzondering van Sub Contour.. maar die is er alleen maar voor het aflopen van een baantje.. daar zit verder geen enkele vorm van Algoritmes in..
beschouw je Code als een tempel Gods.. houdt het rein en heilig.. en doe't licht uit als je weggaat..
B.Reitsma, Bedankt voor je oplettendheid..!
- Arie Kabaalstra
- Donateur
- Berichten: 13481
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
't staat in de Release-Candidates (RC versies) vanaf Versie RC9, maar ik wilde em jullie toch niet onthouden..
Wat is er aan 't handje?.. Bert heeft een door mij lang gekoesterde wens kunnen verwezenlijken..
Dialogen met PLAATJES!..
Hoe krijg je dit voor elkaar?.. Simpel..
bij het lezen van dit commando, kijkt USBCNC naar de map "dialogpictures" die er sinds RC 9 is, in deze map zoekt ie naar een plaatje genaamd "pocket.PNG ( letwel.. PNG!!)
Ik heb dus even als voorbeeldje een plaatje aangemaakt van een "pocket" in Q-Cad, en daar heb ik even wat maten in gestrooid, dingen die je zou moeten invoegen als je een pocket wilt gaan frezen..
en die heb ik dus opgeslagen in de map Dialogpictures als "pocket.png", als ik de dialoog programmeer met "pocket" als eerste tekst, dan kijkt ie of ie daar het bijbehorende plaatje bij kan vinden..
Verder is het aantal programmeerbare parameters uitgebreidt tot 12 stuks.. zo kun je even wat meer in één dialoog kwijt..
Wat is er aan 't handje?.. Bert heeft een door mij lang gekoesterde wens kunnen verwezenlijken..
Dialogen met PLAATJES!..
Hoe krijg je dit voor elkaar?.. Simpel..
Code: Selecteer alles
dlgmsg"pocket" "D"1 "S"2 "X"3 "Y"4 "R"5 "Fv"6 "Fh" 7 "R"8
Ik heb dus even als voorbeeldje een plaatje aangemaakt van een "pocket" in Q-Cad, en daar heb ik even wat maten in gestrooid, dingen die je zou moeten invoegen als je een pocket wilt gaan frezen..
en die heb ik dus opgeslagen in de map Dialogpictures als "pocket.png", als ik de dialoog programmeer met "pocket" als eerste tekst, dan kijkt ie of ie daar het bijbehorende plaatje bij kan vinden..
Verder is het aantal programmeerbare parameters uitgebreidt tot 12 stuks.. zo kun je even wat meer in één dialoog kwijt..
Re: Het "Bouwen" van Macro's voor USBCNC
Natuurlijk iedereen de beste wensen en dat we maar veel spaantjes mogen maken!
Ik ben bezig het een en ander in macro's te zetten, nu loop ik tegen een probleem aan.
Ik heb op mijn PC twee versies van USBCNC een voor draaien en een voor frezen.
Voor mijn draai-versie heb ik wat knopjes en PNG plaatjes gemaakt. Nu blijkt dat de knoppen ook in de frees-versie te zien zijn! Weet één van de zeer gewaardeerde forum leden hoe ik dat uit elkaar kan houden?
KeesK
Ik ben bezig het een en ander in macro's te zetten, nu loop ik tegen een probleem aan.
Ik heb op mijn PC twee versies van USBCNC een voor draaien en een voor frezen.
Voor mijn draai-versie heb ik wat knopjes en PNG plaatjes gemaakt. Nu blijkt dat de knoppen ook in de frees-versie te zien zijn! Weet één van de zeer gewaardeerde forum leden hoe ik dat uit elkaar kan houden?
KeesK
Re: Het "Bouwen" van Macro's voor USBCNC
Kees,
De plaatjes die USBCNC gebruikt staan in de subfolders van de folder "icons" die weer in de installatie folder (USBCNC4 of USBCNCV3) staan onder "Program Files" (Of "Program Files(x86)" in een 64-bit systeem).
Bij installatie van bijvoorbeeld USBCNC V4 zie je dat er nog twee folders met icons staan als alternatief (van Sorotec).
Wanneer je de twee versies van USBCNC in dezelfde installatie folder hebt geinstaleerd heb je dus een probleem.
In de cnc.ini file staat gedefinieerd in welke folder de icons staan:
iconDirectory = "icons"
Wanneer de twee versies van USBCNC hun eigen ini file gebruiken zul je daar de aanpassing moeten doen.
Dit vind je dacht ik niet terug in de user interface.
Hoop dat dit helpt
Paul
De plaatjes die USBCNC gebruikt staan in de subfolders van de folder "icons" die weer in de installatie folder (USBCNC4 of USBCNCV3) staan onder "Program Files" (Of "Program Files(x86)" in een 64-bit systeem).
Bij installatie van bijvoorbeeld USBCNC V4 zie je dat er nog twee folders met icons staan als alternatief (van Sorotec).
Wanneer je de twee versies van USBCNC in dezelfde installatie folder hebt geinstaleerd heb je dus een probleem.
In de cnc.ini file staat gedefinieerd in welke folder de icons staan:
iconDirectory = "icons"
Wanneer de twee versies van USBCNC hun eigen ini file gebruiken zul je daar de aanpassing moeten doen.
Dit vind je dacht ik niet terug in de user interface.
Hoop dat dit helpt
Paul
Gewoon omdat ik wil weten of het kan...
Re: Het "Bouwen" van Macro's voor USBCNC
Na een nachtje slapen bedacht ik dat ik twee verschillende icon bestanden kan gebruiken.
Ik heb nu een sorotec_frees en een sorotec_draai. In de ini file van beide verwijs ik naar de
bijbehorende icons.
KeesK
Ik heb nu een sorotec_frees en een sorotec_draai. In de ini file van beide verwijs ik naar de
bijbehorende icons.
KeesK
Re: Het "Bouwen" van Macro's voor USBCNC
Beste CNC-ers,
ik ben tegen het volgende probleem aangelopen:
voor mijn draaibank ben ik macro's aan het schrijven voor de meest simpele bewerkingen. Nu zit ik met de vraag hoe laat ik mijn macro "pauzeren" om mijn werkstuk te meten en de gemeten maat in USBCNC in te vullen (ik heb simpel nullen uitstaan) en vervolgens weer verder te gaan met de rest van de macro.
KeesK
ik ben tegen het volgende probleem aangelopen:
voor mijn draaibank ben ik macro's aan het schrijven voor de meest simpele bewerkingen. Nu zit ik met de vraag hoe laat ik mijn macro "pauzeren" om mijn werkstuk te meten en de gemeten maat in USBCNC in te vullen (ik heb simpel nullen uitstaan) en vervolgens weer verder te gaan met de rest van de macro.
KeesK
- Arie Kabaalstra
- Donateur
- Berichten: 13481
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Simpel.. dat doe je niet..
je kalibreert je gereedschappen.. bewerkt voor op een kleine overmaat, meet, corrigeert eventueel, en draait na..
je kalibreert je gereedschappen.. bewerkt voor op een kleine overmaat, meet, corrigeert eventueel, en draait na..
Re: Het "Bouwen" van Macro's voor USBCNC
Oké Arie, boodschap begrepen! Hier is dan mijn eerste macro, compleet met dialoog tekeningen. Het wordt steeds leuker! Graag jullie commentaar?
KeesK
KeesK
Code: Selecteer alles
sub afdraaien
;dlgmsg will popup a dialog with picture usbcnc.png from c:\program files\usbcnc4\dialogPictures directory
dlgmsg "dialoog1" "Diameter" 100 "Lengte " 110 "Diameter materiaal" 120 "Lengte materiaal" 130
if [#110>#130]
msg "Dat gaat niet! Materiaal te kort!"
gosub afdraaien
endif
if [#5398 == 1]
msg "OK Diameter="#100 "Lengte="#110 "Diameter materiaal="#120 "Lengte materiaal="#130
else
msg "CANCEL overnieuw"
gosub afdraaien
endif
dlgmsg "Logo2" "Voeding mm/min" 140 "Toerental" 150 "Voorzet" 160
if [#5398 == 1]
msg "OK "
F#140
S#150
gosub beginnen
else
msg "CANCEL "
endif
endsub
sub beginnen
DlgMsg "Dialoog2" "Beitel klaar?"
if [#5398==1]
msg "Goed dan gaan we draaien!"
gosub draaien
else
msg "Zet eerst de beitel op de goede plek!"
gosub beginnen
endif
g0 z10 x[#120 + 10]
msg "Eind programma"
endsub
sub draaien
m3
F#140
S#150
g0 z1
#200 = #120
while [#200 >= #100]
gosub afnemen
#200 = [#200 - #160]
endwhile
#200 = #100
gosub afnemen
m5
endsub
sub afnemen
g1 x#200
z-#110
g0 x[#200+#160]
z1
endsub
Re: Het "Bouwen" van Macro's voor USBCNC
Het vervolg van "Parabool draaien" van Rieks in het algemeen item:
Ik ben met mijn afschuinen macro nu zover als ik wil, alleen heb ik een probleem.
Om proef te draaien gebruik ik de simulatie op de PC in de huiskamer. Ik heb op advies van Arie hetgeen de macro moet doen ook getekend in Inventor, je kunt dan mooi controleren of alles goed gaat. Nu kloppen alle waarden met de tekening maar tijdens het proefdraaien zie je op het scherm een afwijking tussen de twee laatste bewerkingen.( de diagonalen) Zou het kunnen dat dit aan de schermweergave ligt, ik heb geen mogelijkheid om het product nauwkeurig genoeg te kunnen meten.
Dit is de laatste versie van mijn macro, de variabelen die ik hier gebruik worden in de definitieve versie hernoemd.
Deze gebruik ik tijdens het proefdraaien omdat ze boven aan de lijst staan in het tabblad variabelen!
De G4 gebruik ik om de maten te kunnen kontroleren.
Dit is de Inventor tekening:
Graag jullie visie op dit probleem!
KeesK
Ik ben met mijn afschuinen macro nu zover als ik wil, alleen heb ik een probleem.
Om proef te draaien gebruik ik de simulatie op de PC in de huiskamer. Ik heb op advies van Arie hetgeen de macro moet doen ook getekend in Inventor, je kunt dan mooi controleren of alles goed gaat. Nu kloppen alle waarden met de tekening maar tijdens het proefdraaien zie je op het scherm een afwijking tussen de twee laatste bewerkingen.( de diagonalen) Zou het kunnen dat dit aan de schermweergave ligt, ik heb geen mogelijkheid om het product nauwkeurig genoeg te kunnen meten.
Dit is de laatste versie van mijn macro, de variabelen die ik hier gebruik worden in de definitieve versie hernoemd.
Deze gebruik ik tijdens het proefdraaien omdat ze boven aan de lijst staan in het tabblad variabelen!
De G4 gebruik ik om de maten te kunnen kontroleren.
Code: Selecteer alles
sub afschuinen_test
#1=20 ;diameter
#2=30 ;hoek
#3=3 ;schuinte
#4=0.5 ;afname
#11=0.1 ;toeslag
#5=[#1-[2*[#3+#11]]] ;doeldiameter
#8=[tan [#2]] ;tangens hoek
#9=[[#3+[2*#11]]/#8] ;doel Zas
#10=[[#3-[#11*#8]]/#8];
#0=[#1+[2*#11]] ;bewaar diameter
WHILE [#1>[#5+[2*#11]+[2*#4]]]
#6=[#1-[2*#4]] ;Xas
#7=[[[#3-#4]/#8]-#11] ;Zas
G1 X#6
G1 Z-#7
G4 P2
G1G91X1
G90
G0Z0
#3=[#3-#4]
#1=#6
ENDWHILE
G1X[#1-[2*[#7*#8]]]
G4 P2
G1X[#0-[2*#11]]Z-#10
G4 P2
G1 Z[#11/#8]
g1X#5
G4 P2
g1 X#0Z-#9
G4 P2
G0 z0
M30
ENDSUB
Dit is de Inventor tekening:
Graag jullie visie op dit probleem!
KeesK
- audiomanics
- Donateur
- Berichten: 5273
- Lid geworden op: 28 feb 2007 09:31
- Locatie: Appelscha
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Iedere keer als je de lus doorloopt trek je de toeslag van 0,1 er af.. dus na 5 keer zit je al op 0,5 ipv de 0,1 die je wil hebben..
Kees
Kees
<klik>... euh..test... 123.... einde test... uit.<klik>
- hugo stoutjesdijk
- Donateur
- Berichten: 12042
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: Het "Bouwen" van Macro's voor USBCNC
Kom ik toch weer terug op m'n interpoleren.
Ik heb de parameter nummers een beetje aangepast, dingen die met elkaar te maken hebben probeer ik ook met de nummering aan elkaar te koppelen.
en in deze opzet maak ik met hetzelfde gemak een radius op dat punt.
( ongestest, dus typefoutjes niet uitgesloten )
Ik heb de parameter nummers een beetje aangepast, dingen die met elkaar te maken hebben probeer ik ook met de nummering aan elkaar te koppelen.
Code: Selecteer alles
Nieuwe opzet
#1=20 ;diameter
#2=30 ;hoek
#3=3 ; fase
#4=0.5 ;afname
#5=0.1 ;toeslag
#11=#1/2 ; halve diameter #11 heeft relatie met #1
#12=[tan.[#2]] ;relatie met #2
#13=[#3-#5/cos[#2]] ; gecorrigeerde fase in X ( dus eigenlijk een delta-X maat )
#14=[#13/tan[#2]] ; gecorrigeerde fase in Z ( een delta-Z maat )
#21=#4 ; eerste snede
WHILE [#21>#13] ; we zitten nog steeds in radius te denken !
#6=[2*[#11-#21]] ; radius terugrekenen naar echte diameter
#7=[#21 / #13 * #14] ;hefboom regel Zas
G1 X#6
G1 Z-#7
G1 G91 X[2*#4] Z-[#4/#12] ; schuin door naar vorige diameter
G90
G0Z0 ; misschien beter Z0.5
#21=[#21-#4]
ENDWHILE
( ongestest, dus typefoutjes niet uitgesloten )
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Re: Het "Bouwen" van Macro's voor USBCNC
Hallo Hugo,
je werkt toch niet bij Overtoom hè?
Ik heb jouw programma geprobeerd, wat klein foutjes met haakjes, nu springt hij direct uit de WHILE loop omdat #13 > #21 dus dat omgedraaid. Met #21<#13 gebeurt er wel wat met dit als resultaat.
Het gaat dus de verkeerde kant op! Hugo kun je iets meer uitleggen wat je je allemaal goochelt want zoals je waarschijnlijk wel begrepen hebt ben ik een wiskunde-dislect!
Dit is het programma van jou wat bij mij nu draait:
Ik hoop dat je e.a. uit wilt leggen,
KeesK
je werkt toch niet bij Overtoom hè?
Ik heb jouw programma geprobeerd, wat klein foutjes met haakjes, nu springt hij direct uit de WHILE loop omdat #13 > #21 dus dat omgedraaid. Met #21<#13 gebeurt er wel wat met dit als resultaat.
Het gaat dus de verkeerde kant op! Hugo kun je iets meer uitleggen wat je je allemaal goochelt want zoals je waarschijnlijk wel begrepen hebt ben ik een wiskunde-dislect!
Dit is het programma van jou wat bij mij nu draait:
Code: Selecteer alles
Sub Nieuwe opzet
#1=20 ;diameter
#2=30 ;hoek
#3=3 ; fase
#4=0.5 ;afname
#5=0.1 ;toeslag
#11=[#1/2] ; halve diameter #11 heeft relatie met #1
#12=[tan[#2]] ;relatie met #2
#13=[#3-#5/cos[#2]] ; gecorrigeerde fase in X ( dus eigenlijk een delta-X maat )
#14=[#13/tan[#2]] ; gecorrigeerde fase in Z ( een delta-Z maat )
#21=#4 ; eerste snede
WHILE [#21<#13] ; we zitten nog steeds in radius te denken !
#6=[2*[#11-#21]] ; radius terugrekenen naar echte diameter
#7=[#21 / #13 * #14] ;hefboom regel Zas
G1 X#6
G1 Z-#7
G1 G91 X[2*#4] Z-[#4/#12] ; schuin door naar vorige diameter
G90
G0Z0 ; misschien beter Z0.5
#21=[#21-#4]
ENDWHILE
endsub
KeesK
Re: Het "Bouwen" van Macro's voor USBCNC
@kees
dat klopt niet Kees, de punten hebben juist allemaal de goede maat. Ik heb in de tekening alle punten waar de beitel stopt de maat gezet en gecontroleerd met de DRO. Het idiote is nu dat alles klopt er zit alleen een afwijking in het beeld.
KeesK
dat klopt niet Kees, de punten hebben juist allemaal de goede maat. Ik heb in de tekening alle punten waar de beitel stopt de maat gezet en gecontroleerd met de DRO. Het idiote is nu dat alles klopt er zit alleen een afwijking in het beeld.
KeesK