Het "Bouwen" van Macro's voor USBCNC
Berichtdoor Arie Kabaalstra op 29 Apr 2010 18:55
Introductie
In het topic: Kennismaking met macro's in USBCNC schreef ik al:
eigenlijk is programmeren ( in welke taal dan ook ) niets anders dan een reeks voorwaarden en instructies en wat controles of aan die voorwaarden wordt , of is voldaan..
een poosje geleden heeft Bert Eding het bestand MACRO.CNC in het leven geroepen.
MACRO.CNC bevat standaard al een paar SUBROUTINES die in USBCNC worden gebruikt voor een aantal taken, zoals het wisselen van gereedschappen, en het oproepen van de lengte-offset, het HOMEN van de machine, en het meten van je werkstukhoogte en gereedschaplengte.
Zelf kun je daar nog van alles en nogwat aan toevoegen, Bewerkingen die je vaak uitvoert kun je als SUBROUTINE in MACRO.CNC zetten zodat je ze makkelijk op kan roepen, ook vanuit andere programma's, hiermee kun je als het ware, net als in "hogere programmeertalen" zoals C++ en Visual Basic "Object georienteerd programmeren" (wat dat inhoudt, daar kom ik later in dit topic op terug)
MACRO.CNC kun je zien als een BIBLIOTHEEK-BESTAND, een soort "Class "of "DLL" als bij C++ of Visual Basic
en ik begrijp dat dit nog enige uitleg vereist voor diegenen die nog niet veel ervaring hebben in het programmeren (in welke taal dan ook )
Waarom ik die opmerking "in welke taal dan ook" gebruik zal ik even uitleggen..
Er zijn een aantal commando's die in ELKE programmeer taal gebruikt worden, of dat nu Basic, MSX, DOS, Pascal, Epoc, Symbian of Heidenhain is.
't enige verschil is de "Syntaxis", de manier waarop het geschreven wordt (zeg maar de "Grammatica van die taal" )
deze commando's zijn de zogenaamde "Conditional statements (in het engels wordt de term Commando aangeduid als statement )
een conditional statement laat zich dus vertalen als "Voorwaardelijk commando", dat wil zeggen dat deze commando's actief zijn onder bepaalde voorwaarden, welke?.. dat bepaal je lekker zelf, en daarom zijn ze zo veelzijdig.
In USBCNC ( want daar gaat het tenslotte om) hebben we de beschikking over:
IF (ELSE)
ENDIF
WHILE
ENDWHILE
Verder kun je in USBCNC met Parameters programmeren, een parameter is eigenlijk een "geheugenplekkie" met een "Label" ze worden in USBCNC aangeduid met een # gevolgd door een nummer, het label
de Parameters die je "Vrij" kunt gebruiken zijn de labels 1 t/m4999, waarbij ik even aanteken dat 4996 t/m4999 worden gebruikt in de toolmeetmacro's die ik samen met Bert Eding geschreven heb voor de releases vanaf 3.49
#4000 tm #4999 worden tevens bij het afsluiten van USBCNC opgeslagen, en hebben de volgende keer dat je USBCNC Start nog steeds dezelfde waarde, #1 t/m #3999 worden elke keer na afsluiten gewist, en zijn dus 0 als je USBCNC opnieuw start
HIER vind je op pagina 50 een keurig overzicht van alle labels
de Labels boven 5000 kun je ook gebruiken in macro's je moet wel als je bijvoorbeeld wilt gaan rekenen met de afmetingen van het gereedschap, die waarden haal je dan "uit de tabel"
Programma's kun je ook nog indelen in SUBROUTINES
Macro's schijf je als SUBROUTINES in MACRO.CNC zodat je ze "vanuit elke hoek in USBCNC" Kunt oproepen
SUB (naam)
ENDSUB
een sub(routine) is een stukje programma dat je aan kunt roepen met GOSUB
als je met GOSUB FREZEN verwijst naar SUB FREZEN, dan gaat USBCNC vanaf die regel verder in SUB FREZEN, om bij ENDSUB terug te keren naar de regel ONDER GOSUB FREZEN, USBCNC maakt dan eigenlijk een "Zijsprongetje"
de voorwaardelijke commando's, Parameters en SUB's zijn de "Bouwstenen" waar je een Macro mee bouwt.