Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

G54 in G55 G56 und G57 schreiben

Beitrag 11.11.2025, 15:47 Uhr
BennyH6
Level 1 = Community-Lehrling
*
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 smile.gif
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. wacko.gif

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: wow.gif
$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? coangry.gif

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 smile.gif

Gruß BennyH6

Der Beitrag wurde von BennyH6 bearbeitet: 11.11.2025, 15:52 Uhr
   
Beitrag 11.11.2025, 17:25 Uhr
CNCFr
Level 7 = Community-Professor
*******
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]

   
Beitrag 11.11.2025, 21:56 Uhr
BennyH6
Level 1 = Community-Lehrling
*
ZITAT(CNCFr @ 11.11.2025, 18: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]


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
   
Beitrag 12.11.2025, 09:07 Uhr
CNCFr
Level 7 = Community-Professor
*******
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.
   
Beitrag 12.11.2025, 09:59 Uhr
BennyH6
Level 1 = Community-Lehrling
*
ZITAT(CNCFr @ 12.11.2025, 10: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.


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: