1. Einführung
Halui ist eine HAL-basierte Benutzeroberfläche für LinuxCNC, es verbindet HAL-Pins mit NML-Befehlen. Die meisten Funktionen (Schaltflächen, Anzeigen usw.), wie von einer traditionellen GUI (AXIS, GMOCCAPY, QtDragon, etc.) zur Verfügung gestellt, werden von HAL-Pins in Halui übernommen.
Der einfachste Weg, halui hinzuzufügen, besteht darin, das Folgende in den [HAL]-Abschnitt der INI-Datei einzufügen:
[HAL] HALUI = halui
Ein alternativer Weg, es aufzurufen (besonders, wenn Sie die Konfiguration mit StepConf erzeugen), ist, das Folgende in Ihre custom.hal
-Datei aufzunehmen.
Stellen Sie sicher, dass Sie den richtigen Pfad zu Ihrer INI-Datei verwenden.
loadusr halui -ini /path/to/inifile.ini
2. MDI
Manchmal möchte der Benutzer kompliziertere Aufgaben hinzufügen, die durch die Aktivierung eines HAL-Pins ausgeführt werden sollen. Dies ist durch Hinzufügen von MDI-Befehlen in die INI-Datei im Abschnitt [HALUI] möglich. Beispiel:
[HALUI] MDI_COMMAND = G0 X0 MDI_COMMAND = G0 G53 Z0 MDI_COMMAND = G28 MDI_COMMAND = o<mysub>call ...
Wenn halui startet, liest es die ‚MDI_COMMAND‘-Felder in der INI und exportiert Pins von 00 bis zur Anzahl der `MDI_COMMAND’s, die in der INI gefunden wurden, bis zu einem Maximum von 64 Befehlen. Diese Pins können wie alle HAL-Pins angeschlossen werden. Eine gängige Methode ist die Verwendung von Schaltflächen, die von virtuellen Bedienfeldern bereitgestellt werden, wie im Beispiel für MDI_COMMAND Verbindungen gezeigt.
net quill-up halui.mdi-command-00 <= pyvcp.quillup net reference-pos halui.mdi-command-01 <= pyvcp.referencepos net call-mysub halui.mdi-command-02 <= pyvcp.callmysub
halui.mdi-command-NN
-Pins.$ halcmd show pin halui.mdi Component Pins: Owner Type Dir Value Name 10 bit IN FALSE halui.mdi-command-00 <== quill-up 10 bit IN FALSE halui.mdi-command-01 <== reference-pos 10 bit IN FALSE halui.mdi-command-02 <== call-mysub ...
Wenn ein Halui-MDI-Pin auf true gesetzt (gepulst) wird, sendet halui den in der INI definierten MDI-Befehl. Dies wird je nach aktuellem Betriebsmodus nicht immer gelingen (z.B. während in AUTO halui MDI-Befehle nicht erfolgreich senden kann).
3. Beispiel-Konfiguration
Eine Beispiel-Sim-Konfiguration (configs/sim/axis/halui_pyvcp/halui.ini
) ist in der Distribution enthalten.
4. Halui-Pin-Referenz
Alle halui-Pins sind auch in der halui-Manualseite dokumentiert:
$ man halui
4.1. Abbrechen
-
halui.abort' (bit, in) - Pin zum Senden einer Abbruchmeldung (löscht die meisten Fehler)
4.2. Notaus (engl. E-Stop)
-
halui.estop.activate' (bit, in) - Pin für die Anforderung des Notausschalters
-
halui.estop.is-activated' (Bit, out) - zeigt an, dass der Not-Aus-Schalter zurückgesetzt wurde
-
halui.estop.reset' (bit, in) - Pin für die Anforderung eines Not-Aus-Resets
4.3. Vorschub Neufestsetzung (engl. override)
-
halui.feed-override.count-enable (bit, in) - muss wahr sein, damit counts oder direct-value funktioniert.
-
halui.feed-override.counts (s32, in) - counts * scale = FO percentage. Kann mit einem Encoder oder direct-value verwendet werden.
-
halui.feed-override.decrease (bit, in) - Pin zum Verringern des FO (-=Skala)
-
halui.feed-override.increase (bit, in) - Pin zur Erhöhung des FO (+=Skala)
-
halui.feed-override.reset (bit, in) - Pin zum Zurücksetzen des FO (scale=1.0)
-
halui.feed-override.direct-value (bit, in) - falsch, wenn der Encoder verwendet wird, um die Anzahl zu ändern, wahr, wenn die Anzahl direkt eingestellt wird.
-
halui.feed-override.scale (float, in) - Pin zum Einstellen der Skala für die Erhöhung und Verringerung des feed-override.
-
halui.feed-override.value (float, out) - aktueller FO-Wert
4.4. Nebel (engl. mist)
-
halui.mist.is-on (bit, out) - zeigt an, dass Nebel eingeschaltet ist
-
halui.mist.off (bit, in) - Pin zum Anfordern von Nebel
-
halui.mist.on' (bit, in) - Pin zur Abfrage von Nebel ein
4.5. Flut-Kühlmittel (engl. flood)
-
halui.flood.is-on (bit, out) - zeigt an, dass die Flut an ist
-
halui.flood.off (bit, in) - Pin zum Anforderung des Ausschaltens der Flut
-
halui.flood.on (bit, in) - Pin für die Anforderung für das Einschalten der Flut
4.6. Referenzfahrt (engl. homing)
-
halui.home-all (bit, in) - Pin zum Anfordern einer Referenzfahrt aller Achsen. Dieser Pin ist nur vorhanden, wenn HOME_SEQUENCE in der INI-Datei festgelegt ist.
4.7. Maschine
-
halui.machine.units-per-mm' (float out) - Pin für Maschineneinheiten-pro-mm (inch:1/25.4, mm:1) entsprechend der inifile-Einstellung: [TRAJ]LINEAR_UNITS
-
halui.machine.is-on' (bit, out) - zeigt an, dass die Maschine eingeschaltet ist
-
halui.machine.off (bit, in) - Pin zum Anfordern der Maschinen-Abschaltung
-
halui.machine.on (bit, in) - Pin zum Anfordern der Maschinen-Einschaltung
4.8. Max. Geschwindigkeit
Die maximale lineare Geschwindigkeit kann zwischen 0 und der MAX_VELOCITY eingestellt werden, die im Abschnitt [TRAJ] der INI-Datei festgelegt ist.
-
halui.max-velocity.count-enable (bit, in) - muss true sein, damit counts oder direct-value funktionieren.
-
halui.max-velocity.counts (s32, in) - counts * scale = MV percentage. Kann mit einem Encoder oder direct-value verwendet werden.
-
halui.max-velocity.direct-value (bit, in) - false bei Verwendung des Encoders zum Ändern der Anzahl, true beim direkten Festlegen von Zählungen.
-
halui.max-velocity.decrease (bit, in) - Pin zur Verringerung der maximalen Geschwindigkeit
-
halui.max-velocity.increase (bit, in) - Pin zur Erhöhung der maximalen Geschwindigkeit
-
halui.max-velocity.scale (float, in) - der Betrag, der auf die aktuelle maximale Geschwindigkeit bei jedem Übergang von Aus zu Ein des An- oder Abnahmestiftes in Maschineneinheiten pro Sekunde angewendet wird.
-
halui.max-velocity.value (float, out) - ist die maximale lineare Geschwindigkeit in Maschineneinheiten pro Sekunde.
4.9. MDI
-
halui.mdi-command-<nn>' (bit, in) - halui versucht, den in der INI-Datei definierten MDI-Befehl zu senden. <nn> ist eine zweistellige Zahl, die bei 00 beginnt.
Wenn das Kommando erfolgreich ist, dann wird es LinuxCNC in den MDI-Modus setzen und dann zurück in den manuellen Modus.
Wenn keine [HALUI]MDI_COMMAND Variablen in der INI-Datei gesetzt sind, werden keine halui.mdi-command-<nn> Pins von halui exportiert. -
halui.halui-mdi-is-running (bit, out) - execution status of MDI commands sent by halui. The status is active even during mode switching. If no [HALUI]MDI_COMMAND variables are set in the ini file, this pins will not be exported by halui.
4.10. Gelenk
N = Gelenknummer (0 … num_joints-1)
Beispiel:
-
halui.joint.N.select (Bit in) - Pin zur Auswahl von Gelenk N
-
halui.joint.N.is-s selected (bit out) – Status-Pin, dass Gelenk N ausgewählt ist
-
halui.joint.N.has-fault (bit out) - Status-Pin, der angibt, dass Gelenk N einen Fehler hat
-
halui.joint.N.home (Bit in) - Pin für Referenzfahrt von Gelenk N
-
halui.joint.N.is-homed (bit out) - Status-Pin, der angibt, dass Gelenk N referenziert ist
-
halui.joint.N.on-hard-max-limit (bit out) - Status-Pin, der anzeigt, dass Gelenk N am positiven Hardware-Limit liegt
-
halui.joint.N.on-hard-min-limit (bit out) - Status-Pin, der anzeigt, dass sich Gelenk N am negativen Hardware-Limit befindet
-
halui.joint.N.on-hard-max-limit (bit out) - Status-Pin, der anzeigt, dass Gelenk N am positiven Hardware-Limit liegt
-
halui.joint.N.on-soft-min-limit (bit out) - Status-Pin, der anzeigt, dass sich Gelenk N an der negativen Softwaregrenze befindet
-
halui.joint.N.override-limits (bit out) - Status-Pin, der angibt, dass die Grenzen von Gelenk N vorübergehend außer Kraft gesetzt werden
-
halui.joint.N.unhome (bit in) - Pin für das Aufheben der Referenzierung von Gelenk N
-
halui.joint.selected (u32 out) - ausgewählte Gelenknummer (0 … num_joints-1
-
halui.joint.selected.has-fault (bit out) - Status-Pin ausgewähltes Gelenk ist fehlerhaft
-
halui.joint.selected.home (Bit in) - Pin für das Homing des ausgewählten Gelenks
-
halui.joint.s selected.is-homed (bit out) - Status-Pin, der angibt, dass das ausgewählte Gelenk referenziert ist
-
halui.joint.selected.on-hard-max-limit (bit out) - Status-Pin, der anzeigt, dass sich das ausgewählte Gelenk auf dem positiven Hardware-Limit befindet
-
halui.joint.selected.on-hard-min-limit (bit out) - Status-Pin, der anzeigt, dass sich das ausgewählte Gelenk am negativen Hardware-Limit befindet
-
halui.joint.s selected.on-soft-max-limit (bit out) - Status-Pin, der angibt, dass sich das ausgewählte Gelenk auf der positiven Softwaregrenze befindet
-
halui.joint.selected.on-soft-min-limit (bit out) - Status-Pin, der anzeigt, dass sich das ausgewählte Gelenk auf dem negativen Software-Limit befindet
-
halui.joint.s selected.override-limits (bit out) - Status-Pin, der angibt, dass die Grenzen des ausgewählten Gelenks vorübergehend außer Kraft gesetzt werden
-
halui.joint.s selected.unhome (bit in) - Pin zum Unhoming des ausgewählten Gelenks
4.11. Gelenk-Joggen
N = Anzahl der Gelenke (0 … num_joints-1)
-
halui.joint.jog-deadband (float in) - Pin zum Einstellen der Jog-Analog-Totzone (Jog-Analogeingänge, die kleiner/langsamer als dieser - im absoluten Wert - sind, werden ignoriert)
-
halui.joint.jog-speed (float in) - Pin zur Einstellung der Jog-Geschwindigkeit für Plus/Minus-Jogging.
-
halui.joint.N.analog (float in) - Pin zum Joggen des Gelenks N mit einem Float-Wert (z. Joystick). Der Wert, der normalerweise zwischen 0,0 und ±1,0 festgelegt ist, wird als Jog-Speed-Multiplikator verwendet.
-
halui.joint.N.increment (float in) - Pin zum Einstellen des Jog-Inkrements für Gelenk N bei Verwendung von increment-plus/minus
-
halui.joint.N.increment-minus (bit in) - eine steigende Kante lässt das Gelenk N um den Inkrementbetrag in die negative Richtung joggen
-
halui.joint.N.increment-plus (bit in) - eine steigende Kante lässt das Gelenk N um den Inkrementbetrag in die positive Richtung joggen
-
halui.joint.N.minus (bit in) - Pin für Jogginggelenk N in negativer Richtung bei der halui.joint.jog-Geschwindigkeitsgeschwindigkeit
-
halui.joint.N.plus (bit in) - Pin für Jogginggelenk N in positiver Richtung bei der halui.joint.jog-Geschwindigkeitsgeschwindigkeit
-
halui.joint.selected.increment (float in) - Pin zum Einstellen des Jog-Inkrements für das ausgewählte Gelenk bei Verwendung von increment-plus/minus
-
halui.joint.s selected.increment-minus (bit in) – eine ansteigende Flanke lässt das ausgewählte Gelenk um den Inkrementbetrag in die negative Richtung joggen
-
halui.joint.selected.increment-plus' (Bit in) - eine steigende Flanke bewirkt, dass das ausgewählte Gelenk um den Betrag des Inkrements in die positive Richtung bewegt wird
-
halui.joint.selected.minus' (bit in) - Pin zum Joggen des ausgewählten Gelenks in negativer Richtung mit der halui.joint.jog-speed Geschwindigkeit
-
halui.joint.selected.plus' (bit in) - Pin für das Joggen des ausgewählten Gelenks in positiver Richtung mit der halui.joint.jog-speed Geschwindigkeit
4.12. Achse
L = Buchstabe der Achse (xyzabcuvw)
-
halui.axis.L.select (Bit) - Pin zur Auswahl der Achse anhand des Buchstaben
-
halui.axis.L.is-selected (Bit out) - Status-Pin, dass die Achse L ausgewählt ist
-
halui.axis.L.pos-commanded (float out) - Befohlene Achsenposition in Maschinenkoordinaten
-
halui.axis.L.pos-feedback float out) - Rückmeldung der Achsposition in Maschinenkoordinaten
-
halui.axis.L.pos-relative (float out) – Rückmeldung der Achsenposition in relativen Koordinaten
4.13. Achsen-Jogging
L = Buchstabe der Achse (xyzabcuvw)
-
halui.axis.jog-deadband (float in) - pin for setting jog analog deadband (jog analog inputs smaller/slower than this (in absolute value) are ignored)
-
halui.axis.jog-speed (float in) - pin for setting jog speed for plus/minus jogging.
-
halui.axis.L.analog (float in) - pin for jogging the axis L using an float value (e.g. joystick). The value, typically set between 0.0 and ±1.0, is used as a jog-speed multiplier.
-
halui.axis.L.increment (float in) - pin for setting the jog increment for axis L when using increment-plus/minus
-
halui.axis.L.increment-minus (bit in) - a rising edge will will make axis L jog in the negative direction by the increment amount
-
halui.axis.L.increment-plus (bit in) - a rising edge will will make axis L jog in the positive direction by the increment amount
-
halui.axis.L.minus (bit in) - pin for jogging axis L in negative direction at the halui.axis.jog-speed velocity
-
halui.axis.L.plus (bit in) - pin for jogging axis L in positive direction at the halui.axis.jog-speed velocity
-
halui.axis.selected (u32 out) - selected axis (by index: 0:x 1:y 2:z 3:a 4:b 5:cr 6:u 7:v 8:w)
-
halui.axis.selected.increment (float in) - pin for setting the jog increment for the selected axis when using increment-plus/minus
-
halui.axis.selected.increment-minus (bit in) - a rising edge will will make the selected axis jog in the negative direction by the increment amount
-
halui.axis.selected.increment-plus (bit in) - a rising edge will will make the selected axis jog in the positive direction by the increment amount
-
halui.axis.selected.minus (bit in) - pin for jogging the selected axis in negative direction at the halui.axis.jog-speed velocity
-
halui.axis.selected.plus (pin in) - for jogging the selected axis bit in in positive direction at the halui.axis.jog-speed velocity
4.14. Modus
-
halui.mode.auto (bit, in) - Pin zum Anfordern des automatischen Modus
-
halui.mode.is-auto (bit, out) - zeigt an, dass der Auto-Modus eingeschaltet ist
-
halui.mode.is-joint (bit, out) - zeigt an, dass der Gelenk-für-Gelenk (engl. joint by joint)-Jogging-Modus eingeschaltet ist
-
halui.mode.is-manual (bit, out) - zeigt an, dass der manuelle Modus eingeschaltet ist
-
halui.mode.is-mdi (bit, out) - zeigt an, dass der MDI-Modus eingeschaltet ist
-
halui.mode.is-teleop (bit, out) - zeigt an, dass der koordinierte Jog-Modus eingeschaltet ist
-
halui.mode.joint (bit, in) - Pin für die Abfrage des Joint-by-Joint-Jog-Modus
-
halui.mode.manual (bit, in) - Pin für die Anforderung des manuellen Modus
-
halui.mode.mdi' (bit, in) - Pin zur Abfrage des MDI-Modus
-
halui.mode.teleop (bit, in) - Pin zum Anfordern des koordinierten Jog-Modus
4.15. Programm
-
halui.program.block-delete.is-on (bit, out) - Status-Pin, der anzeigt, dass Block delete on ist
-
halui.program.block-delete.off (bit, in) - Pin zum Anfordern, dass das Blocklöschen deaktiviert ist
-
halui.program.block-delete.on (bit, in) - Pin zum Anfordern, dass das Blocklöschen aktiviert ist
-
halui.program.is-idle (bit, out) - Status-Pin, die anzeigt, dass kein Programm läuft
-
halui.program.is-paused (bit, out) - Status-Pin, der angibt, dass ein Programm angehalten wurde
-
halui.program.is-running (bit, out) - Status-Pin, der angibt, dass ein Programm ausgeführt wird
-
halui.program.optional-stop.is-on (bit, out) - Status-Pin zur Angabe, dass der optionale Stopp eingeschaltet ist
-
halui.program.optional-stop.off (bit, in) - Pin, der anfordert, dass der optionale Stopp ausgeschaltet ist
-
halui.program.optional-stop.on' (bit, in) - Pin, der anfordert, dass der optionale Stopp eingeschaltet ist
-
halui.program.pause (bit, in) - Pin zum Anhalten eines Programms
-
halui.program.resume (bit, in) - Pin zum Fortsetzen eines pausierten Programms
-
halui.program.run (bit, in) - Pin zum Ausführen eines Programms
-
halui.program.step (bit, in) - Pin für das Steppen eines Programms
-
halui.program.stop (bit, in) - Pin zum Stoppen eines Programms
4.16. Eilgang-Override (engl. rapid override)
-
halui.rapid-override.count-enable' (Bit in (Standard: TRUE)) - Wenn TRUE, wird Rapid Override geändert, wenn sich die Zählerstände ändern.
-
halui.rapid-override.counts' (s32 in) - counts X scale = Rapid Override Prozentsatz. Kann mit einem Encoder oder direct-value verwendet werden.
-
halui.rapid-override.decrease' (bit in) - Pin zum Verringern des Rapid Override (-=scale)
-
halui.rapid-override.direct-value (Bit in) - pin, um den direkten Wert zu aktivieren Rapid Override-Eingabe
-
halui.rapid-override.increase (bit in) - Pin zur Erhöhung des Rapid Override (+=scale)
-
halui.rapid-override.scale (float in) - Pin zum Einstellen der Skala beim Ändern der Rapid Override
-
halui.rapid-override.value (float out) - aktueller Rapid Override-Wert
-
halui.rapid-override.reset (bit, in) - Pin zum Zurücksetzen des Rapid-Override-Wertes (Skala=1.0)
4.17. Spindel Neufestsetzung (engl. override)
-
halui.spindle.N.override.count-enable (bit, in) - muss wahr sein, damit counts oder direct-value funktioniert.
-
halui.spindle.N.override.counts (s32, in) - zählt * Skala = SO-Prozentsatz. Kann mit einem Encoder oder "Direct-Value" verwendet werden.
-
halui.spindle.N.override.decrease (bit, in) - Pin zum Verringern der SO (-=Skala)
-
halui.spindle.N.override.direct-value (bit, in) - false, wenn der Encoder zum Ändern der Zählerstände verwendet wird, true, wenn die Zählerstände direkt gesetzt werden.
-
halui.spindle.N.override.decrease (bit, in) - Pin zum Verringern der SO (-=Skala)
-
halui.spindle.N.override.scale (float, in) - Pin zum Einstellen der Skala beim Ändern der SO
-
halui.spindle.N.override.value (float, out) - aktueller SO-Wert
-
halui.spindle.N.override.reset (bit, in) - Pin zum Zurücksetzen des SO-Werts (scale=1.0)
4.18. Spindel
-
halui.spindle.N.brake-is-on (bit, out) - zeigt an, dass die Bremse eingeschaltet ist
-
halui.spindle.N.brake-off (bit, in) - Pin zur Deaktivierung der Spindel/Bremse
-
halui.spindle.N.brake-off (bit, in) - Pin zur Deaktivierung der Spindel/Bremse
-
halui.spindle.N.decrease (bit, in) - verringert die Spindeldrehzahl
-
halui.spindle.N.forward (bit, in) - startet die Spindel mit Bewegung im Uhrzeigersinn
-
halui.spindle.N.increase (bit, in)- erhöht die Spindeldrehzahl
-
halui.spindle.N.is-on (bit, out) - zeigt an, dass die Spindel eingeschaltet ist (in beide Richtungen)
-
halui.spindle.N.reverse (bit, in)- startet die Spindel mit einer Bewegung gegen den Uhrzeigersinn
-
halui.spindle.N.runs-backward (bit, out) - zeigt an, dass die Spindel eingeschaltet ist und umgekehrt
-
halui.spindle.N.runs-forward (bit, out) - zeigt an, dass die Spindel eingeschaltet und vorwärts läuft
-
halui.spindle.N.start (bit, in) - startet die Spindel
-
halui.spindle.N.stop (bit, in) - stoppt die Spindel
4.19. Werkzeug
-
halui.tool.length-offset.a (float out) - aktuell angewendeter Werkzeuglängenversatz für die A-Achse
-
halui.tool.length-offset.b (float out) - aktuell angewendeter Werkzeuglängenversatz für die B-Achse
-
halui.tool.length-offset.c (float out) – aktuell angewendeter Werkzeuglängenversatz für die C-Achse
-
halui.tool.length-offset.u (float out) - aktuell angewendeter Werkzeuglängenversatz für die U-Achse
-
halui.tool.length-offset.v (float out) – aktuell angewendeter Werkzeuglängenversatz für die V-Achse
-
halui.tool.length-offset.w (float out) - aktuell angewendeter Werkzeuglängenversatz für die W-Achse
-
halui.tool.length-offset.x (float out) – aktuell angewendeter Werkzeuglängenversatz für die X-Achse
-
halui.tool.length-offset.y (float out) - aktuell angewendeter Werkzeuglängenversatz für die Y-Achse
-
halui.tool.length-offset.z (float out) - aktuell angewendeter Werkzeuglängenversatz für die Z-Achse
-
halui.tool.diameter (float out) - Aktueller Werkzeugdurchmesser oder 0, wenn kein Werkzeug geladen ist.
-
halui.tool.number (u32, out) - zeigt das aktuell ausgewählte Werkzeug an