Wenn das, was Sie bekommen, nicht das ist, was Sie erwarten, haben Sie oft nur eine Erfahrung gemacht. Wenn man aus den Erfahrungen lernt, versteht man das Ganze besser. Die Diagnose von Problemen erfolgt am besten durch "Teilen und Herrschen". Damit ist gemeint, dass sich das Problem am schnellsten finden lässt, wenn man jedes Mal 1/2 der Variablen aus der Gleichung entfernen kann. In der realen Welt ist dies nicht immer der Fall, aber es ist normalerweise ein guter Ausgangspunkt.

1. Häufige Probleme

1.1. Stepper bewegt sich einen Schritt

Der häufigste Grund, warum sich ein Schrittmotor bei einer Neuinstallation nicht bewegt, ist, dass die Schritt- und Richtungssignale vertauscht sind. Wenn Sie die Tasten "Tippen vorwärts" und "Tippen rückwärts" abwechselnd drücken und der Schrittmotor sich jedes Mal um einen Schritt und in dieselbe Richtung bewegt, haben Sie einen Anhaltspunkt.

1.2. Keine Stepper bewegen sich

Viele Laufwerke haben einen Freigabe-Pin oder benötigen eine Ladungspumpe, um den Ausgang zu aktivieren.

1.3. Abstand nicht korrekt

Wenn Sie der Achse befehlen, sich um eine bestimmte Strecke zu bewegen, und sie sich nicht um diese Strecke bewegt, dann ist Ihre Maßstabseinstellung falsch.

2. Fehlermeldungen

2.1. Folgender Fehler

Das Konzept des Schleppfehlers ist seltsam, wenn es um Schrittmotoren geht. Da sie ein Open-Loop-System sind, gibt es keine Positionsrückmeldung, um Sie wissen zu lassen, wenn Sie tatsächlich außerhalb des Bereichs sind. LinuxCNC berechnet, ob es mit der Bewegung mithalten kann, und wenn nicht, dann gibt es einen der folgenden Fehler. Folgende Fehler sind in der Regel das Ergebnis einer der folgenden auf Stepper-Systeme.

  • FERROR zu klein (engl. FERROR too small)

  • MIN_FERROR zu klein (engl. MIN_FERROR too small)

  • MAX_VELOCITY zu schnell (engl. MAX_VELOCITY too fast)

  • MAX_ACCELERATION zu schnell (engl. MAX_ACCELERATION too fast)

  • BASE_PERIOD zu lang eingestellt (engl. BASE_PERIOD set too long)

  • Zu einer Achse hinzugefügtes Umkehrspiel (engl. Backlash added to an axis)

Jeder der oben genannten Punkte kann dazu führen, dass das Echtzeit-Pulsing nicht in der Lage ist, die geforderte Schrittrate einzuhalten. Dies kann passieren, wenn Sie den Latenztest nicht lange genug durchgeführt haben, um einen guten Wert für den StepConf Wizard zu erhalten, oder wenn Sie die maximale Geschwindigkeit oder die maximale Beschleunigung zu hoch eingestellt haben.

Wenn Sie Umkehrspiel hinzufügten, müssen Sie die STEPGEN_MAXACCEL bis zu doppelt so hoch wie die MAX_ACCELERATION in dem AXIS Abschnitt der INI-Datei setzen für jede Achse, für die Sie ein Umkehrspiel erhöhten. LinuxCNC verwendet "zusätzliche Beschleunigung" bei Richtungswechsel, um das Umkehrspiel zu kompensieren. Ohne die Spiel-Korrektur kann die Beschleunigung des Schritt-Generators nur ein paar Prozent über der des Bewegungsplaners liegen.

2.2. RTAPI-Fehler

Wenn Sie diese Fehlermeldung erhalten:

RTAPI: ERROR: Unerwartete Echtzeitverzögerung bei Aufgabe n (engl. Unexpected realtime delay on task n)

Dieser Fehler wird von rtapi auf der Grundlage eines Hinweises von RTAI erzeugt, dass eine Frist verpasst wurde. Dies ist in der Regel ein Hinweis darauf, dass die BASE_PERIOD im Abschnitt [EMCMOT] der ini-Datei zu niedrig eingestellt ist. Sie sollten den Latenztest über einen längeren Zeitraum durchführen, um festzustellen, ob bei Ihnen Verzögerungen auftreten, die dieses Problem verursachen könnten. Wenn Sie den StepConf-Assistenten verwendet haben, führen Sie ihn erneut aus, testen Sie den Basisperioden-Jitter erneut und passen Sie den maximalen Basisperioden-Jitter auf der Seite mit den grundlegenden Maschineninformationen an. Möglicherweise müssen Sie den Test über einen längeren Zeitraum laufen lassen, um herauszufinden, ob eine bestimmte Hardware intermittierende Probleme verursacht.

LinuxCNC verfolgt die Anzahl der CPU-Zyklen zwischen den Aufrufen des Echtzeit-Threads. Wenn ein Element Ihrer Hardware verursacht Verzögerungen oder Ihre Echtzeit-Threads zu schnell eingestellt sind, werden Sie diesen Fehler erhalten.

Anmerkung
Dieser Fehler wird nur einmal pro Sitzung angezeigt. Wenn Sie Ihre BASE_PERIOD zu niedrig angesetzt haben, könnten Sie Hunderttausende von Fehlermeldungen pro Sekunde erhalten, wenn mehr als eine angezeigt würde.

3. Testen

3.1. Schritt-Timing

Wenn Sie feststellen, dass eine Achse über mehrere Bewegungen hinweg an der falschen Stelle landet, ist es wahrscheinlich, dass Sie die Richtungshaltezeiten oder das Schritt-Timing für Ihre Stepper-Treiber nicht korrekt eingestellt haben. Bei jedem Richtungswechsel kann ein Schritt oder mehr verloren gehen. Wenn die Motoren blockieren, ist es auch möglich, dass Sie entweder die MAX_ACCELERATION oder MAX_VELOCITY für diese Achse zu hoch eingestellt haben.

Mit dem folgenden Programm wird die Konfiguration der Z-Achse auf ihre korrekte Einstellung geprüft. Kopieren Sie das Programm in Ihr Verzeichnis \~/emc2/nc_files und nennen Sie es TestZ.ngc oder ähnlich. Nullen Sie Ihre Maschine mit Z = 0,000 auf der Tischplatte. Laden Sie das Programm und führen Sie es aus. Es wird 200 Bewegungen von 0,5 bis 1" machen. Wenn Sie ein Konfigurationsproblem haben, werden Sie feststellen, dass die Endposition nicht bei 0,500" endet, wie es das Achsenfenster anzeigt. Um eine andere Achse zu testen, ersetzen Sie einfach die Z-Achse durch die gewünschte Achse in den G0-Zeilen.

( Testprogramm, um zu sehen, ob die Z-Achse ihre Position verliert )
( msg, Test 1 der Z-Achsenkonfiguration )
G20 #1000=100 ( iteriere 100 mal )
( diese Schleife hat Verzögerungen nach den Bewegungen )
( testet Beschleunigungs- und Geschwindigkeitseinstellungen )
o100 while [#1000]
   G0 Z1.000
   G4 P0.250
   G0 Z0.500
   G4 P0.250
   #1000 = [#1000 - 1]
o100 endwhile
( msg, Test 2 der Z-Achsenkonfiguration S zum Fortfahren)
M1 (hier anhalten)
#1000=100 ( Schleife 100 mal )
( die nächste Schleife hat keine Verzögerungen nach den Bewegungen )
( testet die Richtungshaltezeiten in der Treiberkonfiguration und auch die maximale Beschleunigungseinstellung )
o101 while [#1000]
   G0 Z1.000
   G0 Z0.500
   #1000 = [#1000 - 1]
o101 endwhile
( msg, Done...Z sollte genau .5" über dem Tisch liegen )
M2