1. Einführung

The preferred way to set up a standard stepper machine is with the Step Configuration Wizard. See the Stepper Configuration Wizard Chapter.

This chapter describes some of the more common settings for manually setting up a stepper based system. These systems are using stepper motors with drives that accept step & direction signals.

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.

Most of this chapter is based on a sample config released along with LinuxCNC. The config is called stepper_inch, and can be found by running the Configuration Picker.

2. Maximale Schrittgeschwindigkeit

With software step generation, the maximum step rate is one step per two BASE_PERIODs for step-and-direction output. The maximum requested step rate is the product of an axis' MAX_VELOCITY and its INPUT_SCALE. If the requested step rate is not attainable, following errors will occur, particularly during fast jogs and G0 moves.

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

One of the major flaws in EMC was that you couldn’t specify the pinout without recompiling the source code. EMC2 was far more flexible, and thus now in LinuxCNC (thanks to the Hardware Abstraction Layer) you can easily specify which signal goes where. See the HAL Basics for more information on 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 sie kurz zu halten, 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

Depending on what you have chosen in your INI file you are using either standard_pinout.hal or xylotex_pinout.hal. These are two files that instruct the HAL how to link the various signals & pins. Further on we’ll investigate the standard_pinout.hal.

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).

  • The read & write functions of the parport driver get assigned to the base thread
    [The fastest thread in the LinuxCNC setup, usually the code gets executed every few tens of microseconds.]
    .

  • 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

If you want to change the standard_pinout.hal file, all you need is a text editor. Open the file and locate the parts you want to change.

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

If external hardware expects an "active low" signal, set the corresponding -invert parameter. For instance, to invert the spindle control signal:

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

This assumes that the spindle controller’s response to PWM is simple: 0% PWM gives 0 RPM, 10% PWM gives 180 RPM, etc. If there is a minimum PWM required to get the spindle to turn, follow the example in the nist-lathe sample configuration to use a scale component.

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

Some amplifiers (drives) require an enable signal before they accept and command movement of the motors. For this reason there are already defined signals called Xen, Yen, Zen.

Um sie zu verbinden, verwenden Sie das folgende Beispiel:

net Xen parport.0.pin-08-out

You can either have one single pin that enables all drives; or several, depending on the setup you have. Note, however, that usually when one axis faults, all the other drives will be disabled as well, so having only one enable signal / pin for all drives is a common practice.

3.7. Externe NOTAUS (engl, ESTOP)-Taste

The standard_pinout.hal file assumes no external ESTOP button. For more information on an external E-Stop see the estop_latch man page.