SYNOPSIS
loadrt stepgen step_type=type0[,type1…] [ctrl_type=type0[,type1…]] [user_step_type=,…]
BESCHREIBUNG
stepgen is used to control stepper motors. The maximum step rate depends on the CPU and other factors, and is usually in the range of 5 kHz to 25 kHz. If higher rates are needed, a hardware step generator is a better choice.
stepgen has two control modes, which can be selected on a channel by channel basis using ctrl_type. Possible values are "p" for position control, and "v" for velocity control. The default is position control, which drives the motor to a commanded position, subject to acceleration and velocity limits. Velocity control drives the motor at a commanded speed, again subject to accel and velocity limits. Usually, position mode is used for machine axes. Velocity mode is reserved for unusual applications where continuous movement at some speed is desired, instead of movement to a specific position. (Note that velocity mode replaces the former component freqgen.)
stepgen can control a maximum of 16 motors. The number of motors/channels actually loaded depends on the number of type values given. The value of each type determines the outputs for that channel. Position or velocity mode can be individually selected for each channel. Both control modes support the same 16 possible step types.
Der bei weitem häufigste Schritttyp ist 0, Standardschritt und Richtung. Zu den anderen gehören Auf/Ab, Quadratur und eine Vielzahl von drei-, vier- und fünfphasigen Mustern, die zur direkten Steuerung einiger Motorwicklungen verwendet werden können. (Natürlich nur in Verbindung mit geeigneten Puffern.)
Einige der Stepping-Typen werden im Folgenden beschrieben. Weitere Einzelheiten (einschließlich Timing-Diagrammen) finden Sie im Abschnitt stepgen des HAL-Referenzhandbuchs.
- Typ 0: Schritt/Richtung (engl. step/direction)
-
Zwei Pins, einer für den Schritt und einer für die Richtung. make-pulses muss für jeden Schritt mindestens zweimal ausgeführt werden (einmal, um den Schritt-Pin auf true zu setzen, einmal, um ihn zu löschen). Dies begrenzt die maximale Schrittgeschwindigkeit auf die Hälfte (oder weniger) der Geschwindigkeit, die mit den Typen 2-14 erreicht werden kann. Mit den Parametern steplen und stepspace kann die maximale Schrittgeschwindigkeit weiter verringert werden. Die Parameter dirsetup und dirhold gelten auch für diesen Schritttyp.
- Typ 1: auf/ab
-
Zwei Stifte, einer für step up und einer für step down. Wie Typ 0 muss make-pulses zweimal pro Schritt laufen, was die Höchstgeschwindigkeit begrenzt.
- Typ 2: Quadratur
-
Zwei Stifte, Phase-A und Phase-B. Bei der Vorwärtsbewegung führt A vor B. Kann jedes Mal, wenn make-pulses läuft, um einen Schritt weitergehen.
- Typ 3: dreiphasig, Vollschritt
-
Drei Stifte, Phase-A, Phase-B und Phase-C. Drei Schritte pro vollem Zyklus, dann Wiederholungen. Es ist immer nur eine Phase hoch - bei der Vorwärtsbewegung ist das Muster A, dann B, dann C, dann wieder A.
- Typ 4: dreiphasig, halbe Stufe
-
Drei Stifte, Phasen A bis C. Sechs Schritte pro vollem Zyklus. Zuerst ist A allein hoch, dann A und B zusammen, dann B allein, dann B und C zusammen usw.
- Typen 5 bis 8: vier Phasen, Vollschritt
-
Vier Stifte, Phasen A bis D. Vier Schritte pro vollem Zyklus. Die Typen 5 und 6 eignen sich für unipolare Stepper, bei denen der mittlere Abgriff jeder Wicklung mit Strom versorgt wird und vier Open-Collector-Transistoren die Enden ansteuern. Die Typen 7 und 8 eignen sich für bipolare Schrittschaltungen, die von zwei H-Brücken angesteuert werden.
- Typen 9 und 10: vierphasig, halbstufig
-
Vier Stifte, Phasen A bis D. Acht Schritte pro Vollzyklus. Typ 9 ist für unipolaren Antrieb und Typ 10 für bipolaren Antrieb geeignet.
- Typen 11 und 12: fünf Phasen, Vollschritt
-
Fünf Stifte, Phasen A bis E. Fünf Schritte pro vollständigem Zyklus. Siehe HAL-Referenzhandbuch für die Muster.
- Typen 13 und 14: fünf Phasen, halbe Stufe
-
Fünf Stifte, Phasen A bis E. Zehn Schritte pro vollem Zyklus. Siehe HAL-Referenzhandbuch für die Muster.
- Typ 15: benutzerdefiniert
-
Dabei wird die durch den Modulparameter user_step_type festgelegte Wellenform verwendet, die bis zu 10 Schritte und 5 Phasen haben kann.
FUNKTIONEN
- stepgen.make-pulses (kein Gleitkomma)
-
Erzeugt die Schrittimpulse unter Verwendung der von update-freq berechneten Informationen. Muss so oft wie möglich aufgerufen werden, um die erreichbare Schrittrate zu maximieren und den Jitter zu minimieren. Wirkt auf alle Kanäle gleichzeitig.
- stepgen.capture-position (verwendet Fließkomma)
-
Erfasst den Positionsrückmeldewert aus dem Hochgeschwindigkeitscode und stellt ihn auf einem Pin zur Verwendung an anderer Stelle im System zur Verfügung. Funktioniert auf allen Kanälen gleichzeitig.
- stepgen.update-freq (verwendet Fließkomma)
-
Nimmt einen Geschwindigkeits- oder Positionsbefehl entgegen und wandelt ihn in eine Form um, die von make-pulses zur Schrittgenerierung verwendet werden kann. Wirkt auf alle Kanäle gleichzeitig.
PINS
- stepgen.N.counts s32 out
-
Die aktuelle Position, in Zählungen, für Kanal I N. Aktualisiert durch Capture-Position.
- stepgen.N.position-fb float out
-
Die aktuelle Position, in Längeneinheiten (siehe Parameter position-scale (Positionsmaßstab). Aktualisiert durch capture-position. Die Auflösung von position-fb ist viel feiner als ein einzelner Schritt. Wenn Sie einzelne Schritte sehen wollen, verwenden Sie counts.
- stepgen.N.enable bit in
-
Aktiviert Ausgabeschritte - wenn false, werden keine Schritte erzeugt.
- stepgen.N.velocity-cmd float in (nur velocity mode)
-
Geforderte Geschwindigkeit, in Längeneinheiten pro Sekunde (siehe Parameter position-scale (Positionsskala)).
- stepgen.N.position-cmd float in (nur im position mode (Positions-Modus))
-
Geforderte Position, in Längeneinheiten (siehe Parameter position-scale (Positionsskala)).
- stepgen.N.step bit out (nur Schritttyp 0)
-
Schrittimpuls-Ausgang.
- stepgen.N.dir bit out (nur Schritttyp 0)
-
Richtungsausgang: niedrig für vorwärts, hoch für rückwärts.
- stepgen.N.up bit out (nur Schritttyp 1)
-
Vorwärtszählender Ausgang, Impulse für Vorwärtsschritte.
- stepgen.N.down bit out (nur Schritttyp 1)
-
Rückwärtszählender Ausgang, Impulse für Rückwärtsschritte.
- stepgen.N.phase-A thru phase-E bit out (nur die Schritttypen 2-14)
-
Ausgangsbits.
Phase-AundPhase-Bsind für die Schritttypen 2-14 vorhanden,Phase-Cfür die Typen 3-14,Phase-Dfür die Typen 5-14 undPhase-Efür die Typen 11-14. Das Verhalten hängt vom gewählten Stufentyp ab.
PARAMETER
- stepgen.N.frequency float ro
-
Die aktuelle Schrittfrequenz in Schritten pro Sekunde für Kanal N.
- stepgen.*N.maxaccel* float rw
-
Der Grenzwert für die Beschleunigung/Verzögerung, in Längeneinheiten pro Sekunde zum Quadrat.
- stepgen.N.maxvel float rw
-
Die maximal zulässige Geschwindigkeit, in Längeneinheiten pro Sekunde. Wenn die angeforderte Höchstgeschwindigkeit mit der aktuellen Kombination aus Skalierung und make-pulses-Fadendauer nicht erreicht werden kann, wird sie auf den höchsten erreichbaren Wert zurückgesetzt.
- stepgen.N.position-scale float rw
-
Die Skalierung für Positionsrückmeldung, Positionssollwert und Geschwindigkeitssollwert, in Schritten pro Längeneinheit.
- stepgen.N.rawcounts s32 ro
-
Die Position in Zählungen, wie von make-pulses+ aktualisiert. (Hinweis: Dieser Wert wird häufiger aktualisiert als der *counts-Pin-)
- stepgen.N.steplen u32 rw
-
Die Länge der Stufenimpulse in Nanosekunden. Gemessen von steigender bis fallender Flanke.
- stepgen.N.stepspace u32 rw (nur Schritt-Typen (engl. step types) 0 und 1)
-
Der minimale Abstand zwischen den Stufenimpulsen, in Nanosekunden. Gemessen von der fallenden Flanke bis zur steigenden Flanke. Die tatsächliche Zeit hängt von der Schrittrate ab und kann viel länger sein. Wenn stepspace gleich 0 ist, kann step in jeder Periode aktiviert werden. Dies kann in Verbindung mit den Auto-Reset-Pins von hal_parport verwendet werden, um einen Schrittimpuls pro Periode auszugeben. In diesem Modus muss steplen auf eine Periode oder weniger eingestellt werden.
- stepgen.N.dirsetup u32 rw (nur Schritt-Typ 0)
-
Die minimale Einrichtungszeit von der Richtung bis zum Schritt, in Nanosekundenperioden. Gemessen von der Richtungsänderung bis zur steigenden Flanke des Schritts.
- stepgen.N.dirhold u32 rw (nur Schritt-Typ 0)
-
Die minimale Haltezeit der Richtung nach dem Schritt, in Nanosekunden. Gemessen von der fallenden Flanke des Schritts bis zum Richtungswechsel.
- stepgen.N.dirdelay u32 rw (nur Schritttypen 1 und höher)
-
Die Mindestzeit zwischen einem Vorwärtsschritt und einem Rückwärtsschritt in Nanosekunden.
TIMING
Es gibt fünf Timing-Parameter zur Steuerung der Ausgangswellenform. Kein Stufentyp verwendet alle fünf, und nur die tatsächlich verwendeten werden nach HAL exportiert. Die Werte dieser Parameter sind in Nanosekunden angegeben, so dass keine Neuberechnung erforderlich ist, wenn sich die Thread-Perioden ändern. In den folgenden Zeitdiagrammen sind sie durch die folgenden Nummern gekennzeichnet:
(1) stepgen.n.steplen
(2) stepgen.n.stepspace
(3) stepgen.n.dirhold
(4) stepgen.n.dirsetup
(5) stepgen.n.dirdelay
Für den Stufentyp 0 werden die Timing-Parameter 1 bis 4 verwendet. Das folgende Zeitdiagramm zeigt die Ausgangswellenformen und was jeder Parameter einstellt.
_____ _____ _____
STEP ____/ \_______/ \_____________/ \______
| | | | | |
Time |-(1)-|--(2)--|-(1)-|--(3)--|-(4)-|-(1)-|
|__________________
DIR ________________________________/
Für Schritttyp 1 werden die Timing-Parameter 1, 2 und 5 verwendet. Das folgende Zeitdiagramm zeigt die Ausgangswellenformen und was jeder Parameter einstellt.
_____ _____
UP __/ \_____/ \________________________________
| | | | |
Time |-(1)-|-(2)-|-(1)-|---(5)---|-(1)-|-(2)-|-(1)-|
|_____| |_____|
DOWN ______________________________/ \_____/ \____
Bei den Schritttypen 2 und höher hängt das genaue Muster der Ausgänge vom Schritttyp ab (eine vollständige Auflistung findet sich im HAL-Handbuch). Die Ausgänge wechseln in einem Mindestabstand von steplen von einem Zustand in einen anderen. Bei einem Richtungswechsel ist die Mindestzeit zwischen dem letzten Schritt in einer Richtung und dem ersten in der anderen Richtung die Summe aus steplen und dirdelay.
SIEHE AUCH
Das HAL-Benutzerhandbuch.