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

Um einen Fernstartknopf mit LinuxCNC zu verbinden, benutzen Sie den halui.program.run Pin und den halui.mode.auto Pin. Sie müssen sicherstellen, dass es OK ist, zuerst zu laufen, indem Sie die halui.mode.is-auto Pin. Dies geschieht mit einer and2 Komponente. Die folgende Abbildung zeigt, wie das gemacht wird. Wenn der Fernbedienungsknopf gedrückt wird, ist er sowohl mit halui.mode.auto als auch mit and2.0.in0 verbunden. Wenn der Automodus OK ist, wird der Pin halui.mode.is-auto eingeschaltet. Wenn beide Eingänge an der Komponente and2.0 eingeschaltet sind, wird and2.0.out eingeschaltet und das Programm gestartet.

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 Ihrem benutzerdefinierten HAL Datei, fügen Sie die folgenden zwei Zeilen, die mit Ihrer E/A verbunden werden, um auf das Programm Pause oder fortzusetzen, wenn das externe System LinuxCNC fortzusetzen will.

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.