03.04.2017, 09:16
Guten Morgen,
ich habe folgendes Problem:
Ich möchte mit Excel ein CNC-Programm zum spiralförmigen Kreisfräsen erstellen.
Vorbereitet habe ich eine Userform in der ich alle wichtigen Daten wie Kreisdurchmesser, Startpunkt in X,Y,Z, Tiefe und die Zustellung in Z je Wendel eingeben kann.
Alle Berechnungen sind soweit richtig, nun soll das Programm aber soweit geschrieben werden bis die gewünschte Frästiefe erreicht ist.
Mein Code für den Button "Programm erstellen" auf der Userform ist folgender:
Private Sub CommandButton1_Click()
DM = TextBox1.Text 'Durchmesser
X = TextBox2.Text 'Mittelpunkt X
Y = TextBox3.Text 'Mittelpunkt Y
O = TextBox4.Text 'Startpunkt Z OBEN
U = TextBox5.Text 'Endpunkt Z Unten. Negativen Wert eingeben.
ZU = TextBox6.Text 'Zustellung Z je Wendel
Worksheets("Tabelle1").Range("c2").Value = DM
Worksheets("Tabelle1").Range("c4").Value = X
Worksheets("Tabelle1").Range("c6").Value = Y
Worksheets("Tabelle1").Range("c8").Value = O
Worksheets("Tabelle1").Range("c10").Value = U
Worksheets("Tabelle1").Range("c12").Value = ZU
Range("A18").Value = "G0"
Range("B18").Value = "X"
Range("C18").Value = X
Range("D18").Value = "Y"
Range("E18").Value = Y
Range("B19").Value = "Z"
Range("C19").Value = O
Range("A20").Value = "G42"
Range("B20").Value = "G1"
Range("C20").Value = "X"
Range("D20").Value = DM / 2 + X
Range("A21").Value = "G2"
Range("B21").Value = "I-"
Range("C21").Value = DM / 2
Range("D21").Value = "Z"
Range("E21").Value = O - ZU
Range("A22").Value ="G2"
Range("B22").Value = "I-"
Range("C22").Value = DM / 2
Range("D22").Value = "Z"
Range("E22").Value = Range("E21") - ZU
End Sub
Nun möchte ich das sich der letzte Block solange wiederholt bis der Wert U aus Textbox Nr. 5 erreicht ist.
Also in Zeile 23 soll dann folgendes stehen:
Das gleiche wie in Zeile 22 nur in Zelle E den Wert aus Zeile 22 abzüglich den Wert ZU aus der Textbox Nr. 6
Dies soll solange fortgesetzt werden bis der Wert in Zelle E gleich dem Wert U aus der Textbox Nr. 5 ist.
Direkt dananch in der darauf folgenden Zeile (die ja noch nicht bestimmt ist, deshalb die Fragezeichen in der Range) soll dann noch folgendes stehen:
Range("A??").Value ="G1"
Range("B??").Value = "G40"
Range("C??").Value = "X"
Range("D??").Value = X
Range("E??").Value = "Y"
Range("F??").Value = Y
Und ganz zum Schluß in der allerletzten Zeile des Programms noch dieses:
Range("A??").Value ="G0"
Range("B??").Value = "G91"
Range("C??").Value = "G28"
Range("D??").Value = "Z0.000"
Nun noch kurz zum Sinn des ganzen, zur Veranschaulichung was dabei herrauskommen soll:
So sieht ein CNC-Programm aus, das einen Kreis mit dem Durchmesser 100mm an den Koordinaten X0. Y0. mit der Tiefe von 12mm und der Zustellung von 1mm pro Wendel fräst. Sie können sich vorstellen das es unter Umständen, je nach Zustellwert mehrere hundert oder gar tausend Zeilen werden können in denen immer das gleiche steht ausser dem Z-Wert. Bisher schreibe ich das Programm einige Zeilen von Hand und copy and paste bis ich genügend Zeilen habe. Dann passe ich den Z-Wert an. Das ist aber sehr Aufwändig, vor allem bei sehr tiefen Bohrungen und kleinen Zustellwerten.
G0 X0.000 Y0.000 <---Startpunkt des Kreises in X und Y
Z2.000 <----- Startpunkt in Z
G42 G1 X50.000 <----Anfahren zum Kreishalbmesser
G2 I-50.000 Z1.000 <----Erste Kreisbewegung mit 1mm Zustellung
I-50.000 Z0.000 <------Zweite Kreisbewegung mit Zustellung
I-50.000 Z-1.000 <----- usw.
I-50.000 Z-2.000
I-50.000 Z-3.000
I-50.000 Z-4.000
I-50.000 Z-5.000
I-50.000 Z-6.000
I-50.000 Z-7.000
I-50.000 Z-8.000
I-50.000 Z-9.000
I-50.000 Z-10.000
I-50.000 Z-11.000
I-50.000 Z-12.000 <---- Erreichen des Endpunktes
G40 G1 X0.000 Y0.000 <---Zurückfahren des Fräsers zum Startpunkt X und Y
G0 G91 G28 Z0. <------Abheben des Fräsers und Zurück zum Maschinennullpunkt in Z (Werkzeugwechselpunkt)
Vielen Dank im Vorraus
ich habe folgendes Problem:
Ich möchte mit Excel ein CNC-Programm zum spiralförmigen Kreisfräsen erstellen.
Vorbereitet habe ich eine Userform in der ich alle wichtigen Daten wie Kreisdurchmesser, Startpunkt in X,Y,Z, Tiefe und die Zustellung in Z je Wendel eingeben kann.
Alle Berechnungen sind soweit richtig, nun soll das Programm aber soweit geschrieben werden bis die gewünschte Frästiefe erreicht ist.
Mein Code für den Button "Programm erstellen" auf der Userform ist folgender:
Private Sub CommandButton1_Click()
DM = TextBox1.Text 'Durchmesser
X = TextBox2.Text 'Mittelpunkt X
Y = TextBox3.Text 'Mittelpunkt Y
O = TextBox4.Text 'Startpunkt Z OBEN
U = TextBox5.Text 'Endpunkt Z Unten. Negativen Wert eingeben.
ZU = TextBox6.Text 'Zustellung Z je Wendel
Worksheets("Tabelle1").Range("c2").Value = DM
Worksheets("Tabelle1").Range("c4").Value = X
Worksheets("Tabelle1").Range("c6").Value = Y
Worksheets("Tabelle1").Range("c8").Value = O
Worksheets("Tabelle1").Range("c10").Value = U
Worksheets("Tabelle1").Range("c12").Value = ZU
Range("A18").Value = "G0"
Range("B18").Value = "X"
Range("C18").Value = X
Range("D18").Value = "Y"
Range("E18").Value = Y
Range("B19").Value = "Z"
Range("C19").Value = O
Range("A20").Value = "G42"
Range("B20").Value = "G1"
Range("C20").Value = "X"
Range("D20").Value = DM / 2 + X
Range("A21").Value = "G2"
Range("B21").Value = "I-"
Range("C21").Value = DM / 2
Range("D21").Value = "Z"
Range("E21").Value = O - ZU
Range("A22").Value ="G2"
Range("B22").Value = "I-"
Range("C22").Value = DM / 2
Range("D22").Value = "Z"
Range("E22").Value = Range("E21") - ZU
End Sub
Nun möchte ich das sich der letzte Block solange wiederholt bis der Wert U aus Textbox Nr. 5 erreicht ist.
Also in Zeile 23 soll dann folgendes stehen:
Das gleiche wie in Zeile 22 nur in Zelle E den Wert aus Zeile 22 abzüglich den Wert ZU aus der Textbox Nr. 6
Dies soll solange fortgesetzt werden bis der Wert in Zelle E gleich dem Wert U aus der Textbox Nr. 5 ist.
Direkt dananch in der darauf folgenden Zeile (die ja noch nicht bestimmt ist, deshalb die Fragezeichen in der Range) soll dann noch folgendes stehen:
Range("A??").Value ="G1"
Range("B??").Value = "G40"
Range("C??").Value = "X"
Range("D??").Value = X
Range("E??").Value = "Y"
Range("F??").Value = Y
Und ganz zum Schluß in der allerletzten Zeile des Programms noch dieses:
Range("A??").Value ="G0"
Range("B??").Value = "G91"
Range("C??").Value = "G28"
Range("D??").Value = "Z0.000"
Nun noch kurz zum Sinn des ganzen, zur Veranschaulichung was dabei herrauskommen soll:
So sieht ein CNC-Programm aus, das einen Kreis mit dem Durchmesser 100mm an den Koordinaten X0. Y0. mit der Tiefe von 12mm und der Zustellung von 1mm pro Wendel fräst. Sie können sich vorstellen das es unter Umständen, je nach Zustellwert mehrere hundert oder gar tausend Zeilen werden können in denen immer das gleiche steht ausser dem Z-Wert. Bisher schreibe ich das Programm einige Zeilen von Hand und copy and paste bis ich genügend Zeilen habe. Dann passe ich den Z-Wert an. Das ist aber sehr Aufwändig, vor allem bei sehr tiefen Bohrungen und kleinen Zustellwerten.
G0 X0.000 Y0.000 <---Startpunkt des Kreises in X und Y
Z2.000 <----- Startpunkt in Z
G42 G1 X50.000 <----Anfahren zum Kreishalbmesser
G2 I-50.000 Z1.000 <----Erste Kreisbewegung mit 1mm Zustellung
I-50.000 Z0.000 <------Zweite Kreisbewegung mit Zustellung
I-50.000 Z-1.000 <----- usw.
I-50.000 Z-2.000
I-50.000 Z-3.000
I-50.000 Z-4.000
I-50.000 Z-5.000
I-50.000 Z-6.000
I-50.000 Z-7.000
I-50.000 Z-8.000
I-50.000 Z-9.000
I-50.000 Z-10.000
I-50.000 Z-11.000
I-50.000 Z-12.000 <---- Erreichen des Endpunktes
G40 G1 X0.000 Y0.000 <---Zurückfahren des Fräsers zum Startpunkt X und Y
G0 G91 G28 Z0. <------Abheben des Fräsers und Zurück zum Maschinennullpunkt in Z (Werkzeugwechselpunkt)
Vielen Dank im Vorraus