1. AXIS
Чтобы создать панель PyVCP для использования с интерфейсом AXIS, прикрепленным справа от AXIS, вам необходимо выполнить следующие основные действия.
-
Создайте XML-файл, содержащий описание вашей панели, и поместите его в каталог конфигурации.
-
Добавьте запись PyVCP в раздел [DISPLAY] INI-файла с именем вашего XML-файла.
-
Добавьте запись POSTGUI_HALFILE в раздел [HAL] INI-файла с именем вашего файла postgui HAL.
-
Добавьте ссылки на контакты HAL для вашей панели в файл postgui.hal, чтобы подключить вашу панель PyVCP к LinuxCNC.
2. Плавающие панели
Чтобы создать плавающие панели PyVCP, которые можно использовать с любым интерфейсом, вам необходимо выполнить следующие основные действия.
-
Создайте XML-файл, содержащий описание вашей панели, и поместите его в каталог конфигурации.
-
Добавьте строку loadusr в ваш файл HAL, чтобы загрузить каждую панель.
-
Добавьте ссылки на контакты HAL для вашей панели в файл postgui.hal, чтобы подключить вашу панель PyVCP к LinuxCNC.
Ниже приведен пример команды loadusr для загрузки двух панелей PyVCP и присвоения каждой из них имени, чтобы имена соединений в HAL были известны.
loadusr -Wn btnpanel pyvcp -c btnpanel panel1.xml loadusr -Wn sppanel pyvcp -c sppanel panel2.xml
-Wn заставляет HAL Wait for name перед загрузкой.
"pyvcp -c" заставляет PyVCP именовать панель.
Контакты HAL из файла panel1.xml будут называться btnpanel.<_pin name_>.
Контакты HAL из файла panel2.xml будут называться sppanel.<_pin name_>.
Убедитесь, что линия loadusr находится перед любыми цепями, использующими контакты PyVCP.
3. Пример кнопок подачи
В этом примере мы создадим панель PyVCP с кнопками перемещения для X, Y и Z. Эта конфигурация будет построена на основе конфигурации, созданной мастером StepСonf. Сначала мы запускаем мастер StepСonf и настраиваем наш станок, затем на странице Advanced Configuration Options мы делаем несколько вариантов, чтобы добавить пустую панель PyVCP, как показано на следующем рисунке. В этом примере мы назвали конфигурацию pyvcp_xyz на странице базовой информации о компьютере мастера StepСonf.
Мастер StepСonf создаст несколько файлов и поместит их в каталог linuxcnc/configs/pyvcp_xyz
. Если вы отметили галочкой создать ссылку, у вас будет ссылка на эти файлы на рабочем столе.
3.1. Создайте виджеты
Откройте файл custompanel.xml, щелкнув на нем правой кнопкой мыши и выбрав open with text editor. Между тегами <pyvcp></pyvcp> мы добавим виджеты для нашей панели.
Более подробную информацию о каждом виджете можно найти в разделе PyVCP Widgets Reference руководства documentation des widgets.
В ваш файл custompanel.xml мы добавим описание виджетов.
<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>
После добавления вышеприведенного у вас теперь будет панель PyVCP, прикрепленная к правой стороне AXIS, которая выглядит следующим образом. Выглядит красиво, но ничего не делает, пока вы не подключите кнопки к halui. Если при попытке запуска вы получаете сообщение об ошибке, прокрутите вниз до нижней части всплывающего окна. Обычно ошибка представляет собой орфографическую или синтаксическую ошибку, и она будет там.
3.2. Сделайте соедениния
Чтобы установить необходимые соединения, откройте файл custom_postgui.hal и добавьте следующее.
# connect the X PyVCP buttons net my-jogxminus halui.axis.x.minus <= pyvcp.x-minus net my-jogxplus halui.axis.x.plus <= pyvcp.x-plus # connect the Y PyVCP buttons net my-jogyminus halui.axis.y.minus <= pyvcp.y-minus net my-jogyplus halui.axis.y.plus <= pyvcp.y-plus # connect the Z PyVCP buttons net my-jogzminus halui.axis.z.minus <= pyvcp.z-minus net my-jogzplus halui.axis.z.plus <= pyvcp.z-plus # connect the PyVCP jog speed slider net my-jogspeed halui.axis.jog-speed <= pyvcp.jog-speed-f
После сброса аварийного останова, перевода его в режим медленной подачи и перемещения ползунка скорости медленной подачи на панели PyVCP до значения большего нуля, кнопки медленной подачи PyVCP должны работать. Вы не можете использовать медленную подачу во время работы файла G-кода, во время паузы или когда выбрана вкладка MDI.
4. Тестер порта
В этом примере показано, как создать простой тестер параллельного порта, используя PyVCP и HAL.
Сначала создайте файл ptest.xml со следующим кодом, чтобы создать описание панели.
<!-- 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>
Этот код создаст следующую плавающую панель, содержащую пару входных и пару выходных контактов.
Чтобы запустить команды HAL, которые нам нужны для запуска всего, мы помещаем следующее в наш файл ptest.hal.
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
Чтобы запустить файл HAL, мы используем следующую команду из окна терминала.
~$ halrun -I -f ptest.hal
На следующем рисунке показано, как может выглядеть полная панель.
Чтобы добавить остальные контакты параллельного порта, просто измените файлы XML и HAL.
Чтобы отобразить контакты после запуска сценария HAL, используйте следующую команду в командной строке halcmd:
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
Это покажет вам, какие контакты являются входными, а какие — выходными, а также любые соединения.
5. GS2 измеритель оборотов
В следующем примере используется VDF-драйвер Automation Direct GS2 и отображается RPM и другая информация на панели PyVCP. Этот пример основан на примере GS2 в разделе «Примеры оборудования» данного руководства.
5.1. Панель
Чтобы создать панель, мы добавляем следующее в XML-файл.
<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>
Вышеприведенное дает нам панель PyVCP, которая выглядит следующим образом.
5.2. Соединения
Чтобы это заработало, мы добавим следующий код в файл custom_postgui.hal.
# display the rpm based on freq * rpm per hz loadrt mult2 addf mult2.0 servo-thread setp mult2.0.in1 28.75 net cypher_speed mult2.0.in0 <= spindle-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
Некоторые строки, возможно, потребуют пояснений. Линия индикатора вперед использует сигнал, созданный в файле custom.hal, тогда как индикатор обратно должен использовать бит шпинделя spindle-rev. Вы не можете связать бит шпинделя spindle-fwd, поэтому вы используете сигнал, с которым он был связан.
6. Кнопка быстрого приведения в исходное положение
В этом примере создается кнопка на боковой панели PyVCP, при нажатии которой все оси возвращаются в исходное положение. В этом примере предполагается, что у вас нет панели PyVCP.
В каталоге конфигурации создайте XML-файл. В этом примере он называется rth.xml. В файле rth.xml добавьте следующий код для создания кнопки.
<pyvcp>
<!-- rapid to home button example -->
<button>
<halpin>"rth-button"</halpin>
<text>"Rapid to Home"</text>
</button>
</pyvcp>
Откройте INI-файл в текстовом редакторе и в разделе [DISPLAY] добавьте следующую строку. Это то, что загружает панель PyVCP.
PYVCP = rth.xml
Если у вас нет раздела [HALUI] в INI-файле, создайте его и добавьте следующую команду MDI.
MDI_COMMAND = G53 G0 X0 Y0 Z0
Если у вас нет файла post gui, в разделе [HAL] добавьте следующее и создайте файл с именем postgui.hal.
POSTGUI_HALFILE = postgui.hal
В файле postgui.hal добавьте следующий код, чтобы связать кнопку PyVCP с командой MDI.
net rth halui.mdi-command-00 <= pyvcp.rth-button
Note
|
Информация о команде net |