Помогите настроить hal для запуска программы.

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Принцип работы машины:
- подходит по программе на ускоренной к заданной точке;
- запускает по программе шпиндель;
- останавливается по программе "программируемый останов";
- запуск шпинделя запускает регулятор сварки;
- после отработки сварки регулятор подает команду программе через LPT-порт на продолжение выполнения.
Когда отрабатывал без LPT и нажимал на клавиатуре кнопку "ПРОДОЛЖИТЬ" (на клавиатуре кнопка "S"), все работало хорошо, но мне нужно автоматически.
Прописал через halui кнопку на пин LPT-порта - не работает, а при нажатии кнопки на клавиатуре выдает ошибку "Не могу делать это (EMC_TASK_PLAN_RUN) в авто режиме с ждущим интерпретатором". Может не ту кнопку прописывал (прописывал run и is-running)? Возможно ли решить каким то другим способом?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

Тут все просто:
Вот это:
- останавливается по программе "программируемый останов";
- запуск шпинделя запускает регулятор сварки;
- после отработки сварки регулятор подает команду программе через LPT-порт на продолжение выполнения.
заменяем на Gкод:

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

M03 # запускаем сварку
M66 P0 L1 # ждем сигнала
M05 # останавливаем сварку
Этот код ждет растущего сигнала до 1 на пине
motion.digital-in-NN IN BIT
These pins are used by M66 Pnn wait-for-input mode.
В hal дописываем строчку

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

net wait <= parport.0.pin-17-in 
net wait => motion.digital-in-00
(только parport правильно напиши, я его вечно путаю)

Все остальное, насколько я понимаю у тебя уже написано?
Кстати, можно добавить максимальное время ожидания.
http://linuxcnc.org/docs/html/gcode/m-c ... ut-Control
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Спасибо! Просто кода М66 я не знал.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

А как у тебя обычно проходит сварка и как Gкод готовишь? Может мы тебе сейчас еще что-нибудь интересное придумаем :)
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Сварка полностью отрабатывается регулятором сварки, поэтому там и придумать что-то сложно, а G-код пишу вручную - он очень простой и состоит из повторяющихся отрезков (выход в точку, запуск сварки, остановка сварки), поэтому загонять его в какую то программу бессмысленно. Вот когда начну делать плазму - тогда вопросов побольше будет. Еще раз спасибо за подсказку с кодом - завтра попробую и отпишусь, а то сегодня свет рубанули и ответ дописываю на бесперебойнике.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

VAV77 писал(а):Сварка полностью отрабатывается регулятором сварки, поэтому там и придумать что-то сложно, а G-код пишу вручную - он очень простой и состоит из повторяющихся отрезков (выход в точку, запуск сварки, остановка сварки), поэтому загонять его в какую то программу бессмысленно.
Ну это тоже можно упростить, например написать процедуру

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

O<melt> SUB
  G0 X#1 Y#1
  M3
  M66 P1 L1 
  M5
O<melt> ENDSUB
и потом просто писать
O<melt> CALL [10] [20]

или можно цикл добавить... а еще можно попробовать Features использовать, но он правда пока еще не готов :freak:
LinuxCNC Features - набор мастеров для LinuxCNC #1
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Вылезла ошибка:
"Нулевое ожидание с типом ожидания не равным немедленному возврату".
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

А на счет процедуры, то их нужно писать две, одну для М03, вторую для М04. Я не говорил, но у меня есть два режима сварки - один для 1,5+2,5, второй для 2,5+2,5, а релюшки замыкают различные входа регулятора для выбора нужного режима сварки. Поэтому не хочется сильно мудро писать код - простому человеку легче объяснить простой код - это повторил и поменял только координаты и выбрал программу!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

VAV77 писал(а):А на счет процедуры, то их нужно писать две, одну для М03, вторую для М04. Я не говорил, но у меня есть два режима сварки - один для 1,5+2,5,
Для этого есть IF, и можно либо еще параметр добавить в вызов функции, либо просто сверху объявлять, либо вообще просто кнопку сделать на pyvcp...
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

А что можно с ошибкой сделать?
Уже поменял "M66 P0 L1" на "M66 P1 L1", как написано в описании процедуры, все равно пишет ошибку
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

Надо в M66 добавить параметр Q и максимальное количество секунд, которое ждать. (хмм, раньше думал, что это не обязательно...)

А P поставь в 0 (если используешь первый digital input)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение nkp »

Nick писал(а):Для этого есть IF,
это что??
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

Ну O100 IF [] ...
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Nick писал(а):Надо в M66 добавить параметр Q и максимальное количество секунд, которое ждать. (хмм, раньше думал, что это не обязательно...)
Поставил 10 сек, так сварка уже прошла, а он ждет 10 сек. и только потом продолжает работу, т.е. наличие сигнала он проверяет после заданного времени - даже если он пришел раньше.
А ставлю 1, так он начинает работу раньше, чем подается сигнал на порт с регулятора сварки! Может я что то не так прописал в hal, поэтому и выдавало ошибку без указания времени.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение nkp »

Nick писал(а):Ну O100 IF [] ...
:hehehe:
блин , ни за что б не догадался...
я думал что ты свою прогу переименовал - "I" добавил (интегрированные фичи) :)
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Может после "L" другое число должно быть?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

VAV77 писал(а):Поставил 10 сек, так сварка уже прошла, а он ждет 10 сек. и только потом продолжает работу, т.е. наличие сигнала он проверяет после заданного времени - даже если он пришел раньше.
Как выглядит сигнал, и как выглядит строка gкода? В hal добавил строчки?
Кстати, можно сделать аварийную остановку, если время прошло, а с датчика нет сигнала, или как минимум сообщение оператору.
Надо?

L1 - ждет растущего фронта, т.е. ждет перехода с 0 к 1.
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Nick писал(а):Как выглядит сигнал
Просто подается сигнал на вход платы через концевик (концевик срабатывает когда цилиндр поднят).
Nick писал(а): как выглядит строка gкода
S1G03
M66 P0 L1 Q01 (ставил и Q10)
G05
Nick писал(а):В hal добавил строчки?
Добавил
Nick писал(а):net wait <= parport.0.pin-17-in
net wait => motion.digital-in-00
Когда Q поставил значение 01, а на регуляторе сварки время на цикл сварки запрограммировал около 3-х секунд, так программа пошла отрабатываться еще до завершения цикла сварки.
А когда поставил 10сек, так сварка прошла за 1сек, датчик сработал, а машина ждет еще 9сек и только потом продолжается отработка G-кода.
VAV77
Кандидат
Сообщения: 43
Зарегистрирован: 28 мар 2013, 08:55
Репутация: 0
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение VAV77 »

Кстати, отключил датчик от платы вообще, так машина просто выдерживает заданное время и продолжает работу, не обращая внимания на сигнал с датчика.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Помогите настроить hal для запуска программы.

Сообщение Nick »

Посмотри через halmeter что на самом деле творится на пине motion.digital-in-00, или сигнале wait.
Может у тебя пин инвертирован, тогда надо спадающий фронт смотреть. (L2)

То что ждет 10с значит, что он не получает сигнал.

Добавь вот такие строки под M66:

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

O100 IF [#5399 EQ 0] 
  (DEBUG, Внимание! Недождались окончания сварки!)
O100 ENDIF
Ответить

Вернуться в «LinuxCNC»