1. ACHSE

Um ein PyVCP-Panel zur Verwendung mit der AXIS-Schnittstelle zu erstellen, die rechts von AXIS angebracht ist, müssen Sie die folgenden grundlegenden Dinge tun.

  • Erstellen Sie eine XML-Datei, die Ihre Panel-Beschreibung enthält, und legen Sie sie in Ihr Konfigurationsverzeichnis.

  • Fügen Sie den PyVCP-Eintrag in den [DISPLAY]-Abschnitt der INI-Datei mit dem Namen Ihrer XML-Datei ein.

  • Fügen Sie den Eintrag POSTGUI_HALFILE in den [HAL]-Abschnitt der INI-Datei ein und geben Sie den Namen Ihrer postgui-HAL-Datei an.

  • Fügen Sie die Links zu HAL-Pins für Ihr Panel in der Datei postgui.hal hinzu, um Ihr PyVCP-Panel mit LinuxCNC zu verbinden.

2. Schwebende (engl. floating) Panels

Um schwebende PyVCP-Panels zu erstellen, die mit jeder Schnittstelle verwendet werden können, müssen Sie die folgenden grundlegenden Dinge tun.

  • Erstellen Sie eine XML-Datei, die Ihre Panel-Beschreibung enthält, und legen Sie sie in Ihr Konfigurationsverzeichnis.

  • Fügen Sie eine loadusr-Zeile in Ihre HAL-Datei ein, um jedes Panel zu laden.

  • Fügen Sie die Links zu HAL-Pins für Ihr Panel in der Datei postgui.hal hinzu, um Ihr PyVCP-Panel mit LinuxCNC zu verbinden.

Nachfolgend ein Beispiel für einen loadusr-Befehl, um zwei PyVCP-Panels zu laden und jedes zu benennen, damit die Verbindungsnamen in HAL bekannt sind.

loadusr -Wn btnpanel pyvcp -c btnpanel panel1.xml
loadusr -Wn sppanel pyvcp -c sppanel panel2.xml

Die Option -Wn bewirkt, dass HAL darauf wartet, dass der Name geladen wird, bevor es weitergeht.

Die Option pyvcp -c sorgt dafür, dass PyVCP das Panel benennt.

Die HAL-Pins aus panel1.xml werden als btnpanel.<_Pinname_> bezeichnet.

Die HAL-Pins aus panel2.xml werden als btnpanel.<_Pinname_> bezeichnet.

Stellen Sie sicher, dass die loadusr-Zeile vor allen Netzen steht, welche die PyVCP-Pins verwenden.

3. Beispiel für Jog-Buttons

In diesem Beispiel erstellen wir ein PyVCP-Panel mit Jog-Buttons für X, Y und Z. Diese Konfiguration wird auf einer vom StepConf-Assistenten generierten Konfiguration aufgebaut. Zunächst führen wir den StepConf-Assistenten aus und konfigurieren unseren Rechner. Auf der Seite Erweiterte Konfigurationsoptionen fügen wir dann ein leeres PyVCP-Panel hinzu, wie in der folgenden Abbildung gezeigt. Für dieses Beispiel haben wir die Konfiguration auf der Seite mit den grundlegenden Maschineninformationen des StepConf-Assistenten "pyvcp_xyz" genannt.

PyVCP XYZ-Assistent Konfiguration
Abbildung 1. XYZ-Assistent Konfiguration

Der StepConf-Assistent erstellt mehrere Dateien und legt sie im Verzeichnis linuxcnc/configs/pyvcp_xyz ab. Wenn Sie die Option "Link erstellen" aktiviert haben, finden Sie auf Ihrem Desktop einen Link zu diesen Dateien.

3.1. Erstellen der Widgets

Öffnen Sie die Datei custompanel.xml, indem Sie mit der rechten Maustaste darauf klicken und "Mit Texteditor öffnen" wählen. Zwischen den Tags <pyvcp></pyvcp> fügen wir die Widgets für unser Panel ein.

Schauen Sie in den Abschnitt PyVCP Widgets Referenz des Handbuchs für detailliertere Informationen über jedes Widget documentation des widgets.

In der Datei custompanel.xml werden wir die Beschreibung der Widgets hinzufügen.

<pyvcp>
  <labelframe text="Jog Buttons">
    <font>("Helvetica",16)</font>

      <!-- the X jog buttons -->
      <hbox>
      <relief>RAISED</relief>
      <bd>3</bd>
      <button>
        <font>("Helvetica",20)</font>
        <width>3</width>
        <halpin>"x-plus"</halpin>
        <text>"X+"</text>
      </button>
      <button>
        <font>("Helvetica",20)</font>
        <width>3</width>
        <halpin>"x-minus"</halpin>
        <text>"X-"</text>
      </button>
      </hbox>

      <!-- the Y jog buttons -->
      <hbox>
      <relief>RAISED</relief>
      <bd>3</bd>
      <button>
        <font>("Helvetica",20)</font>
        <width>3</width>
        <halpin>"y-plus"</halpin>
        <text>"Y+"</text>
      </button>
      <button>
        <font>("Helvetica",20)</font>
        <width>3</width>
        <halpin>"y-minus"</halpin>
        <text>"Y-"</text>
      </button>
      </hbox>

      <!-- the Z jog buttons -->
      <hbox>
      <relief>RAISED</relief>
      <bd>3</bd>
      <button>
        <font>("Helvetica",20)</font>
        <width>3</width>
        <halpin>"z-plus"</halpin>
        <text>"Z+"</text>
      </button>
      <button>
        <font>("Helvetica",20)</font>
        <width>3</width>
        <halpin>"z-minus"</halpin>
        <text>"Z-"</text>
      </button>
      </hbox>

      <!-- the jog speed slider -->
      <vbox>
      <relief>RAISED</relief>
      <bd>3</bd>
      <label>
        <text>"Jog Speed"</text>
        <font>("Helvetica",16)</font>
      </label>
      <scale>
        <font>("Helvetica",14)</font>
        <halpin>"jog-speed"</halpin>
        <resolution>1</resolution>
        <orient>HORIZONTAL</orient>
        <min_>0</min_>
        <max_>80</max_>
      </scale>
      </vbox>
  </labelframe>
</pyvcp>

Nach dem Hinzufügen des oben genannten haben Sie nun ein PyVCP-Panel, das wie das folgende aussieht und an der rechten Seite von AXIS angebracht ist. Es sieht schön aus, aber es tut nichts, bis Sie die Tasten mit Halui "verbinden". Wenn Sie einen Fehler erhalten, wenn Sie versuchen, und führen Sie nach unten scrollen, um den unteren Rand des Pop-up-Fenster und in der Regel der Fehler ist ein Rechtschreib-oder Syntaxfehler und es wird dort sein.

Jog Buttons Image

3.2. Verbindungen herstellen

Um die erforderlichen Verbindungen herzustellen, öffnen Sie die Datei custom_postgui.hal, und fügen Sie Folgendes hinzu.

# Verbinden Sie die X-PyVCP-Tasten
net my-jogxminus halui.axis.x.minus <= pyvcp.x-minus
net my-jogxplus halui.axis.x.plus <= pyvcp.x-plus

# Verbinden der Y-PyVCP-Tasten
net my-jogyminus halui.axis.y.minus <= pyvcp.y-minus
net my-jogyplus halui.axis.y.plus <= pyvcp.y-plus

# Verbinden der Z-PyVCP-Tasten
net my-jogzminus halui.axis.z.minus <= pyvcp.z-minus
net my-jogzplus halui.axis.z.plus <= pyvcp.z-plus

# den PyVCP-Jog-Speed-Schieberegler anschließen
net my-jogspeed halui.axis.jog-speed <= pyvcp.jog-speed-f

Nachdem Sie den Notaus (engl. E-Stop) zurückgesetzt und in den Jog-Modus versetzt haben und den Schieberegler für die Jpggeschwindigkeit im PyVCP-Bedienfeld auf einen Wert größer als Null gestellt haben, sollten die PyVCP-Tipptasten funktionieren. Sie können nicht joggen, wenn eine G-Code-Datei ausgeführt wird, wenn das Programm pausiert oder wenn die Registerkarte MDI ausgewählt ist.

4. Port-Tester

Dieses Beispiel zeigt Ihnen, wie Sie mit PyVCP und HAL einen einfachen Parallelport-Tester erstellen können.

Erstellen Sie zunächst die Datei ptest.xml mit dem folgenden Code, um die Beschreibung des Panels zu erstellen.

<!-- Test panel for the parallel port cfg for out -->
<pyvcp>
  <hbox>
    <relief>RIDGE</relief>
    <bd>2</bd>
    <button>
      <halpin>"btn01"</halpin>
      <text>"Pin 01"</text>
    </button>
    <led>
      <halpin>"led-01"</halpin>
      <size>25</size>
      <on_color>"green"</on_color>
      <off_color>"red"</off_color>
    </led>
  </hbox>
  <hbox>
    <relief>RIDGE</relief>
    <bd>2</bd>
    <button>
      <halpin>"btn02"</halpin>
      <text>"Pin 02"</text>
    </button>
    <led>
      <halpin>"led-02"</halpin>
      <size>25</size>
      <on_color>"green"</on_color>
      <off_color>"red"</off_color>
    </led>
  </hbox>
  <hbox>
    <relief>RIDGE</relief>
    <bd>2</bd>
    <label>
      <text>"Pin 10"</text>
      <font>("Helvetica",14)</font>
    </label>
    <led>
      <halpin>"led-10"</halpin>
      <size>25</size>
      <on_color>"green"</on_color>
      <off_color>"red"</off_color>
    </led>
  </hbox>
  <hbox>
    <relief>RIDGE</relief>
    <bd>2</bd>
    <label>
      <text>"Pin 11"</text>
      <font>("Helvetica",14)</font>
    </label>
    <led>
      <halpin>"led-11"</halpin>
      <size>25</size>
      <on_color>"green"</on_color>
      <off_color>"red"</off_color>
    </led>
  </hbox>
</pyvcp>

Dadurch wird das folgende schwebende Panel erstellt, das einige Eingangs- und Ausgangsanschlüsse enthält.

Port Tester Panel

Um die HAL-Befehle auszuführen, die wir benötigen, um alles zum Laufen zu bringen, fügen wir Folgendes in unsere Datei ptest.hal ein.

loadrt hal_parport cfg="0x378 out"
loadusr -Wn ptest pyvcp -c ptest ptest.xml
loadrt threads name1=porttest period1=1000000
addf parport.0.read porttest
addf parport.0.write porttest
net pin01 ptest.btn01 parport.0.pin-01-out ptest.led-01
net pin02 ptest.btn02 parport.0.pin-02-out ptest.led-02
net pin10 parport.0.pin-10-in ptest.led-10
net pin11 parport.0.pin-11-in ptest.led-11
start

Um die HAL-Datei auszuführen, verwenden wir den folgenden Befehl in einem Terminalfenster.

~$ halrun -I -f ptest.hal

Die folgende Abbildung zeigt, wie ein komplettes Panel aussehen könnte.

Port Tester Gesamtbild

Um die restlichen Pins des Parallelports hinzuzufügen, müssen Sie nur die XML- und HAL-Dateien ändern.

Um die Pins nach der Ausführung des HAL-Skripts anzuzeigen, verwenden Sie den folgenden Befehl an der halcmd-Eingabeaufforderung:

halcmd: show pin
Component Pins:
Owner Type  Dir Value  Name
    2 bit   IN  FALSE  parport.0.pin-01-out <== pin01
    2 bit   IN  FALSE  parport.0.pin-02-out <== pin02
    2 bit   IN  FALSE  parport.0.pin-03-out
    2 bit   IN  FALSE  parport.0.pin-04-out
    2 bit   IN  FALSE  parport.0.pin-05-out
    2 bit   IN  FALSE  parport.0.pin-06-out
    2 bit   IN  FALSE  parport.0.pin-07-out
    2 bit   IN  FALSE  parport.0.pin-08-out
    2 bit   IN  FALSE  parport.0.pin-09-out
    2 bit   OUT TRUE   parport.0.pin-10-in ==> pin10
    2 bit   OUT FALSE  parport.0.pin-10-in-not
    2 bit   OUT TRUE   parport.0.pin-11-in ==> pin11
    2 bit   OUT FALSE  parport.0.pin-11-in-not
    2 bit   OUT TRUE   parport.0.pin-12-in
    2 bit   OUT FALSE  parport.0.pin-12-in-not
    2 bit   OUT TRUE   parport.0.pin-13-in
    2 bit   OUT FALSE  parport.0.pin-13-in-not
    2 bit   IN  FALSE  parport.0.pin-14-out
    2 bit   OUT TRUE   parport.0.pin-15-in
    2 bit   OUT FALSE  parport.0.pin-15-in-not
    2 bit   IN  FALSE  parport.0.pin-16-out
    2 bit   IN  FALSE  parport.0.pin-17-out
    4 bit   OUT FALSE  ptest.btn01 ==> pin01
    4 bit   OUT FALSE  ptest.btn02 ==> pin02
    4 bit   IN  FALSE  ptest.led-01 <== pin01
    4 bit   IN  FALSE  ptest.led-02 <== pin02
    4 bit   IN  TRUE   ptest.led-10 <== pin10
    4 bit   IN  TRUE   ptest.led-11 <== pin11

Dies zeigt Ihnen, welche Pins IN und welche Pins OUT sind, sowie alle Verbindungen.

5. GS2-Drehzahlmesser

Das folgende Beispiel verwendet den Automation Direct GS2 VDF-Treiber und zeigt die U/min (engl. RPM) und andere Informationen in einem PyVCP-Panel an. Dieses Beispiel basiert auf dem GS2-Beispiel im Abschnitt Hardware-Beispiele dieses Handbuchs.

5.1. Das Panel

Um das Panel zu erstellen, fügen wir der XML-Datei Folgendes hinzu.

<pyvcp>

  <!-- the RPM meter -->
  <hbox>
    <relief>RAISED</relief>
    <bd>3</bd>
    <meter>
      <halpin>"spindle_rpm"</halpin>
      <text>"Spindle"</text>
      <subtext>"RPM"</subtext>
      <size>200</size>
      <min_>0</min_>
      <max_>3000</max_>
      <majorscale>500</majorscale>
      <minorscale>100</minorscale>
      <region1>0,10,"yellow"</region1>
    </meter>
  </hbox>

  <!-- the On Led -->
  <hbox>
  <relief>RAISED</relief>
  <bd>3</bd>
  <vbox>
  <relief>RAISED</relief>
  <bd>2</bd>
  <label>
  <text>"On"</text>
  <font>("Helvetica",18)</font>
  </label>
  <width>5</width>
   <hbox>
  <label width="2"/> <!-- used to center the led -->
  <rectled>
  <halpin>"on-led"</halpin>
  <height>"30"</height>
  <width>"30"</width>
  <on_color>"green"</on_color>
  <off_color>"red"</off_color>
  </rectled>
  </hbox>
  </vbox>

  <!-- the FWD Led -->
  <vbox>
    <relief>RAISED</relief>
    <bd>2</bd>
    <label>
      <text>"FWD"</text>
      <font>("Helvetica",18)</font>
      <width>5</width>
    </label>
   <label width="2"/>
    <rectled>
      <halpin>"fwd-led"</halpin>
      <height>"30"</height>
      <width>"30"</width>
      <on_color>"green"</on_color>
      <off_color>"red"</off_color>
    </rectled>
  </vbox>

  <!-- the REV Led -->
  <vbox>
  <relief>RAISED</relief>
  <bd>2</bd>
    <label>
      <text>"REV"</text>
      <font>("Helvetica",18)</font>
       <width>5</width>
    </label>
    <label width="2"/>
    <rectled>
      <halpin>"rev-led"</halpin>
      <height>"30"</height>
      <width>"30"</width>
      <on_color>"red"</on_color>
      <off_color>"green"</off_color>
    </rectled>
  </vbox>
  </hbox>
</pyvcp>

Damit erhalten wir ein PyVCP-Panel, das wie folgt aussieht.

GS2-Panel

5.2. Die Verbindungen

Damit das funktioniert, fügen wir den folgenden Code in die Datei custom_postgui.hal ein.

# Anzeige der Drehzahl auf der Grundlage von freq * RPM per Hz
loadrt mult2
addf mult2.0 servo-thread
setp mult2.0.in1 28.75
net cypher_speed mult2.0.in0 <= spindel-vfd.frequency-out
net speed_out pyvcp.spindle_rpm <= mult2.0.out

# run led
net gs2-run => pyvcp.on-led

# fwd led
net gs2-fwd => pyvcp.fwd-led

# rev led
net running-rev spindle-vfd.spindle-rev => pyvcp.rev-led

Einige der Zeilen bedürfen vielleicht einer Erläuterung. Die Zeile fwd led verwendet das in der Datei custom.hal erstellte Signal, während die Zeile rev led das Bit spindle-rev verwenden muss. Sie können das Bit spindle-fwd nicht zweimal verknüpfen, also verwenden Sie das Signal, mit dem es verknüpft wurde.

6. Referenzfahrt im Eilgang Button

In diesem Beispiel wird eine Schaltfläche auf dem PyVCP-Seitenpanel erstellt, die bei Betätigung alle Achsen zurück in die Ausgangsposition schickt. Dieses Beispiel setzt voraus, dass Sie kein PyVCP-Panel haben.

images/pyvcp-rth.png

Erstellen Sie in Ihrem Konfigurationsverzeichnis die XML-Datei. In diesem Beispiel heißt sie rth.xml. Fügen Sie in der Datei "rth.xml" den folgenden Code ein, um die Schaltfläche zu erstellen.

<pyvcp>
<!-- rapid to home button example -->
<button>
<halpin>"rth-button"</halpin>
<text>"Rapid to Home"</text>
</button>
</pyvcp>

Öffnen Sie Ihre INI-Datei mit einem Texteditor und fügen Sie im Abschnitt [DISPLAY] die folgende Zeile ein. Damit wird das PyVCP-Panel geladen.

PYVCP = rth.xml

Wenn Sie keinen [HALUI]-Abschnitt in der INI-Datei haben, erstellen Sie ihn und fügen Sie den folgenden MDI-Befehl hinzu.

MDI_COMMAND = G53 G0 X0 Y0 Z0
Anmerkung

Informationen zu G53 und G0 G-Codes.

Wenn Sie keine Post-GUI-Datei haben, fügen Sie im Abschnitt [HAL] Folgendes hinzu und erstellen Sie eine Datei namens postgui.hal.

POSTGUI_HALFILE = postgui.hal

Fügen Sie in der Datei postgui.hal den folgenden Code hinzu, um die PyVCP-Schaltfläche mit dem MDI-Befehl zu verknüpfen.

net rth halui.mdi-command-00 <= pyvcp.rth-button
Anmerkung

Informationen über den Befehl net