Кнопка с двумя состояниями в HAL

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

Кнопка с двумя состояниями в HAL

Сообщение sergfrezer » 23 мар 2016, 13:07

Пытаюсь разобраться с LInuxCNC.. вроде немного получатся. Решил начать с подключения беспроводного пульта HB04.
Столкнулся с надобностью завести на один внешний сигнал (кнопку) включение и выключение вращения шпинделя. Если использовать две внешних кнопки то все работает а как сделать чтобы шпиндель включался и выключался одной кнопкой пока не понял, может кто сталкивался, подскажите как это сделать.

вот так включаю
Код: Выделить всёРазвернуть
net spindel-on halui.spindle.start <= xhc-hb04.button-spindle

также и выключить можно выставив halui.spindle.stop в 1
sergfrezer
Новичок
 
Сообщения: 7
Зарегистрирован: 23 мар 2016, 00:52
Репутация: 0
Настоящее имя: Сергей

Re: Кнопка с двумя состояниями в HAL

Сообщение UAVpilot » 23 мар 2016, 13:31

С помощью триггера это делается.
http://linuxcnc.org/docs/devel/html/man ... lop.9.html
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 14393
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3440
Медальки:
Настоящее имя: Сергей

Re: Кнопка с двумя состояниями в HAL

Сообщение sergfrezer » 23 мар 2016, 15:54

Спасибо за помощь.
С первого раза не получилось придумать как сдлеать с помощью триггера, вываливается ошибка. Поправте как правильно.
Код: Выделить всёРазвернуть
loadrt  flipflop
addf flipflop.0 servo-thread
net trigger flipflop.0.clk <= xhc-hb04.button-spindle
net spindel-on flipflop.0.out  => halui.spindle.start
#net spindel-off flipflop.0.reset => halui.spindle.stop (у триггера инверсного выхода не нашел, пока не понял как сделать.)


Только изучаю hal, есть где хорошие ресурсы в сети с примерами ?
sergfrezer
Новичок
 
Сообщения: 7
Зарегистрирован: 23 мар 2016, 00:52
Репутация: 0
Настоящее имя: Сергей

Re: Кнопка с двумя состояниями в HAL

Сообщение UAVpilot » 24 мар 2016, 00:56

sergfrezer писал(а):у триггера инверсного выхода не нашел, пока не понял как сделать.

К выходу прицепите инвертор http://linuxcnc.org/docs/devel/html/man/man9/not.9.html

sergfrezer писал(а):Только изучаю hal, есть где хорошие ресурсы в сети с примерами ?

Я б посоветовал освоить построение цифровых логических схем на типовых логических элементах типа И, ИЛИ, НЕ и т.п., после этого останется только сообразить, что HAL - это по сути язык описания таких схем.
Можно ещё вот эту тему почитать для понимания сути HAL: http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=5751 К сожалению тема развития не получила...
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 14393
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3440
Медальки:
Настоящее имя: Сергей

Re: Кнопка с двумя состояниями в HAL

Сообщение sergfrezer » 24 мар 2016, 14:46

Я б посоветовал освоить построение цифровых логических схем на типовых логических элементах типа И, ИЛИ, НЕ и т.п.


С этим проблем нет, проблемы в правильности описания нужных операций в HAL файле.
Допустим как описать чтобы при нажатии на кнопку spindel триггер менял состояние на выходе на котором весит включение шпинделя и инвертер NOT на выходе которого весит выключение шпинделя. В графическом виде это описать просто а вот тут с первого тычка не получается. Можете пример сделать какой нибудь? Спасибо за помощь.
sergfrezer
Новичок
 
Сообщения: 7
Зарегистрирован: 23 мар 2016, 00:52
Репутация: 0
Настоящее имя: Сергей

Re: Кнопка с двумя состояниями в HAL

Сообщение nkp » 24 мар 2016, 14:53

sergfrezer писал(а):графическом виде это описать просто

тогда ClassicLadder в помощь))
там только графика+логика)
nkp
Мастер
 
Сообщения: 6954
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1084
Медальки:

Re: Кнопка с двумя состояниями в HAL

Сообщение Сергей Саныч » 24 мар 2016, 15:01

Сигнал с выхода триггера через инвертор заведите на вход data этого же триггера. Сигнал от кнопки - на вход clk.
Состояние триггера будет меняться на противоположное при каждом нажатии.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 7292
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2206
Медальки:

Re: Кнопка с двумя состояниями в HAL

Сообщение sergfrezer » 24 мар 2016, 17:13

Код: Выделить всёРазвернуть
# Spindle on\off
loadrt not names=not.0,not.1
addf not.0 servo-thread
addf not.1 servo-thread
loadrt flipflop names=flipflop.0
addf flipflop.0 servo-thread
net sig1 flipflop.0.clk <= xhc-hb04.button-spindle
net sig2 flipflop.0.out => not.0.in not.1.in halui.spindle.start
net sig3 flipflop.0.data <= not.0.out
net sig4 not.1.out => halui.spindle.stop


Помогите, чего я тут не так делаю.. ошибка вылезает.. немогу побороть.
sergfrezer
Новичок
 
Сообщения: 7
Зарегистрирован: 23 мар 2016, 00:52
Репутация: 0
Настоящее имя: Сергей

Re: Кнопка с двумя состояниями в HAL

Сообщение UAVpilot » 24 мар 2016, 17:17

Ошибка-то какая?

P.S. Одного инвертора достаточно.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 14393
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3440
Медальки:
Настоящее имя: Сергей

Re: Кнопка с двумя состояниями в HAL

Сообщение sergfrezer » 24 мар 2016, 17:29

Скриншот с ошибкой.
Вложения
Снимок экрана - 24.zip
(59.22 Кб) Скачиваний: 82
sergfrezer
Новичок
 
Сообщения: 7
Зарегистрирован: 23 мар 2016, 00:52
Репутация: 0
Настоящее имя: Сергей

Re: Кнопка с двумя состояниями в HAL

Сообщение UAVpilot » 24 мар 2016, 18:20

Достаточно просто текст скопипастить...

Похоже flipflop уже где-то раньше загружен.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 14393
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3440
Медальки:
Настоящее имя: Сергей

Re: Кнопка с двумя состояниями в HAL

Сообщение sergfrezer » 24 мар 2016, 20:06

UAVpilot писал(а):Достаточно просто текст скопипастить...

Похоже flipflop уже где-то раньше загружен.



Да , спасибо !
загрузка flipflop была ниже.

Скопировал все в одну загрузку и заработало. :good:

Код: Выделить всёРазвернуть
# Spindle on\off
loadrt not names=not.0
addf not.0 servo-thread
loadrt flipflop names=flipflop_spindel,flipflop_resume,flipflop_pause,flipflop_run

addf flipflop_spindel servo-thread
addf flipflop_resume servo-thread
addf flipflop_pause servo-thread
addf flipflop_run servo-thread

net sig1 flipflop_spindel.clk <= xhc-hb04.button-spindle
net sig2 flipflop_spindel.out => not.0.in halui.spindle.start
net sig3 flipflop_spindel.data halui.spindle.stop <= not.0.out
sergfrezer
Новичок
 
Сообщения: 7
Зарегистрирован: 23 мар 2016, 00:52
Репутация: 0
Настоящее имя: Сергей

Re: Кнопка с двумя состояниями в HAL

Сообщение jo_key » 27 апр 2016, 15:00

А если сюда еще подвязать аппаратную кнопку (например на hm2_5i25.0.7i77.0.0.input-22) как должен выглядеть ХАЛ?
jo_key
Почётный участник
Почётный участник
 
Сообщения: 241
Зарегистрирован: 19 сен 2011, 14:49
Откуда: Украина, Харьков
Репутация: 30
Медальки:
Настоящее имя: Евгений

Re: Кнопка с двумя состояниями в HAL

Сообщение jo_key » 21 июн 2016, 15:51

Попробовал ентот ФлипФлоп, не совсем понравился. Сделал сдедующим образом (кнопка вкл СОЖ)

net coolant-btn and2.6.in0 <= hm2_5i25.0.7i77.0.0.input-27
net machine-is-on and2.6.in1 <= halui.machine.is-on
net coolant-request toggle.0.in <= and2.6.out
net coolant-toggle toggle2nist.0.in <= toggle.0.out
net coolant-is-on toggle2nist.0.is-on <= halui.flood.is-on
net coolant-on halui.flood.on <= toggle2nist.0.on
net coolant-off halui.flood.off <= toggle2nist.0.off
jo_key
Почётный участник
Почётный участник
 
Сообщения: 241
Зарегистрирован: 19 сен 2011, 14:49
Откуда: Украина, Харьков
Репутация: 30
Медальки:
Настоящее имя: Евгений

Re: Кнопка с двумя состояниями в HAL

Сообщение Nick » 21 июн 2016, 16:24

Да, toogle - хороший вариант. Там еще и debounce встроенный есть.
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1328
Заслуга: Developer
Медальки:

Re: Кнопка с двумя состояниями в HAL

Сообщение nkp » 21 июн 2016, 16:38

Кнопка с двумя состояниями в HAL Выделение_038.png
nkp
Мастер
 
Сообщения: 6954
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1084
Медальки:

Re: Кнопка с двумя состояниями в HAL

Сообщение jo_key » 04 июл 2016, 14:16

Да, ЛинуксЦНЦ это блин, "нифига себе конструктор", которые одни и те же вещи можно решать кучей способов )))
jo_key
Почётный участник
Почётный участник
 
Сообщения: 241
Зарегистрирован: 19 сен 2011, 14:49
Откуда: Украина, Харьков
Репутация: 30
Медальки:
Настоящее имя: Евгений

Re: Кнопка с двумя состояниями в HAL

Сообщение jo_key » 06 апр 2017, 16:18

так же можно и мультиклик использовать
multiclick.N

multiclick.N.in bit in
multiclick.N.single-click bit out
multiclick.N.single-click-only bit out
multiclick.N.double-click bit out
multiclick.N.double-click-only bit out
multiclick.N.triple-click bit out
multiclick.N.triple-click-only bit out
multiclick.N.quadruple-click bit out
multiclick.N.quadruple-click-only bit out
multiclick.N.state s32 out
jo_key
Почётный участник
Почётный участник
 
Сообщения: 241
Зарегистрирован: 19 сен 2011, 14:49
Откуда: Украина, Харьков
Репутация: 30
Медальки:
Настоящее имя: Евгений


Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: 27709, aegis, Andy52280, Argon-11, artem44ik, Bing [Bot], evgenkravtsov, Evilmax, frezeryga, Google [Bot], Hanter, kfz, Lafayette, madwar, Malyarka74, nevkon, niskuli, Nixon, nva-tuning, Piligrym, PRomanS, Redmn, Rezus666, Rom327, ruskama, sas_75, simplify, Smlua, ultrus, Umnik, viael, visor, vit_rus, Yahoo [Bot], Yandex [bot], zavhoz555

Поделиться

Reputation System ©'