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.

Настройка мастера PyVCP XYZ
Figure 1. Конфигурация мастера XYZ

Мастер 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

На следующем рисунке показано, как может выглядеть полная панель.

Port Tester Complete Image

Чтобы добавить остальные контакты параллельного порта, просто измените файлы 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, которая выглядит следующим образом.

GS2 Panel

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.

images/pyvcp-rth.png

В каталоге конфигурации создайте 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
Note

Информация о G-кодах G53 и G0.

Если у вас нет файла post gui, в разделе [HAL] добавьте следующее и создайте файл с именем postgui.hal.

POSTGUI_HALFILE = postgui.hal

В файле postgui.hal добавьте следующий код, чтобы связать кнопку PyVCP с командой MDI.

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

Информация о команде net