Страница 3 из 3

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 10:24
nkp
VAV77 писал(а):Так ведь 10,11,12 и 13 пины - это входа (in).
с рисунками выше как раз и хотел это все объяснить ;)
VAV77 писал(а):кнопка СТОП прекрасно работает.
если есть отдельные пины - сделай все команды на отдельных кнопках...

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 10:39
VAV77
Отдельных пинов нет. На 10 пине all limit, на 11 пине приходит сигнал с датчика для продолжения отработки G-кода, на 12 хотел повесить ПУСК/ПАУЗА/ПРОДОЛЖИТЬ, а на 13 СТОП.
Прописал кнопку пуск (net run parport.0.pin-12-in halui.program.run) - при нажатии пишет "не могу сделать это (EMC_TASK_PLAN_RUN) в ручном режиме". Прописываю вместо ПУСК кнопку СТОП (net run parport.0.pin-12-in halui.program.stop) - кнопка СТОП работает. Прописываю и ПУСК и СТОП

net run parport.0.pin-12-in halui.program.run
net run parport.0.pin-13-in halui.program.stop

Программа не загружается и выскакивает ошибка

Debug file information:
Can not find -sec MOT -var MOT -num 1
Can not find -sec IO -var IO -num 1
Can not find -sec LINUXCNC -var NML_FILE -num 1
Can not find -sec EMC -var NML_FILE -num 1
MKTP-8f.hal:111: Signal 'run' can not add OUT pin 'parport.0.pin-13-in', it already has OUT pin 'parport.0.pin-12-in'
5575

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 11:10
nkp
если есть два пина (12,13) - то можешь попробовать :
loadrt debounce cfg=2
addf debounce.0 base-thread
setp debounce.0.delay 10

net button12 <= parport.0.pin-12-in => debounce.0.0.in
net button13 <= parport.0.pin-13-in => debounce.0.1.in
net run-button12 <= debounce.0.0.out
net run-button13 <= debounce.0.1.out
net run-button12 => halui.mode.auto halui.program.run
net run-button13 => halui.program.stop

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 11:20
VAV77
Заработали. Но если я нажимаю на ПУСК еще раз, то отрабатывается команда как СТОП и выбрасывается ошибка "не могу сделать это (EMC_TASK_PLAN_RUN) в ручном режиме". Нажимаю еще раз ПУСК - программа начинает отрабатываться сначала. Если нажимать по очереди ПУСК и СТОП - то ошибка не возникает и если нажать несколько раз подряд кнопку СТОП - то ошибки тоже нет. А можно как то вместо ПУСК вставить код, который был раньше и отрабатывалось ПУСК/ПАУЗА/ПРОДОЛЖИТЬ. А то я в программировании очень плохо понимаю - пытаюсь учиться.

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 11:27
nkp
VAV77 писал(а):А можно как то вместо ПУСК вставить код, который был раньше и отрабатывалось ПУСК/ПАУЗА/ПРОДОЛЖИТЬ
сейчас попробовал - у меня тоже как то не уверенно "тройная" кнопка заработала...
не срабатывает edge ...
попозже посмотрим...

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 11:42
nkp
вот нашел - делал zilk:

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

loadrt toggle count=2
addf toggle.0 servo-thread
addf toggle.1 servo-thread

loadrt toggle2nist count=2
addf toggle2nist.0 servo-thread
addf toggle2nist.1 servo-thread

loadrt timedelay
addf timedelay.0  servo-thread

loadrt and2 count=3
addf and2.0 servo-thread
addf and2.1 servo-thread
addf and2.2 servo-thread

loadrt not count=2
addf not.0 servo-thread
addf not.1 servo-thread

loadrt or2 count=1
addf or2.0 servo-thread

setp toggle.0.debounce 100
setp toggle.1.debounce 100
setp timedelay.0.on-delay 1

net run-btn     and2.0.in0 and2.1.in0 and2.2.in0 timedelay.0.in <= parport.0.pin-12-in-not
net pause-btn   toggle.0.in <= parport.0.pin-15-in-not
net pause-tgl   toggle.0.out => toggle2nist.0.in
net is-paused   halui.program.is-paused => toggle2nist.0.is-on and2.1.in1 not.1.in
net is-idle     halui.program.is-idle => not.0.in
net delay       timedelay.0.out => and2.2.in1
net pause-not   not.1.out => and2.0.in1
net stop-1      and2.2.out => or2.0.in0
net stop-2      and2.0.out => or2.0.in1
net stop-out    or2.0.out  => toggle.1.in
net stop-tgl    toggle.1.out => toggle2nist.1.in
net idle-not    not.0.out => toggle2nist.1.is-on
net run-sig     toggle2nist.1.on => halui.mode.auto halui.program.run
net stop-sig    toggle2nist.1.off => halui.program.stop  
net step-sig    and2.1.out => halui.program.step
net pause-sig   toggle2nist.0.on => halui.program.pause
net resume-sig  toggle2nist.0.off => halui.program.resume
здесь две кнопки ...
их работа
(я не проверял- пробуй)
сейчас поправлю только - загрузку компонентов надо добавить ....

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 11:46
VAV77
А почему кнопка ПУСК при повторном нажатии (если не нажать СТОП) - срабатывает как СТОП (и на экране показывается, что нажата СТОП). Но что интересно, если еще раз нажать ПУСК, то программа начинает отрабатываться но интересно - машина приезжает на первую точку и стоит (не сбрасываются пины, управляющие релюшками запуска сварки). Когда нажимаю СТОП, то слышен щелчек релюшек и при нажатии ПУСК отработка программы идет нормально. По идее при повторном нажатии кнопки ПУСК ничего не должно происходить?

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 11:57
VAV77
zilk писал(а):Продолжаем вариации на тему железных кнопок. Для тех джентльменов, которым надоело тыкать мышой в экран, предлагаю к рассмотрению вариант, где двумя кнопками выполняется 5 команд, а именно:
-- кнопка RUN/STOP/STEP:
запускает выполнение программы,
при выполнении программы останавливает программу и хоумит все оси,
в режиме паузы прикаждом нажатии выполняентся один шаг программы,
в режиме паузы при длительном нажатии >1 сек. также останавливает программу и хоумит все оси;
-- кнопка PAUSE/RESUME:
при выполнении программы переводит в режим паузы,
при следующем нажатии вызывает продолжение выполнения программы.
А можно в кнопке RUN/STOP/STEP убрать следующее:
zilk писал(а):при выполнении программы останавливает программу и хоумит все оси
убрать хоумит все оси
zilk писал(а):в режиме паузы при длительном нажатии >1 сек. также останавливает программу и хоумит все оси;
вообще убрать.
А то честно мне тяжело понять что в этом коде за что отвечает.

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 12:08
nkp
попытался поправить вверху...
может с ошибками - уже нет времени...)))

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 12:30
VAV77
Все заработало - спасибо. Только исправил в строке
nkp писал(а):net pause-btn toggle.0.in <= parport.0.pin-15-in-not
pin-15 на pin-13, а то кнопка ПАУЗА не работала.
И еще - что-то в режиме ПАУЗА при нажатии кнопки ПУСК/СТОП происходит не выполнение одного шага программы - а срабатывает как кнопка СТОП.
Но для меня это не важно - то что хотел - получил. А то, что вместо кнопок ПУСК/ПАУЗА/ПРОДОЛЖИТЬ и СТОП у меня сейчас получаются кнопки ПУСК/СТОП и ПАУЗА/ПРОДОЛЖИТЬ - так это даже лучше - меньше путаницы будет.
Еще раз спасибо.

Re: Настройка кнопок через LPT порт

Добавлено: 03 авг 2013, 12:40
Nick
Тут похоже вот какая проблема -
halui работает в userspace, и обновляется раз в неизвестно сколько,
edge и все остальные работают в servo-thread, 1000 раз в секунду..

Самая засада - что если подлить сигнал от edge - то можем его обработать дважды от halui.... Т.е. стоим на паузе, нажимаем кнопку, сначала отработает снятие с паузы, а потом, отработает обратная постановка на паузу...
черт, надо что-то хитрое придумать...


т.е. нам надо придумать такую схему:
1. ждем нажатие кнопки
2. выход посылаем на edge (чтобы его обрезать)
3. выход посылаем на 3 and или на 3 toogle2nist
4. выход сбрасываем в halui и надо как то его отрубить через 0.1 с... т.е. еще 1 edge и timedelay...

Сложно как-то выходит, вам не кажется?

Re: Настройка кнопок через LPT порт

Добавлено: 05 авг 2013, 19:31
Ворон226
Корректнее будет, если все управляющие кнопки будут работать по фронту и после фильтрации дребезга.
Может нужно, наконец, переделать и сигналы halui на "фронтовые"?

Re: Настройка кнопок через LPT порт

Добавлено: 07 авг 2013, 15:15
Nick
Это избавит нас только от дополнительного edge+timedelay, остальное останется...

Re: Настройка кнопок через LPT порт

Добавлено: 07 авг 2013, 16:22
Serg
Nick писал(а):Сложно как-то выходит, вам не кажется?
Есть-же flipflop: кнопку а clk, на data единицу - на выходе получаем единицу по первому-же фронту.

Re: Настройка кнопок через LPT порт

Добавлено: 07 авг 2013, 16:56
Nick
проблема в том,что halui и flip-flop работают в разных потоках... надо сделать так, чтобы поймать фронт, потом его передать в halui, и до тех пор пока halui не отработает больше фронтов не ловить...

Re: Настройка кнопок через LPT порт

Добавлено: 07 авг 2013, 17:05
Serg
Триггер ловит только один фронт и все последующие фронты его состояние не изменят, а когда halui отработает он сбросит триггер в исходное состояние (пин reset).

Re: Настройка кнопок через LPT порт

Добавлено: 13 авг 2013, 10:24
Nick
А как halui сбросит? Там вроде не было пина изменения состояния... надо делать еще 1 триггер или что-то такое, что будет смотреть за всеми пинами состояний halui , который будет сбрасывать первый триггер...