CNC Teil4 - Setup
Dies ist der vierte Teil meiner Reihe über Portalfräsmaschinen. Er konzentriert sich auf das Zusammenspiel von Hardware und Software, sodass mein fertig aufgebauter “Zerspanobert” bald im Produktivbetrieb arbeiten kann.
- Teil 1: Gedanken zu Portalfräsmaschinen und ihre Auslegung für den (ambitionierten) Hobbybereich
- Teil 2: CNC Elektrik / Elektronik
- Teil 3: Zusammenbau
- Teil 4.1: Konfiguration der Software
- Teil 5: Makros für die CNC
Kinematik
Bevor die CNC-Software auf meiner BasicLine 0607 arbeiten kann, muss sie korrekt eingerichtet werden. Sie muss die Verfahrbereiche der Maschinenachsen kennen und wissen, wo sich die Referenzschalter befinden. Außerdem ist relevant, in welche Richtung die Schrittmotoren gedreht werden müssen, um eine “positive/negative” Achsenbewegung zu erreichen.
In einem ersten Schritt muss entschieden werden, wie die Achsen der Maschine benannt werden (X, Y, Z), wo alle Achsen tatsächlich 0 sein sollen, und in welche Richtung die Bewegung gehen soll (positiv, negativ). Alle diese Koordinatenpunkte sind relativ und können willkürlich gewählt werden, aber es gibt einige Konventionen in der CNC-Welt:
Achsen:
- Die X-Achse liegt auf dem Portalbett und bewegt die Y-Achse des Portals.
- Die Y-Achse befindet sich oben auf dem Portal und bewegt die Z-Achsen-Baugruppe.
- Die Z-Achse befindet sich an der Spindel und bewegt diese auf- und abwärts.
Maschinen-Nullpunkt
Maschinen- Nullpunkt und -Bewegungsrichtung:
- X-0 befindet sich auf der “hinteren” Seite der Achse. Die Bewegungsrichtung ist negativ.
- Y-0 befindet sich auf der “linken” Seite der Achse. Die Bewegungsrichtung ist positiv.
- Z-0 befindet sich auf der “oberen” Seite der Achse. Die Bewegungsrichtung ist negativ.
Für meine Maschine (sie ist breiter als lang), ihre Zugänglichkeit und den Raum, den ich zur Verfügung habe, habe ich die Achsen umgelegt. Bei mir ist die X-Achse die lange Achse des Portals und die Y-Achse befindet sich parallel zur Linearschine, die das Portal hält. Vom Arbeitstisch aus betrachtet ist der Maschinen-Nullpunkt bei mir also “hinten links oben”. Also bewegt sich Z in negative Richtung, Y ebenfalls, nur X geht zu positiven Werten.
Verwirrend, nicht wahr? Ist aber kein Problem, denn später arbeitet man kaum mehr mit Maschinenkoordinaten ;)
Bewegungsrichtungen
Für die Konfiguration habe ich meine CNC-Software Link zu EdingCNC mit der Maschine verbunden. An ihr erkläre ich das Vorgehen, was bei anderen Steuerungsprogrammen im Kern aber ähnlich funktioniert. In de Setup-Ansicht gebe ich die Anzahl Schritte ein, die vom Motor zu gehen sind, bis sich die Achse um einen Millimeter bewegt: 16 Mikroschritte/Schritt
multipliziert mit 200 Schritten/Motorumdrehung
geteilt durch 10mm/spindelumdrehung
= 320 Mikroschritte/mm
. Für die Z-Achse wird der Wert durch die bei mir engere Gewindespindel verdoppelt.
Die 16 Mikroschritte/Schritt ist der Standardwert, welcher von meinem Maschinenhersteller vorgeschlagen wurde. Es gibt ein paar gute Argumente und eine tiefgehende Analyse hier darüber, dass man Microstepping so wenig wie möglich verwenden sollte. Da ich weder eine Genauigkeit von 1µm erreichen muss, noch die Schrittmotoren bei meiner Anwendung sehr hohe Drehmomente bewältigen müssen, sollte das aber kein Thema sein.
Ohne vorher eine Referenzfahrt durchzuführen (die sowieso nicht funktionieren würde), habe ich die Maschine per Pfeiltasten vorsichtig verfahren, um zu sehen, welche Taste welche Achse in welche Richtung bewegt. Da mein Setup vom “Normal” abweicht, können die von mir gewählten Werte individuell ausfallen. Wenn eine Achse nicht mit der Pfeiltaste übereinstimmt (wenn ich z.B. “rechts” drücke und erwarte, dass sich meine X-Achse nach rechts bewegt, aber die Z-Achse tatsächlich nach unten geht), so konnte ich die Motoranschlüsse am Schaltkasten vertauschen, bis die Tasten mit den erwarteten Achsen übereinstimmten.
Wenn die Tasten die Maschine nun in die falsche Richtung bewegen - ich drücke z.B: “Bild abwärts) aber die Z-Achse bewegt sich nach oben, würde ich das Vorzeichen der Motorschrittauflösung ändern - Nicht besonders intuitiv, was? Ich habe auch ein paar Foreneinträge durchsuchen müssen, bevor ich das raus hatte.
Dies kam nun dabei heraus:
X-axis -320.000
Y-axis 320.000
Z-axis -640.000
Grenzen der Maschinenbewegung
Meine Maschine hat einen nutzbaren mechanischen Verfahrweg von 0 / 732mm
in X-Richtung, -654mm / 0
in Y-Richtung, und -134mm / 0
in Z-Richtung. Diese Werte habe ich in die Maske für negative limit
/ positive limit
eingegeben und die Vorzeichen auf Basis der Bewegungsrichtung relativ zum Maschinennullpunkt eingestellt.
Referenzschalter: Triggerpegel
Die Achsen der meisten Maschinen haben einen Referenzschalter. Diese Schalter werden verwendet, um die Maschine zu “referenzieren”. Die Referenzfahrt ist bei jedem Start der Maschine erforderlich, da die Software intern nur die XYZ-Position durch Akkumulation der Motorschritte ermittelt. Sobald das System neu gestartet wird, gehen alle diese Werte auf 0 zurück, so dass die Maschine ihre Position vergisst.
Ich habe meine Schalter so angeschlossen, dass sie “normalerweise geschlossen” sind: Ihre Kontakte sind stromführend, wenn sie nicht ausgelöst werden. Auf diese Weise kann eine fehlerhafte, offene Verbindung sofort erkannt werden, da die Maschine in diesem Fall (erfolglos) mit einer ungewöhnlich niedrigen Geschwindigkeit anfahren würde: homeVelocitySlow
ist in meiner Konfiguration nur 1/10 der normalen Fahrgeschwindigkeit für das Anfahren der Nullpunkte. Trotzdem müssen wir sicherstellen, dass der Referenzfahrt-Kontakt richtig interpretiert wird. Dies kann im Abschnitt “Homing and E-Stop” des “Setup”-Bildschirms eingestellt werden. Ich gebe also eine “1” für “Normalerweise geschlossen” ein.
Referenzschalter: Position
Einige CNC-Maschinen bieten eine Positioniersteuerung mit geschlossenem Regelkreis - sie benötigen keine Referenzschalter, da ihre Motoren mit Positionsgebern ausgestattet sind, die die absolute Position jeder Achse zurückmelden. Diese Maschinen verlieren keine Schritte und sind in der Lage, Positionierungsfehler zu erkennen, die z. B. durch mechanische Überlastung verursacht werden. Man nennt solche Motoren meist Servos.
Mit Hilfe des Referenzschalters kann eine Maschine ohne geregelte Positionierung - wie meine - ihre Schrittzahl an einer bekannten Position zurücksetzen, so dass die Achsbewegung wiederholbar wird. Allerdings muss die Position des Referenzschalters bekannt sein, um die Schrittzählung korrekt den Achsenpositionen zuzuordnen, und deshalb müssen wir die Positionen der Referenzschalter an den Achsen eingeben. Ich habe mit Vorsicht beobachtet, wie weit ich die Maschine nach dem Auslösen des Referenzschalters weiter verfahren kann, bevor ich an das mechanische Ende einer Achse stoße (Menü “Jog”). Dies sind die Werte, die ich schließlich für meine Maschine eingegeben habe:
Steps/AppUnit
X-axis: 10mm
Y-axis: -4mm
Z-axis: -16mm
Not-Aus
Der Not-Aus ist ein weiterer Eingang für die CNC-Software und -Hardware. Durch Drücken dieses Schalters wird die Achsenbewegung gestoppt und im Zuge dessen sowohl Spindel, Kühlschmierstoffzufuhr als auch Hilfsstromkreise deaktiviert. Er ist auch “normal geschlossen” verdrahtet, um Verbindungsprobleme zu erkennen, und kann wie ein Referenzschalter konfiguriert werden.
Wenn der Not-Aus-Schalter aktiviert wurde, müssen die Treiber der Maschine zurückgesetzt und die Maschine erneut referenziert werden, bevor sie nach dem Loslassen der Taste wieder normal arbeiten kann.
Das Not-Aus Signal wird nicht nur an die Software gemeldet, sondern sorgt auf der Steuerplatine selbst für das Abfallen der entsprechenden Relais, sodass die Maschine in den sicheren Zustand gebracht werden kann.
Bewegungsparameter der Achsen
Die CNC-Software muss wissen, wie sie die Bewegung der Maschinenachsen richtig handhaben muss: Eine schwerere und steifere Maschine mit starken Schrittmotoren wird natürlich schneller verfahren und starke Beschleunigungen sowie ruckartige Bewegungen besser bewältigen können als weichere, leichtere Maschinen. Aus diesem Grund sollten die Bewegungsparameter Ihrer Maschine sorgfältig ermittelt und in der Software hinterlegt werden.
Achsgeschwindigkeit
“Warum sollte Zerspanobert schnell sein?” habe ich mich gefragt. Mir fielen nicht allzu viele gute Antworten ein, da die normalen Vorschubgeschwindigkeiten mit den geplanten Schaftfräsern weit unter den Möglichkeiten der Maschine liegen werden. Aber egal, hier sind einige Argumente, eine Maschine schnell verfahren zu lassen:
- die Arbeitszeiten sollten nicht zu lang werden
- lange Verfahrwege, die mit einer großen Maschine zurückzulegen sind
- beim Schneiden weicher Materialien mit geringer Dichte können die Vorschübe viel höher sein
Wollen Sie noch immer eine schnelle Maschine? Einige Berechnungen helfen uns hier weiter.
Bestimmung der Fähigkeiten der Bewegungselektronik
Die maximale Geschwindigkeit wird durch mehrere Faktoren begrenzt:
Parameter | Symbol | Wert | Einheit |
---|---|---|---|
maximale Antriebsfrequenz | fD | 125 | kHz |
Mikroschritt-Einstellung des Antriebs | N | 16 | |
max. Software-Frequenz | fS | 125 | kHz |
Schrittzahl/Umdrehung | nS | 200 | |
Schrittmotor max. Drehzahl | nSm | 3300 | 1/min |
Kugelgewindebreite | P | 0,01 | m |
Kugelumlaufspindel max. Drehzahl | nLm | 1700 | 1/min |
Nehmen wir ein Beispiel für einen 125-kHz-Treiber und nehmen wir an, dass die Software diese Schrittfrequenz unterstützt. Nehmen wir weiter an, dass die Motoren 200 Schritte/Umdrehung haben und der Treiber auf 16 Mikroschritte/Schritt konfiguriert ist.
Damit erreicht man eine Maximaldrehzahl der Kugelumlaufspindel von \(\frac{125000}{3200} = 39\) Umdrehungen pro Sekunde oder 2340 U/min
, was für einen Schrittmotor echt zügig ist. Auf einer Kugelumlaufspindel mit 10mm
Gewindeweite führt das zu einer theoretischen Verfahrgeschwindigkeit von 23.4m/min
, was auf einer kleinen Maschine wie meiner unglaublich schnell aussieht.
Achtung! Korrekturen / Updates weiter unten
Grenzen der Mechanik
Gut, dann schauen wir mal, ob die Kugelumlaufspindeln dieses Tempo mitgehen. Die auf meiner Maschine verbaute Serie KGS16
hat eine ungestützte Strecke von ~850mm
zwischen den Lagern auf der langen Achse. Aus der Online-Dokumenation des Herstellers entnehme ich hierbei eine maximale Drehzahl von 1700U/min
.
Damit bleiben 70% von der anfänglichen Maximalgeschwindigkeit übrig: 17m/min
. Immer noch echt flink.
Nun wissen wir aber, dass das Moment der Schrittmotore bei steigender Geschwindigkeit abnimmt. Wenden wir unseren Blick mal dorthin:
Genügend Motormoment?
Der blaue Pfeil markiert meinen Zielvorschub zum Schruppen in Holz. Hier habe ich ordentlich Drehmoment zur Verfügung um auch tiefe Nuten in einem Durchgang fertigen zu können. Selbst bei schnellen Schlichtdurchläufen oder sehr weichen Materialien (grüner Pfeil) habe ich noch fast 50% des maximalen Drehmoments zur Verfügung. Um noch genügend Luft bis zur kritischen Drehzahl der Kugelumlaufspindel zu haben, wähle ich eine maximale Geschwindigkeit für den Eilgang (G0
) von 12m/min = 200mm/sek
. An diesem Punkt sind von den ursprünglich 3Nm
nur noch 0.7Nm
verfügbar.
Mit dieser Konfiguration habe ich eine recht schnelle Maschine bei genügend Luft zu kritischen Werten.
Beschleunigungen
Stellen Sie sich vor, Sie möchten in einem Ihrer Programme einen 90°-Winkel bei einem Vorschub von 12m/min
fahren. Ähnlich wie bei dem Versuch, eine sehr enge Kurve auf dem Fahrrad zu nehmen, ist dies nicht bei hoher Geschwindigkeit möglich. Man muss erst auf eine Geschwindigkeit herunterbremsen, bei der die Kurve gefahrlos genommen werden kann und danach wieder hochbeschleunigen.
Wenn wir bei der Maschine nicht bereit sind zu warten, bis eine Achse quasi zum Stillstand gekommen ist bevor die andere losfährt, schneiden wir die Ecke rund. Wenn wir jedoch bremsen, ist unsere Bahngeschwindigkeit nicht mehr konstant - ein Dilemma. Um hier einen möglichst guten Kompromiss zu erreichen, ist die Ermittlung einer passenden Maschinenbeschleunigung wichtig.
Auf dem Fahrrad vermeidet man beim Bremsen bewusst das Blockieren eines Rades, um die Stabilität nicht zu gefährden. Auf der CNC gilt wieder um Ähnliches: Hinreichend hohe Beschleunigungen erreichen, ohne Schrittverlust, unnötige Schwingungen, Verklemmung / Blockade einer Achse, starke Rucke oder Torsion zu riskieren. Zudem möchten wir Maschinenverschleiß minimieren.
Klingt schwierig? Ist machbar, benötigt aber etwas Mathematik und Gefühl.
Kurven zeichnen: vmax = 200mm/s
, a=400mm/s^2
Das Video oben illustriert den Sachverhalt: Bei Kanten und engen Kurven bremst die Maschine merklich ab um den Richtungswechsel hinzubekommen.
Motivation
Warum möchte ich, dass Zerspanobert hohe Beschleunigungswerte unterstützt? Ein paar meiner Antworten: Meine Projekte haben oft eine Menge kurzer Liniensegmente und 2.5D-Arbeiten. Die Formen sind komplex und die G-Code Dateien zumeist recht lang. Daher verwende ich auch den Look-Ahead Feed G64
mit 0.1mm
erlaubter Abweichung vom Pfad.
Außerdem möchte ich möglichst lange mit konstanter Geschwindigkeit durch das Material fahren. So vermeide ich Stellen, an denen das Material heißer wird als nötig. Nicht zuletzt will ich natürlich nicht unnötig viel Zeit an der Maschine verbringen - Die Maschine arbeitet mit höheren Beschleunigungswerten einfach deutlich schneller; dies wirkt sich bei meinen Projekten sogar stärker aus als ein noch flinkerer Eilgang.
Determine maximum acceleration formula
Dann ermitteln wir mal den maximal möglichen Wert für die Maschinenbeschleunigung.
- Newtons zweites Gesetz (axiale Bewegung): \(F_{ax} = m_pa\)
- Drehmoment an der Achse: \(M_a = \frac{a J}{P}\)
- Trägheitsmoment der Achse (Zylinder): \(J = m \frac{a}{2}r^2\)
- Benötigtes Motormoment für die Linearbewegung: \(M_d =\frac{F_{ax} P}{2 \pi \eta} + M_a\)
Wenn ich diese Formeln kombiniere, erhalte ich für die Beschleunigung:
\[a = \frac{M_d}{\frac{m_p P}{2 \pi \eta} + \frac{J}{P}}\]In Worten: Die höchste Beschleunigung, die die Maschine theoretisch erreichen kann, ist das verfügbare Motormoment \(M_d\) geteilt durch die Masse des Portals \(m_p\), gewichtet mit spezifischen Parametern der Kugelumlaufspindel wie Gewindespreizung \(P\) und Wirkungsgrad des bewegten Systems \(\eta\) zuzüglich des Trägheitsmoment \(J\) der rotierenden Komponenten, wiederung gewichtet durch die Gewindespreizung.
Working with values
Setzen wir mal ein paar Werte ein - meine BasicLine 0607:
Parameter | Symbol | Wert | Einheit |
---|---|---|---|
Stepper torque @ vmax | Md | 0.5 | Nm |
Portalmasse | mp | 40 | kg |
Spreizung Gewindespindel | P | 0.01 | m |
Radius Gewindespindel | r | 0.008 | m |
Rotierende Masse | ma | 4 | kg |
Wirkungsgrad der Bewegung | n | 75 | % |
Wo ich keine exakten Werte zur Verfügung hatte, habe ich worst-case Annahmen getroffen. Beim Schrittmotor z.B. meine Maximalgeschwindigkeit bei geringster Versorgungsspannung. Auch das Gewicht der rotierenden Masse (Spindel, Kupplung, Rotor und Achse des Motors) habe ich geschätzt sowie den Wirkungsgrad von Kugelumlaufspindel, Lagern und Linearführungen.
Dies ist mein Ergebnis (Trommelwirbel):
\[a = 5.0m/s^2\]Was dieser Wert bedeutet
Wie lange benötigt die Maschine, um auf Höchstgeschwindigkeit zu beschleunigen? Nehmen wir unser Physikwissen aus der Sekundarstufe: gleichmäßig beschleunigte Bewegung
\[v(t) = at \Rightarrow t = \frac{v_{max}}{a} = 40ms\]Wie groß ist der Weg, den wir dabei zurücklegen (\(s_0 = 0, v_0 = 0\))?
\[s(t) = \frac{a}{2}t^2 + v_0t + s0 \Rightarrow s(t=40ms) = 4mm\]Welche Axialkräfte wirken dabei auf das Portal ein? \(F_{ax} = m_pa = 200N\)
Die von mir hier errechnete Beschleunigung ist mehr als eine Größenordnung über der Empfehlung des Herstellers von 300mm/s^2
. Ich habe mich da deutlich verschätzt.
🤔 Ich muss etwas übersehen haben.
Zusammenfassung: Erfahrung zählt!
Die Formeln oben berücksichtigen weder die Steifheit der Maschine noch Ruck, Torsion oder auftretende Schwingungen unter dynamischer Last. Was ein “Ruck” im CNC-Kontext darstellt? Dieses kurze Youtube-Video klärt auf. Meine Steuersoftware jedoch verfügt nicht über eine Ruckbegrenzung.
Obwohl ich viel darüber gelernt habe, wie man sich mit Hilfe der Mathematik eine Einordnung der Parameter ermöglicht, läuft alles wieder auf die Erfahrung hinaus:
- Wie schwer und stabil ist die Maschine?
- Mit welcher Art von Material arbeite ich: Ist es nachgiebig oder steif?
- Habe ich komplexe oder möglicherweise langwierige Fräsaufgaben zu erledigen?
- Arbeitet meine CNC in einer Produktionsumgebung, in der die Maschinenzeit wichtig ist?
- Wie klingt und fühlt sich die CNC bei hohen Beschleunigungswerten an?
Ich habe einen Wert von 800 mm/s^2 als Beschleunigung für die X- und Y-Achse eingegeben. Das schien ohne Probleme zu funktionieren. Immerhin bleibt er um den Faktor 6 unter der berechneten Fähigkeit des Bewegungssystems.
Ausprobieren
Ich weiß, das war eine lange Lektüre und viel mehr eine fundierte Vermutung als eine strenge Berechnung 😅. Trotzdem sind wir jetzt bereit, die Maschine das erste Mal in Betrieb zu nehmen. Probieren Sie es aus. Gehen Sie danach im manuellen Betrieb auf allen Achsen auf auf den Maschinennullpunkt. Hält sie an, bevor sie den mechanischen Endstopp erreicht?
Verwenden Sie dann den kontinuierlichen Tippbetrieb, um sich dem anderen Ende aller Achsen anzunähern. Bewegen Sie vorsichtig die letzten Millimeter. Sind alle Messungen und Einstellungen korrekt?
Wenn ja, versuchen Sie es mit der 100%-Geschwindigkeitstaste (Shift
- auf meiner Tastatur). Bewegt sich die CNC schnell und stoppt automatisch am Achsenende ohne Kollision?
Herzlichen Glückwunsch!
Rechner für maximale Bewegungseinstellungen
Sie haben tapfer den ganzen Artikel gelesen. Als Belohnung habe ich ein kleines Excel-Tool vorbereitet: CNC kinematics helper, das Sie herunterladen und verwenden können, um Schätzungen für Ihre Maschine zu berechnen. Natürlich kann ich keine Verantwortung für die Ergebnisse übernehmen, die Sie bei der Verwendung dieses Tools erhalten. Selbiges gilt für Schäden, die falsche Werte verursachen können.
Update
Ich habe nochmal mit den maximalen Geschwindigkeits- und Beschleunigungswerten für meine Maschine herumgespielt.
300mm/s
war zu schnell und ich bekam Software-Limit Verletzungsfehler. Bei 240mm/s
hat meine Maschine stark vibriert. Also habe ich die Höchstgeschwindigkeit bei 220mm/s
belassen, was in Ordnung zu sein scheint.
Außerdem habe ich die Beschleunigung auf 1200mm/s^2
erhöhen können. Das einzige Problem mit diesem neuen Wert ist, dass die Maschine bei kurzen Bewegungen ein bisschen schwingt. Wenn die Beschleunigung abgeschlossen ist, wird alles wieder ruhiger. Schauen wir mal, ob sich das auf die Bearbeitungsqualität auswirkt.
Update 2
Die obige Berechnung ist zwar mathematisch nicht falsch, aber sie ist irreführend. Sie suggeriert, dass jede Achse mit dieser Geschwindigkeit laufen könnte, was einfach nicht der Fall ist. Ich habe mir vom Anbieter der Steuerungssoftware für meine Maschine bestätigen lassen, dass die 125kHz die maximale Befehlsfrequenz des Systems sind. Wenn ich versuche, höhere Geschwindigkeiten zu fahren, erhalte ich die Fehlermeldung “Velocity was higher than max!”.
Deshalb sollte ein so hoher Geschwindigkeitswert nicht verwendet werden, wenn die Maschine mit mehreren Achsen gleichzeitig im Eilgang läuft. Ich habe einen Folgeartikel verfasst und hier zur Information verlinkt. Dort verwende ich Werte, die stabil in jeder Situation funktionieren, auch wenn alle Achsen mit voller Geschwindigkeit gleichzeitig betrieben werden.