CNC-2022. Beschrijving van de ondersteunde G- en M- codes.                 Laatste wijziging:  2021-11-01


Algemeen:
De syntax en de betekenis van de gebruikte codes is zoveel mogelijk in overeenstemming met de standaard RS274, hier te downloaden:

             https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=823374


Syntax van een G-code bestand:
Een G_code bestand moet de extensie .ngc of .txt hebben.
Het moet een tekstbestand zijn. (Er bestaat een type CNC bestanden die niet menselijk leesbaar zijn, dat wordt niet ondersteund)
Op 1 regel mag slechts 1 G- of M- code staan, m.u.v. G2, G3, G17, G18 of G19. Zie aldaar.
Er mogen zowel kleine als hoofdletters gebruikt worden. Dit is een verzachting van de standaard die alleen hoofletters toelaat.
Een regel mag overal spaties hebben. Bij het processen worden die als eerste verwijderd.
Er mogen ASCII stuurtekens voorkomen ( < 32 decimaal) Deze worden als eerste verwijderd, maar kunnen het lezen van het bestand bemoeilijken.
Een regel die begint met 1 van de characters % ; # * ( / $  wordt als commentaar behandeld.
Dezelfde commentaar-tekens mogen achter een G- of M- code staan. De rest van die regel is dan commentaar.
Een regel die begint met { verandert die en alle volgende regels in commentaar, tot aan een regel die met } begint.
Het decimale scheidingsteken mag zowel een punt als een komma zijn.
Er mogen geen duizend-tal schedingstekens in getallen staan. Daar wordt bij de processing niet op getest, maar het kan leiden tot een crash of foute interpretatie.
Alle nummerieke waardes mogen opgegeven worden met decimalen. Waar dat niet zinvol is worden de decimalen verwijderd, niet afgerond.
E-notatie voor getallen (12345E-3 voor 12.345) wordt niet ondersteund en kan tot een crash of foute interpretatie leiden.
Als een G-code regel meerdere doelen voor dezelfde as opgeeft wordt alleen het eerste gehonoreerd.
Regelnummers (Nxxxxx) worden geaccepteerd, maar moeten als eerste op de regel staan.
Regelnummers mogen decimalen hebben, tot 2 decimalen blijven behouden.
Als er een foutmelding optreedt wordt zo mogelijk het regelnummer erbij vermeld.


Assen en richtingen:
Deze machine kent de assen X, Y, Z, R en E.
X is de langste as van de machine, Y de beweging over de brug, Z de beweging in de hoogte.
X, Y en Z zijn lineaire bewegingen, R is een rotatie tafel (verdeeltafel) en E is een extra motor die voor diverse dingen gebruikt kan worden.
E staat voor Extra, niet voor Extruder. De E-as wordt net als de R-as behandeld (modulo 360 graden)
Als je aan de korte zijde voor de machine staat zijn de richtingen als volgt
X naar achter is positief, Y naar rechts is positief, Z omhoog is positief.
De E- en de R-as zijn flexibel. De overbrenging en de draairichting kan ingesteld worden via het diagnose menu 2.


Bereik:
X: 1225 mm.
Y: 520 mm.
Z: 250 mm.
N.B. Dit zijn afstanden tussen het raken van eindschakelaars. In de praktijk dient met daar ca. 10 mm vandaan te blijven.

Ondersteunde codes:

Code
Functie
Beperkingen / bijzonderheden
G0 [X, Y, Z, R, E, F]
Beweging zonder bewerking
F = voedingssnelheid
Er moet minimaal 1 parameter opgegeven zijn.
Bij volgende G0 codes mogen de letters G0 weggelaten worden.
De waardes van de F parameter blijft bewaard, ook als er andere codes dan G0 langs gekomen zijn.
G0 schakelt het snijgereedschap niet uit.
G1 [X, Y, Z, R, E, F] Beweging met bewerking
F = voedingssnelheid
Er moet minimaal 1 parameter opgegeven zijn.
Bij volgende G1 codes mogen de letters G1 weggelaten worden.
De waarde van de F parameter blijft bewaard, ook als er andere codes dan G1 langs gekomen zijn. Met G2 of G3 kan deze modale waarde gewijzigd worden.
Het aan / uit zetten van de Highspeed Spindle moet met de codes M3, M4, c.q. M5.
G2 [X, Y, Z, I, J, K, R, E, F, Q] Boog of cirkel met de klok mee
Zie de uitgebreide verhandeling over de G2 en G3 codes.
Er mag een G17, G18 of G19 code op de regel staan. Andersom ook.
De F- parameter is modaal als die van de G1 code.
De Q- parameter geeft het aantal segmenten voor een hele cirkel aan.
Het aan / uit zetten van de Highspeed Spindle moet met de codes M3, M4, c.q. M5.
G3 [X, Y, Z, I, J, K, R, E, F, Q] Boog of cirkel tegen de klok in
Zie de uitgebreide verhandeling over de G2 en G3 codes.
Er mag een G17, G18 of G19 code op de regel staan. Andersom ook.
De F- parameter zijn modaal als die van de G1 code.
De Q- parameter geeft het aantal segmenten voor een hele cirkel aan.
Het aan / uit zetten van de Highspeed Spindle moet met de codes M3, M4, c.q. M5.
G4 Pxxx
Wacht P seconden
Typisch om iets te laten afkoelen, opwarmen of voor een gereedschapswissel.
Indien P negatief: wacht tot de STOP DWELLING button op de GUI ingedrukt wordt.
Bij oneindige wachttijd knippert deze button. Bij geprogrammeerde wachttijd knippert hij niet, maar het wachten kan wel gestopt worden.
N.B. Er is geen ondersteuning voor het compenseren van veranderde afmetingen van het snijgereedschap.
G17  (default)
Kies X-Y vlak voor boog of cirkel
Er mag een G2 of G3 code op dezelfde regel staan.
G18
Kies X-Z vlak voor boog of cirkel
Er mag een G2 of G3 code op dezelfde regel staan.
G19
Kies Y-Z vlak voor boog of cirkel
Er mag een G2 of G3 code op dezelfde regel staan.



Parameters:


X xxx.xx,
Y xxx.xx,
Z xxx.xx
met xxx.xx als doelpositie in mm

R xxx.xx,
E xxx.xx,
met xxx.xx als doelpositie in graden
Doelpositie wordt modulo 360 graden geïnterpreteerd.
De beweging gaat via de kortste weg.
Bij negatieve waardes wordt een veelvoud van 360 opgeteld om tot een positieve waarde tussen 0 en 359.999 te komen.
Fxxx.xx
De voedingssnelheid
in mm / minuut of
graden / minuut
F Mag niet negatief zijn
Sxxx.xx
In M3 en M4 de Spindel snelheid in rpm

In M6xx: 1 = aan, 0 = uit.
In M7xx: Zie aldaar.
Spindel snelheid geldt alleen voor de High Speed Spindel, niet voor andere tools.

Pxxx.xx
In G4: de wachttijd in seconden.

Qxxx.xx
Het aantal segmenten voor een boog of cirkel.
Waarde geldt voor een hele cirkel, ook als er slechts een beperkte boog gmaakt moet worden
Als er decimalen opgegeven wordt worden die afgekapt.
De waarde moet positief zijn en 3 of groter.
Deze waarde blijft bewaard voor evt. volgende bogen.
Default = 50. Een erg grote waarde vergt een lange proces tijd.
Nxxxx.xx
Regelnummer
Moet als eerste op de regel staan.



Standaard M codes:


M3 Sxxxxx
Start Spindel met de clock mee
Sxxx = rpm
En wacht tot het toerental bereikt is.
S mag niet negatief zijn.
M4 Sxxxxx
Start Spindel tegen de klok in
Sxxx = rpm
En wacht tot het toerental bereikt is.
S mag niet negatief zijn.
M5
Stop Spindel
En wacht tot de spindel gestopt is.



Non-Standaard M-codes:

M601 S0 / S1
Aux Tool 1 uit / aan
Bijv. in plaats van de High Speed Spindle
M602 S0 / S1 Aux Tool 2 uit / aan Bijv: een stofzuiger.



M701 Sxxx
Zet Data Direction voor de digitale  I/O's van de Feature Connector
xxx = 0..255, binare interpretatie van 8 I/O's.
Voor inputs wordt niet automatisch de interne pullup geactiveerd
M702 Sxxx
Zet Outputs voor de digitale I/O's van de Feature Connector xxx = 0..255, binare interpretatie van 8 I/O's.
Een 1 opgegeven voor een input zet de pull-up weerstand aan.
M703 Xxx, Yxx, Zxx
Zet xx als PWM in de utgangen A, B en C van de Feature Connector.

PWM A, B en C zijn fase-correcte PWM signalen met een resulutie van 10 bit en een frequentie van 7812 Hz.
Er moet minimaal 1 parameter oppgegeven worden.
xx = 0 .. 1023
Voor niet opggeven parameters verandert er niets.
M709
Rapporteer analoge en digitale I/O's.
Rapport in komma-gescheiden bestand  "M709.txt" .
M714 S0 / S1
Zet de belichting uit / aan
Voor fotografie
M715 S0 / S1
Zet het camera contact uit / aan
Voor fotografie. In het algemeen moet er een G4 tussen een M715 S1 en M715 S0



Op verzoek ....

Kunnen er aanvullende M-codes geïmplementeerd worden.


Over bogen en cirkels.
RS274 benoemt 2 manieren om een boog of cirkel te specifiëren: het Radius formaat en het Centrum formaat.
Alleen het Centrum formaat wordt ondersteund; bij het Radius formaat is er een beperking bij bogen die een (bijna) volledige cirkel vormen.
In het Centrum formaat wordt een boog opgegeven met het absolute eindpunt (X, Y) en het centrum op de relatieve afstand (I, J) t.o.v. het startpunt. Dit geldt voor bogen in het XY vlak. Voor bogen in het YZ vlak vervang (X, Y) door (Y, Z) en (I, J) door (J, K). Voor het XZ vlak vervang (X, Y) door X, Z) en (I,J) door (I, K).
Het is een error als de afstand vanaf het startpunt tot het centrum meer dan 0.02 mm afwijkt van de afstand tussen het centrum en het eindpunt.
Het is een error als de gebruikte parameters (I, J, K) neit in overeenstemming zijn met het gekozen vlak voor de boog: G17, G18, G19.
Als de as loodrecht op het gekozen vlak ook opgegeven is om te bewegen dan wordt het een helix.
Bogen in enig vlak kunnen gecombineert worden met R en/of E, maar het resultaat kan lastig te interpreteren zijn.
Veel G-code genererende software pakketten gebruiken geen G2 of G3 codes, maar werken bogen zelf uit tot een reeks lineaire trajecten.


De volgende codes en voorzieningen worden nadrukkelijk niet ondersteund:
G20, G21 (inch / mm). We werken altijd in millimeters en graden.
G28:  Als "Home" commando (loop naar een eindschakelaar) wordt het zeker niet ondersteund. Tijdens het utvoeren van een job mag je niets veranderen aan het coördinaten systeem. Als "Ga naar de nul positie" wordt het ook niet ondersteund. Dit is een situatie die je eigenlijk alleen nodig hebt als er automatisch  een nieuw werkstuk geplaatst moet worden. Dat is niet geïmplemeteerd, of kan met andere middelen bereikt worden.
Let Op: nogal wat automatisch gegenereede G-code begint met o.m. G28. Verwijder die uit het bestand.
G53 .. G89 (div. presets en canned cycles, cutter radius en lengte compensatie, etc).
G90, G91 Absolute of incrementele afstanden. We werken altijd absuluut (G90)
% teken of M0, M1, M2, M30, M60 voor start en einde van de job is niet verplicht en wordt niet ondersteund. % geeft een commentaar regel aan.
De T parameter voor een tool wissel. Deze machine heeft geen voorzieningen voor een automatische tool wissel.
Canonical Machine Functions (Whatever that may be, Zee RS274).
Inline berekeningen, tijdelijke variabelen, multi-file jobs.