1. Das Beste aus Software Stepping herausholen

Die Erzeugung von Schrittimpulsen in der Software hat einen sehr großen Vorteil - sie ist kostenlos. Nahezu jeder PC verfügt über eine parallele Schnittstelle, die in der Lage ist, die von der Software erzeugten Schrittimpulse auszugeben. Die Software-Schrittimpulse haben jedoch auch einige Nachteile:

  • begrenzte maximale Schrittfrequenz

  • Jitter (variierende zeitliche Abstände) in den erzeugten Impulsen

  • belastet die CPU

In diesem Kapitel finden Sie einige Schritte, die Ihnen dabei helfen können, die besten Ergebnisse aus softwaregenerierten Schritten zu erzielen.

1.1. Führen Sie einen Latenztest durch

Die CPU ist nicht der einzige Faktor, der die Latenzzeit bestimmt. Motherboards, Grafikkarten, USB-Anschlüsse und viele andere Dinge können die Latenz beeinträchtigen. Der beste Weg, um zu wissen, was man von einem PC erwarten kann, ist, die RT-Latenztests durchzuführen.

Führen Sie den Latenztest wie im Kapitel Latenz-Test beschrieben durch.

Während der Test läuft, sollten Sie den Computer "missbrauchen". Bewegen Sie die Fenster auf dem Bildschirm. Surfen Sie im Internet. Kopieren Sie einige große Dateien auf der Festplatte. Spielen Sie etwas Musik ab. Führen Sie ein OpenGL-Programm wie z. B. glxgears aus. Die Idee ist, den PC auf Herz und Nieren zu prüfen, während der Latenztest den schlimmsten Fall ermittelt.

Die letzte Zahl in der Spalte "Max Jitter" ist die wichtigste. Schreiben Sie sie auf - Sie werden sie später brauchen. Sie enthält die schlechteste Latenzmessung während des gesamten Testlaufs. Im obigen Beispiel sind das 6693 Nanosekunden, also 6,69 Mikrosekunden, was hervorragend ist. Allerdings lief das Beispiel nur einige Sekunden lang (es wird jede Sekunde eine Zeile gedruckt). Sie sollten den Test mindestens mehrere Minuten lang durchführen; manchmal tritt die Latenz im schlimmsten Fall nicht sehr oft auf oder nur, wenn Sie eine bestimmte Aktion durchführen. Ich hatte eine Intel-Hauptplatine, welche die meiste Zeit recht gut funktionierte, aber alle 64 Sekunden eine sehr schlechte Latenz von 300 µs hatte. Glücklicherweise ist das behebbar, siehe Fixing SMI issues on the LinuxCNC Wiki

Was bedeuten also die Ergebnisse? Wenn Ihre "Max Jitter"-Zahl weniger als 15-20 Mikrosekunden (15000-20000 Nanosekunden) beträgt, sollte der Computer mit Software-Stepping sehr gute Ergebnisse liefern. Wenn die maximale Latenzzeit eher bei 30-50 Mikrosekunden liegt, können Sie immer noch gute Ergebnisse erzielen, aber Ihre maximale Schrittrate könnte etwas enttäuschend sein, insbesondere wenn Sie Mikroschrittverfahren verwenden oder sehr feine Spindelsteigungen haben. Wenn die Zahlen 100 µs oder mehr (100.000 Nanosekunden) betragen, ist der PC kein guter Kandidat für Software-Stepping. Zahlen über 1 Millisekunde (1.000.000 Nanosekunden) bedeuten, dass der PC ist kein guter Kandidat für LinuxCNC, unabhängig davon, ob Sie Software-Stepping verwenden oder nicht.

Beachten Sie, dass, wenn Sie hohe Zahlen erhalten, es Möglichkeiten geben kann, sie zu verbessern. Zum Beispiel hatte ein PC eine sehr schlechte Latenz (mehrere Millisekunden), wenn er das Onboard-Video verwendete. Aber eine $ 5 gebrauchte Grafikkarte löste das Problem - LinuxCNC benötigt keine modernste Hardware.

1.2. Finden Sie heraus, was Ihre Antriebe erwarten

Verschiedene Marken von Schrittmotorantrieben haben unterschiedliche Zeitanforderungen an ihre Schritt- und Richtungseingänge. Sie müssen also das Datenblatt mit den technischen Daten Ihres Antriebs heraussuchen (oder danach googeln).

Aus dem Handbuch des Gecko G202:

Schrittfrequenz: 0 bis 200 kHz
Schrittimpuls "0" Zeit: 0.5µs min (Schritt bei fallender Flanke)
Schrittimpuls "1" Zeit: 4.5 µs min
Richtung Setup: 1 µs min (20 µs min Haltezeit nach Schrittflanke)

Aus dem Gecko G203V Handbuch:

Schrittfrequenz: 0 bis 333 kHz
Schrittimpuls "0" Zeit: 2.0 µs min (Schritt bei steigender Flanke)
Schrittimpuls "1" Zeit: 1.0 µs min

Direction Setup:
    200 ns (0.2 µs) before step pulse rising edge
    200 ns (0.2 µs) hold after step pulse rising edge

Aus dem Xylotex-Datenblatt:

Minimale DIR-Setup-Zeit vor steigender Flanke des STEP-Impulses 200 ns Minimale
DIR-Haltezeit nach steigender Flanke des STEP-Pulses 200 ns
Minimale STEP-Impuls-Hochzeit 2,0 µs
Minimale STEP-Impuls-Low-Zeit 1,0 µs
Schritt erfolgt bei steigender Flanke

Wenn Sie die Zahlen gefunden haben, notieren Sie sie ebenfalls - Sie brauchen sie im nächsten Schritt.

1.3. Wählen Sie Ihren BASE_PERIOD

BASE_PERIOD ist der Herzschlag Ihres LinuxCNC Computers. Jede Periode, die Software-Schritt-Generator entscheidet, ob es Zeit für einen weiteren Schritt Impuls ist. Eine kürzere Periode ermöglicht es Ihnen, mehr Impulse pro Sekunde, innerhalb von Grenzen zu erzeugen. Aber wenn Sie zu kurz gehen, wird Ihr Computer so viel Zeit damit verbringen, Schrittimpulse zu erzeugen, dass alles andere zu einem Kriechgang verlangsamen wird, oder vielleicht sogar sperren. Die Latenzzeit und die Anforderungen an die Schrittmotorsteuerung beeinflussen die kürzeste Periode, die Sie verwenden können, wie wir gleich sehen werden.

Schauen wir uns zuerst das Gecko-Beispiel an. Der G202 kann Schrittimpulse verarbeiten, die 0,5 µs lang auf low und 4,5 µs lang auf high gehen. Der Richtungs-Pin muss 1 µs vor der fallenden Flanke stabil sein und nach der fallenden Flanke 20 µs lang stabil bleiben. Die längste Zeitanforderung ist die Haltezeit von 20 µs. Ein einfacher Ansatz wäre, die Periode auf 20 µs zu setzen. Das bedeutet, dass alle Änderungen an den STEP- und DIR-Leitungen durch 20 µs getrennt sind. Alles ist gut, oder?

Falsch! Wenn es NULL Latenz gäbe, dann wären alle Kanten durch 20 µs getrennt, und alles wäre in Ordnung. Aber alle Computer haben eine gewisse Latenz, d.h. mit Verzögerung. Wenn der Computer eine Latenz von 11 µs hat, bedeutet das, dass die Software manchmal 11 µs später läuft, als sie eigentlich sollte. Wenn ein Durchlauf der Software 11 µs zu spät ist und der nächste pünktlich erfolgt, beträgt die Verzögerung vom ersten zum zweiten Durchlauf nur 9 µs. Wenn der erste Durchlauf einen Schrittimpuls erzeugte und der zweite das Richtungsbit änderte, haben Sie gerade die G202-Haltezeitanforderung von 20 µs verletzt. Das bedeutet, dass Ihr Antrieb möglicherweise einen Schritt in die falsche Richtung gemacht hat, und Ihr Teil hat die falsche Größe.

Das wirklich Unangenehme an diesem Problem ist, dass es sehr selten auftreten kann. Im schlimmsten Fall treten Latenzen nur ein paar Mal pro Minute auf, und die Wahrscheinlichkeit, dass eine schlechte Latenz genau dann auftritt, wenn der Motor die Richtung ändert, ist gering. So kommt es zu sehr seltenen Fehlern, die hin und wieder ein Werkstück ruinieren und eine Fehlerbehebung unmöglich machen.

Der einfachste Weg, dieses Problem zu vermeiden, besteht darin, eine BASE_PERIOD zu wählen, die der Summe aus der längsten Zeitanforderung Ihres Laufwerks und der schlimmsten Latenz Ihres Computers entspricht. Wenn Sie einen Gecko mit einer Haltezeitanforderung von 20 µs betreiben und Ihr Latenztest eine maximale Latenz von 11 µs ergab, dann können Sie, wenn Sie die BASE_PERIOD auf 20+11 = 31 µs (31000 Nanosekunden in der INI-Datei) setzen, die Timing-Anforderungen des Laufwerks garantiert erfüllen.

Aber es gibt einen Kompromiss. Für einen Stufenimpuls sind mindestens zwei Perioden erforderlich. Eine, um den Impuls zu starten, und eine, um ihn zu beenden. Da die Periode 31 µs beträgt, dauert es 2x31 = 62 µs, um einen Schrittimpuls zu erzeugen. Das bedeutet, dass die maximale Schrittfrequenz nur 16.129 Schritte pro Sekunde beträgt. Das ist nicht so gut. (Aber geben Sie noch nicht auf, wir müssen im nächsten Abschnitt noch einige Optimierungen vornehmen.)

Beim Xylotex sind die Setup- und Haltezeiten mit jeweils 200 ns (0,2 µs) sehr kurz. Die längste Zeit ist die 2-µs-High-Zeit. Wenn Sie eine Latenzzeit von 11 µs haben, dann können Sie die BASE_PERIOD auf 11+2=13 µs einstellen. Die lange Haltezeit von 20 µs entfällt, was sehr hilfreich ist! Bei einer Periode von 13 µs dauert ein kompletter Schritt 2x13 = 26 µs, und die maximale Schrittrate beträgt 38.461 Schritte pro Sekunde!

Aber Sie können noch nicht mit dem Feiern anfangen. Beachten Sie, dass 13 µs ein sehr kurzer Zeitraum ist. Wenn Sie versuchen, die Schritt-Generator alle 13 µs laufen, könnte es nicht genug Zeit übrig, um etwas anderes laufen, und Ihr Computer wird einfrieren. Wenn Sie für Zeiträume von weniger als 25 µs anstreben, sollten Sie bei 25 µs oder mehr beginnen, führen Sie LinuxCNC, und sehen, wie die Dinge reagieren. Wenn alles gut ist, können Sie allmählich den Zeitraum zu verringern. Wenn der Mauszeiger beginnt immer träge, und alles andere auf dem PC verlangsamt, ist Ihr Zeitraum ein wenig zu kurz. Gehen Sie zurück zu dem vorherigen Wert, der den Computer reibungslos laufen lässt.

Nehmen wir an, Sie haben mit 25 µs begonnen und versuchen, auf 13 µs zu kommen, aber Sie stellen fest, dass 16 µs die Grenze sind - bei weniger reagiert der Computer nicht sehr gut. Sie verwenden also 16 µs. Bei einer Periode von 16 µs und einer Latenzzeit von 11 µs ist die kürzeste Ausgabezeit 16-11 = 5 µs. Das Laufwerk braucht nur 2 µs, also haben Sie etwas Spielraum. Ein gewisser Spielraum ist gut, denn Sie wollen keine Schritte verlieren, weil Sie das Timing zu knapp gewählt haben.

Was ist die maximale Schrittgeschwindigkeit? Denken Sie daran, zwei Perioden für einen Schritt. Sie haben sich auf 16 µs für die Periode geeinigt, also dauert ein Schritt 32 µs. Das ergibt nicht schlechte 31.250 Schritte pro Sekunde.

1.4. Verwenden Sie steplen, stepspace, dirsetup und/oder dirhold

Im letzten Abschnitt haben wir das Xylotex-Laufwerk auf eine Zeitspanne von 16 µs und eine maximale Geschwindigkeit von 31.250 Schritten pro Sekunde gebracht. Aber der Gecko blieb bei 31 µs und nicht ganz so schönen 16.129 Schritten pro Sekunde stecken. Das Xylotex-Beispiel ist so gut, wie wir es machen können. Aber der Gecko kann noch verbessert werden.

Das Problem mit dem G202 ist die erforderliche Haltezeit von 20 µs. Das plus die 11 µs Latenzzeit ist das, was uns zwingt, eine langsame 31 µs Periode zu verwenden. Aber die LinuxCNC Software-Schritt-Generator hat einige Parameter, mit denen Sie die verschiedenen Zeit von einer Periode auf mehrere zu erhöhen. Zum Beispiel, wenn steplen von 1 auf 2 geändert wird, dann wird es zwei Perioden zwischen dem Beginn und dem Ende des Schrittimpulses sein. Wenn dirhold von 1 auf 3 geändert wird, liegen mindestens drei Perioden zwischen dem Schrittimpuls und einem Wechsel des Richtungspins.

Wenn wir dirhold verwenden können, um die Anforderung von 20 µs Haltezeit zu erfüllen, dann ist die nächstlängere Zeit die 4,5 µs "high time". Addiert man die Latenzzeit von 11 µs zu der "high-time" von 4,5 µs, so erhält man eine Mindestzeit von 15,5 µs. Wenn Sie 15,5 µs ausprobieren, stellen Sie fest, dass der Computer zu träge ist, also entscheiden Sie sich für 16 µs. Wenn wir dirhold auf 1 belassen (die Voreinstellung), dann ist die Mindestzeit zwischen Schritt und Richtung die 16 µs Periode minus die 11 µs Latenzzeit = 5 µs, was nicht ausreicht. Wir brauchen weitere 15 µs. Da die Periode 16 µs beträgt, brauchen wir eine weitere Periode. Also ändern wir dirhold von 1 auf 2. Jetzt beträgt die Mindestzeit vom Ende des Schrittimpulses bis zum Richtungswechsel 5+16=21 µs, und wir müssen uns keine Sorgen mehr machen, dass der Gecko wegen der Latenz die falsche Richtung einschlägt.

Wenn der Computer eine Latenzzeit von 11 µs hat, dann stellt eine Kombination aus einer Basisperiode von 16 µs und einem Dirhold-Wert von 2 sicher, dass wir die Timing-Anforderungen des Gecko immer erfüllen. Bei normalem Steppen (ohne Richtungswechsel) hat der erhöhte dirhold-Wert keine Auswirkung. Es werden zwei Perioden von insgesamt 32 µs für jeden Schritt benötigt, und wir haben die gleiche Schrittrate von 31.250 Schritten pro Sekunde wie beim Xylotex.

Die in diesem Beispiel verwendete Latenzzeit von 11 µs ist sehr gut. Wenn Sie diese Beispiele mit einer größeren Latenzzeit, z. B. 20 oder 25 µs, durcharbeiten, wird die Spitzenschrittrate sowohl für den Xylotex als auch für den Gecko niedriger sein. Es gelten jedoch dieselben Formeln für die Berechnung der optimalen BASE_PERIOD und für die Anpassung der Dirhold- oder anderer Schrittgeneratorparameter.

1.5. Nicht raten!

Um ein schnelles UND zuverlässiges softwarebasiertes Steppersystem zu erhalten, können Sie die Perioden und andere Konfigurationsparameter nicht einfach erraten. Sie müssen auf Ihrem Computer Messungen vornehmen und die Berechnungen durchführen, um sicherzustellen, dass Ihre Antriebe die benötigten Signale erhalten.

Um die Berechnungen zu vereinfachen, habe ich eine Open Office-Tabelle Step Timing Calculator erstellt. Sie geben das Ergebnis Ihres Latenztests und die Anforderungen an die Schrittmotorsteuerung ein, und die Kalkulationstabelle berechnet die optimale BASE_PERIOD. Anschließend testen Sie die Periode, um sicherzustellen, dass sie Ihren PC nicht verlangsamt oder blockiert. Schließlich geben Sie die tatsächliche Periode ein, und die Kalkulationstabelle zeigt Ihnen die Stepgen-Parametereinstellungen an, die erforderlich sind, um die Timing-Anforderungen Ihres Antriebs zu erfüllen. Es berechnet auch die maximale Schrittrate, die Sie erzeugen können.

Ich habe der Tabelle ein paar Dinge hinzugefügt, um die maximale Geschwindigkeit und die elektrischen Berechnungen der Stepper zu berechnen.