Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi GCode-Parser (https://www.delphipraxis.net/215935-gcode-parser.html)

DaCoda 27. Sep 2024 22:07

GCode-Parser
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
bei der Entwicklung meines Maschinen-Steuerprogramms ist dieser G-Codeparser entstanden.

Eventuell kann das ja sonst noch jemand mal brauchen.
Der Parser ist nicht vollständig, was die G- und M-Funktionen angeht, sollte aber für den Anfang reichen.

Die Ausgabe bei Params (im Memo) ist verdreht, sollte XYZIJR sein, aber das habe ich (noch) nicht so hinbekommen :-)

Im Anhang ist der Parser und ein Mini-Testprogramm.

Alter Mann 28. Sep 2024 06:13

AW: GCode-Parser
 
Ab welcher Delphi-Version?

DaCoda 28. Sep 2024 10:46

AW: GCode-Parser
 
DAs kann ich so gar nicht sagen. Ich verwende derzeit D12.2

Maekkelrajter 28. Sep 2024 18:30

AW: GCode-Parser
 
Zitat:

Zitat von DaCoda (Beitrag 1541591)
Im Anhang ist der Parser und ein Mini-Testprogramm.

Ich habe deinen Parser auch mal mit einem etwas modifizierten NC-Programmen getestet. Dabei ist mir eine Inkompatibilität aufgefallen.
Wenn in einem Satz kein Fahrbefehl enthalten ist, wird automatisch der Fahrbefehl, der im vorherigen Satz verwendet wurde, ergänzt.

G03X16.4034Y19.6197I16.2573J29.8664F601
G03X22.5886Y17.4267I26.4238J64.7078
G02X28.4696Y14.9650I-5.0995J-20.4389
G02X30.3826Y13.5958I-11.4268J-17.9860
G02X34.9424Y8.8573I-13.8491J-17.8901
G02X36.0083Y6.7722I-6.8578J-4.8207
G03X36.8925Y4.7653I9.2324J2.8691
G03X37.5032Y4.2915I0.9835J0.6372
G01X37.6013Y4.2923
usw.

hat dieselbe Wirkung wie

G03X16.4034Y19.6197I16.2573J29.8664F601
X22.5886Y17.4267I26.4238J64.7078
G02X28.4696Y14.9650I-5.0995J-20.4389
X30.3826Y13.5958I-11.4268J-17.9860
X34.9424Y8.8573I-13.8491J-17.8901
X36.0083Y6.7722I-6.8578J-4.8207
G03X36.8925Y4.7653I9.2324J2.8691
X37.5032Y4.2915I0.9835J0.6372
G01X37.6013Y4.2923
usw.

Wenn dein Parser mit NC-Code nach DIN 66025 kompatibel sein soll, müsstest du das auf jeden Fall noch anpassen. Dein Parser meldet bei den Zeilen 2, 4, 5, 6 und 8 fälschlicherweise "Type: ctUnknown, Code: -1, Params:[], Comment:"

Type: ctGCode, Code: 3, Params:[ J29.866 F600.000 Y19.620 X16.403 I16.257], Comment:
Type: ctUnknown, Code: -1, Params:[], Comment:
Type: ctGCode, Code: 2, Params:[ J-20.439 Y14.965 X28.470 I-5.100], Comment:
Type: ctUnknown, Code: -1, Params:[], Comment:
Type: ctUnknown, Code: -1, Params:[], Comment:
Type: ctUnknown, Code: -1, Params:[], Comment:
Type: ctGCode, Code: 3, Params:[ J2.869 Y4.765 X36.893 I9.232], Comment:
Type: ctUnknown, Code: -1, Params:[], Comment:
Type: ctGCode, Code: 1, Params:[ Y4.292 X37.601], Comment:


Gruß LP

DaCoda 28. Sep 2024 19:00

AW: GCode-Parser
 
Hallo LP,
vielen Dank für deinen Test und die Anmerkungen. Ich schaue mir das noch mal an.
Vorerst muss ich aber das Problem mit GDI+ lösen...

LG
Toddie

DaCoda 28. Sep 2024 21:26

AW: GCode-Parser
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, wenn ich nun nichts übersehen habe sollte der Parser vernünftig laufen.
Ich habe die geänderte Version und 3 Testdateien beigefügt.

Maekkelrajter 29. Sep 2024 00:14

AW: GCode-Parser
 
Leider haben sich doch Fehler eingeschlichen. Zunächst einmal ist die Testdatei fehlerhaft. Der G03 Befehl muss natürlich am Anfang des ersten Kreisbogen-Blocks stehen:

G00 X18.7900 Y18.7900 Z5.0000
G00 Z0.5000
G01 Z0.0000 F100 S10000 ; Z-Achse mit Geschwindigkeit 100mm/Minute und Spindeldrehzahl 10000Umin auf Position 0.0000mm fahren
G01 Z-0.5000
G03 X68.9784 Y32.2381 I21.2121 J21.2122 F600
X32.2379 Y68.9785 I-28.9763 J7.7641; Zeile ohne Fahrbefehl
X18.7900Y18.7900I7.7642J-28.9763 (Zeile ohne Fahrbefehl und ohne Spaces)
G00 Z5.0000
G00 X0.0000 Y0.0000
G00 Z0.0000

Aber auch die Auswertung ist fehlerhaft. Es fehlen die I- und J-Parameter.
Es wäre vielleicht keine schlechte Idee, in der Textausgabe deines Testprogramms die original NC-Programmzeile links und in einer zweiten Spalte die Auswertung des Parsers auszugeben. Dann könnte man schnell überblicken, ob alles stimmt. Dafür könnte man, um Platz zu sparen, womöglich auf die Kommentare verzichten bzw. sie durch einen Platzhalter ersetzen.

Gruß LP

Alter Mann 29. Sep 2024 15:46

AW: GCode-Parser
 
Hi,

mir ist noch aufgefallen, dass die 4. Nachkommastelle 'verschluckt' wird.

paule32.jk 29. Sep 2024 17:01

AW: GCode-Parser
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich würde sowas mit plex und pyacc lösen - ist einfacher
die Quellen zu diesen zwei Programmen gibts mit FPC.

Edit:
sodele, habe ein Paket geschnürrt, das die Verwendung von plex und pyacc veranschaulicht.
Änderungen sind dann selbst vorzunehmen.
siehe Anhang: Win32 Konsolen-Anwendung.

einfach entpacken, und build.bat starten - müsste, wenns gut geht, klappen.
voila...

Maekkelrajter 29. Sep 2024 19:32

AW: GCode-Parser
 
Zitat:

Zitat von Alter Mann (Beitrag 1541642)
Hi,

mir ist noch aufgefallen, dass die 4. Nachkommastelle 'verschluckt' wird.

Es wird nichts verschluckt, sondern es wird korrekt auf 3 Stellen gerundet. Nicht jede Maschinensteuerung kann 4 Nachkommastellen auflösen.

Gruß LP


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz