In diesem Beispiel wird erklärt, wie die heute auf dem Markt befindlichen MPG-Hängegeräte angeschlossen werden können. In diesem Beispiel wird ein MPG3-Pendant und eine C22-Pendant-Schnittstellenkarte von CNC4PC verwendet, die an einen zweiten parallelen Port angeschlossen ist, der in den PCI-Steckplatz gesteckt wird. Dieses Beispiel bietet Ihnen 3 Achsen mit 3 Schrittweiten von 0,1, 0,01, 0,001

Fügen Sie in Ihrer Datei custom.hal oder jog.hal Folgendes hinzu, wobei Sie sicherstellen müssen, dass Sie nicht bereits mux4 oder einen Encoder verwenden. Falls doch, erhöhen Sie einfach die Anzahl und ändern Sie die Referenznummern. Weitere Informationen über mux4 und encoder finden Sie im HAL-Handbuch oder in der Manpage.

Weitere Informationen zum Hinzufügen einer HAL-Datei finden Sie im Abschnitt INI HAL der Dokumentation. Für jedes Gelenk und alle Koordinatenbuchstaben sind Jog-Management-Pins vorgesehen. In diesem Beispiel werden die Achsen-Jogging-Pins für das Jogging im Weltmodus verwendet. Bei Maschinen mit nicht-identischen Kinematiken müssen möglicherweise zusätzliche Verbindungen für das Jogging im Gelenkmodus verwendet werden.

jog.hal
# Jog Pendant
loadrt encoder num_chan=1
loadrt mux4 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters base-thread
addf mux4.0 servo-thread

# Wenn Ihr MPG ein Quadratursignal pro Klick ausgibt, setzen Sie x4 auf 1.
# Wenn Ihr MPG 1 Impuls pro Klick ausgibt, setzen Sie x4 auf 0
setp encoder.0.x4-mode 0

# Für den Geschwindigkeitsmodus, auf 1 setzen.
# Im Geschwindigkeitsmodus hält die Achse an, wenn der Drehknopf gestoppt wird.
# auch wenn das bedeutet, dass die befohlene Bewegung nicht abgeschlossen ist,
# Für den Positionsmodus (die Voreinstellung), setzen Sie auf 0.
# Im Positionsmodus bewegt sich die Achse bei jeder Zählung genau jog-scale viele
# Einheiten für jede Zählung, unabhängig davon, wie lange das dauern könnte,
setp axis.x.jog-vel-mode 0
setp axis.y.jog-vel-mode 0
setp axis.z.jog-vel-mode 0

# Hier wird die Skala festgelegt, die auf der Grundlage des Eingangs am mux4 verwendet wird.
setp mux4.0.in0 0.1
setp mux4.0.in1 0.01
setp mux4.0.in2 0.001

# Die Eingänge der Komponente mux4
net scale1 mux4.0.sel0 <= parport.1.pin-09-in
net scale2 mux4.0.sel1 <= parport.1.pin-10-in

# Die Ausgabe des mux4 wird an jede Achsen-Jog-Skala gesendet
net mpg-scale <= mux4.0.out
net mpg-scale => axis.x.jog-scale
net mpg-scale => axis.y.jog-scale
net mpg-scale => axis.z.jog-scale

# Die MPG Eingänge
net mpg-a encoder.0.phase-A <= parport.1.pin-02-in
net mpg-b encoder.0.phase-B <= parport.1.pin-03-in

# The Achsen-Auswahl Eingänge
net mpg-x axis.x.jog-enable <= parport.1.pin-04-in
net mpg-y axis.y.jog-enable <= parport.1.pin-05-in
net mpg-z axis.z.jog-enable <= parport.1.pin-06-in

# Der Encoder-Ausgang zählt für die Achse. Nur die ausgewählte Achse wird sich bewegen.
net encoder-counts  <= encoder.0.counts
net encoder-counts => axis.x.jog-counts
net encoder-counts => axis.y.jog-counts
net encoder-counts => axis.z.jog-counts

Wenn die Maschine zu einer hohen Beschleunigung fähig ist, um die Bewegungen für jeden Klick des MPG zu glätten, verwenden Sie die Komponente ilowpass, um die Beschleunigung zu begrenzen.

jog.hal mit ilowpass
loadrt encoder num_chan=1
loadrt mux4 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters base-thread
addf mux4.0 servo-thread

loadrt ilowpass
addf ilowpass.0 servo-thread

setp ilowpass.0.scale 1000
setp ilowpass.0.gain 0.01

# Wenn Ihr MPG ein Quadratursignal pro Klick ausgibt, setzen Sie x4 auf 1.
# Wenn Ihr MPG 1 Impuls pro Klick ausgibt, setzen Sie x4 auf 0
setp encoder.0.x4-mode 0

# Für den Geschwindigkeitsmodus, auf 1 setzen.
# Im Geschwindigkeitsmodus hält die Achse an, wenn der Drehknopf gestoppt wird.
# auch wenn das bedeutet, dass die befohlene Bewegung nicht abgeschlossen ist,
# Für den Positionsmodus (die Voreinstellung), setzen Sie auf 0.
# Im Positionsmodus bewegt sich die Achse bei jeder Zählung genau jog-scale viele
# Einheiten für jede Zählung, unabhängig davon, wie lange das dauern könnte,
setp axis.x.jog-vel-mode 0
setp axis.y.jog-vel-mode 0
setp axis.z.jog-vel-mode 0

# Hier wird die Skalierung festgelegt, die auf der Grundlage des Eingangs zum mux4 verwendet wird.
# Die hier verwendete Skalierung muss mit der ilowpass-Skala multipliziert werden
setp mux4.0.in0 0.0001
setp mux4.0.in1 0.00001
setp mux4.0.in2 0.000001

# Die Eingänge der Komponente mux4
net scale1 mux4.0.sel0 <= parport.1.pin-09-in
net scale2 mux4.0.sel1 <= parport.1.pin-10-in

# Die Ausgabe des Encoder counts (engl. für Zählerstand) wird an ilowpass gesendet.
net mpg-out ilowpass.0.in <= encoder.0.counts

# Die Ausgabe des mux4 wird an jede Achsen-Jog-Skala gesendet
net mpg-scale <= mux4.0.out
net mpg-scale => axis.x.jog-scale
net mpg-scale => axis.y.jog-scale
net mpg-scale => axis.z.jog-scale

# Die MPG Eingänge
net mpg-a encoder.0.phase-A <= parport.1.pin-02-in
net mpg-b encoder.0.phase-B <= parport.1.pin-03-in

# The Achsen-Auswahl Eingänge
net mpg-x axis.x.jog-enable <= parport.1.pin-04-in
net mpg-y axis.y.jog-enable <= parport.1.pin-05-in
net mpg-z axis.z.jog-enable <= parport.1.pin-06-in

# Die Ausgabe des ilowpasses wird an jede Achsen-Jog-Zählung gesendet
# Nur die ausgewählte Achse wird verschoben.
net encoder-counts  <= ilowpass.0.out
net encoder-counts => axis.x.jog-counts
net encoder-counts => axis.y.jog-counts
net encoder-counts => axis.z.jog-counts