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.

Example 1. Beispiel für MDI_COMMAND-Verbindungen
HAL-Datei
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
Netze zum Verbinden der von halui bereitgestellten 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.

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