Настройка кнопок через LPT порт
-
VAV77
- Кандидат
- Сообщения: 43
- Зарегистрирован: 28 мар 2013, 08:55
- Репутация: 0
- Контактная информация:
Настройка кнопок через LPT порт
Необходимо продублировать через LPT порт кнопки "ПУСК ПРОГРАММЫ" (на клавиатуре кнопка "R"), "СТОП ПРОГРАММЫ" (на клавиатуре кнопка "ESC") и "ПРОДОЛЖИТЬ" (на клавиатуре кнопка "S"). Как это можно прописать? В программе настройки я на эти пины поставил "программируемая кнопка". Я догадываюсь, что нужно прописать в hal файле, но что писать - не знаю. И еще, если можно так сделать, объединить кнопку "ПУСК ПРОГРАММЫ" (на клавиатуре кнопка "R") и команду "ПРИОСТАНОВИТЬ" (на клавиатуре кнопка "P"). Т.е. во время выполнения программы кнопка работает как "ПРИОСТАНОВИТЬ" и "ПРОДОЛЖИТЬ", а если программа закончилась отрабатываться, то кнопка работает как "ПУСК ПРОГРАММЫ".
Последний раз редактировалось VAV77 06 июл 2013, 09:29, всего редактировалось 1 раз.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Настройка кнопок через LPT порт
для этого можно использовать пины halui...
первое :
в ini-файле в рабочей конфигурации в секции [HAL] пропишем HALUI = halui (если такой строки там нет): в емс появятся пины halui : теперь их можно коннектить к пинам парпорта,например:
net run parport.0.pin-10-in halui.program.run
(это пишем в .hal )
теперь подав сигнал на 10-ю ногу LPT мы запускаем программу на выполнение
идентично любой другой пин halui присоеденяем
два обязательных условия:
используемый пин порта должен быть свободен
имя сигнала (в примере run) - должно быть уникальным (не повторяться)...
это способ: " одна команда - одна кнопка "
=============
сейчас найду описание совмещения кнопок...
вот и ...
первое :
в ini-файле в рабочей конфигурации в секции [HAL] пропишем HALUI = halui (если такой строки там нет): в емс появятся пины halui : теперь их можно коннектить к пинам парпорта,например:
net run parport.0.pin-10-in halui.program.run
(это пишем в .hal )
теперь подав сигнал на 10-ю ногу LPT мы запускаем программу на выполнение
идентично любой другой пин halui присоеденяем
два обязательных условия:
используемый пин порта должен быть свободен
имя сигнала (в примере run) - должно быть уникальным (не повторяться)...
это способ: " одна команда - одна кнопка "
=============
сейчас найду описание совмещения кнопок...
вот и ...
-
VAV77
- Кандидат
- Сообщения: 43
- Зарегистрирован: 28 мар 2013, 08:55
- Репутация: 0
- Контактная информация:
Re: Настройка кнопок через LPT порт
Там по ссылке трудно разобраться. Описания что за что отвечает нет, а я в программировании не силен. Может можно это описать как-то проще?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Настройка кнопок через LPT порт
Сделай просто как nkp написал - в файл название-станка.hal, или custom.hal добавляешь
Так же можно сделать с пинами
halui.program.pause (bit, in) - пин для приостановки программы.
halui.program.resume (bit, in) - пин для возобновления программы
halui.program.run (bit, in) - пин для запуска программы.
halui.program.step (bit, in) - пин для выполнения программы пошагово.
halui.program.stop (bit, in) - пин для остановки программы.
Чтобы в одной кнопке совместить несколько функций надо их пропустить через логические компоненты.
Напиши, что будет делать каждая физическая кнопка и при каких условиях...
вместо pin-10-in номер пина с кнопкой.nkp писал(а):net run parport.0.pin-10-in halui.program.run
Так же можно сделать с пинами
halui.program.pause (bit, in) - пин для приостановки программы.
halui.program.resume (bit, in) - пин для возобновления программы
halui.program.run (bit, in) - пин для запуска программы.
halui.program.step (bit, in) - пин для выполнения программы пошагово.
halui.program.stop (bit, in) - пин для остановки программы.
Чтобы в одной кнопке совместить несколько функций надо их пропустить через логические компоненты.
Напиши, что будет делать каждая физическая кнопка и при каких условиях...
-
VAV77
- Кандидат
- Сообщения: 43
- Зарегистрирован: 28 мар 2013, 08:55
- Репутация: 0
- Контактная информация:
Re: Настройка кнопок через LPT порт
У меня всего две кнопки, поэтому я хотел прописать на одну "run"(запуск программы - когда программа не запущена), а когда программа отрабатывается, то при первом нажатии "pause"(приостановка), а при повторном нажатии "resume"(возобновление). А вторая кнопка просто "stop" (остановка).Nick писал(а):Напиши, что будет делать каждая физическая кнопка и при каких условиях
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Настройка кнопок через LPT порт
Тогда нужно настроить только кнопку пуска, стоп и так настроен:
А кнопку пуск/пауза/продолжить настраиваем так:
Попробуй так, хотя, может понадобится добавить oneshot, чтобы кнопка срабатывала только на нажатие и не генерировала события по 1000 раз в секунду.
А кнопку пуск/пауза/продолжить настраиваем так:
Код: Выделить всё
loadrt and2 count=3
addf and2.0 servo-thread
addf and2.1 servo-thread
addf and2.2 servo-thread
net run-button <= parport.0.pin-14-in
net run-button => and2.0.in0 and2.1.in0 and2.2.in0
net is-idle <= halui.program.is-idle => and2.0.in1
net is-running <= halui.program.is-running => and2.1.in1
net is-paused <= halui.program.is-paused => and2.2.in1
net run <= and2.0.out => halui.program.run
net pause <= and2.1.out => halui.program.pause
net resume <= and2.2.out => halui.program.resume
-
VAV77
- Кандидат
- Сообщения: 43
- Зарегистрирован: 28 мар 2013, 08:55
- Репутация: 0
- Контактная информация:
Re: Настройка кнопок через LPT порт
прописал кнопку STOP, так во время отработки при нажатии отработка не останавливается, и появляется ошибка "не могу сделать это (EMC_TASK_PLAN_RUN) в авто режиме с читающим интерпретатором".
Может у меня и этот вход инвертирован? Или что-то другое?
Может у меня и этот вход инвертирован? Или что-то другое?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Настройка кнопок через LPT порт
вот это:
net run-button <= parport.0.pin-14-in
замени на:
Это мы убрали дребезг на контакте и реагируем только на нажатие, а не пока кнопка нажата.
net run-button <= parport.0.pin-14-in
замени на:
Код: Выделить всё
loadrt edge
addf edge.0 servo-thread
loadrt debounce cfg=1
addf debounce.0 servo-thread
setp debounce.0.delay 10
net button <= parport.0.pin-14-in => debounce.0.0.in
net debounced <= debounce.0.0.out => edge.0.in
net run-button <= edge.0.out-
VAV77
- Кандидат
- Сообщения: 43
- Зарегистрирован: 28 мар 2013, 08:55
- Репутация: 0
- Контактная информация:
Re: Настройка кнопок через LPT порт
Поменял - вообще не реагирует на кнопку.
-
VAV77
- Кандидат
- Сообщения: 43
- Зарегистрирован: 28 мар 2013, 08:55
- Репутация: 0
- Контактная информация:
Re: Настройка кнопок через LPT порт
Прописал просто кнопку ПУСК, запустил CNC и при нажатии кнопки ПУСК выдает ошибку:
"не могу сделать это (EMC_TASK_PLAN_RUN) в ручном режиме".
"не могу сделать это (EMC_TASK_PLAN_RUN) в ручном режиме".
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Настройка кнопок через LPT порт
надо включить режим auto... попробуй добавить
halui.mode.auto к
net run <= and2.0.out => halui.program.run
halui.mode.auto к
net run <= and2.0.out => halui.program.run
-
VAV77
- Кандидат
- Сообщения: 43
- Зарегистрирован: 28 мар 2013, 08:55
- Репутация: 0
- Контактная информация:
Re: Настройка кнопок через LPT порт
Это так?Nick писал(а): попробуй добавить
halui.mode.auto к
net run <= and2.0.out => halui.program.run
net run <= and2.0.out => halui.program.run halui.mode.auto
или просто отдельной строкой?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Настройка кнопок через LPT порт
net run <= and2.0.out => halui.mode.auto halui.program.run
да - так по идее должно работать...
да - так по идее должно работать...
-
VAV77
- Кандидат
- Сообщения: 43
- Зарегистрирован: 28 мар 2013, 08:55
- Репутация: 0
- Контактная информация:
Re: Настройка кнопок через LPT порт
А у меня еще возник вопрос, но не по теме.
Возможно как-то сделать, что при загрузке LinuxCNC на указанный пин подавался сигнал? Объясню почему - просто при заргузке на пинах происходит что угодно и у меня иногда даже проходит сварка. Пока решил проблему тем, что на плату согласования питающее напряжение подаю через реле, а реле включаю кнопкой без фиксации, плюс одну группу контактов сделал для само подхвата. И сейчас включаю машину, потом кнопкой включаю системник, а после загрузки кнопкой подаю питание на плату согласования. А хотелось питание подавать автоматически, но через LPT, как я понимаю, это не все равно не получится, т.к. на этот пин при загрузке может податься случайно сигнал еще при загрузке. Может можно это решить через СОМ-порт или USB?
Возможно как-то сделать, что при загрузке LinuxCNC на указанный пин подавался сигнал? Объясню почему - просто при заргузке на пинах происходит что угодно и у меня иногда даже проходит сварка. Пока решил проблему тем, что на плату согласования питающее напряжение подаю через реле, а реле включаю кнопкой без фиксации, плюс одну группу контактов сделал для само подхвата. И сейчас включаю машину, потом кнопкой включаю системник, а после загрузки кнопкой подаю питание на плату согласования. А хотелось питание подавать автоматически, но через LPT, как я понимаю, это не все равно не получится, т.к. на этот пин при загрузке может податься случайно сигнал еще при загрузке. Может можно это решить через СОМ-порт или USB?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Настройка кнопок через LPT порт
напиши в хал файл:
setp parport.0.pin-01-out 1
и при загрузке указанный пин порта будет активным
setp parport.0.pin-01-out 1
и при загрузке указанный пин порта будет активным
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Настройка кнопок через LPT порт
Самый надёжный вариант - это использовать небольшое устройство на МК, подключаемое к любому свободному порту (COM, USB, ...), устройство будет включать питание по какой-либо команде, тот-же modbus хорошо подойдёт и пригодится для расширения.
Самый простой - выделить один пин порта и подключить на него несложное устройство, которое будет включать реле при наличии импульсов на входе. В linuxcnc повесисть на этот пин генератор.
Самый простой - выделить один пин порта и подключить на него несложное устройство, которое будет включать реле при наличии импульсов на входе. В linuxcnc повесисть на этот пин генератор.
А какое у него будет состояние до того, как запустится linuxcnc?nkp писал(а):и при загрузке указанный пин порта будет активным
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Настройка кнопок через LPT порт
одному только компьютерному богу известно...))))UAVpilot писал(а):А какое у него будет состояние до того, как запустится linuxcnc?
я только ответил
VAV77 писал(а):Возможно как-то сделать, что при загрузке LinuxCNC на указанный пин подавался сигнал?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Настройка кнопок через LPT порт
Так при загрузке, т.е. до того как полностью загрузится там и будет непонятно какое состояние.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Настройка кнопок через LPT порт
Самый распространенный вариант, и вполне работоспособный. Даже специальный компонент-генератор есть в LinuxCNC - chargepump. При запуске выдает меандр с частотой basethread/2. И простенькая аналоговая схемка, которая эту импульсную последовательность обнаруживает.UAVpilot писал(а):Самый простой - выделить один пин порта и подключить на него несложное устройство, которое будет включать реле при наличии импульсов на входе. В linuxcnc повесисть на этот пин генератор.
Чудес не бывает. Бывают фокусы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Настройка кнопок через LPT порт
Какой у тебя контроллер? Просто на некоторых контроллерах бывает встроенный chargepump он как раз и нужен, чтобы такого не происходило.
