Страница 3 из 5
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 13:32
Nick
А зачем тебе following error, ты всеравно вручную рулишь осью - просто делаешь тупую обратную связь pos-cmd=>pos-fb/
И кстати, какие ограничения ты имеешь в виду?
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 14:23
Ворон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?
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 14:28
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 "доползёт" до позиции оси, что можно было из снова соединить.
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 14:29
nkp
Ворон226 писал(а):автозагрузки программы в G-кодах при запуске AXIS?
OPEN_FILE = /full/path/to/file.ngc
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 16:44
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.
Тогда можно и хоумить и все, что хочешь делать.
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 16:46
Nick
Ворон226 писал(а):А вот этого я не умею. Ведь создание программы через ngcgui устраивает, но не для автомата (ну не нужен в автомате навороченный интерфейс). А хорошо было бы сделать шаблон в G-кодах с автозагрузкой и опросом значений в визуальной панели и передачей этих значений переменным в G-коды. Можно простой пример автозагрузки программы в G-кодах при запуске AXIS?
А почему бы не попробовать загрузить ngcgui без axis?
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 16:52
nkp
Nick писал(а):А почему бы не попробовать загрузить ngcgui без axis?
для попробовать пишешь в терминале:
ngcgui
получаешь вот такое окошко...
жмем Subfile и выбираем свой файл подпрограммы
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 17:00
Nick
Осталось только кнопочку запустить прикрутить

.
Хотя их можно железными сделать...
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 17:01
Serg
Nick писал(а):Тогда можно и хоумить и все, что хочешь делать.
Это пока лучший вариант, но тут есть неконтроллируемый фактор - эту ось могут G-кодом сдвинуть...
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 17:08
Nick
Фильтр на входные файлы
Останется mdi и ручные перемещения запретить

. С mdi - блокируем обратную связь и если ось шелохнулась - ferror, с ручным сложнее - придется бить по рукам

Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 10 окт 2014, 18:30
Ворон226
UAVpilot писал(а):1. Включаем станок.
2. Хомим оси.
3. От нужной оси отсоединяем axis
4. Рулим осью в рукопашную.
5. Хеппиэнд!
6. Вдруг решили снова захомить ось.
7. Подсоединяем axis обратно.
axis думает, что ось находится в 0.0, а тут вдруг у него на pos-fb появляется значение 1234.5678 (ну наша ось там находится).
С подобной проблемой столкнулся на двушпиндельном станке в режиме синхронной работы. Выставил два шпинделя в начала работы, включил режим синхронной работы (вторая ось Z и вторая Y просто подсоединяются в HAL-е к первым осям), обработал две одинаковые заготовки, отключил режим синхронной работы... а второй шпиндель может переместиться в любую точку (зависит от программы обработки). И LCNC не знает ничего об этом перемещении!
Вариантов решить эту проблему может быть несколько. Один из них:
процедура переключения осей должна выглядеть так - обнулить координаты и переключить оси;
процедура возврата - переместиться в ноль - переключить оси.
Причем саму процедуру переключения исполнить либо как подпрограмма, либо как mdi-команда (наверное, я несу чушь, но уверен, что смысл вы поняли).
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 12 окт 2014, 18:14
Ворон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 ...
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 12 окт 2014, 18:51
Serg
Через MDI_COMMAND?
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 12 окт 2014, 19:01
Ворон226
UAVpilot писал(а):Через MDI_COMMAND?
Конечно.
В INI:
[HALUI]
MDI_COMMAND = G92 X0 Y0
В mode.hal:
net mdi1 mygui.hal_button1 halui.mdi-command-00
Нажал кнопочку - координаты обнулились.
Вот и задался я вопросом: как при нажатии кнопочки прописать значения координат в переменные?
(написал подробно не для тебя, а для тех, кто пока действительно этого не умеет

)
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 12 окт 2014, 19:42
PKM
#XMAX = #<_hal[halui.axis.0.pos-relative]>
#YMAX = #<_hal[halui.axis.1.pos-relative]>
как-то так
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 12 окт 2014, 20:03
Ворон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-команду из нескольких строк?
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 12 окт 2014, 20:08
nkp
Ворон226 писал(а):Но я не уверен - можно ли создать mdi-команду из нескольких строк?
может:
o<name>call
а в name.ngc уже размещать все строки (если их много)
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 12 окт 2014, 20:28
Ворон226
nkp писал(а):Ворон226 писал(а):Но я не уверен - можно ли создать mdi-команду из нескольких строк?
может:
o<name>call
а в name.ngc уже размещать все строки (если их много)
А ничего, что у меня уже загружена программа через OPEN_FILE ?
И еще вопрос: а переменные эти можно будет использовать в загруженной программе? Например, так:
G0 X#X_MAX
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 12 окт 2014, 20:45
nkp
Ворон226 писал(а):А ничего, что у меня уже загружена программа через OPEN_FILE ?
должно все работать - попробуй
Ворон226 писал(а):И еще вопрос: а переменные эти можно будет использовать в загруженной программе? Например, так:G0 X#X_MAX
если необходимо - сделать
глобальными
Re: Как реализовать связь пинов HAL с переменными подпрограм
Добавлено: 12 окт 2014, 21:05
Ворон226
nkp писал(а):если необходимо - сделать глобальными
Т.е. прописать при назначении:
M66 E0 L0
#<_X_MAX> = #5399
M66 E1 L0
#<_Y_MAX> = #5399
Так?