Het "Bouwen" van Macro's voor USBCNC

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

Moderator: Moderators

Plaats reactie
ericvdp
Berichten: 2
Lid geworden op: 06 jul 2014 16:29

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

Bericht door ericvdp »

Ik gebruik de CPU5B, prachtige kaart.
De geheugen structuur is voor mij nog een onbekende.
Graag zou ik de input poorten kunnen inlezen en de output poorten kunnen aansturen van uit een macro.
Ik ben gewoon van te programmeren in assembleren en C
De geheugen plaatsen van 0 tot 5799 wat zijn dat, bytes, words, enz.
Hoe wordt de informatie daarin opgeslagen.
Hoe kan ik een bepaalde bit gaan selecteren?
Waar kan ik meer informatie vinden.
Gebruikersavatar
andrefc101
Donateur
Berichten: 3702
Lid geworden op: 26 dec 2007 08:39
Locatie: Bergen op Zoom
Contacteer:

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

Bericht door andrefc101 »

ericvdp schreef:Waar kan ik meer informatie vinden.
In de manual misschien?
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 11995
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

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

Bericht door hugo stoutjesdijk »

ericvdp schreef:De geheugen structuur is voor mij nog een onbekende.
Graag zou ik de input poorten kunnen inlezen en de output poorten kunnen aansturen van uit een macro.
Ik ben gewoon van te programmeren in assembleren en C
De geheugen plaatsen van 0 tot 5799 wat zijn dat, bytes, words, enz.
Hoe wordt de informatie daarin opgeslagen.
Hoe kan ik een bepaalde bit gaan selecteren?
Waar kan ik meer informatie vinden.
Dat zijn nu juist die zaken die CNC frezers niet willen weten. ;-)
Die beschrijven een machine beweging middels coordinaten, en soms wil je wel eens een truucje doen en wat uitrekenen. Die # variablen zijn overal goed voor, ik denk dat het allemaal float is, maar dat boeit mij niet.
En er zijn een aantal # waarden waar je niet aan moet komen, die waarden kun je opvragen ( posities, waarde van tools of nulpunt ).
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

# parameters zijn "double",je kunt er wel een integer in zetten. maar een integer kan een double zijn.. een double echter geen integer..

Maar dat terzijde.. C beheers ik nog niet.. VB.Net wel.. een beetje.. heb een programmeerapplicatie geschreven voor mijn machine.. doet alles met parameters.. en een slimme structuur van de Syntaxis, waardoor er in wezen een nieuwe programmeer taal is ontstaan.. de macro.cnc is bij mij als een DLL vol met functies die ik aanroep met bepaalde parameters..

de geheugenplaatsen 0 tot 5799 zijn "labels" de inhoud doubles

als je middels een eigen Applicatie met EdingCNC wilt verbinden, dan doe je dat via de API.. Ik heb in het verleden met de oude dotnetAPI zelf een aantal GUI's gebouwd op de USBCNC Engine. en ik kon daarin ook parameters weergeven door ze met de API op te halen, en te laden in een variabele.. die definieerde ik altijd als Double

de labels 1 tot en met 3999 zijn vrij bruikbare parameters.. van 4000 tot en met 4999 zijn non volatile, die worden opgeslagen als EdingCNC afgesloten wordt.. zodat je ze kan gebruiken voor default values.. , boven de 5000 zijn systeemparameters.. 5001-5006 bijvoorbeeld zijn de actuele as posities X tm C.

Ik weet niet waarom je een bepaalde Bit moet selecteren.. of je bedoelt dat je 2bits parameters wilt uitlezen?.. sommige parameters zijn Booleans inderdaad.. Probeswitched en Probestatus zijn Boolean, en Dlgmsgstatus is ook Boolean.. alleen heeft deze 1(true) en -1(False).

in de Manual vind je een overzicht van alle parameters met hun functie..
op het Tabblad IO kun je de status van een aantal IO vinden.. de waarden van bepaalde parameters kun je op de Variables tab terugvinden..

in G-code zijn X, Y, Z, A, B, C, F, M, S, R, en T woorden, N is ook een woord, voor bloknummers, maar die hoef je niet te gebruiken.. (in G-code heet een line een block)
Alles wat je achter een woord invult zijn waarden

Wat het uitlezen van IO Status betreft.. in de manual staan plenty voorbeelden.. er zijn bepaalde G-Codes die de status van bepaalde poorten sturen of uitlezen

http://www.edingcnc.com/upload/files/us ... .01.00.pdf
bladzijde 141..
met M56 kun je van alles uitlezen of wachten tot een output 0 of 1 wordt.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »



Wat er allemaal kan met macro's... :lol:

Here's how it works.. Ik heb gebruik gemaakt van LogMsg, een heel mooi commando, waar volgens mij nog niet veel mensen mee gewerkt hebben.. omdat ze geen idee hebben wat je ermee kan..

Voor mijn Draaibankje heb ik een aantal Macrootjes geschreven.. Vlakdraaien, Langsdraaien, Afronden, en Afschuinen.
met F2 tm F5 kan ik een Dialoog openen om deze macro's direct uit te voeren.. maar met F11 kan ik uit een menu één van deze macro's kiezen.. maar in plaats van direct uitvoeren, schrijft de macro de parameters weg naar een file..
Deze file ( Teach_in.nc) laad ik vantevoren.. als ie nog leeg is.. dan toont EdingCNC een leeg scherm.. maar zodra ik de eerste dialoog heb ingevuld, wordt de file geladen in EdingCNC, en toont de gereedschapsbanen op mijn scherm..
Elke volgende dialoog wordt vervolgens in de file bijgeschreven.. en daarna wordt Teach-in.nc weer geladen in EdingCNC..

Zo kun je dus bewerking voor bewerking programmeren, en zo je onderdeel op je scherm zien ontstaan..
Naderhand, open je het bestand, en sla je het op onder een andere naam.. zodat je het later weer kan gebruiken ..
klokkenman
Berichten: 47
Lid geworden op: 20 feb 2010 22:17

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

Bericht door klokkenman »

Hallo

Het begint er onderhand een beetje op te lijken Arie.
Dit bedoelde ik nou met mijn vraag over teach-in cnc.

Je mag voor de liefhebber de mogelijkheden van het cnc gebeuren uitbreiden mits ze dat zelf al niet doen.
Maar het allemaal een beetje eenvoudiger maken vergroot de gebruikersgroep aanzienlijk.

Ik ben me aan het orienteren in het teach -in draaien en dat ziet er vrij eenvoudig uit, dit moet ook kunnen in usbcnc mijnsinziens.


Het moet zo zijn dat dit "Klokkenboertje"er ook mee overweg kan
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

Dit Filmpje is gemaakt met de Macro.cnc voor mijn draaibank.. de besturing van mijn Emcootje gaf de geest.. dus heb ik er 2 nieuwe motoren een EdingCNC CPU 4 aan geknoopt (die CPU4 had ik nog liggen de Beagle heeft in zijn nieuwe kast een CPU5 gekregen)

Ik heb 4 Cycli gebouwd, Vlakdraaien, Langsdraaien, RadiusDraaien en afschuinen.
met F2 tm F5 kun je deze cycli programmeren en direct uitvoeren.. maar. daarna kun je ze middels F11 opslaan in Teach_in.NC.. om alle bewerkingen achter elkaar te knopen..

Je kunt met F11 ook gewoon alle bewerkingen in één keer achter elkaar programmeren, en direct wegschrijven in teach_in.nc.

Omdat ik WatchFileChanged en Load Automatically heb aangevinkt, wordt Teach_in.nc automatisch herladen als je em vantevoren geopend hebt.. op die manier zie je elke geprogrammeerde functie meteen op je scherm verschijnen nadat je op OK geklikt hebt..

Dit is inderdaad een vorm van teach-in zoals ik het zelf ook kende van de Fagor 8050 besturing.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

Net nog een "geintje" ontdekt.. Ik ben een macrootje aan het bouwen om schroefdraad mee te frezen.. 't handigste is als je de spiraal opbouwt in halve cirkels.. maar dan moet je ook halve spoed stijgen.. en in je algoritme wil je liefst rekenen met volle spoed..

dan zou het makkelijk zijn als je de cirkels met een incrementele Z-waarde kan maken.. maar dat kan niet in EdingCNC..of toch?..

Code: Selecteer alles

G03 X-#1000 Y0 Z[#5003+#[#1001/2]]
G03 X#1000 Y0 Z[#5003+#[#1001/2]]
#1000 is de radius van de draad-gereedschapradius.. #1001 is de spoed, ik frees van beneden naar boven..
#5003 is actuele Z-waarde.. dus.. #5003 + halve spoed, geeft de positie 180° verderop...
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 11995
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

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

Bericht door hugo stoutjesdijk »

Arie Kabaalstra schreef:

Code: Selecteer alles

G03 X-#1000 Y0 Z[#5003+#[#1001/2]]
Als je het zo schrijft, en #1001 = 0.5 ( ik denk dat die kasten een beetje fijne spoed hebben )
Zou je de waarde in #[0.5/2] geeft #0.25 als spoed gebruiken, denk niet dat edingcnc dat begrijpt. ;-)
Dus doe het maar zo:

Code: Selecteer alles

G03 X-#1000 Y0 Z[#5003+[#1001/2]]
Wat heb ik het dan toch makkelijk: G3 X.. Y.. ZI voor incrementeel.
( in linuxCNC G3 X.. Y.. G91 Z.. G90 ook handig )
Maar eigenlijk hoort een cyclus in z'n geheel in kettingmaten geschreven te worden. ( start en eindpunt gelijk )
En waarom je in halve cirkels zou willen werken ontgaat me, dat is uit de tijd dat ze die circulaire baan nog niet zo goed onder controle hadden, daar heeft Bert echt geen last van.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

Code: Selecteer alles

    G03 X-#1000 Y0 Z[#5003+#[#1001/2]]
    G03 X#1000 Y0 Z[#5003+#[#1001/2]]
Hugo.. je hebt helemaal gelijk.. bovenstaande code is onzin.. :oops: :oops:

Code: Selecteer alles

    G03 X-#1000 Y0 Z[#5003+[#1001/2]]
    G03 X#1000 Y0 Z[#5003+[#1001/2]]
Dat moet em zijn..

Inderdaad.. de schroefdraad voor bijvoorbeeld de achterdeksel van een horloge.. spoed van 0.5 mm.. M39x0.5 om precies te zijn..

Hele cirkels doet ie wel.. maar dan alleen met I en J.. ik heb ze in m ijn macrootje met R geschreven.. moet ik weer even rekenen.. kom ik wel uit..
mostudio
Berichten: 517
Lid geworden op: 24 mei 2007 19:37
Locatie: Den Haag
Contacteer:

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

Bericht door mostudio »

INFO........
Voor de programeurs van macro's heb ik wat extra info.
Ik heb met bert kontact gehad om wat extra info wat achter de schermen schuil gaat van usbcnc.
De stack overflow staat op 25 dat betekend dat je maximaal 25
Keer diep kan gaan met de If else endif voordat je een stack overflow krijgt.
Een stack overflow moet je verkomen omdat er dan rare dingen kunnen gebeuren.

Nog een tip je kan een M2 g code gebruiken om een sub te verlaten dit is een nette manier en geeft geen probleem voor usbcnc.

Een M1 gcode kan je gebruiken om je macro's te testen en een brackpoint te maken alleen je moet in de UI de optie stop op M1 aan vinken.

Het zijn maar een paar tips die je niet in de handleiding kunt vinden. Maar door mij ervaring als programeur zijn het wel belangrijk dingen om te weten. En een monkie proef prog te schrijven
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

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

Bericht door Arie Kabaalstra »

Klopt ja.. die Stack kan inderdaad max 25 hoog zijn.. je moet dus uitkijken met recursieve algoritmen ( while routines die naar dezelfde sub verwijzen waar ze in staan bijvoorbeeld)

met een M2, stopt alles.. da's inderdaad een nette manier.. maar als je meerdere subs in een programma wilt aanroepen.. dan stopt het bij de sub waar M2 in staat.. moet je even in de gaten houden dus..
mostudio
Berichten: 517
Lid geworden op: 24 mei 2007 19:37
Locatie: Den Haag
Contacteer:

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

Bericht door mostudio »

Dat klopt ik gebruikt het voor de dlgmsg cancel knop. Soms wil ik een menu hoger en soms wil ik direct terug naar de UI.

Even een snel voorbeeldtje

Sub set tool data

Sub slot milling

Sub apr dep.


Als ik een move wil progge
Dan zeg ik
Sub apr dep
Die roept sub set tool data
Dan wordt er een logfile gemaakt
Dlgmsg next g code? Or end ?
Exit M2

Dan kan je de volgende move progge
Sub slot milling
Sub set tool data
Bla bla bla bla

Dit is het idee hoe ik een makkelijke User Interface maak met dlgmsg schermen. En dat ik alles in subs gooi om het later nog te kunnen uitbreiden op een makkelijke manier
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 »

Ik wil even terug komen op het gebruik van "LogMsg" zoals Arie dat beschreef. De macro's heb ik al geschreven maar misschien wil Arie ons uitleggen hoe hij die macro's zover krijgt dat zij LogMsg gebruiken in plaats van de macro direct uit te voeren. Het geheim zit hem denk ik in het programma dat hij onder F11 heeft zitten. Ik vraag het hierom omdat het maar niet lukt :evil: om vanuit een CAD/CAM programma een door EdingCNC uit te voeren G-code bestand te krijgen. Ik was blij met Fusion360 totdat blijkt dat de EdingCNC postprocessor van Fusion360 niet wil draaien, frezen schijnt wel te werken (dat moet ik nog proberen). Het draaien vanuit CAM lijkt wel een soort weeskindje te zijn! Ik kan me met een hoop bewerkingen met mijn macro's prima redden, maar als een onderdeel te gecompliceerd wordt heb ik het graag eerst op het scherm en daar is Aries methode zeer geschikt voor.

Keesk
Plaats reactie