EV3 Basic: CNC G Code einlesen

NXC, C/C++, Lejos, pbLua, RobotC...

Moderator: Moderatoren

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

EV3 Basic: CNC G Code einlesen

Beitragvon Tirti » 2. Nov 2015 13:46

Hallo,

erst mal zu mir.
Ich bin 34 Jahre und Fachinformatiker.
Habe gerade unsummen an € für Lego Mindstorms ausgeben ;-)

Projekt1: eine ähnliche CNC Fräse wie sie Arthur Sacek gebaut hat.
Nur eben auf EV3 Basis.
Gebaut ist schon alles was ich brauche, und funktioniert auch.

Jetzt das echte Problem:
Ich benutze EV3 Basic, das vorweg.

Dennoch fehlt es mir an verständniss wie ich einen G Code interpretieren könnte.
Einlesen aus einer Datei ist kein Problem (stimmt nicht ganz)
Kann mir jemand sagen wie ich in EV3 Basic eine Zeile wie diese

G01 X8.46 Y0.105 Z-11.829

In 3 verscheidene Variablen einlesen kann?
In eine ist das ja echt nicht schwer, aber ich bräuchte ja nur die werte je hinter X Y Z

Würde mich freuen wenn mir jemand helfen könnte.

Grüße
Tirti

BTW: Wenn alles funktioniert, werde ich die Bauanleitung Step by Step aus dem LDD und das EV3 Basic Programm
zum Download anbieten :ok:

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5352
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: EV3 Basic: CNC G Code einlesen

Beitragvon HaWe » 2. Nov 2015 15:01

hallo,

edit: ich glaube, jetzt verstehe ich:

du willst deinen G-Code beibehalten, und ihn jetzt im laufenden Programm einlesen, nicht vorher umwandeln....
du brauchst also eine Art String-Parser, ja?

eine eigene EV3Basic Funktion ist das ja nicht, also eher ein SmallBasic-Problem...?
(Strings aus Datei lesen, dann Zeichen suchen und herauskopieren)

da muss wohl ein SmallBasic-Spezialist ran...

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

Re: EV3 Basic: CNC G Code einlesen

Beitragvon Tirti » 2. Nov 2015 15:18

Hallo HaWe,

ja das trifft es (glaube ich zumindest)

Ich möchte aus dem G Code
G01 X8.46 Y0.105 Z-11.829
Am Ende X=8.46 Y=0.105 Z=-11.829 haben.
Dann müsste ich "nur" bei einem negativen Zahlenwert die Motoren eben negativ ansteuern.

So der gedankengang, ob das geht wies ich noch nicht :-)

Grüße
Tirti

Peter28
Schreibt viel
Schreibt viel
Beiträge: 184
Registriert: 2. Nov 2013 21:44
Wohnort: Schmallenberg

Re: EV3 Basic: CNC G Code einlesen

Beitragvon Peter28 » 2. Nov 2015 16:53

Hallo,
ich glaube etwas gefunden zu haben.
1. string="G01 X8.46 Y0.105 Z-11.829"
2. stringlänge=Text.GetLength(string) -> 25
3. xpos=Text.GetindexOf(string,"X") -> gibt Stelle von X zurück (5)
4. ypos=Text.GetindexOf(string,"Y") -> gibt Stelle von Y zurück (11)
5. zpos=Text.GetindexOf(string,"Z") -> gibt Stelle von Z zurück (18)
6. xwert=Text.GetSubText(string,xpos+1,ypos-xpos-1) -> Wert zwischen X und Y
7. ywert=Text.GetSubText(string,ypos+1,zpos-ypos-1) -> Wert zwischen Y und Z
8. zwert=Text.GetSubText(string,zpos+1,stringlänge-zpos) ->Wert zwischen Ende und Z
9.TextWindow.WriteLine(string)
10.TextWindow.WriteLine(xwert)
11.TextWindow.WriteLine(ywert)
12.TextWindow.WriteLine(zwert)
13.Program.Delay(5000)
Habe es mit SB eben getestet. :prima:
Kann so (bis auf Kommentar) übernommen werden.
Viel Spaß

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

Re: EV3 Basic: CNC G Code einlesen

Beitragvon Tirti » 2. Nov 2015 19:52

Hallo Peter28,

das sieht echt sehr gut aus :yeah:

Werde das mal versuchen, auf zu Problem nummer 2.
Ein Programm finden was mir ein 3D Model in für mich brauchbaren G Code convertiert.
Spiele gerade mit SolidCam rum, muss da wohl "nur" einen Post Prozessor anpassen :?:

Grüße
Tirti

Halte euch auf den laufenden, danke nochmal an Peter28

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

Re: EV3 Basic: CNC G Code einlesen

Beitragvon Tirti » 8. Nov 2015 11:34

Hallo@all,

nu bin ich doch schon ein großes Stück weiter.
Leider scheitere ich an einem Logik/Kompetenz Problem.
Könnte mir bitte jemand sagen wie ich in Small Basic eine Differenz ermitteln kann?

xnew = -10.000
xold = 10.000

Die Differenz ist 20!
Aber wie kann ich das im Programm rechnen, ermitteln?

Grüße
Tirti

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

Re: EV3 Basic: CNC G Code einlesen

Beitragvon Tirti » 8. Nov 2015 13:15

Nochmak Hi@all,

habe es hinbekommen.

TextWindow.WriteLine("--------------------------")
TextWindow.WriteLine("---Differenz-Berechnen----")
TextWindow.WriteLine("--------------------------")
xnew=-15.0000
oldx=-10.0000
TextWindow.WriteLine("--------------------------")
TextWindow.WriteLine("Vorgabe oldx= "+oldx)
TextWindow.WriteLine("Vorgabe xnew= "+xnew)
TextWindow.WriteLine("--------------------------")
If xnew<0 Then
If oldx<xnew Then
speedx=5
xtmp=xnew
newx=Math.Abs(oldx-xnew)
EndIf
If oldx>xnew Then
speedx=-5
xtmp=xnew
newx=xnew-oldx
EndIf
EndIf
If xnew>0 Then
If oldx<xnew Then
speedx=5
xtmp=xnew
newx=Math.Abs(oldx-xnew)
EndIf
If oldx>xnew Then
speedx=-5
xtmp=xnew
newx=Math.Abs(xnew-oldx)
EndIf
EndIf
TextWindow.WriteLine("--------------------------")
TextWindow.WriteLine("Nach Berechnung oldx= "+oldx)
TextWindow.WriteLine("--------------------------")
oldx=xnew
TextWindow.WriteLine("--------------------------")
TextWindow.WriteLine("Differenz newx= "+newx)
TextWindow.WriteLine("--------------------------")
TextWindow.WriteLine("Neues oldx= "+oldx)
TextWindow.WriteLine("--------------------------")
TextWindow.WriteLine("--------------------------")
Program.Delay(2000)

Ich komme dem Ziel näher ;-)

Grüße
Tirti

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

Ich habe Fertig ;-)

Beitragvon Tirti » 22. Nov 2015 12:06

Hallo @all,

ich bin Fertig.
Möchte euch natürlich meine Ergebnisse nicht vorenthalten.
Bitte Kommentieren.

Das Programm incl. Gui habe ich selbst geschrieben, danke nochmal an Peter28 für den Support :prima:

Grüße
Tirti

P.S: das Video kann ich leider nicht Hochladen :-(
Dateianhänge
Yoshi.jpeg
ca. 2 Stunden Laufzeit
Mario.jpeg
ca. 2,5 Stunden Laufzeit
Das Programm.jpeg
nicht schön, aber funktioniert gut ;-)

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

Re: EV3 Basic: CNC G Code einlesen

Beitragvon Tirti » 22. Nov 2015 12:13

Ich nochmal,

vielleicht kurz zum Programm.

Es ermöglicht mir via wasd und qy sowohl die x y und z Achse zu bedienen um den 0 Punkt zu setzen.
Es kann eine NC (G-Code) Datei eingelesen werden die im ersten Schritt analysiert wird um zu schauen das auch alles passt und wie viele Zeilen die Datei umfasst.

Nach druck auf Start wird die aktuelle Zeilenzahl ausgegeben, so kann man Prüfen an welchem Punkt sich der aktuelle Prozess befindet.
Ebenso brauche ich das intern um die %te auszugeben der Fertigstellung.
Leider klappt meine Time to End Berechnung nicht, dient man ja auf dem Foto ;-)
Links wird immer die Aktuelle Zeile incl. Befehl an den /die Motor/Motoren angezeigt.
War mir nicht sicher ob ich es brauche, aber dachte die letzte und die nächste Zeile der Datei tut auch nicht weh an zu zeigen.

Grüße
Tirti

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5352
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: EV3 Basic: CNC G Code einlesen

Beitragvon HaWe » 22. Nov 2015 14:30

hallo,
hübsche Bider!
Könntest du auch nch das Gerät zeigen und den kompletten Sourcecode hier einstellen?
(Auch für andere als Motivation zum Nachbauen! )
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

Re: EV3 Basic: CNC G Code einlesen

Beitragvon Tirti » 22. Nov 2015 14:52

Hallo HaWe,

so war der Plan.

Werde mal nen Thread in Projekte eröffnen.

Grüße
Tirti

Muss nur noch den Source Code etwas optimieren.
Bin leider nicht der super Programmierer, denke da könnte man doch einiges Optimieren :-pc:

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

Re: EV3 Basic: CNC G Code einlesen

Beitragvon Tirti » 22. Nov 2015 15:19

Hallo,

anbei noch ein paar Bilder um die Detail Genauigkeit zu zeigen die die CNC macht.

Grüße
Tirti

P.S: wie man sieht war mir die Optik ziemlich egal :-)
Habe mir aus USA noch ein Lego Kabel bestellt um den alte 9V Motor an die EV3 anschließen zu können.
Kommt aber wohl erst Mittwoch :-(
Dateianhänge
IMG_4113.JPG
IMG_4112.JPG
IMG_4111.JPG

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

Re: EV3 Basic: CNC G Code einlesen

Beitragvon Tirti » 22. Nov 2015 15:20

Hier noch die CNC
Dateianhänge
IMG_4114.JPG

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5352
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: EV3 Basic: CNC G Code einlesen

Beitragvon HaWe » 22. Nov 2015 15:26

ps, außer der Software...

meine Idee war noch - ob man das auch zum 3D Printer (mit Klebeplastik-Düse) umbauen könnte...?


Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Tirti
Weniger als 15 Beiträge
Weniger als 15 Beiträge
Beiträge: 13
Registriert: 1. Nov 2015 09:00

Re: EV3 Basic: CNC G Code einlesen

Beitragvon Tirti » 22. Nov 2015 15:39

Hallo HaWe,

wie darf ich dein PS verstehen?

Zu deiner Frage, theoretisch sollte das kein Problem sein.
Das Koordinatensystem ist das selbe :-)
Ergo nur einen Motor und ein paar Technic Teile mehr für die Halterung und den Taster der Klebepistole

Grüße
Tirti


Zurück zu „textbasierte Programmiersoftware“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 25 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss