1. AXIS
Щоб створити панель PyVCP для використання з інтерфейсом AXIS, підключеним праворуч від AXIS, вам потрібно виконати такі основні дії.
-
Створіть XML-файл, який містить опис вашої панелі, та помістіть його в каталог конфігурації.
-
Додайте запис PyVCP до розділу [DISPLAY] INI-файлу разом з вашим ім’ям XML-файлу.
-
Додайте запис POSTGUI_HALFILE до розділу [HAL] INI-файлу з назвою вашого HAL-файлу Postgui.
-
Додайте посилання на піни 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 «Чекати на завантаження імені» перед продовженням.
Команда pyvcp -c змушує PyVCP присвоїти ім’я панелі.
Піни HAL з panel1.xml будуть названі btnpanel.<_назва_піна_>.
Піни HAL з panel2.xml будуть названі sppanel.<_назва_піна_>.
Переконайтеся, що рядок loadusr знаходиться перед будь-якими мережами, які використовують виводи PyVCP.
3. Приклад кнопок поворотного перемикання
У цьому прикладі ми створимо панель PyVCP з кнопками переміщення для X, Y і Z. Ця конфігурація буде побудована на основі конфігурації, згенерованої майстром StepConf. Спочатку запускаємо майстер StepConf і налаштовуємо нашу машину, на сторінці «Advanced Configuration Options» (Розширені параметри конфігурації) робимо кілька виборів, щоб додати порожню панель PyVCP, як показано на наступному малюнку. Для цього прикладу ми назвали конфігурацію «pyvcp_xyz» на сторінці «Basic Machine Information» (Основна інформація про машину) майстра StepConf.
Майстер StepConf створить кілька файлів і розмістить їх у каталозі linuxcnc/configs/pyvcp_xyz. Якщо ви залишили посилання для створення позначеним, посилання на ці файли буде відображатися на вашому робочому столі.
3.1. Створення віджетів
Відкрийте файл custompanel.xml, клацнувши на ньому правою кнопкою миші та вибравши «відкрити в текстовому редакторі». Між тегами <pyvcp></pyvcp> ми додамо віджети для нашої панелі.
Перегляньте розділ «Довідка з віджетів PyVCP» цього посібника для отримання детальнішої інформації про кожен віджет 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 та додайте наступне.
# підключіть кнопки X PyVCP net my-jogxminus halui.axis.x.minus <= pyvcp.x-minus net my-jogxplus halui.axis.x.plus <= pyvcp.x-plus # з'єднайте кнопки Y PyVCP net my-jogyminus halui.axis.y.minus <= pyvcp.y-minus net my-jogyplus halui.axis.y.plus <= pyvcp.y-plus # підключіть кнопки Z PyVCP net my-jogzminus halui.axis.z.minus <= pyvcp.z-minus net my-jogzplus halui.axis.z.plus <= pyvcp.z-plus # підключіть повзунок швидкості джогування PyVCP 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: показати штифт
Компонентні контакти:
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
У наведеному нижче прикладі використовується драйвер Automation Direct GS2 VDF і відображаються оберти за хвилину та інша інформація на панелі 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.
# відображення обертів за хвилину на основі частоти * обертів за хвилину на Гц 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 # запустити, керований net gs2-run => pyvcp.on-led # світлодіодний перемикач уперед net gs2-fwd => pyvcp.fwd-led # світлодіодний індикатор net running-rev spindle-vfd.spindle-rev => pyvcp.rev-led
Деякі рядки можуть потребувати пояснень. Рядок fwd led використовує сигнал, створений у файлі custom.hal, тоді як rev led потребує використання біта 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
Якщо у вашому INI-файлі немає розділу [HALUI], створіть його та додайте наступну MDI-команду.
MDI_COMMAND = G53 G0 X0 Y0 Z0
У розділі [HAL], якщо у вас немає файлу графічного інтерфейсу post, додайте наступний код та створіть файл з назвою postgui.hal.
POSTGUI_HALFILE = postgui.hal
У файлі postgui.hal додайте наступний код, щоб пов’язати кнопку PyVCP з командою MDI.
net rth halui.mdi-command-00 <= pyvcp.rth-button
|
Note
|
Інформація про команду net |