1. Einführung

Die bevorzugte Methode zum Einrichten einer Standard-Maschine mit Schrittmotoren (engl. stepper machine) ist der Stepper-Konfigurations-Assistent (engl. stepper configuration wizard). Siehe das Kapitel Stepper-Konfigurations-Assistenz.

In diesem Kapitel werden einige der gängigsten Einstellungen für die manuelle Einrichtung eines schrittmotorbasierten Systems beschrieben. Diese Systeme verwenden Schrittmotoren mit Antrieben, die Schritt- und Richtungssignale akzeptieren.

Es ist eines der einfacheren Systeme, da die Motoren im offenen Regelkreis laufen (keine Rückmeldung von den Motoren), aber das System muss richtig konfiguriert werden, damit die Motoren nicht abgewürgt werden oder Schritte verlieren.

Der größte Teil dieses Kapitels basiert auf einer Beispielkonfiguration, die zusammen mit LinuxCNC veröffentlicht wurde. Die Konfiguration heißt stepper_inch, und kann durch Ausführen der Konfigurations-Auswahl (engl. configuration picker) gefunden werden.

2. Maximale Schrittgeschwindigkeit

Bei der Software-Schrittgenerierung beträgt die maximale Schrittrate einen Schritt pro zwei BASE_PERIODs für die Schritt- und Richtungsausgabe. Die maximal geforderte Schrittgeschwindigkeit ist das Produkt aus MAX_VELOCITY und INPUT_SCALE einer Achse. Wenn die geforderte Schrittgeschwindigkeit nicht erreicht werden kann, kommt es zu folgenden Fehlern, insbesondere bei Eilgängen und G0-Bewegungen.

Wenn Ihr Stepper-Treiber Quadratur-Eingänge akzeptieren kann, verwenden Sie diesen Modus. Mit einem Quadratursignal ist ein Schritt pro BASE_PERIOD möglich, wodurch sich die maximale Schrittrate verdoppelt.

Andere Abhilfemaßnahmen sind die Verringerung einer oder mehrerer der folgenden Einstellungen: BASE_PERIOD (eine zu niedrige Einstellung führt dazu, dass die Maschine nicht mehr reagiert oder sogar blockiert), INPUT_SCALE (wenn Sie verschiedene Schrittgrößen auf Ihrem Stepper-Treiber auswählen können, das Verhältnis der Riemenscheiben oder die Spindelsteigung ändern) oder MAX_VELOCITY und STEPGEN_MAXVEL.

Wenn keine gültige Kombination von BASE_PERIOD, INPUT_SCALE und MAX_VELOCITY akzeptabel ist, dann sollten Sie die Hardware-Schritterzeugung in Betracht ziehen (z. B. mit den von LinuxCNC unterstützten Universal Stepper Controller, Mesa-Karten und anderen).

3. Pinbelegung

Einer der größten Mängel in EMC war, dass man die Pinbelegung nicht ohne Neukompilierung des Quellcodes angeben konnte. EMC2 war viel flexibler, und jetzt in LinuxCNC (dank der Hardware Abstraction Layer) können Sie leicht angeben, welches Signal welchen Weg nimmt. Siehe die HAL Grundlagen für weitere Informationen über HAL.

Wie in der HAL-Einführung und im Tutorial beschrieben, haben wir Signale, Pins und Parameter innerhalb des HAL.

Anmerkung
Wir stellen nur eine Achse vor, um uns kurz zu fassen, alle anderen sind ähnlich.

Die für unsere Pinbelegung relevanten sind:

Signale: Xstep, Xdir & Xen
Pins: parport.0.pin-XX-out & parport.0.pin-XX-in

Je nachdem, was Sie in Ihrer INI-Datei ausgewählt haben, verwenden Sie entweder standard_pinout.hal oder xylotex_pinout.hal. Dies sind zwei Dateien, die den HAL anweisen, wie die verschiedenen Signale & Pins zu verbinden sind. Weiter unten werden wir uns mit der standard_pinout.hal beschäftigen.

3.1. Standard-Pinbelegung HAL

Diese Datei enthält mehrere HAL-Befehle und sieht normalerweise wie folgt aus:

# Standard-Pinout-Konfigurationsdatei für 3-Achsen-Stepper
# Verwendung eines Parports für E/A
#
# zuerst den Parport-Treiber laden
loadrt hal_parport cfg="0x0378"
#
# als nächstes die Parport-Funktionen mit den Threads verbinden
# lese zuerst die Eingänge
addf parport.0.read base-thread 1
# Ausgaben zuletzt schreiben
addf parport.0.write base-thread -1
#
#  schließlich physische Pins mit den Signalen verbinden Netz
net Xstep => parport.0.pin-03-out
net Xdir  => parport.0.pin-02-out
net Ystep => parport.0.pin-05-out
net Ydir  => parport.0.pin-04-out
net Zstep => parport.0.pin-07-out
net Zdir  => parport.0.pin-06-out

# Signal für den Estop-Loopback erzeugen
net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in

# Signale für die Werkzeugladeschleife erzeugen
net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed

# "spindle on" Bewegungssteuerungs-Pin mit einem physischen Pin verbinden
net spindle-on spindle.0.on => parport.0.pin-09-out

###
### Sie könnten etwas wie das folgende verwenden, um Chopper-Antriebe zu aktivieren, wenn die Maschine eingeschaltet ist
### Das Xen-Signal wird in core_stepper.hal definiert.
###

# net Xen => parport.0.pin-01-out

###
### Wenn Sie für diesen Pin einen aktiven low-Wert wünschen, invertieren Sie ihn wie folgt:
###

# setp parport.0.pin-01-out-invert 1

###
### Ein Beispiel für einen Referenzschalter (engl. home switch) an der X-Achse (Achse 0). Erzeugen Sie ein Signal,
### verbinden Sie den eingehenden Parport-Pin mit dem Signal, dann verbinden Sie das Signal
### mit dem LinuxCNC's Achse 0 Referenzschalter Eingabe-Pin.
###

# net Xhome parport.0.pin-10-in => joint.0.home-sw-in

###
### Geteilte Referenzschalter alle zu einem einzelnen parallel port Pin führen?
### Das ist ok, nutzen Sie das gleiche Signal an allen Achsen, aber stellen Sie sicher, dass Sie
### HOME_IS_SHARED und HOME_SEQUENCE in der INI-Datei. setzen.
###

# net homeswitches <= parport.0.pin-10-in
# net homeswitches => joint.0.home-sw-in
# net homeswitches => joint.1.home-sw-in
# net homeswitches => joint.2.home-sw-in

###
### Beispiel für separate Endschalter auf der X-Achse (Achse 0)
###

# net X-neg-limit parport.0.pin-11-in => joint.0.neg-lim-sw-in
# net X-pos-limit parport.0.pin-12-in => joint.0.pos-lim-sw-in

###
### Genau wie beim Beispiel der gemeinsamen Referenzschalter können Sie auch
### Endschalter miteinander verbinden.  Achten Sie darauf, wenn Sie einen auslösen, wird LinuxCNC stoppen,
### kann Ihnen aber nicht sagen, welche Schalter/Achse verantwortlich ist.  Seien Sie vorsichtig, wenn die den Betrieb
### von dieser Extremposition wieder aufnehmen.
###

# net Xlimits parport.0.pin-13-in => joint.0.neg-lim-sw-in joint.0.pos-lim-sw-in

Die Zeilen, die mit # beginnen, sind Kommentare, die lediglich dazu dienen, den Leser durch die Datei zu führen.

3.2. Übersicht

Es gibt eine Reihe von Operationen, die ausgeführt werden, wenn die Datei standard_pinout.hal ausgeführt/interpretiert wird:

  • Der Parallel-Port (kurz Parport)-Treiber wird geladen (siehe das Parport Kapitel für Details).

  • Die Lese- und Schreibfunktionen des Parport-Treibers werden dem Basis-Thread zugewiesen
    [Der schnellste Thread im LinuxCNC-Setup, normalerweise wird der Code alle paar zehn Mikrosekunden ausgeführt.]
    .

  • Die Schritt & Richtungssignale für die Achsen X, Y, Z werden mit Pins auf dem Parport verbunden.

  • Weitere I/O-Signale werden angeschlossen (Notaus Loopback, Werkzeugwechsler Loopback).

  • Ein Spindel-Ein-Signal wird definiert und mit einem Parport-Pin verbunden.

3.3. Ändern der Datei standard_pinout.hal

Wenn Sie die Datei standard_pinout.hal ändern möchten, benötigen Sie lediglich einen Texteditor. Öffnen Sie die Datei und suchen Sie die Teile, die Sie ändern möchten.

Wenn Sie z.B. den Pin für die X-Achse Step & Directions (engl. für Schritt & Richtung) Signale ändern wollen, müssen Sie nur die Nummer im parport.0.pin-XX-out Namen ändern:

net Xstep parport.0.pin-03-out
net Xdir  parport.0.pin-02-out

kann geändert werden in:

net Xstep parport.0.pin-02-out
net Xdir  parport.0.pin-03-out

oder grundsätzlich jeden andere out Pin, die Sie mögen.

Tipp: Achten Sie darauf, dass Sie nicht mehr als ein Signal an denselben Pin anschließen.

3.4. Ändern der Polarität eines Signals

Wenn externe Hardware ein "active low" Signal erwartet, setzen Sie den entsprechenden -invert Parameter. Zum Beispiel, um das Spindelsteuersignal zu invertieren:

setp parport.0.pin-09-invert TRUE

3.5. Hinzufügen einer PWM-Spindeldrehzahlregelung

Wenn Ihre Spindel durch ein PWM-Signal gesteuert werden kann, verwenden Sie die Komponente „pwmgen“, um das Signal zu erzeugen:

loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses base-thread
net spindle-speed-cmd spindle.0.speed-out => pwmgen.0.value
net spindle-on spindle.0.on => pwmgen.0.enable
net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out
setp pwmgen.0.scale 1800 # Change to your spindle's top speed in RPM

Dies setzt voraus, dass die Spindelsteuerung einfach auf PWM reagiert: 0 % PWM ergibt 0 U/min, 10 % PWM ergibt 180 U/min usw. Wenn eine Mindest-PWM erforderlich ist, um die Spindel zum Drehen zu bringen, folgen Sie dem Beispiel in der Beispielkonfiguration nist-lathe und verwenden Sie eine scale Komponente.

3.6. Hinzufügen eines Aktivierungssignals (engl. enable)

Einige Verstärker (Antriebe) benötigen ein Freigabesignal, bevor sie die Bewegung der Motoren akzeptieren und befehlen. Aus diesem Grund gibt es bereits definierte Signale namens Xen, Yen, Zen.

Um sie zu verbinden, verwenden Sie das folgende Beispiel:

net Xen parport.0.pin-08-out

Sie können entweder einen einzigen Pin haben, der alle Antriebe aktiviert, oder mehrere, je nach Ihrer Konfiguration. Beachten Sie jedoch, dass bei einer Störung einer Achse in der Regel auch alle anderen Antriebe deaktiviert werden, so dass nur ein Freigabesignal / Pin für alle Antriebe eine gängige Praxis ist.

3.7. Externe NOTAUS (engl, ESTOP)-Taste

Die Datei standard_pinout.hal geht davon aus, dass keine externe ESTOP-Taste vorhanden ist. Weitere Informationen über einen externen Not-Aus-Schalter finden Sie in der Manpage estop_latch.