G54 in G55 G56 und G57 schreiben
11.11.2025, 15:47 Uhr
Hallo grüßt euch!
Zu Mir: Ich habe die letzten 15 Jahre an der Heidenhain-Steuerung gearbeitet und dort auch programmiert.
Mein Chef hatte aber die Idee auch eine Maschine mit Siemens 840D zu kaufen und nötigt mich jetzt auch für diese zu programmieren
Mach ich gerne aber ich tue mir noch schwer den NC-Code zu lesen und zu verstehen, geschweige den fernab des Postprozessors selbst was zu programmieren.
Zu meiner Situation: Mein Bauteil sieht aus wie ein Würfel, den ich auf 4 Seiten bearbeiten muss. (B0, B90, B180, B270)
Diesen Würfel muss ich bei einer Bohrung auf B0 (G54) antasten und die Werte X,Y und Z in G55, G56 und G57 schreiben.
Die Nullpunkte werden im laufenden Programmablauf nochmal angetastet und überschrieben.
Ich benötige aber mit einer Antastung direkt 4 Nullpunkte um mal anfangen zu können.
Ich habe schon selbst etwas hier im Forum recherchiert und habe mir mit meinem geballtem Wissen folgendes zusammengebastelt:
$P_UIFR[2, X, FI]=$P_UIFR[1, X, FI]
$P_UIFR[3, X, FI]=$P_UIFR[1, X, FI]
$P_UIFR[4, X, FI]=$P_UIFR[1, X, FI]
$P_UIFR[2, Y, FI]=$P_UIFR[1, Y, FI]
$P_UIFR[3, Y, FI]=$P_UIFR[1, Y, FI]
$P_UIFR[4, Y, FI]=$P_UIFR[1, Y, FI]
$P_UIFR[2, Z, FI]=$P_UIFR[1, Z, FI]
$P_UIFR[3, Z, FI]=$P_UIFR[1, Z, FI]
$P_UIFR[4, Z, FI]=$P_UIFR[1, Z, FI]
Ich habe leider aktuell keine Zeit dies an der Maschine zu testen und warten bis das Programm auf die Maschine kommt möchte ich auch nicht da ich nicht dann erst nach einer Lösung suchen möchte. Könnte die Formel auf den ersten Blick funktionieren? Oder evt. gibt es auch einen einfacheren Code?
Mein Wissen basiert auf einer Ableitung dieser Formel:
$P_UIFR[2,z,tr]= $P_UIFR[1,z,tr] -0.5 (für Z-0.5)
und G54=1, G55=2, G56=3, G57=4, G505=5, G506=6, G507=7, …usw. Habe ich das korrekt verstanden?
Macht es einen unterschied auf welcher B-Achs Position die Maschine beim Schreiben steht (bei Heidenhain macht die aktuelle Position die verschiebe Richtung aus) oder geht die Siemens hier von ihrem Grundkoordinatensystem aus?
Wäre sehr dankbar für jede Hilfe, am besten wenn diese für mich auch verständlich wäre. Bin wie gesagt noch am Anfang
Gruß BennyH6
Der Beitrag wurde von BennyH6 bearbeitet: 11.11.2025, 15:52 Uhr
Zu Mir: Ich habe die letzten 15 Jahre an der Heidenhain-Steuerung gearbeitet und dort auch programmiert.
Mein Chef hatte aber die Idee auch eine Maschine mit Siemens 840D zu kaufen und nötigt mich jetzt auch für diese zu programmieren
Mach ich gerne aber ich tue mir noch schwer den NC-Code zu lesen und zu verstehen, geschweige den fernab des Postprozessors selbst was zu programmieren.
Zu meiner Situation: Mein Bauteil sieht aus wie ein Würfel, den ich auf 4 Seiten bearbeiten muss. (B0, B90, B180, B270)
Diesen Würfel muss ich bei einer Bohrung auf B0 (G54) antasten und die Werte X,Y und Z in G55, G56 und G57 schreiben.
Die Nullpunkte werden im laufenden Programmablauf nochmal angetastet und überschrieben.
Ich benötige aber mit einer Antastung direkt 4 Nullpunkte um mal anfangen zu können.
Ich habe schon selbst etwas hier im Forum recherchiert und habe mir mit meinem geballtem Wissen folgendes zusammengebastelt:
$P_UIFR[2, X, FI]=$P_UIFR[1, X, FI]
$P_UIFR[3, X, FI]=$P_UIFR[1, X, FI]
$P_UIFR[4, X, FI]=$P_UIFR[1, X, FI]
$P_UIFR[2, Y, FI]=$P_UIFR[1, Y, FI]
$P_UIFR[3, Y, FI]=$P_UIFR[1, Y, FI]
$P_UIFR[4, Y, FI]=$P_UIFR[1, Y, FI]
$P_UIFR[2, Z, FI]=$P_UIFR[1, Z, FI]
$P_UIFR[3, Z, FI]=$P_UIFR[1, Z, FI]
$P_UIFR[4, Z, FI]=$P_UIFR[1, Z, FI]
Ich habe leider aktuell keine Zeit dies an der Maschine zu testen und warten bis das Programm auf die Maschine kommt möchte ich auch nicht da ich nicht dann erst nach einer Lösung suchen möchte. Könnte die Formel auf den ersten Blick funktionieren? Oder evt. gibt es auch einen einfacheren Code?
Mein Wissen basiert auf einer Ableitung dieser Formel:
$P_UIFR[2,z,tr]= $P_UIFR[1,z,tr] -0.5 (für Z-0.5)
und G54=1, G55=2, G56=3, G57=4, G505=5, G506=6, G507=7, …usw. Habe ich das korrekt verstanden?
Macht es einen unterschied auf welcher B-Achs Position die Maschine beim Schreiben steht (bei Heidenhain macht die aktuelle Position die verschiebe Richtung aus) oder geht die Siemens hier von ihrem Grundkoordinatensystem aus?
Wäre sehr dankbar für jede Hilfe, am besten wenn diese für mich auch verständlich wäre. Bin wie gesagt noch am Anfang
Gruß BennyH6
Der Beitrag wurde von BennyH6 bearbeitet: 11.11.2025, 15:52 Uhr
11.11.2025, 17:25 Uhr
Du musst die Komponenten nicht einzeln kopieren, d.h. du kannst auch ganze Frames übertragen, also z.B. so:
$P_UIFR[2]=$P_UIFR[1]
$P_UIFR[3]=$P_UIFR[1]
$P_UIFR[4]=$P_UIFR[1]
$P_UIFR[2]=$P_UIFR[1]
$P_UIFR[3]=$P_UIFR[1]
$P_UIFR[4]=$P_UIFR[1]
11.11.2025, 21:56 UhrDu musst die Komponenten nicht einzeln kopieren, d.h. du kannst auch ganze Frames übertragen, also z.B. so:
$P_UIFR[2]=$P_UIFR[1]
$P_UIFR[3]=$P_UIFR[1]
$P_UIFR[4]=$P_UIFR[1]
$P_UIFR[2]=$P_UIFR[1]
$P_UIFR[3]=$P_UIFR[1]
$P_UIFR[4]=$P_UIFR[1]
Vielen Dank schonmal CNCFr, das kann ich bestimmt gebrauchen!
Der Vollständigkeit will ich aber auch nochmal nachfragen, dass die von mir geschriebenen Sätze ebenfals funktionieren würden?
Gruß Benny
12.11.2025, 09:07 Uhr
Deine Variante müsste auch funktionieren. Der Genauigkeit halber möchte ich aber doch sagen, dass die beiden Varianten nicht das gleiche tun.
Was hier meistens einfach als Nullpunktverschiebung bezeichnet wird, ist in Wirklichkeit ein sog. Frame, der nicht nur Nullpunktverschiebungen, sondern auch Drehungen, Skalierungen und Spiegelungen umfasst. Außerdem gibt es noch die Feinverschiebungen, die auf die eigentliche Nullpunktverschiebungen addiert werden können.
In deiner ersten, ausführlichen Variante veränderst du nur die drei Nullpunktverschiebungen für X, Y, Z. Die ganzen übrigen Parameter werden nicht überschrieben und können deshalb unterschiedlich sein.
In der Variante $P_UIFR[2]=$P_UIFR[1] sind die Inhalte beider Frames nach der Zuweisung identisch.
Wenn du nur mit Nullpunktverschiebungen arbeitest (was wahrscheinlich in mehr als 90% der Fälle so sein wird), sind beide Varianten identisch. Die zweite Variante erfordert eben weniger Schreibarbeit und ist auch übersichtlicher.
Was hier meistens einfach als Nullpunktverschiebung bezeichnet wird, ist in Wirklichkeit ein sog. Frame, der nicht nur Nullpunktverschiebungen, sondern auch Drehungen, Skalierungen und Spiegelungen umfasst. Außerdem gibt es noch die Feinverschiebungen, die auf die eigentliche Nullpunktverschiebungen addiert werden können.
In deiner ersten, ausführlichen Variante veränderst du nur die drei Nullpunktverschiebungen für X, Y, Z. Die ganzen übrigen Parameter werden nicht überschrieben und können deshalb unterschiedlich sein.
In der Variante $P_UIFR[2]=$P_UIFR[1] sind die Inhalte beider Frames nach der Zuweisung identisch.
Wenn du nur mit Nullpunktverschiebungen arbeitest (was wahrscheinlich in mehr als 90% der Fälle so sein wird), sind beide Varianten identisch. Die zweite Variante erfordert eben weniger Schreibarbeit und ist auch übersichtlicher.
12.11.2025, 09:59 UhrDeine Variante müsste auch funktionieren. Der Genauigkeit halber möchte ich aber doch sagen, dass die beiden Varianten nicht das gleiche tun.
Was hier meistens einfach als Nullpunktverschiebung bezeichnet wird, ist in Wirklichkeit ein sog. Frame, der nicht nur Nullpunktverschiebungen, sondern auch Drehungen, Skalierungen und Spiegelungen umfasst. Außerdem gibt es noch die Feinverschiebungen, die auf die eigentliche Nullpunktverschiebungen addiert werden können.
In deiner ersten, ausführlichen Variante veränderst du nur die drei Nullpunktverschiebungen für X, Y, Z. Die ganzen übrigen Parameter werden nicht überschrieben und können deshalb unterschiedlich sein.
In der Variante $P_UIFR[2]=$P_UIFR[1] sind die Inhalte beider Frames nach der Zuweisung identisch.
Wenn du nur mit Nullpunktverschiebungen arbeitest (was wahrscheinlich in mehr als 90% der Fälle so sein wird), sind beide Varianten identisch. Die zweite Variante erfordert eben weniger Schreibarbeit und ist auch übersichtlicher.
Was hier meistens einfach als Nullpunktverschiebung bezeichnet wird, ist in Wirklichkeit ein sog. Frame, der nicht nur Nullpunktverschiebungen, sondern auch Drehungen, Skalierungen und Spiegelungen umfasst. Außerdem gibt es noch die Feinverschiebungen, die auf die eigentliche Nullpunktverschiebungen addiert werden können.
In deiner ersten, ausführlichen Variante veränderst du nur die drei Nullpunktverschiebungen für X, Y, Z. Die ganzen übrigen Parameter werden nicht überschrieben und können deshalb unterschiedlich sein.
In der Variante $P_UIFR[2]=$P_UIFR[1] sind die Inhalte beider Frames nach der Zuweisung identisch.
Wenn du nur mit Nullpunktverschiebungen arbeitest (was wahrscheinlich in mehr als 90% der Fälle so sein wird), sind beide Varianten identisch. Die zweite Variante erfordert eben weniger Schreibarbeit und ist auch übersichtlicher.
Oke verstehe.
Fiktiver Fall: Angenommen in einem vorher gelaufenen Programm wurde bei G55 die B-Achse verdreht, was noch in der Tabelle steht.
Dann würde bei meinem Code zwar die XYZ-Werte überschrieben aber der B-Achs Wert nicht.
Bei deinem wird G55 komplett mit den Werten von G54 überschrieben.
Besten Dank! Für deine Unterstützung!
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder:




