Страница 1 из 2

"Управление LinuxCNC при помощи внешних кнопок

Добавлено: 04 мар 2015, 16:45
Mihaill
Собран пульт управления по схеме http://www.cnc-club.ru/forum/download/f ... =view&mt=1. На нем установлен галетный переключатель для выбора активной оси, энкодер с маховичком с применным АКПП http://www.cnc-club.ru/forum/viewtopic. ... 18#p168918 и все это отлично работает, но остались не привязанными три кнопки. В этом то как раз и загвоздка, две из них хочется их использовать как +/- постоянную подачу заданную в основном окне применительно к выбранной галетником оси, а третью включение и выключение програмного цикла обработки. При нажатии кнопки они становятся "true" (1), а без нажатия "false" (0).
Контакты на которые выведены кнопки:
matrix_kb.0.key.r0c0
matrix_kb.0.key.r1c0
matrix_kb.0.key.r2c0

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 04 мар 2015, 19:25
verser
Вот здесь можно глянуть как подобную задачу решали для кнопок джойстика через simulated encoder.

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 04 мар 2015, 21:25
Nick
Так в чем проблема?
Есть пины в halui jog.selected plus и minus. Ну и соответственно для пуска и пауза программы, только их надо через toggle привязать, или через and2, так как у тебя 1 кнопка на два действия.

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 05 мар 2015, 09:25
Mihaill
Nick писал(а):Так в чем проблема?
Проблема собственно практически в полном отсутствии опыта в подключении.
Нужен был пинок в нужном направлении.
Теперь направления ясны буду копать по тИхонькой, глядишь и получится.

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 06 мар 2015, 12:25
Mihaill
Покопал вот то что из этого получилось,
даже не стал заморачиватся конкретной задачей, попытался выполнить любое существуещее действие, выполнить пин в halui к примеру halui.estop.activate,
вот так, добавил в существующий hal.(net mpg-0 matrix_kb.0.key.r2c0 => halui.estop.activate) соответственно кроме ошибки не чего не произошло, по всей видимости надо добавить компоненты, возможно это должно выглядеть так loadrt conv_s32_float count=mpg-0.

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 06 мар 2015, 12:57
Serg
Мы должны догадаться какая ошибка произошла?..

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 06 мар 2015, 13:50
Mihaill
К сожалению комп с линуксом в гараже рядом со станком и доступа к интернету не имеет, ошибку не сохранил, исправлюсь.

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 06 мар 2015, 15:13
Nick
Скорее всего надо в ini добавить в раздел [HAL]

Код: Выделить всё

HALUI = halui

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 06 мар 2015, 16:28
Mihaill
Как раз развернул лопату и копал именно в этом направлении здесь http://linuxcnc.org/docs/devel/html/gui/halui.html. Как оказалось, здесь как раз то что доктор прописал.

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 07 мар 2015, 09:48
Mihaill
Nick писал(а):Скорее всего надо в ini добавить в раздел [HAL]
Спасибо, доктор помогло ваше лекарство, кнопочки заработали.
К сожалению достичь поставленных целей этим инструментом (hflui) не получится так как кнопочки привязываются к выбранным осям на экране, а не галетником. Начальная цель была неверна, одна из кнопок должна быть с фиксацией и переключать режимы, работа с энкодером или с кнопками +/- подача.
Буду копать дальше.

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 07 мар 2015, 13:58
Serg
а кто мешает галетником выбирать оси?..

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 09 мар 2015, 18:31
Mihaill
UAVpilot писал(а):а кто мешает галетником выбирать оси?..
А как это сделать :wik: ? Подскажите пожалуйста.
К сожалению с управлением через HALUI так до конца разобраться разобраться не смог, большинство пинов не срабатывают в том числе и halui jog.selected plus в hal.файле прописано так
net mpg0 matrix_kb.0.key.r0c0 => halui jog.selected plus, чем лечить?

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 09 мар 2015, 19:36
nkp
Mihaill писал(а):net mpg0 matrix_kb.0.key.r0c0 => halui jog.selected plus, чем лечить?
halui.jog-speed определена?
setp halui.jog-speed 100 #для пробы

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 09 мар 2015, 20:22
Serg
Mihaill писал(а):А как это сделать
компонентами типа mux переключаете сигналы на пины соотв. оси, управляеть mux от галетника.

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 10 мар 2015, 10:04
Nick
Или вот так:
halui.joint.N.select bit in
pin for selecting joint N

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 10 мар 2015, 15:15
Mihaill
Спасибо, именно так и сделал.

Код: Выделить всё

       net mpg-x matrix_kb.0.key.r2c1 => axis.0.jog-enable  halui.joint.0.select
       net mpg-y matrix_kb.0.key.r1c1 => axis.1.jog-enable  halui.joint.1.select
       net mpg-z matrix_kb.0.key.r0c1 => axis.2.jog-enable  halui.joint.2.select
 
       net mpg-0 matrix_kb.0.key.r0c0 => halui.jog.selected.minus
       net mpg-1 matrix_kb.0.key.r1c0 => halui.jog.selected.plus
       net mpg-2 matrix_kb.0.key.r2c0 => halui.estop.activate
    
       setp halui.jog-speed 200
Осталось прикрутить подачу к ползунку на экране и получится вполне такой практичный пульт.

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 10 мар 2015, 15:26
Serg
А эти зачем?
axis.0.jog-enable

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 10 мар 2015, 15:51
Mihaill
Насколько я понял это активация выбраной оси для управления энкодером.
Вот первичный вариант

Код: Выделить всё

# Encoder jog wheel
    loadrt serport io=0x3f8
    addf serport.0.read base-thread
    addf serport.0.write base-thread

    loadrt matrix_kb config=3x2s 
    addf matrix_kb.0 servo-thread
    setp matrix_kb.0.negative-logic 0
    setp matrix_kb.0.key_rollover 6

    loadrt encoder num_chan=1
    addf encoder.update-counters base-thread
    addf encoder.capture-position servo-thread
    setp encoder.0.counter-mode 0
    setp encoder.0.x4-mode 0
    setp encoder.0.position-scale 1000.
    setp encoder.0.min-speed-estimate 500.

    loadrt abs
    addf abs.0 servo-thread

    loadrt lowpass
    addf lowpass.0 servo-thread
    setp lowpass.0.gain 0.01

    loadrt limit1
    addf limit1.0 servo-thread
    setp limit1.0.min 0.01
    setp limit1.0.max 1.0

    net col0  serport.0.pin-9-in  => matrix_kb.0.col-00-in
    net col1  serport.0.pin-8-in  => matrix_kb.0.col-01-in

    net enca  serport.0.pin-6-in  => encoder.0.phase-A
    net encb  serport.0.pin-1-in  => encoder.0.phase-B

    net row0 matrix_kb.0.row-00-out => serport.0.pin-4-out
    net row1 matrix_kb.0.row-01-out => serport.0.pin-3-out
    net row2 matrix_kb.0.row-02-out => serport.0.pin-7-out

    net mpg-x matrix_kb.0.key.r2c1 => axis.0.jog-enable
    net mpg-y matrix_kb.0.key.r1c1 => axis.1.jog-enable
    net mpg-z matrix_kb.0.key.r0c1 => axis.2.jog-enable

    setp axis.0.jog-vel-mode 1
    setp axis.1.jog-vel-mode 1
    setp axis.2.jog-vel-mode 1

    net pend-counts encoder.0.counts => axis.0.jog-counts axis.1.jog-counts axis.2.jog-counts

    net enc-vel encoder.0.velocity => lowpass.0.in
    net evel1 lowpass.0.out => abs.0.in
    net abs-enc-vel abs.0.out => limit1.0.in
    net pend-scale  limit1.0.out => axis.0.jog-scale axis.1.jog-scale axis.2.jog-scale

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 10 мар 2015, 19:39
Serg
Mihaill писал(а):Насколько я понял это активация выбраной оси для управления энкодером.
jog можно можно сделать двумя способами: либо через haliu.jog*, либо через axis.N.jog*, объединять их бессмысленно, только глючить будет.
Разница между этими способами будет заметна только при использовании нетривиальной кинематики.

Re: "Управление LinuxCNC при помощи внешних кнопок

Добавлено: 10 мар 2015, 21:05
Mihaill
С утра погонял станок в обоих режимах проблем незамечено, а дальше видно будет, если проявятся наверно придется развязать режимы пожертвовав для этого одну кнопку.
А на данный момент сильно интересует где можно отыскать значение текущей скорости для halaui.jog-speed.