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.
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.
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.
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.
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.
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.
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
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 |