Het "Bouwen" van Macro's voor USBCNC

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

Moderator: Moderators

Plaats reactie
keesk
Donateur
Berichten: 216
Lid geworden op: 16 aug 2008 18:44
Locatie: Weerdinge (bij MM)

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

Bericht door keesk »

Arie, mijn complimenten! Ik heb zojuist USBCNC als taal in Wordpad++ geÏnstalleerd en het véél duidelijker.
Alle parameters zijn in de declaraties rood, en als ze tussen [ ] staan zijn ze bruin. Verder heb ik er nog niet veel mee gedaan, maar dat gaat veranderen dankzij jouw cursus!

KeesK
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13518
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

Graag gedaan!.. Ik vind Notepad ++ een waanzinnig goed programma met deze "Taal-plugins"

programmeren is leuk!.. dat je dat maar nooit vergeet!
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13518
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

Nog even een Hintje voor het maken van Macro's

als je de coordinaten voor een bewerking in je dialoog hebt ingevoerd, tel dan een millimeter of 20 bij je veilige hoogte op, en laat je machine over 3 assen naar die positie bewegen alvorens naar veilige hoogte af te dalen.

Hiermee voorkom je dat je bij het "aanlopen"van je startcoordinaat een aanvaring krijgt met je opspanmiddelen..

een ander geintje: sla de parameters #5001, #5002 en #5003 ( actuele X, Y en Z posities ) op in andere parameters, dan kun je die gebruiken om weer naar je startpositie terug te keren..
Dan loopt je machine terug naar waar je de macro gestart hebt, en blijft ie niet 1mm boven je werk staan als je klaar bent.. zo kun je de sleden ook weer bewegen zonder risico van aanvaringen met je opspanmiddelen..

Op de draaibank heb ik dit ook toegepast, zo kan ik na een bewerking meteen meten, zonder dat ik eerst de slede moet verplaatsen.. ik zorg er gewoon voor dat ik start op een positie die meten aan het werkstuk mogelijk maakt..
Niels
Donateur
Berichten: 947
Lid geworden op: 27 jul 2007 23:40

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

Bericht door Niels »

Arie Kabaalstra schreef:Graag gedaan!.. Ik vind Notepad ++ een waanzinnig goed programma met deze "Taal-plugins"

programmeren is leuk!.. dat je dat maar nooit vergeet!
Ech nie !

Proggen is top en dan met NP++ is het simpeler en overzichtelijk.

Doe er zelf alles mee van C++, PHP, HTML, ASP, licensefiles, txt en cnc files.
Ik ga de NP++ file proberen en kijken wat eruit komt, zal ongetwijfeld ok zijn en positieve kritiek zal zeker gepost worden als ik ze vind :mrgreen:
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13518
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Het "Bouwen" van Macro's voor USBCNC, deel 2, de valkuilen.

Bericht door Arie Kabaalstra »

Goeiemiddag en welkom bij het 2de deel uit de educatieve reeks Het "Bouwen" van Macro's voor USBCNC.

de Valkuilen.. wat bedoel ik daarmee?.. welnu.. een Algoritme moet waterdicht zijn.. er moet geen speld tussen te krijgen zijn, anders ga je gekke dingen krijgen.. Voorbeeldje voor de eerste valkuil:

Code: Selecteer alles

 
   sub cirkel
    DlgMsg "Voer gegevens in bovenkant werkstuk = Z0" Xhartcirkel 50 Yhartcirkel 51 Cirkelradius 52 Freesdiameter 53 Diepte 54 Zstap 55 Feed 56
    msg "Beweeg naar veilige hoogte"
    G17
    G61
    G01 Z1
    msg "Beweeg naar hart cirkel"
    G01 x[#50] Y[#51] F[#56]
    DlgMsg "Coordinaten o.k.? Toets 0 of 1" Jaofnee 57
    If [#57 == 0]
    gosub cirkel
    endif
    msg "Beweeg naar indaalpunt"
    #58 = [#53 / 2]
    #59 = [#50 + #52 - #58]
    #60 = [0 - #55]
    #61 = [#50 - #52 + #58]
    #62 = [0 - #61]
    #63 = [0 - #52 + #58]
    #64 = [0 - #54]
    #65 = [#52 - #58]
    while [#60 >= #64]
    G01 X[#59] Y[#51] F[#56]
    G01 Z[#60] F20
    msg "Frezen van cirkel"
    G2 X[#61] Y[#51] I[#63] F[#56]
    G2 X[#59] Y[#51] I[#65] F[#56]
    #60 = [#60 - #55]
    endwhile
    G01 Z1
    G01 x[#50] Y[#51] F[#56]
    gosub uit
    endsub

    sub uit
    msg "Bewerkingen klaar"
    M5
    M2
    endsub
Erik's Macrootje voor het frezen van ronde kamertjes, Niet om Eriks programmeerwerk ondersteboven te schoffelen, integendeel zelfs, maar dit voorbeeld geeft aan hoe makkelijk het is om een "Foutje" te maken...

Wat gaat hier mis dan?.. het volgende

Code: Selecteer alles

 while [#60 >= #64]
we vullen in de dialoog voor de diepte in: 10 mm, en voor de diepte stap 3 mm... en nu komt het.. Het While statement stelt: zolang de einddiepte Groter of gelijk is, ga je verder.. dus.. we beginnen op 3 mm diep.. geen probleem.. 10 > 3 tenslotte.. 6mm?.. Nee.. ook prima want ook 10 > 6, dus naar 9 mm diep en ook hier.. 10 > 9.. volgende laag.. 12.. hee... wat nu want 10 > 12?.. dachetnie... dus dan stopt ie keurig.. de frees gaat omhoog.. en terug naar het midden.. maar... JUIST!!!.. het kamertje is MAAR 9 mm DIEP!!..

Hoe dit nu op te lossen?.. "Iesse siempel no?..".. heel simpel..

Code: Selecteer alles

 while [#60 >= #64]
ROEP HIER EEN SUBROUTINE AAN 
endwhile

en dan?.. 
#60=#64
ROEP HIER NOG EEN KEER DE SUBROUTINE AAN
Zolang de waarde voor de Z-Waarde nog hoger ligt dan de eindwaarde, gaat ie dieper, en voert ie de routine uit, is ie gelijk, dan gaat ie naar zijn einddiepte en voert ie de routine uit.. , wordt ie "dieper", dan springt ie uit zijn routine, en daar staat dan.. Maak de waarden gelijk, en loop de routine nog een keertje af.. zo gaat ie in het voorbeeld dus IN de While loop naar 3,6 en 9 mm diep, dan wil ie naar 12 diep, dat past niet meer in de voorwaarde voor de While, dus maakt ie de parameter voor de diepte gelijk aan de ingegeven einddiepte, en voert em dan nogmaals uit..

de bewegingen die nu nog in de While-loop staan, moet je dus WEL even in een aparte Sub gooien.. dus je krijgt dan DIT:

Code: Selecteer alles

 sub cirkel
    DlgMsg "Voer gegevens in bovenkant werkstuk = Z0" Xhartcirkel 50 Yhartcirkel 51 Cirkelradius 52 Freesdiameter 53 Diepte 54 Zstap 55 Feed 56
    msg "Beweeg naar veilige hoogte"
    G17
    G61
    G01 Z1
    msg "Beweeg naar hart cirkel"
    G01 x[#50] Y[#51] F[#56]
    DlgMsg "Coordinaten o.k.? Toets 0 of 1" Jaofnee 57
    If [#57 == 0]
    gosub cirkel
    endif
    msg "Beweeg naar indaalpunt"
    #58 = [#53 / 2]
    #59 = [#50 + #52 - #58]
    #60 = [0 - #55]
    #61 = [#50 - #52 + #58]
    #62 = [0 - #61]
    #63 = [0 - #52 + #58]
    #64 = [0 - #54]
    #65 = [#52 - #58]
			while [#60 >= #64]
			goSub rondje
			#60 = [#60 - #55]
			endwhile
			#60 = #64
			GOSUB rondje
    G01 Z1
    G01 x[#50] Y[#51] F[#56]
    gosub uit
    endsub
	
			sub rondje
			G01 X[#59] Y[#51] F[#56]
			G01 Z[#60] F20
			msg "Frezen van cirkel"
			G2 X[#61] Y[#51] I[#63] F[#56]
			G2 X[#59] Y[#51] I[#65] F[#56]
			endSub
    sub uit
    msg "Bewerkingen klaar"
    M5
    M2
    endsub
Ik heb de veranderde delen een stukje uit laten steken.. de "While is gestript van alle bewegingen", die zitten nu in Sub Rondje, 't enige wat we in de While nog doen is de controle van de waarden, en het aanroepen van de Sub, waarna de waarde wordt "geactualiseerd".. als de While niet meer voldoet aan zijn voorwaarde, dan stapt ie eruit, en struikelt ie welhaast over de regel dat ie de diepte gelijk moet maken met de eindwaarde, en dan Sub Rondje NOG een keertje uitvoeren..


Nog een leuke.. in het dialoogje wordt gevraagd naar de diameter van het gereedschap en die wordt opgelsagen in #53.. en dan in de Code staat:

Code: Selecteer alles

 #58 = [#53 / 2]
zal ik je eens een geheimpje verklappen?.. in de Tooltabel staat toch ook de diameter van je gereedschap?.. dat wil zeggen.. als je de moeite neemt om dat in te vullen.. en dat moet je eigenlijk wel doen...

#5009 is de parameter waar de toolradius in staat van het actuele gereedschap.. dus.. overal waar #58 staat in Eriks Macrootje, kunnen we ook invullen #5009, en dan kunnen we #53 uit de dialoog halen, en gewoon vergeten.. de machine "Weet" al wat voor "Frees" ie in de kuip heeft..
didado
Berichten: 304
Lid geworden op: 03 apr 2008 08:25
Contacteer:

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

Bericht door didado »

Wederom dank Arie voor alle info. Ik ga me nu ook verdiepen in de makro's. De notepad++ en language files werken prima.

Anyway, dankzij de correctie op Erik's makro heb je ons verlicht hoe het wel moet en kan.

Ik weet niet of dit de post is waarin ik dat moet melden (dit is een tutorial dus corrigeer me als dit de verkeerde plek is) maar in de Zero tool tip example makro die nu standaard ingebakken zit in USBCNC zit een 'bug'. Nou ja bug... Iets wat misschien of gecorrigeerd of in de makro zelf als tekst bijgevoegd zou mogen worden om verwarring te voorkomen voor met name beginners zoals ik.

Namelijk het regeltje: g38.2 z-100

Als leek test ik mijn code nogal eens super veilig 'hoog in de lucht' . Ik zet de kop van de freesbank hoog en nul de z-as.Dan laat ik de g-code draaien. Vervolgens laat ik de kop een flink stuk zakken. Enkele keren bij het uitvoeren van de Zero tool tip makro (f11,f1) ging de kop niet in stapjes omlaag om de toolsetter te benaderen maar omhoog. Ik snapte daar niets van totdat ik de makro bekeek.

Ik nulde namelijk voor een dry-run hoog en liet vervolgens de kop een flink stuk dalen om het nulpunt van het werkstuk met de toolsetter te calibreren. Mijn frees stond dan net boven de toolsetter en de z-as stond bijvoorbeeld op -120 zonder dat ik me daar van bewust was. Volgens dat g38.2 z-100 regeltje wilde de kop terug naar -100 en ging dus omhoog. Ik snapte daar de ballen van maar nu wel.

Kortom, ik kan dat natuurlijk heel makkelijk zelf aanpassen maar leken zoals ik snappen dat in de eerste instantie niet. Het zou opgelost kunnen worden met tekst in de makro zo van: Adjust z-100 to about 10 mm less then your z-axes software limit. Of misschien heb jij nog een briljant idee? Geen idee of de software limits automatisch uitgelezen kunnen worden uit het ini-bestand en dynamisch in de makro geplaats kunnen worden?

David
Laatst gewijzigd door didado op 01 nov 2010 19:02, 1 keer totaal gewijzigd.
Arian
Berichten: 622
Lid geworden op: 18 nov 2007 17:48
Locatie: Hilversum
Contacteer:

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

Bericht door Arian »

Je heb je best gedaan,we kunnen hier nog een hoop leren.

Arian
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13518
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

@ Didado,
Anyway, dankzij de correctie op Erik's makro heb je ons verlicht hoe het wel moet en kan.
Ik ben door schade en schande wijs geworden in de wereld van programmeren.. door mijn schande hier toe te geven, kan ik mogelijk anderen voor schade behoeden.. :)

wat de toolsetter macro betreft.. even loeren waar wat misgaat.. Ja..

't is heel eenvoudig op te lossen.. en ik zal dit ook even doorgooien naar Bert..

eigenlijk... moet Bert Billekoek!.. er zit namelijk een foutje in.. maar ook dat is inmiddels opgelost.. komtiedan he?..

Code: Selecteer alles

Sub user_1
     msg "user_1, Zero Z (G92) using toolsetter"
    (Start probe move, slow)
    f30
    g38.2 G91 z-100
    (Move back to touch point)
    g0 G90 z#5063
    (Set position, the measuring device is 12mm in height, adapt for your measuring device)
    G92 z12
    (move 2 mm above measuring device)
    g0g91 z2
	G90
    m30
Endsub
Vervang de bestaande SUB voor de bovenstaande..

wat er misging is, zoals je ook terecht opmerkte, de Z-as wil gaan proben naar -100, maar als je op -120 staat, dan gaat ie vrolijk omhoog!.. Juist..

dus.. wat ik heb gedaan is het volgende.. de 100 mm probe-move is nu met G91 geprogrammeerd.. dus INCREMENTEEL.. hij gaat ongeacht zijn positie 100 mm naar BENEDEN.. altijd goed..

de hoogte van je touch-sensor moet je nog wel in de Macro opgeven, Bert werkt met een messing blokje, ik werk met een taster, maar na het tasten gaat ie nu niet meer naar Z14, maar incrementeel 2 mm omhoog..

da's de meest elegante oplossing.. meer moet dat niet zijn tenslotte..

Ik heb Bert inmiddels ingelicht over dit foutje..
als't goed is werkt het nu naar behoren..laat het maar even weten.. als het niet werkt, dan wil ik het ook horen natuurlijk..
didado
Berichten: 304
Lid geworden op: 03 apr 2008 08:25
Contacteer:

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

Bericht door didado »

Dank Arie! Ik had de post ook al doorgeseind aan Bert. Ik ga de makro vervangen. Dit is nou wat ik bedoelde met de community in die andere post.

David
didado
Berichten: 304
Lid geworden op: 03 apr 2008 08:25
Contacteer:

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

Bericht door didado »

In de cirkel makro zit volgens mij nog een foutje. Bij het invoeren van jaofnee oftewel 0 of 1 gaat de makro gewoon frezen maakt niet uit wat je intikt. Al tik ik 5 in dan gaat hij die cirkel frezen

DlgMsg "Coordinaten o.k.? Toets 0 of 1" Jaofnee 57
If [#57 == 0]
gosub cirkel
endif


David
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13518
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

da's op zich geen fout, als het maar GEEN 0 is wat je ingeeft.. bij O gaat ie terug naar de dialoog

't is alleen een beetje "lui" geprogrammeerd..

beter zou dan zijn:

Code: Selecteer alles

DlgMsg "Coordinaten o.k.? Toets 0 of 1" Jaofnee 57
If [#57<>1]
gosub cirkel
endif
Hier staat dus: ALS #57 Groter of Kleiner is dan 1, Ga terug naar de Dialoog
't Resultaat is bijna hetzelfde maar WEL helemaal trouw aan het Algoritme.. je hebt hier een beslissing die niet meer gebaseerd is op gelijk (Equal) aan, maar op niet gelijk aan.. (Not Equal)

't begrijpen van het grote verschil tussen een vergelijking en een ongelijkheid is van wezenlijk belang in een gedegen algoritme.. in zekere zin gedraagt een ongelijkheid gebaseerd op Not Equal (<>) zich als een "While" terwijl ie geprogrammeer is als een "IF".. hoe dat precies zit?.. daar kom ik nog op terug...
didado
Berichten: 304
Lid geworden op: 03 apr 2008 08:25
Contacteer:

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

Bericht door didado »

Nog een vraagje. Er staat Toets 0 of 1 en vervolgens Jaofnee. Moet het dan niet Neeofja zijn? Klinkt misschien stom maar zoals het er nu staat is O=ja en 1=nee in mijn ogen. Of zie ik dat verkeerd?

David
Niels
Donateur
Berichten: 947
Lid geworden op: 27 jul 2007 23:40

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

Bericht door Niels »

Dat is hetzelfde als in het geval van een computerstoring de computer aan en uit zetten...... :mrgreen:
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13518
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

da's nou net het lastige van een GOEDE macro.. Erik heeft deze geschreven als een "voorbeeldje", dus nog niet alles zal perfect zijn..

die "contole" of de locatie wel goed is.. dan zou je in het dialoogje ook kunnen zetten
DlgMsg "Coordinaten o.k.? Toets 0 of 1" "Ja (1) of nee(0)" 57

da's een stuk netter..
Plaats reactie