Forum: Mechanik, Gehäuse, Werkzeug G code Befehle


von CNC-Fräser (Gast)


Lesenswert?

Hallo ich habe eine kleine CNC fräse gebaut, welche ich über einen 
Arduino in Kombination mit der Grbl Software ansteuern. Als G-code 
Sender benutze ich den universal G code Sender.
Die Ansteuerung der verschiedenen Positionen klappt ziemlich gut. 
Allerdings habe ich das Problem, dass nicht alle G-code files bei mir 
funktionieren. Einen handschriftlich generierten Code  wie :
(mit universal G-code Sender ausgeführter Code)
Grbl 0.9j ['$' for help]
>>> G17G20G90G94G54
>>> G0Z0.25
>>> X-0.5Y0.
>>> Z0.1
>>> G01Z0.F5.
>>> G02X0.Y0.5I0.5J0.F2.5
ok
funktioniert.
G codes welche ich mit makerCAM generiert habe machen nur irgend ein 
Unfug mit der Z Achse, ansonsten nicht wirklich ihren job:

>>> G21G90G40
>>> (follow path 1)
>>> G0Z1
>>> G17
>>> M3
>>> G0X17,7396Y16,1269
ok
ok
ok
ok
>>> G1Z-1.5F800
>>> G1X19,2157Y16,1269F1500
>>> G1X20,6675Y16,1269
>>> G1X22,0964Y16,1269
>>> G1X23,5051Y16,1269
ok
ok
error: Expected command letter
>>> G1X24,8883Y16,1269
ok
>>> G1X26,2487Y16,1269
error: Expected command letter <<<<<<<<<???? Warum ist der Befehl 
falsch?
Hat jemand eine Erklärung oder einen Tipp?
Schoneinmahl vielen Dank im voraus für eure Unterstützung.

: Verschoben durch Moderator
von hp-freund (Gast)


Lesenswert?

Punkt <> Komma !

von CNC-Fräser (Gast)


Lesenswert?

Im normalen Editor stehen in beiden Fällen punkte.
hier noch mal ein teil des zweiten Codes.( im Editor)

G21 G90 G40

(follow path 1)
G0 Z1

G17
M3
G0 X17.73959390862944 Y16.126903553299492
G1 Z-1.5 F800
G1 X19.215736040609137 Y16.126903553299492 F1500
G1 X20.66751269035533 Y16.126903553299492
G1 X22.096446700507613 Y16.126903553299492
G1 X23.50507614213198 Y16.126903553299492
G1 X24.888324873096444 Y16.126903553299492
G1 X26.248730964467004 Y16.126903553299492
G1 X27.586294416243653 Y16.126903553299492
G1 X28.903553299492387 Y16.126903553299492

von hp-freund (Gast)


Lesenswert?

Wenn es ein Problem mit der englischen Punkt-Komma Einstellung ist, ist 
vielleicht auch noch das Tastatur Y Z Layout daran beteilingt?

von Felix A. (madifaxle)


Lesenswert?

Manchmal machen englische/amerikanische Programme auch Probleme mit der 
Codierung (Ansi / Utf8). Die Codierung der Datei (so kenne ich das) 
lässt sich mit dem Notepad++ anzeigen. Andere Tools/Wege kenne ich 
leider nicht.

von Georg (Gast)


Lesenswert?

Felix A. schrieb:
> Manchmal machen englische/amerikanische Programme auch Probleme mit der
> Codierung (Ansi / Utf8).

Eigentlich sollte ein Bohr- oder Fräsprogramm nur pures 7-bit ASCII 
enthalten. Und das ist eine der wenigen Sachen in der IT, die nicht 
umstritten ist.

Georg

von Felix A. (madifaxle)


Lesenswert?

Zugegeben, bei CAM-Tools kenne ich nicht genügend, um das zu wissen. Ich 
hatte nur schon oft das Problem mit anderen Tools, die aus Amiland 
stammen.

von Michael B. (laberkopp)


Lesenswert?

CNC-Fräser schrieb:
> Im normalen Editor stehen in beiden Fällen punkte.

Dann ist dein normaler Editor wohl defekt.

Vielleicht muss man auch Koordinaten nicht mit 17 Stellen Ungenauigkeit 
vorgeben.

: Bearbeitet durch User
von CNC-Fräser (Gast)


Lesenswert?

danke für die Hilfe.
>Vielleicht muss man auch Koordinaten nicht mit 17 Stellen Ungenauigkeit
vorgeben.
Wie kann ich den G-code erzeugen ohne, dass ich alle Stellen per Hand 
änder muss?

von CNC-Fräser (Gast)


Lesenswert?

Es liegt wirklich an der länge der Koordinaten.

von Michael B. (laberkopp)


Lesenswert?

CNC-Fräser schrieb:
> Es liegt wirklich an der länge der Koordinaten.

Dann ist grbl fehlerhaft,
denn der G-Code Standard sagt

A number consists of (1) an optional plus or minus sign, followed by (2) 
zero to
many digits, followed, possibly, by (3) one decimal point, followed by 
(4) zero to
many digits - provided that there is at least one digit somewhere in the 
number

Numbers may have any number of digits, subject to the limitation on line 
length (oftmals 80 oder 256).


(Zeilennummer und Labels sind auf 5 Stellen begrenzt)

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

CNC-Fräser schrieb:
> Wie kann ich den G-code erzeugen ohne, dass ich alle Stellen per Hand
> änder muss?

Normalerweise kann man die Anzahl der Nachkommastellen eingeben. Und 
erzähl nicht dass deine Fräse auf 1 millionstel Atomdurchmesser genau 
fräst.

Das Programm ist sowieso absurd: das sind lauter kleine Teilstücke einer 
Geraden, 2 Zeilen reichen dafür.

Vielleicht solltest du makerCAM wegschmeissen?

Georg

von Michael B. (laberkopp)


Lesenswert?

Georg schrieb:
> Vielleicht solltest du makerCAM wegschmeissen?

Warum sollte man den Falschen bestrafen, wenn grbl Schuld ist ?

von sven (Gast)


Lesenswert?

In verschiedenen Quellen wird erwähnt, dass man für GRBL die Anzahl der 
Nachkommastellen auf 4 begrenzen sollte - ich finde bloss keine ;-)...
Entsprechende Preprozessoren (z.B. bei Estlcam) machen das auch.
Gruß
Sven

von CNC-Fräser (Gast)


Lesenswert?

ok vielen Dank.
ich versuche mein Glück einfach mal mit anderen CAM Programmen, 
beziehungsweise versuche mit inkscape direkt einen G-Code zu erzeugen.

von Tany (Gast)


Lesenswert?

Michael B. schrieb:
> CNC-Fräser schrieb:
>> Es liegt wirklich an der länge der Koordinaten.
>
> Dann ist grbl fehlerhaft,
> denn der G-Code Standard sagt...

Der Fehler liegt an G-Code Sender!

von MaWin (Gast)


Lesenswert?

Tany schrieb:
> Der Fehler liegt an G-Code Sender!

Wenn der Standard sagt, dass dort beliebig viele Ziffern stehen dürfen, 
notfalls bis zum Zeilenende, dann ist der Reader fehlerhaft, wenn er 
nach 17 Ziffern abbricht.

Grbl ist open source, den bug könnte ja jemand fixen, nur mit Leuten wie 
dir wird das natürlich nichts.

von sven (Gast)


Lesenswert?

Man darf den GRBL-Buffer nicht überlaufen lassen -  da muss der 
GCode-Sender aufpassen "This briefly stores up to 127 characters of data 
received from the host PC until Grbl has time to fetch and parse the 
line of G-code. "

Also nach 4 solcher Zeilen: "G1 X28.903553299492387 Y16.126903553299492" 
(da die 5. nicht mehr reinpasst), wenn die Maschine nicht schnell genug 
ist die Koordinaten abzufahren.

Hier steht's: 
https://github.com/grbl/grbl/wiki//Interfacing-with-Grbl#writing-an-interface-for-grbl

von sven (Gast)


Lesenswert?

Hier gibt es eine Liste mit alternativen GCode Sendern und anderen 
Tools:
http://www.shapeoko.com/wiki/index.php/Communication_/_Control

von Greggor882 (Gast)


Lesenswert?


von Nemesis (Gast)


Lesenswert?

CNC-Fräser schrieb:
> mit universal G-code Sender ausgeführter Code

Wie muss man sich den Sender real vorstellen?
Ist das ein Programm, Gerät oder sonstige App?
Link?

von Georg (Gast)


Lesenswert?

sven schrieb:
> wenn die Maschine nicht schnell genug
> ist die Koordinaten abzufahren.

So was dürfte es garnicht geben. Die ganz uralten Maschinen lasen den 
Lochstreifen Satz für Satz ein, der blieb eben stehen, bis der Satz 
verarbeitet war. Und seit einigen Jahrzehnten wird ohnehin das ganze 
CNC-Programm in den Speicher eingelesen.

Georg

von Tany (Gast)


Lesenswert?

MaWin schrieb:
> Grbl ist open source, den bug könnte ja jemand fixen, nur mit Leuten wie
> dir wird das natürlich nichts.

Im Gegensatz zu dir habe ich dafür ein Programm geschrieben, das mit o.g 
Code einwandfrei funktioniert. Soviel bla bla von solchen wie du wird's 
nicht.
Auch hier gilt: wenn man nicht über Thema weiß, einfach Klappe zu 
halten!

sven schrieb:
> Man darf den GRBL-Buffer nicht überlaufen lassen -  da muss der
> GCode-Sender aufpassen

So ises! Der Buffer ist nur 128 Byte lang. Eine Nachkommastelle zuviel 
könnte ihn zum Überlauf bringen.

Nemesis schrieb:
> Wie muss man sich den Sender real vorstellen?

http://zapmaker.org/2014/05/grbl-controller-3-6-1-released-for-windows/
http://www.jtronics.de/software/jcnc-cnc-steuerung.html
Beitrag "Projekt: SerialComCNC Serielles Frontend für CNC GRBL mit ATMega"
...
Das von Albert geschriebene Programm funktioniert mit o.g. Code 
einwandfrei und mit Abstand das beste Programm, was ich bis jetzt 
getestet habe.

von Christian K. (christian_knuell)


Lesenswert?

Michael B. schrieb:
> Dann ist grbl fehlerhaft,
> denn der G-Code Standard sagt
>
> A number consists of (1) an optional plus or minus sign, followed by (2)
> zero to
> many digits, followed, possibly, by (3) one decimal point, followed by
> (4) zero to
> many digits - provided that there is at least one digit somewhere in the
> number
>
> Numbers may have any number of digits, subject to the limitation on line
> length (oftmals 80 oder 256).

Arduino UNO Steuerungen wie GRBL oder Estlcam müssen mit 2048 Byte RAM 
auskommen - da tut jede unnötige Nachkommastelle die als Text 
zwischengespeichert werden muss weh.

G-Code ist in der Realität eher ein Pseudostandard - es schaut zwar 
alles irgendwie ähnlich aus - nur im Endeffekt halten sich nicht mal 
Industriesteuerungen an die ursprüngliche DIN Spezifikation. Deswegen 
schleppt jedes CAM Programm auch eine ellenlange Liste mit 
Postprozessoren mit, da Code A auf Steuerung B oft einfach nicht 
funktioniert.

Fazit: beim schreiben von G-Code bzw. verwenden von CAM Programmen muss 
man immer die Eigenheiten der Steuerung berücksichtigen.

Christian

von Michael B. (laberkopp)


Lesenswert?

Christian K. schrieb:
> Arduino UNO Steuerungen wie GRBL oder Estlcam müssen mit 2048 Byte RAM
> auskommen - da tut jede unnötige Nachkommastelle die als Text
> zwischengespeichert werden muss weh.

Sie muss ja nicht.

Niemand hindert den Programmierer daran, beim Empfang der Ziffern z.B. 
nach der 5. Stelle einfach keine weiteren Ziffern mehr zu speichern 
sondern nur noch einen Exponenten hochzuzählen.

Dafür muss man natürlich programmieren können und richtige 
Entscheidungen bei der Implementation des Standards fällen.

Faulheit und "wir bohren dort weil dort das Brett am dünnsten ist" 
gelten nicht als Ausrede, obwohl ich hier in dem Thread viele Leute 
sehe, die mehr Mühe in die Ausreden als in die Lösung stecken.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.