Verschiebung des Maschinen-Nullpunkts

  • Moin liebe CNC-Gemeinde,


    ein, zwei Sätze vorab. Ich habe keinerlei Erfahrung mit CNC-Maschinen und soll jetzt in meiner Masterarbeit eine Prozessoptimierung mit einem digitalen Zwilling in Vericut vornehmen. Dazu gehört auch den Arbeitsprozess an der Fräsmaschine (eine MÜGA S500 mit einer MELDAS-Steuerung) zu überarbeiten. Auf der Fräsmaschine werden Aluminium-Gussteile bearbeitet.

    Ein kleines Beispiel dazu: Auf der Spannvorrichtung wird das gleiche Teil 3 Mal eingespannt. Jedes Teil muss 3 Mal gebohrt und in jede Bohrung ein Gewinde geschnitten werden. Insgesamt also 9 Bohrungen im Programm. Die übliche Programmierweise sieht vor, vorab für jedes Loch einen Nullpunkt zu definieren. (hier Beispiel für ein Teil):


    (***TEIL 1 ***)

    (***BOHRUNG Gewinde M6 6H***)

    G10L20G90P1X-111.03Y-164.11Z-348.75


    (***TEIL 1 ***)

    (***BOHRUNG Gewinde M6 6H***)

    G10L20G90P2X-100.1Y-229.09Z-355.43


    (***TEIL 1 ***)

    (***BOHRUNG Gewinde M6 6H***)

    G10L20G90P3X-110.66Y-322.15Z-342.11


    der Aufruf der Nullpunkte weiter unten im Programm:


    (****TEIL 1****)

    G0G54.1P1X0Y0S9500F1800A0M13

    M10

    G43H1Z3

    G01Z-16

    G0Z50


    G0G54.1P2X0Y0

    G0Z3

    G01Z-16

    G0Z50


    G0G54.1P3X0Y0

    G0Z3

    G01Z-16

    G0Z50



    ausgegangen wird hierbei immer vom Maschinen-Nullpunkt. Meine Frage ist jetzt, ob man den Maschinen-Nullpunkt dauerhaft, für jede neue Serie auf den gleichen Punkt legen kann (gedacht war auf mittig auf die Vorrichtung).

    Vorteil der sich meiner Meinung nach ergibt (wohlgemerkt, dass ich keine Ahnung von CNC-Programmierung habe ^^ ):

    - Die Koordinaten sind nicht so unübersichtlich groß im negativen Bereich jeder Achse

    - Ich muss keine Nullpunktreferenzierung mehr machen, da die 9 Nullpunkte, bezogen auf das neue Basis-KSYS aus Solidworks ausgelesen werden können

    - Ich spare Zeit beim einrichten der Maschine


    Dazu hatte ich in den Maschinenunterlagen etwas von "G92" - Maschinenkoordinatensystemeinstellung gelesen. Kann man damit das Maschinen-KSYS verschieben, sodass sich alle "G54"-Befehle auf das verschobene KSYS beziehen?

    So wie ich es herausgefunden habe, überschreibe ich mit "G55" den vorherigen Nullpunkt "G54" und muss mich wieder auf das Maschninen-KSYS beziehen.


    Vielleicht hat jemand Erfahrung mit so einer Verschiebung des Bezugskoordinatensystems. :)


    Vielen dank schonmal für eure Hilfe


    VG Julian

  • Der Maschinennullpunkt ist fest definiert und kann nicht verschoben werden. Gott sei Dank, denn von dem gehen alle automatiken weg.

    Für Dich kommt da G52 oder G92 in Frage.

    Diese Nullpunktverschiebungen beziehen sich auf das aktuelle Koordinatensystem, also auf den aktuelle gewählten Werkstücknullpunkt zB. G54.

    G92 x??? y??? Z??? Definiert den neuen Nullpunkt und mit G54 oder G92.1 wird er abgewählt. Lies Dich dazu aber nochmal mit dem Programmierhandbuch Deiner Steuerung ein. Kann da wieder Unterschiede geben.

  • Vielen Dank für die schnelle Antwort.


    Ja, das mit dem Maschinenkoordinatensystem ist mir klar :) Es geht hauptsächlich darum, ein neues Bezugskoordinatensystem zu definieren, das immer eine feste und auch gleiche Translation vom Maschinenkoordinatensystem hat. Dann können für jede neue Serie eines anderen Bauteils die Bearbeitungsnullpunkte über G54 auf dieses verschobene Koordinatensystem bezogen werden und nicht mehr auf den Maschinennullpunkt.


    Meine Gedanken dazu nochmal:

    - festes Bezugskoordinatensystem mit G92 auf X: -454.74 Y: -241.8417 Z: -390.5367

    - Bearbeitung des ersten Punktes durch Nullpunktaufruf von G54 mit X: 44 Y: 78 Z: 42.2

    - Bearbeitung des ersten Punktes durch Nullpunktaufruf von G55 mitX: 54.9 Y: 13 Z: 35.6

    - dritter Punkt mit G56

    - usw.


    Ich frage mich nur, ob ich mit G54 das Koordinatensystem , welches ich mit G92 definiere überschreibe oder ob der Nullpunkt von G54 auf das Koordinatensystem von G92 inkremetiert wird, sodass ich mich mit G55 auch auf das Koordinatensystem von G92 beziehen kann.


    VG Julian

  • noch dazu:

    Das verschobene Koordinatensystem soll sich einfach nur wie das Maschinenkoordinatensystem verhalten. Also ich möchtes es nicht überschreiben, abwählen oder löschen. Es soll einfach da sein, sodass ich alle Bearbeitungsnullpunkt auf dieses Koordinatensystem beziehen kann und nicht mehr den "langen Weg" zum Maschinennullpunkt programmieren muss. In jedem CNC-Programm wird dann dieser Nullpunkt jedes mal an die gleiche Stelle definiert, so dass die Verschiebung der Bearbeitungsnullpunkte zu diesem Bezugskoordinatensystem bereits in der Konstruktion ausgelesen werden kann.


    Ich hoffe man versteht mich :D


    VG Julian

  • Hallo Julian,


    Schau mal hier:

    External Content m.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Offset dürfte das sein, was du suchst...

    In einer Bedienungsanleitung einer Steuerung wirst du das auch finden.

    Zum Beispiel Eding....


    Gruß

    Karlheinz

  • Ich weiß in etwa was Du meinst. Programmiert Ihr von Hand? G92 wird durch G54 überschrieben. Bringt Dir hier also nicht viel.

    Aber warum lässt Du nicht einfach G54 fest und machst die Verschiebungen nicht einfach mit G92. Du kannst ja auch mit Variablen arbeiten. Die einzelnen Nullpunkte/Verschiebungen dann darüber aufrufen. Wenn sich nur eine Achse verschiebt, brauchst Du ja auch nur eine Achse angeben.

  • Also momentan wird von Hand programmiert, und zwar so, dass jeder benötigte Nullpunkt mit dem Handrad angefahren wird und über den Texteditor in das CNC-Programm geschrieben wird. Das dauert je nach Bauteil zwischen 2 und 4 Stunden. (Maschine steht natürlich in der Zeit). Das Referenzieren der Nullpunkte soll jetzt mit Vericut übernommen werden, bzw die Entfernung zum neuen Bezugs-KSYS aus Solidworks ausgelesen werden.cnc-aus-holz.at/wcf/index.php?attachment/15004/

    "Z MNP" ist der Maschinennullpunkt an der Spindel. Von hier werden Momentan die Nullpunkte gemessen, das sähe für die 3 Beispielklötze wie folgt aus:

    Mitte Block 1:

    X: -324,74 Y: -241,8372 Z: -318,5366

    Mitte Block 2:

    X: -224,74 Y: -241,8372 Z: -318,5366

    Mitte Block 3:

    X: -124,74 Y: -241,8372 Z: -318,5366


    Diese Punkte können sich je nach Bauteil überall auf der Vorrichtung befinden. -> Sehr mühsam alle Punkte anzufahren.


    Nun soll es so gemacht werden:

    Da ich, wie gesagt, gar keine Erfahrung im CNC-Programmieren habe. Würde ich mich über ein kleines Beispiel freuen, wie ich die drei Blöcke bezogen auf das KSYS "Z NP" anfahren kann.

    Die Verschiebung zwischen "Z MNP" und "Z NP" ist X: -454.74 Y: -241.8417 Z: -390.5367

    Die Nullpunkte der Blöcke bezogen auf "Z NP"

    Mitte Block 1:

    X: 130 Y: 25 Z: 72

    Mitte Block 2:

    X: 230 Y: 25 Z: 72

    Mitte Block 3:

    X: 230 Y: 25 Z: 72


    "Z NP" soll immer genau dort liegen, da es mit der X-Achse dann auf der Schwenkachse liegt und mittig unter der Platte der Vorrichtung. Die NP-Verschiebung der Bauteile kann dann immer von soldiworks ausgelesen und an die CNC-Programmierung weitergegeben werden.




    Hier ein kleines Beispielprogramm von mir, welches ich ohne meine Kenntniss zusammengebastelt habe :D


    O0001

    N0005 G90 (ich weiß noch nichtmal, ob ich inkremental oder absolut für die NP-Verschiebung brauche)

    N0010 T1 M6

    N0015 S1500 M3

    N0016 G92 X-454.74 Y-241.8417 Z-390.5367 (ich wollte den NP hier verschieben)

    N0017 G10 L2 P1 X130 Y25 Z72 (hier wollte ich g54 auf die koordinaten des ersten Blocks (mitte) setzen)

    N0018 G10 L2 P2 X230 Y25 Z72 (hier wollte ich g55 auf die koordinaten des ersten Blocks (mitte) setzen)

    N0019 G10 L2 P3 X330 Y25 Z72 (hier wollte ich g56 auf die koordinaten des ersten Blocks (mitte) setzen)

    N0020 G0 G54 X0 Y0 Z2 (anfahren von g54 absolut zum "Z NP" 2mm über dem Bauteil)

    N0025 G43H1 G91

    N0030 G1 Z-10

    N0035 G1 Z2

    N0040 G0 G55 X0 Y0 Z2 (anfahren von g55 absolut zum "Z NP" 2mm über dem Bauteil)

    N0045 G1 Z-10

    N0050 G1 Z2

    N0055 G0 G56 X0 Y0 Z2 (anfahren von g56 absolut zum "Z NP" 2mm über dem Bauteil)

    N0060 G1 Z-10

    N0065 G1 Z2

    N0070 G28

    N0075 M30


    Vielleicht kann ja diese Programm korrigiert werden, sodass in jeden Klotz mittig eine Bohrung 10 mm Tief gebohrt wird. Es geht nicht darum irgendwelche Bohrzyklen anzuwenden (ja, ich weiß, dass es welche gibt :D), sondern um die Nullpunktverschiebung zwischen "Z MNP" und "Z NP". Und wie schon erwähnt diese Verschiebung soll dauerhaft für jedes CNC-Programm auf der Maschine gelten.

    Gerne auch einen Vorschlag wie ich Variablen definieren kann. Ich bin völlig überfragt :D


    Wenn sich nur eine Achse verschiebt, brauchst Du ja auch nur eine Achse angeben.

    Die Nullpunkte können beliebig verteilt sein. Meistes verschieben sich alle 3 Achsen.


    VG Julian

  • das mit dem Clipboard würde schon funktionieren.

    Du musst nur wissen, wie bei Eurer Maschine die Variablen angesprochen werden und welche für Dich zur freien Verfügung stehen. Bei Mach3 werden diese mit # und einen Wert dahinter gekennzeichnet. (#12=20)

    Im Programm kann dann G0 X#12 eingetragen werden und die Maschine fährt auf 20.

    Am Programm Anfang einfach per drag and drop diesen Variablenblock reinkopieren und in den Nullpunktverschiebungen dann nur G92 X #10 Y #20 Z#30 eintragen. Die entsprechenden Variablen über Excel und Solidworks befüllen. Du kannst das Bohren auch noch als Unterprogramm am Ende des Programmes schreiben und nach der Verschiebung nur dieses aufrufen. Das hält das Programm dann auch übersichtlicher. Wenn Du genaueres wissen möchtest, können wir auch gerne Mal telefonieren.

  • Ne, nix verschieben. Einfach die Werkstücknullpunkte anfahren, speichern und später im Programm abrufen.


    Oder ich habe das Problem des TS nicht richtig verstanden.

    Grüße

    Daniel


    Idee -> QCAD-Pro -> Estlcam 11 -> TNG v2 -> PFM2.6

  • Genau das ist das Problem. Wenn Sie die Punkte anfahren und Speichern dauert das scheinbar zu lange. Würde natürlich funktionieren.

    Deshalb die Punkte aus dem CAD nehmen. In einer Tabelle aufbereiten und als Programm einspielen. Ginge schneller ohne dafür die Maschine bewegen zu müssen.

  • Ne, nix verschieben. Einfach die Werkstücknullpunkte anfahren, speichern und später im Programm abrufen.

    eben so wird es ja grade gemacht. Was aber keine Druchgängigkeit der Daten mit sich führt.

    Die konstruktion weiß ja nicht, wo sich bezogen auf die Vorrichtung der Maschinennullpunkt befindet. Deswegen sollen in der Konstruktion die Bearbeitungsnullpunkte bezogen auf das verschobene Basis-KSYS ausgelesen werden. Diese Nullpunkte möchte ich dann Programmieren.

    Ich brauche einfach ein stück G-Code, mit dem ich beliebig viele Bearbeitungsnullpunkte bezogen auf ein verschobenes Basis-KSYS anfahren kann. Am Anfang des Codes soll der Offset des Basis-KSYS zum Maschinennullpunkt deklariert werden.

    soweit ich es verstanden habe überschreibt doch G55 G54, G56 überschreibt G55, G57 überschreibt G56, usw.


    Ich möchte meine Bearbeitungsnullpunkte immer auf ein KSYS beziehen, das nicht der Maschinennullpunkt ist

    das mit dem Clipboard würde schon funktionieren.

    Du musst nur wissen, wie bei Eurer Maschine die Variablen angesprochen werden und welche für Dich zur freien Verfügung stehen. Bei Mach3 werden diese mit # und einen Wert dahinter gekennzeichnet. (#12=20)

    Im Programm kann dann G0 X#12 eingetragen werden und die Maschine fährt auf 20.

    jaa auch eine coole idee. Aber kann ich in einer Variable x-,y- und z-Werte speichern?


    Also dass ich z. B. sage (die Syntax stimmt jetzt vll nicht)


    G10 L2 P1 X-454.74 Y-241.8417 Z-390.536 (verschiebung des Basis-KSYS)

    ...

    #501 X100 Y100 Z100 (bezogen auf ein verschobenes KSYS)

    ...


    und dann


    ...

    G0 #501 (bezogen auf G54 und nicht auf den Maschinennullpunkt)

    ...

  • Hallo,

    ... soweit ich es verstanden habe überschreibt doch G55 G54, G56 überschreibt G55, G57 überschreibt G56, usw. ...

    Nein. Dann bräuchte man nur eine Variable. G54 ... G59 sind z.B. die (Null)Positionsverschiebungen von mehreren verschiedenen Schraubstöcken, auszufräsenden Werkstücken aus einer Platte oder ... .


    Viele Grüße vom

    Raimund

    Linux. Librecad ---> bCNC (bei STL auch GrblGru oder Estlcam) ---> Arduino ---> Compact-Line 0405

  • Hab gerade nochmal Rücksprache gehalten.


    Also laut Scripte wird das bei Planet-CNc über G92.1 gemacht.

    Wormkposition-Offset nennt sich das dort.

    In dem Script das beim Nullen aktivirt wird steht nur:

    G92.1 X0 Y0


    Da könnte man ja nun anstelle X0 Y0 die entsprechenden Koordinaten eintragen, oder?

    Grüße

    Daniel


    Idee -> QCAD-Pro -> Estlcam 11 -> TNG v2 -> PFM2.6

  • Die Planet CNC TNGv2 Steuerung bietet tatsächlich die Möglichkeit die Unter G54 G55 .... etc auf einen anderen Punkt als den Maschinennullpunkt zu beziehen. Planet hat zwischen dem Maschinen System und den Werkstück Koordinaten Systemen noch mal eine zwischeneben.


    Man hat dort die verschiedenen Koordinaten Systeme G54 G55 etc.. die über G10 geändert werden und dann noch mal ein globales Offset das über G92 gesetzt wird. Das Globale Offset verschied sämtliche G54 Punkte entsprechend.


    Ich weiß aber nicht in wie weit andere Steuerungen da etwas ähnliches bieten.



    Nur um sicher zu gehen das ich dein Problem richtig verstehe.

    - Du hast das selbe Werkstück X Mal auf dem Tisch liegen.

    - Die Position zwischen den Werkstücken bleibt immer gleich und ist aus dem CAD Bekannt.


    Zielsetzung ist es den Aufwand zum Einmessen zu minimieren.



    Wenn die Position der Werkstücke untereinander IMMER gleich bleibt und IMMER so ist wie im CAD geplant (ZB über eine entsprechende Halteplatte) dann verstehe ich ehrlich gesagt die ganze Problematik nicht.

    In dem Fall braucht man EINEN festen Bezugspunkt auf den alle weiteren Koordinaten bezogen sind. In dem Fall am besten ein gut ein messbarer Punkt an der Halteplatte. Verschiedene Koordinatensysteme sind hierzu nicht zwingend notwendig. Man behandelt die Duplizierten Werkstücke dann einfach als ein großes Werkstück.


    Will man jedes Werkstück als eigenes Programm im eigenen Koordinatensystem abarbeiten dann kann man das über die Werkstück Koordiantensysteme G54 G55... machen.

    Wenn die Steuerung ähnlich wie Planet CNC ein globales offset unterstützt würde man initial einmal hingehen einen gut Messbaren Punkt an der Halteplatte als offset einmessen und mit G92 setzten. Dann würde man für jedes einzelne Werkstück von dort aus einmalig die Nullpunkte für G54 etc... setzten. Das kann man auch im GCode einmal hardcoden wenn man die Koordinaten aus dem CAD genau kennt.

    Wie die genaue Syntax dazu ist muss man im Handbuch der Steuerung nachschauen.

    Grüße,
    Klaus


    Fusion CAD -> Fusion CAM -> Planet CNC TNGV2 -> KMS DIY CNC -> fertig

  • Nur um sicher zu gehen das ich dein Problem richtig verstehe.

    - Du hast das selbe Werkstück X Mal auf dem Tisch liegen.

    - Die Position zwischen den Werkstücken bleibt immer gleich und ist aus dem CAD Bekannt.

    Ja genau, also es gibt mehrere Serien aber pro Serie sind immer eine gewisse Anzahl Baugleicher Werkstücke auf der Vorrichtung festgespannt.


    Ich hab halt nie CNC-Programmierung gelernt und wollte es so machen, wie es momentan gemacht wird. Mit diversen Bearbeitungsullpunkten.


    Das mit dem EINEN festen Bezugspunkt habe ich auch schon angedacht. Aber angenommen ich muss zu einem Punkt fahren, um ein Lock zu Bohren, dieses Abzusenken und ein Gewinde zu schneiden. Dann sieht es doch aus, dass ich für jeden dieser Zyklen den Abstand definieren muss. Also:

    - Fahre zu x10y20z30 Bohre loch

    ....... bohre mehr löcher mit dem gleichen Werkzeug woanders

    - Fahren zu x10y20z30 und senke ab

    ....... senke mehr löcher mit dem gleichen Werkzeug woanders

    - Fahre zu x10y20z30 und schneide ein gewinde

    ....... schneide mehr gewinde mit dem gleichen Werkzeug woanders


    Wenn ich jetzt aufgrund der Toleranzen diesen Punkt nachstellen muss, dann muss ich ja an 3 Stellen im Programm Anderung vornehmen. Bei 9 Löchern wären das im Schlimmsten Fall 27 Stellen im Programm. Das Nachstellen kommt sehr häufg vor, da wir Gussteile im 1/100 mm-Bereich bearbeiten und fräsen. Bzw. die Toleranzen vom Hersteller so genau sind.


    Deswegen dachte ich, wäre die Definition von Bearbeitungsnullpunkten die sich auf den EINEN Punkte beziehen die einfachere Variante.


    globales offset unterstützt würde man initial einmal hingehen einen gut Messbaren Punkt an der Halteplatte als offset einmessen und mit G92 setzten.

    Genau das habe ich gesucht. Ich habe bis jetzt leider noch keinen beim Maschinenhersteller erreichen können, aber beruhigend zu hören, dass es sowas gibt :) Bestünde damit auch die Möglichkeit eine Rotation, Sprich das Schwenken der Achse zu kompensieren, da ja dann das Koordinatensystem auf der Platte im Schlimmsten Fall um eine ungerade Gradzahl gedreht wird.


    Vielen Dank für eure Mühen, das hilft mir wirklich sehr :)


    Grüße Julian

  • Hallo Julian,

    die Variable gilt immer nur für diesen einen Wert. Du gibtst Variable 20=5 ein und Variable 21=6. Dann kannst Du die Variable 20 an beliebiger Stelle einsetzen.

    Da wird dann halt immer die 5 ausgelesen. Das wird bei Dir aber nie der Fall sein. Also Nullpunkt 1 X-Position wird eine andere Variable haben als die Y-Position.

    Aber Du kannst die Variablen ja in eine Tabelle fix eintragen und die Werte dazu nur aus dem Cad editieren. Im Programm ändert sich dann ja auch nichts. Nur diese Variablen einlesen und gut.

    Du kannst auch Variablen über Formeln berechnen lassen. Ich habe einmal ein Programm für Haidenhein geschrieben, wo man nur den Eckenradius vom Werkzeug und den Gewünschten Radius an der Werkstückkante eintragen musste.

    Dann die Winkelschritte und die endgültige Gradzahl vom Winkel (in der Regel 90°). Dann im Unterprogramm nur die Werkstückkontur programmieren.

    Den Rest hat die Maschine dann alles mit der Werkzeugradiuskorrektur und der Werkzeuglänge aus der Werkzeugtabelle gemacht.