Damit alle Halui-Beispiele funktionieren, müssen Sie die folgende Zeile in den [HAL]-Abschnitt der INI-Datei einfügen.

HALUI = halui

1. Ferngesteuerter Start

To connect a remote program start button to LinuxCNC you use the halui.program.run pin and the halui.mode.auto pin. You have to ensure that it is OK to run first by using the halui.mode.is-auto pin. You do this with an and2 component. The following figure shows how this is done. When the Remote Run Button is pressed it is connected to both halui.mode.auto and and2.0.in0. If it is OK for auto mode the pin halui.mode.is-auto will be on. If both the inputs to the and2.0 component are on the and2.0.out will be on and this will start the program.

Beispiel für Fernstart
Abbildung 1. Beispiel für Fernstart

Die für das Vorstehende erforderlichen HAL-Befehle sind:

net program-start-btn halui.mode.auto and2.0.in0 <= <your input pin>
net program-run-ok and2.0.in1 <= halui.mode.is-auto
net remote-program-run halui.program.run <= and2.0.out

Beachten Sie, dass es in der ersten Zeile zwei Leser-Pins gibt, die auch in zwei Zeilen aufgeteilt werden können:

net program-start-btn halui.mode.auto <= <your input pin>
net program-start-btn and2.0.in0

2. Pause & Fortsetzen

Dieses Beispiel wurde entwickelt, um LinuxCNC zu ermöglichen, eine Drehachse auf ein Signal von einer externen Maschine zu bewegen. Die Koordination zwischen den beiden Systemen wird durch zwei Halui Komponenten bereitgestellt:

  • halui.program.is-paused

  • halui.program.resume

In your customized HAL file, add the following two lines that will be connected to your I/O to turn on the program pause or to resume when the external system wants LinuxCNC to continue.

net ispaused halui.program.is paused => "Dein output (Ausgabe) Pin"
net resume halui.program.resume <= "your input (Eingabe) Pin"

Ihre Eingangs- und Ausgangspins sind mit den Pins verbunden, die mit dem anderen Controller verdrahtet sind. Dabei kann es sich um Pins des Parallelports oder andere E/A-Pins handeln, auf die Sie Zugriff haben.

Dieses System funktioniert auf folgende Weise. Wrid ein M0 in Ihrem G-Code erreicht, so wird das Signal "halui.program.is-paused" wahr. Dies schaltet auf Ihrem Ausgangspin, so dass die externe Steuerung weiß, dass LinuxCNC pausiert ist.

Um die LinuxCNC G-Code-Programm fortzusetzen, wenn die externe Steuerung bereit ist, wird es seine Ausgabe wahr zu machen. Dies wird LinuxCNC signalisieren, dass es die Ausführung von G-Code fortsetzen sollte.

Schwierigkeiten beim Timing

  • Das "Resume"-Eingangsrücksignal sollte nicht länger sein als die Zeit, die benötigt wird, um den G-Code wieder zum Laufen zu bringen.

  • Der Ausgang "is-paused" sollte nicht mehr aktiv sein, wenn das "resume"-Signal endet.

Diese Timing-Probleme könnten vermieden werden, indem ClassicLadder verwendet wird, um den "is-paused"-Ausgang über einen monostabilen Timer zu aktivieren und einen schmalen Ausgangsimpuls zu liefern. Der "Resume"-Puls könnte ebenfalls über einen monostabilen Timer empfangen werden.