Как реализовать связь пинов HAL с переменными подпрограммы?

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

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Nick »

А зачем тебе following error, ты всеравно вручную рулишь осью - просто делаешь тупую обратную связь pos-cmd=>pos-fb/

И кстати, какие ограничения ты имеешь в виду?
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

nkp писал(а):не до конца понятны твои требования :
убрать Axis?
не использовать интерпретатор?
...?
Прошу прощения за некорректную речь. Мне хочется сделать свою панель без лишних элементов AXIS-а.
UAVpilot писал(а):К такой оси просто не подключаешь компонент axis, а вместо него рулишь осью сам. На вход pid.N.command или stepgen.N.position-cmd подаёшь значение нужной позиции и оно едет.
Только подавай через limit3, а то оно ломанётся в указанную позицию не взирая на ограничения скорости и ускорения.
Точно! Ведь я уже так делал при управлении насосом на витражнике. Только управлял скоростью. Буду читать описание...
Nick писал(а):ИМХО это все лучше написать на Gкоде. Не хочешь axis - не надо, пишешь свой интерфейс на gladevcp и axis не грузишь вообще. Gкод загружаешь по умолчанию, и его никто не увидит.
Просто на Gкоде очень просто писать функции сверловки по шаблону.
А вот этого я не умею. Ведь создание программы через ngcgui устраивает, но не для автомата (ну не нужен в автомате навороченный интерфейс). А хорошо было бы сделать шаблон в G-кодах с автозагрузкой и опросом значений в визуальной панели и передачей этих значений переменным в G-коды. Можно простой пример автозагрузки программы в G-кодах при запуске AXIS?
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

1. Включаем станок.
2. Хомим оси.
3. От нужной оси отсоединяем axis
4. Рулим осью в рукопашную.
5. Хеппиэнд!

6. Вдруг решили снова захомить ось.
7. Подсоединяем axis обратно.
axis думает, что ось находится в 0.0, а тут вдруг у него на pos-fb появляется значение 1234.5678 (ну наша ось там находится).
Что делает уважающий себя axis, когда у него разница между pos-cmd и pos-fb составляет такие тыщи? Правильно - сваливается по following error забирая с собой всю систему...
Ну а вновь подключенный к axis pid успевает конкретно мотануть осью - ему-то на вход пришла новая позиция 0.0...

Конечно тут можно понавесить всяких защит в виде limit3 и т.п., но получаются слишком уж сложные навороты и тогда придётся долго ждать, когда axis "доползёт" до позиции оси, что можно было из снова соединить.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение nkp »

Ворон226 писал(а):автозагрузки программы в G-кодах при запуске AXIS?
OPEN_FILE = /full/path/to/file.ngc
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Nick »

UAVpilot писал(а):axis думает, что ось находится в 0.0, а тут вдруг у него на pos-fb появляется значение 1234.5678 (ну наша ось там находится).
Что делает уважающий себя axis, когда у него разница между pos-cmd и pos-fb составляет такие тыщи? Правильно - сваливается по following error забирая с собой всю систему...
Ну а вновь подключенный к axis pid успевает конкретно мотануть осью - ему-то на вход пришла новая позиция 0.0...
Хорошо, тогда еще проще - на вход stepgen.pos-cmd подаем sum2 от axis.pos-cmd + твой управляющий сигнал.
На фидбек оси возвращаем только axis.pos-cmd.
Тогда можно и хоумить и все, что хочешь делать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Nick »

Ворон226 писал(а):А вот этого я не умею. Ведь создание программы через ngcgui устраивает, но не для автомата (ну не нужен в автомате навороченный интерфейс). А хорошо было бы сделать шаблон в G-кодах с автозагрузкой и опросом значений в визуальной панели и передачей этих значений переменным в G-коды. Можно простой пример автозагрузки программы в G-кодах при запуске AXIS?
А почему бы не попробовать загрузить ngcgui без axis?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение nkp »

Nick писал(а):А почему бы не попробовать загрузить ngcgui без axis?
для попробовать пишешь в терминале:
ngcgui
Выделение_017.png (1756 просмотров) <a class='original' href='./download/file.php?id=34748&sid=361b0139a8e7c9e23f6aff64877f1ac4&mode=view' target=_blank>Загрузить оригинал (85.93 КБ)</a>
получаешь вот такое окошко...
жмем Subfile и выбираем свой файл подпрограммы
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Nick »

Осталось только кнопочку запустить прикрутить :).
Хотя их можно железными сделать...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

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

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Nick »

Фильтр на входные файлы :)
Останется mdi и ручные перемещения запретить :). С mdi - блокируем обратную связь и если ось шелохнулась - ferror, с ручным сложнее - придется бить по рукам :)
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

UAVpilot писал(а):1. Включаем станок.
2. Хомим оси.
3. От нужной оси отсоединяем axis
4. Рулим осью в рукопашную.
5. Хеппиэнд!

6. Вдруг решили снова захомить ось.
7. Подсоединяем axis обратно.
axis думает, что ось находится в 0.0, а тут вдруг у него на pos-fb появляется значение 1234.5678 (ну наша ось там находится).
С подобной проблемой столкнулся на двушпиндельном станке в режиме синхронной работы. Выставил два шпинделя в начала работы, включил режим синхронной работы (вторая ось Z и вторая Y просто подсоединяются в HAL-е к первым осям), обработал две одинаковые заготовки, отключил режим синхронной работы... а второй шпиндель может переместиться в любую точку (зависит от программы обработки). И LCNC не знает ничего об этом перемещении!
Вариантов решить эту проблему может быть несколько. Один из них:
процедура переключения осей должна выглядеть так - обнулить координаты и переключить оси;
процедура возврата - переместиться в ноль - переключить оси.
Причем саму процедуру переключения исполнить либо как подпрограмма, либо как mdi-команда (наверное, я несу чушь, но уверен, что смысл вы поняли).
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

Пытаюсь на практике опробовать способы организации связи между HAL, визуальной панелью и подпрограммами.

Столкнулся с задачей организовать следующую процедуру:

Есть кнопка mygui.hal_button1
Есть пины halui.axis.0.pos-relative и halui.axis.1.pos-relative , которые показывают текущие относительные координаты по осям X и Y.

Как по нажатию кнопки записать значения X и Y в переменные #XMAX и #YMAX , чтобы потом использовать их в программе, написанной в G-кодах, и загруженной при запуске LCNC через OPEN_FILE в INI ?

К слову, нулевое положение осей я прописываю MDI-командой G92 X0 Y0 ...
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

Через MDI_COMMAND?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

UAVpilot писал(а):Через MDI_COMMAND?
Конечно.
В INI:
[HALUI]
MDI_COMMAND = G92 X0 Y0

В mode.hal:
net mdi1 mygui.hal_button1 halui.mdi-command-00

Нажал кнопочку - координаты обнулились.
Вот и задался я вопросом: как при нажатии кнопочки прописать значения координат в переменные?
(написал подробно не для тебя, а для тех, кто пока действительно этого не умеет ;) )
Хочешь быть счастливым? Будь им!
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение PKM »

#XMAX = #<_hal[halui.axis.0.pos-relative]>
#YMAX = #<_hal[halui.axis.1.pos-relative]>
как-то так
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

PKM писал(а):#XMAX = #<_hal[halui.axis.0.pos-relative]>
#YMAX = #<_hal[halui.axis.1.pos-relative]>
как-то так
Но это верно только для версии LCNC 2.6
И как это привязать к нажатию кнопки?

В принципе можно в HAL прописать так:

net x-pol halui.axis.0.pos-relative motion.analog-in-00
net y-pol halui.axis.1.pos-relative motion.analog-in-01

В нужный момент нажимаем кнопку и выполняем mdi-команду:
M66 E0 L0
#X_MAX = #5399
M66 E1 L0
#Y_MAX = #5399

Но я не уверен - можно ли создать mdi-команду из нескольких строк?
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение nkp »

Ворон226 писал(а):Но я не уверен - можно ли создать mdi-команду из нескольких строк?
может:
o<name>call
а в name.ngc уже размещать все строки (если их много)
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

nkp писал(а):
Ворон226 писал(а):Но я не уверен - можно ли создать mdi-команду из нескольких строк?
может:
o<name>call
а в name.ngc уже размещать все строки (если их много)
А ничего, что у меня уже загружена программа через OPEN_FILE ?
И еще вопрос: а переменные эти можно будет использовать в загруженной программе? Например, так:
G0 X#X_MAX
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение nkp »

Ворон226 писал(а):А ничего, что у меня уже загружена программа через OPEN_FILE ?
должно все работать - попробуй
Ворон226 писал(а):И еще вопрос: а переменные эти можно будет использовать в загруженной программе? Например, так:G0 X#X_MAX
если необходимо - сделать глобальными
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Ворон226 »

nkp писал(а):если необходимо - сделать глобальными
Т.е. прописать при назначении:

M66 E0 L0
#<_X_MAX> = #5399
M66 E1 L0
#<_Y_MAX> = #5399

Так?
Хочешь быть счастливым? Будь им!
Ответить

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