kniffelige Frage: 2 Z-Achsen?

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • kniffelige Frage: 2 Z-Achsen?

      Hi,

      ich habe es auch schon im Linuxcnc-Forum gepostet, aber weil es eine interessante Herausforderung ist, poste ich meine Fragestellung auch einmal hier:

      Ausgangssituation:
      Eine klassische 3-Achsenmaschine wird um eine 2. Z-Achse mit eigenem Antrieb erweitert. D.h. Z1 und Z2 sind auf der gleichen X-Antriebsspindel, können sich aber unabhängig voneinander auf und ab bewegen.

      Jetzt kommt der spannende Teil: Wie könnte man es mit Linuxcnc hinbekommen, dass
      - Z1 und Z2 getrennt referenziert werden können (noch recht einfach)
      - Z1 und Z2 eine separate Werkzeuglängenmessung vornehmen können. Der Sensor sitzt zwischen Z1 und Z2 und ist für beide erreichbar
      - Z1 und Z2 im Betrieb nachher wie eine Achse angesteuert werden....

      Jemand Ideen?

      Das Prinzip "2 Joints => 1 axis" hilft hier nur teilweise, weil meines Wissens nach kein G38 auf Joint-Ebene durchgeführt werden kann..

      Oder definiere ich sie in Linuxcnc einfach als simple einzelne Achsen und regele das komplett über den GCode (Postprozessor)? Dann wäre die Frage in Richtung bspw cambam: wie modifiziere ich den Postprozessor so, dass bei Z-Operationen immer parallel die 2.Zachse mit angesteuert wird...

      Hintergrund des ganzen: parallel Fertigung von 2 Teilen auf einer (1) Maschine :D
      Gruß

      Andreas
    • key2 wrote:

      Hintergrund des ganzen: parallel Fertigung von 2 Teilen auf einer (1) Maschine
      Es können ja nur zwei gleiche Teile gefertigt werden da es nur jeweils eine X + Y Achse gibt.
      Solche Maschinen gibt es, wo auf Y-Achse (Portal) mehrere Frässpindeln befestigt sind.
      Die werden aber nicht separat gesteuert sondern eben parallel. Anders geht es nicht, da die Verfahrwege der X + Y Achsen ja von den Bewegungen der Z-Achse, Werkzeugdurchmesser, etc. beeinflußt werden.
      Eine separate Werkzeugvermessung gäbe nur einen Sinn wenn die Steuerung die Länge der Werkzeuge untereinander kompensieren könnte, kann sie aber nicht. Man verwendet dafür Werkzeuge mit Ringen so das sie immer die gleiche Einspann-Länge haben. Oder Werkzeuge im Wechselfutter die immer eingespannt bleiben. Die Methode mit den Ringen ist die kostengünstigere, die Ringe werden in einer simplen Tiefenlehre aufgepresst und der Abstand von Ring zu Spitze ist immer identisch.
      Getrennte Referenzierung der Z-Achsen ist auch nicht nötig, es gibt nur eine auf der mehrere Spindeln sitzen. Eine getrennte Referenzierung hat auch hier keinen Sinn weil die Steuerung die Differenzen nicht verarbeiten kann.
      Z1 und Z2 über einen Antrieb laufen zu lassen gibt auch keinen Sinn.
      Da Schrittmotore immer Schrittverluste mit sich bringen ergeben zwei Schrittmotoren an einem Treiber immer Differenzen auch während des Betriebes.
      So was gibt es bei zweiseitig angetriebenen X-Achsen und muß öfter nachjustiert werden. Sonst verklemmt es sich. Ich habe zwei Z-Achsen an meinem 3D Drucker, die zwei Schrittmotore werden über einen Treiber angetrieben, es kommt mit der Zeit zu Differenzen.

      Eine durchgehende Z-Achse für mehrere Frässpindeln ist der Weg. Und nicht so besonders wie Du denkst. Gerade bei der Fertigung von 3D Teilen aus Holz gibt es so etwas oft. Hier ist eine Maschine mit 6 Drehachsen, deshalb hat sie keine Y-Achse. Die produziert Stuhlbeine.

      Es gibt sie aber auch für Flachbettproduktion, schau nach "multihead mill". Damit wird das Bett der Fräse unterteilt, es können nur schmale Teile produziert werden.



      key2 wrote:

      Richtung bspw cambam: wie modifiziere ich den Postprozessor so
      Gar nicht. es gibt dann nur eine Z-Achse mit mehreren Motoren.
      Alles andere kann nicht funktionieren. X + Y +Z Achse müssen dann natürlich so stabil und sein das sie die Multiköpfe auch vertragen.

      grüße
      ++
    • Hi,

      gibt im wesentlichen meine Gedanken wieder. Die "Multihead"-Maschinen kenne ich auch. Der Denkversuch sollte aber der sein, dass die 2 Z-Achsen unabhängig voneinander angetrieben sind. Das nur gleiche Teile gefertigt werden können, ist auch logisch, die Methode mit den Ringen ist auch allseits bekannt, setzt aber voraus, dass die Spindeln alle in exakt der gleichen Höhe sitzen ;)
      Das Problem der 2 Schrittmotoren an einer Endstufe ist wohl aus der Not heraus entstanden (hab ich nie selbst gemacht). Linuxcnc hat es jetzt mit der Trennung zwischen Joint und Axis ja ganz gut gelöst!
      Gruß

      Andreas
    • key2 wrote:

      Der Denkversuch sollte aber der sein, dass die 2 Z-Achsen unabhängig voneinander angetrieben sind
      Das würde nichts am G-Code ändern. Für den G-Code gibt es nur 1 Z-Achse, beide Antriebe müssten synchron laufen. An der Steuerung wird am Ausgang für die Z-Achse einfach ein zweiter Treiber angeschlossen.
      Ich prüfe bei 3D Arbeiten, die ja mal schnell viele Stunden dauern, zum Schluß die verlorenen Schritte. Es ist durchaus im Rahmen wenn so ~ ± 20 Schritte verloren werden, das wären während der Laufzeit mal schnell 0.2mm die sich zwischen zwei Spindeln als Differenz aufbauen könnte.
      Wo liegt das Problem die Höhen der Spindeln einmal zu justieren? Das ist doch wesentlich einfacher und vor allem sicherer als das ganze elektronische Gedöns.

      grüße
    • Ich habe das zwar noch nie gemacht, aber ich denke, dass das (mit einigem Aufwand und einem extra Pin am Parallelport) funktionieren sollte.

      Zwei neue HAL-Input-Pins anlegen (Z1 aktiv, Z2 aktiv) und einen Custom-M-Code anlegen, mit dem man diese beiden Ein- und Ausschalten kann.
      Dann den Schritt-Ausgang vom Z-Stepgen im HAL aufteilen und dann je einen mit "Z1 aktiv" und einen mit "Z2 aktiv" UND-verknüpfen. Eins der Ergebnisse geht zum normalen Z-Step am Parallelport und das zweite zum neuen Z2-Step.
      Z-Dir kann bei beiden ja ruhig parallel verkabelt werden.

      Wenn das alles so funktioniert, kannst Du mit den neuen M-Codes die Bewegung der Z-Achsen einzeln ein- und ausschalten. In Axis oder Gmoccapy sollte man auch Knöpfe für's manuelle Ein- und Ausschalten von Z1 und Z2 einbinden können.

      Dann musst Du "nur" noch die das Macro für die Werkzeuglängenvermessung anpassen:
      1. Z2 ausschalten
      2. Z-Vermessen
      3. Z-Home anfahren
      3. Z2 ausschalten
      4. Z1 einschalten
      5. Z-Vermessen
      6. Z-Home anfahren
      7. Z2 einschalten

      Danach sollten beide Z-Achsen auf einer identischen Höhe sein und am Postprozessor brauchst Du auch nichts ändern, da beides über die normale Z-Achse angesteuert wird. Halt nur mit dem Unterschied, dass man beide Achsen einzeln "ausklinken" kann.

      Das Problem mit dem Schrittverlust sehe ich nicht. Wenn Schritte verloren gehen, dann würden sie ja auch mit einer Z-Achse verloren gehen. Nach einem Fräsjob sind dann die beiden Spindeln evtl. etwas unterschiedlich hoch. Aber sie wären dann so oder so nicht mehr auf der richtigen Höhe auch wenn es nur eine Achse wäre. Nach dem Einspannen eines neuen Werkzeugs und neuer Vermessung wären sie allerdings wieder gleich hoch. Und wieso sollte es überhaupt bei Closed-Loop oder Servos Schrittverluste geben?

      Hört sich nach einem interessanten Projekt an,
      Lars
    • Hi Lars,

      das ist eine geniale Antwort und eigentlich "simpel" - da ärgere ich mich, dass ich nicht selbst drauf gekommen bin. Manchmal denkt man einfach zu kompliziert :D

      Es könnte ein interessantes Projekt werden, aktuell ist es zur Hälfte aber noch Spinnerei, schauen wir mal.
      Unterm Strich begeistert mich Linuxcnc aber jetzt schon wieder erneut - diese Flexibilität und "Freiheit" ist einfach genial!
      Gruß

      Andreas