Forum: PC-Programmierung G-Code Interpreter


von Thomas I. (Firma: Siemens AG) (thomasirmer)


Lesenswert?

Hallo zusammen,
ich arbeite derzeit an einem G-Code Interpreter Projekt. Ziel ist es 
einen OpenSource Interpreter zu verwenden und über den Parallelport 
Schrittmotoren anzusteuern.
Mein Frage dabei ist: Was ist der Output des G-Code Interpreters? Der 
G-Code beherrscht ja lineare, zirkulare u.a. Interpolationen. Aber beim 
Schreiben des G-Codes weiß ich ja nicht, wie die Maschine, also das 
Zusammenspiel der Achsen aussieht. Ebenso weiß dies der G-Code 
Interpreter nicht. Bekomme ich als Output also nur xyz-Koordinaten? Oder 
schon die Steuerungsdaten für den Motor?

Falls sich jemand damit auskennt, würde ich mich sehr über eine Antwort 
freuen...

Beste Grüße
Thomas

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Du schreibst zwar das du an einem G-Code-Interpreter schreibst, bist dir 
aber nicht sicher was ausgegeben wird ?

Was ausgegeben wird ist doch von der Achsenkontrolle abhängig.
Ob es sich um Schrittmotoren direkt angesteuert handelt oder ein 
separater Achscontroller dazwischen ist.

Im Einfachsten Fall spuckt der Interpreter getaktet für alle Achsen die 
kleinste Positionseinheit aus.

von Zwie B. (zwieblum)


Lesenswert?

schau mal da nach: http://linuxcnc.org/

von MaWin (Gast)


Lesenswert?

> Was ist der Output des G-Code Interpreters?

Normalerweise Impulse in positive und negative x,y und z Richtung zum 
möglichst genau passenden Zeitpunkt.

> über den Parallelport

Welcher Rechner hat denn so was noch ?

Zudem ist es sehr schwer, einen PC zu so genauer Impulserzeugung
zu bringen.

Schau mal, wie schlecht Mach3 funktioniert, da muß ACPI abgeschaltet 
werden damit nicht irgendwelche Stomsparschaltungen und Taktreduktionen 
zu Fehlverhalten führen.

von Jonas B. (jibi)


Lesenswert?

Echtzeit und Windows? Vergiss es. Lass einen externen Controller die 
Steuerung übernehmen. Grundlagen sind für dich wohl noch zu festigen...

Gruß Jonas

von Pieter (Gast)


Lesenswert?

moin moin,

habe auf einem 8051 System einen G-Code-Interpreter laufen.
Dieser arbeitet grob gesagt 2-Stufig.
"Oben" werden die Bahndaten (Wege) mit ev. Frässradienkorrektur 
berechnet.
"Unten" werden diese Daten zeitrichtig für die Schrittmotore der 3 
Achsen ausgegeben.

>>Aber beim Schreiben des G-Codes weiß ich ja nicht, wie die Maschine, >>also das 
Zusammenspiel der Achsen aussieht.

Das ist CAM, da wird festgelegt wie die Fertigung erfolgt.
Wenn Du z.B. eine Kreistasche fräsen willst, da ist das Zusammenspiel 
der Achsen fest vorgegeben.

Mit Gruß
Pieter

von Uhu U. (uhu)


Lesenswert?

MaWin schrieb:
> Zudem ist es sehr schwer, einen PC zu so genauer Impulserzeugung
> zu bringen.

Mit DOS geht das schon ;-)

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Pieter, wie hast du die Schneidenradienkorrektur realisiert ?
Für Kreisbogen und Gerade ?
Oder ist das Geheim ?

von Pieter (Gast)


Lesenswert?

moin moin,

die Fräsradienkorrektur ist eigendlich nur angewandte Schulmathematik.
Man braucht allerdings 3 Punkte (woher, der Punkt und wohin).
Realisert habe ich: Linie <-> Linie, Kreis <-> Kreis und Linie <-> 
Kreis.

MfG
Pieter

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Den Vektor verschieben um den Schneidenradius ist sicherlich nur 
Schulmathematik.
Wie schauts mit Hinterschnitterkennung und Eckenstrategien ?

von Pieter (Gast)


Lesenswert?

moin moin,

>>Hinterschnitterkennung
Hinterschnitte sind im Hobbybereich wohl ehr selten und müstem im CAM 
detailiert beschrieben werden.
Im G-Code selber gibt es dazu keine Kommandos.

>>Eckenstrategien
Ist der Winkel der Winkelhalbierenden
< 180 Innenecke, Eckpunkt mit Winkelhalbierender berechnen
=180(0) grade Stecke, keine Berechnung
> 180 Aussenecke, Kreisbogen (Radius=Toolradius) einfügen
Der Fräser bleibt immer im Kontakt mit dem Werkstück.

MfG
Pieter

von Silvio K. (exh)


Lesenswert?

Zwie Blum schrieb:
> schau mal da nach: http://linuxcnc.org/

Damit es nicht untergeht, hier die Wiederholung:
http://linuxcnc.org/

Da ist alles schon fertig, offen und universell.
Eine Neuentwicklung macht eigentlich wenig Sinn.

Gruß

von Pieter (Gast)


Lesenswert?

moin moin,

ich habe kein Linux und ich will an der Fräse auch keinen PCs haben!
..und nun?

G-Code-Interpreter ..habe fertig

MfG
Pieter

von Steffen H. (avrsteffen)


Lesenswert?

Pieter schrieb:
> moin moin,
>
> ich habe kein Linux und ich will an der Fräse auch keinen PCs haben!
> ..und nun?
>
> G-Code-Interpreter ..habe fertig
>
> MfG
> Pieter

Hallo Pieter,

Möchte sehen! Und außerdem, hast du schon mal etwas von Grbl gehört? Ist 
auch ein G-Code Interpreter für einen ATmega168 oder ATmega328.

Habe den Code für einen ATmega644 angepasst und implementiert, den ich 
für mein 3-Achs-Stepper-Driver-Board verwende.
Beitrag "3-Achs Schrittmotorsteuerung mit Trinamic TMC260 und AVR"

Gruß Steffen

von Pieter (Gast)


Lesenswert?

moin Steffen,

Grbl kenne ich nicht, arbeite nur mit 8051.
Als Motortreiber nutze ich derzeit noch TB6560AHQ, die Platinen für den 
THB6064AH kommen erst noch.

Zu meiner Fräse siehe hier:
http://forum.zerspanungsbude.net/viewtopic.php?f=58&t=2221&sid=0fe68130d4147b36a817a7ab5cfa883c

Mit Gruß
Peter

von Steffen H. (avrsteffen)


Lesenswert?

Hallo Pieter,

Schöne Fräse!
Wenn ich mir das Blockschaltbild von deiner Elektronik so anschaue, 
stelle ich mir folgende Frage:
Hast du zur Steuerung der Motortreiber mehrere 8051 Kerne verwendet? 
Sehe ich das richtig?

Und welche Befehle + Parameter werden bei deinem G-Code-Interpreter 
alles verstanden?

Gruß Steffen

von Pieter (Gast)


Lesenswert?

moin Steffen,

jeder Motortreiber hat seinen eigenen 8051, der macht folgendes:
-Einschaltreihenfolge nach Achse
-SPI Einlesen, Rückgabe als Wire-Or (Fehlerbit, Endlagen- 
Referenzschalter)
-Stromabsenkung für TB6560

Der G-Code:
   ;  REM-Zeile          ok.
;M02  ProgrammEnde OHNE Rücksprung      ok.
;M03  Spindel, Uhrzeigersinn    mit Relais  ok.
;M05   Spindel halt      mit Relais  ok.
;M06T  Werkzeugwechsel      per Hand    fast ok.
;M06D  Werkzeug Durchmesser setzen      ok.
;M30  ProgrammEnde MIT Rücksprung      ok.
;G00  Eilgang            ok.
;G01  Geradeninterpolation        ok.
;G02  Kreisinterpolation im Uhrzeigersinn      ok.
;G03  Kreisinterpolation gegen Uhrzeigersinn    ok.
;G40 V  Radienkorrektur aus        ok.
;G41  Radienkorrektur links        ok.
;G42  Radienkorrektur rechts        ok.
;G54  Setze Nullpunkt auf X,Y,Z        ok.
;G70  Eingabesystem Zoll        ok.
;G71 V  Eingabesystem Metrisch        ok.
;G73  Parkposition anfahren         fast  ok.
;G74  Parkposition anfahren, Werkzeughöhe bestimmen   fast  ok.
;G83  Planfläche          ok.
;G84  Lochreihe          ok.
;G85  Kreistasche          ok.
;G86  Rechtecktasche          ok.
;G90 V  Koordinaten absolut        ok.
;G91  Koordinaten relativ        ok.
;Lxxx  Sprung Line Nxxx          ok.
;Nxxx  Sprungmarke          ok.
;Fxx  Vorschub            ok.
;Sxx  Spindeldrehzahl        geplant
;Wxx  Wartezeit          ok.

Mit Gruß
Peter

von Steffen H. (avrsteffen)


Lesenswert?

Pieter schrieb:
> ;G70  Eingabesystem Zoll        ok.
> ;G71 V  Eingabesystem Metrisch        ok.

ist das nicht:
;G20  Eingabesystem Zoll
;G21 V  Eingabesystem Metrisch

???

>jeder Motortreiber hat seinen eigenen 8051
Wie funktioniert da die Kommunikation bei der Interpolation? Oder ist 
das Timing dabei so genau?

von Pieter (Gast)


Lesenswert?

> ;G70  Eingabesystem Zoll        ok.
> ;G71 V  Eingabesystem Metrisch        ok.

...da kochen verschiede Köche, habe jetzt G20 == G70 und G21 == G71.

Auf SPI kommt ein Byt:
(SM/FU)|Reserve|ZP|ZN|YP|YN|XP|XN
-P Step in Plusrichtung
-N Step in Minusrichtung
(SM/FU) Byte für Schrittmotore oder FrequenzUmrichter (der wird dann 
über Z gesteuert)

Zürückgegeben wird dann das Byte vom FU oder die Bits der jeweiligen 
Achse.
Da mit einem Byte bis zu 3 Motore gesteuert werden, sind alle Figuren 
abfahrbar.

Mit Gruß
Peter

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.