Передача значений в макрос из Axis

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

Передача значений в макрос из Axis

Сообщение daiman444 »

Здравствуйте, коллеги. Некоторое время работаю на своем плазморезе.
Управляется плазморез отличной программой Mach3. Он был выбран по некоторым причинам и теперь есть необходимость перейти на что-то более стабильное. Что то более стабильное из доступного и интересного оказался LinuxCNC.
Есть некоторые достижения в этом направлении, но еще много чего не понятно.
Сделан конфиг под параметры моего станка(это было самым легким), и по аналогии со скринсетом для Mach3, который дополнен своими руками, создал панель GladeVCP для LinuxCNC. Завести мигающие LED-ки, связать кнопки с MDI-коммандами никаких проблем не составило.
В Mach3 алгоритм включения плазмы и прокола записаны в макросе M03. параметры включения плазмы и прокола берутся в реальном времени из скринсета, тоесть в любой момент можно скорректировать высоту прокола, высоту подпрыжки, добавить задержку, скорректировать скорость нащупывания металла. Т.к. есть необходимость в контроле этих параметров, то хотелось бы продолжить их контролировать и в EMC2, по привычному алгоритму, т.е. через окно программы. Соответствующие кнопки добавлены в панель GladeVCP, но не хватает мозгов соединить их с выполнением команд.
Как можно задать переменные в .ngc-файле, значения которых будут браться из панели GladeVCP?

Макрос включения плазмы взят с просторов бескрайнего и чуток подпилен под свои нужды и выглядит так:

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

Dim A As long			'назначаем переменные
Dim B As long
Dim C As long
Dim D As long
Dim E As long
A = GetOEMDRO(1001)		'высота прожига
B = GetOEMDRO(1002)		'высота подпрыжки
C = GetOEMDRO(1003)		'высота резки
D = GetOEMDRO(1004)		'задержка рпожига
E = GetOEMDRO(1005)		'Скорость оси Z
CurrentFeed = GetOemDRO(818) 	'запоминаем значение текущей подачи
Code "G31 Z-200" &E		'опускаем горелку до срабатывания датчика касания
While IsMoving() 		'ждём выполнения
Sleep 0.1 			'задержка 100мс 
Wend
Code "G92 Z0" 			'обнуляем координату Z
Code "G0 Z" &A 			'поднимаем горелку на высоту прожига
While IsMoving ()
Sleep 0.1
Wend
DoSpinCW() 			'включение плазмотрона
While IsMoving ()
Sleep 0.1
Wend
Code "G0 Z" &B 			'перемещение на высоту подпрыжки
Code "G0 Z" &C 			'перемещение на высоту резки
Code "G04 P" &D			'"аппаратная" задержка на прожиг
StartTHC()			'включаем THC
While IsMoving ()
Sleep 0.1
Wend
Code "F" &CurrentFeed 		'возврат к скорости заданной в УП
Для понимания что откуда берется и куда хочется это воткнуть во вложении конфиг для LinuxCNC и конфиг на котором работает в данный момент станок под управлением Mach3

Буду рад любой конструктивной помощи и критике.

забыл добавить ссылку, может кому так удобней:
https://github.com/daiman444/my_plasma
Вложения
Plasma Work(05,01,2020).zip
Конфиг Mach3.
(349.63 КБ) 369 скачиваний
MY_PLASMA(05.01.2020).tar.gz
Конфиг для LinuxCNC
(7.87 КБ) 482 скачивания
m3.txt
макрос включения плазмы для Mach3
(985 байт) 491 скачивание
Последний раз редактировалось daiman444 05 янв 2020, 19:47, всего редактировалось 1 раз.
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение nkp »

daiman444 писал(а):Как можно задать переменные в .ngc-файле, значения которых будут браться из панели GladeVCP?
вот так

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

G1 F111 X[#<_hal[gladevcp.userparam]>]
ось X поедет со скоростью 1111 мм/мин в координату ,которая "записана" в пин gladevcp.userparam(разумеется - пин свой прописать ;) )
=====================
в ini файле пишем в разделе
[RS274NGC]
FEATURES = 30
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение daiman444 »

nkp писал(а):
daiman444 писал(а):Как можно задать переменные в .ngc-файле, значения которых будут браться из панели GladeVCP?
вот так

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

G1 F111 X[#<_hal[gladevcp.userparam]>]
ось X поедет со скоростью 1111 мм/мин в координату ,которая "записана" в пин gladevcp.userparam(разумеется - пин свой прописать ;) )
=====================
в ini файле пишем в разделе
[RS274NGC]
FEATURES = 30
благодарю за направление. буду изучать
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение daiman444 »

daiman444 писал(а):ось X поедет со скоростью 1111 мм/мин в координату ,которая "записана" в пин gladevcp.userparam(разумеется - пин свой прописать )
в ini файле дописал
[RS274NGC]
FEATURES = 30
в панели glade добавил HALspinbutton. назвал его pr_speed.
написал программку для эксперимента:

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

G38.3 Z-200 F[#<_hal[gladevcp.pr_speed]>]
G90 Z0
при запуске файла пишет:
[#<_hal[gladevcp.pr_speed]>] not defined

в чем может быть проблема?
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение daiman444 »

поспешил с написанием вопроса.
Предупреждение "[#<_hal[gladevcp.pr_speed]>] not defined" вылазиит потому, что в "[#<_hal[gladevcp.pr_speed]>]" имеет два типа значений: s32 и float.
для определения какое именно значение брать нужно доопределить пин "pr_speed".
Смотрим в Axis: Станок => Показать установки HAL => Pins => gladevcp. Там будет два пина "pr_speed-s" и "pr_speed-f".
Доопределяем типом значения пин в файле .ngc до следубщего вида: [#<_hal[gladevcp.pr_speed-s]>] и получаем работающий параметр который берется из панели gladevcp.
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение Сергей Саныч »

nkp писал(а):вот так
А что, так можно было? :thinking: А я через M66 таскал...
Правда, есть нюансы. Вроде как при работе G-кода обновления значений не происходит.
Note The values are are only updated when the G code is not running.
Источник: http://linuxcnc.org/docs/html/remap/rem ... #cha:remap пункт 20
И вывести значения на индикацию из G-кода так не получится. Только через неуклюжий механизм M67-M68.

PS: Проверил: при работе кода обновление значений реально происходит. Но с некоторой визуальной задержкой (несколько десятых долей секунды) относительно чтения по M66.
Версия 2.7.15
PPS: О, сколько нам открытий чудных готовит LinuxCNC :)
Кто бы мог подумать, что информацию про передачу параметров в G-код из hal надо искать в разделе Remap :pssdoff:
Чудес не бывает. Бывают фокусы.
daiman444
Мастер
Сообщения: 304
Зарегистрирован: 18 май 2019, 15:24
Репутация: 31
Настоящее имя: Дмитрий
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение daiman444 »

А как это через м66?
Американский форум: задал вопрос — получил ответ.
Израильский форум: задал вопрос — получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты м*дак.
https://youtube.com/channel/UCv22xgeww0FIzS9n4VrT2TA
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение nkp »

daiman444 писал(а):А как это через м66?
вот тут есть все файлы(по ссылкам) и всё хорошо видно
http://www.bodgesoc.org/lathe/lathe.html
(pyvcp панель или glade не имеет значения)
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение Сергей Саныч »

daiman444 писал(а):А как это через м66?
http://linuxcnc.org/docs/html/gcode/m-c ... #mcode:m66

Примерно так:
В hal подключаешь нужный выход к одному из входов контроллера движения (motion)

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

net x1setup pyvcp.x1-setup => motion.analog-in-01
А в G-коде в два этапа получаешь нужное значение

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

 M66 E1 L0 ; немедленное чтение motion.analog-in-01 в переменную #5399 (во всех случаях в нее)
 #<_x1_setup> = #5399 ; копируем в нужную нам переменную
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение Сергей Саныч »

Что-то не открывается :(
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение nkp »

проверил - ссылка работает
Выделение_090.png (3667 просмотров) <a class='original' href='./download/file.php?id=174696&sid=865bef662bc8661ec5a9e74e51162f1f&mode=view' target=_blank>Загрузить оригинал (61.56 КБ)</a>
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение nkp »

Сергей Саныч писал(а):И вывести значения на индикацию из G-кода так не получится
а что именно вывести?
для большинства задач есть linuxcnc.stat
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение Сергей Саныч »

nkp писал(а):а что именно вывести?
любую переменную, вычисленную в G-коде, скажем, в виджет на панели pyvcp (number, meter и т.п.)
nkp писал(а):проверил - ссылка работает
Проверил у двух провайдеров - не работает.
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение nkp »

Сергей Саныч писал(а):Проверил у двух провайдеров - не работает.
может кто нибудь еще проверить:
http://www.bodgesoc.org/lathe/lathe.html
Аватара пользователя
FLUKE
Мастер
Сообщения: 843
Зарегистрирован: 11 мар 2013, 21:18
Репутация: 187
Настоящее имя: Сергей
Откуда: Смоленск
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение FLUKE »

Не работает...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение aftaev »

nkp писал(а):может кто нибудь еще проверить:
http://www.bodgesoc.org/lathe/lathe.html
Ссылка у меня работает.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение Сергей Саныч »

nkp писал(а):может кто нибудь еще проверить:
http://www.bodgesoc.org/lathe/lathe.html
Проверил еще пару провайдеров - не работает. И не пингуется.
Посмотрел на всякий случай список блокировок РКН, нет там этого сайта. Да и сообщается обычно о блокировках при попытке доступа. А тут просто нет ответа от сайта Винни-Пуха Andy Puh'а.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение Serg »

Там у чикагского провайдера косяк с маршрутизацией...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
shalek
Почётный участник
Почётный участник
Сообщения: 3019
Зарегистрирован: 25 авг 2014, 10:40
Репутация: 2579
Настоящее имя: Александр
Откуда: РБ Бобруйск
Контактная информация:

Re: Передача значений в макрос из Axis

Сообщение shalek »

Под VPN работает
Вложения
Screenshot_20200111_231237.jpg (3527 просмотров) <a class='original' href='./download/file.php?id=174843&sid=865bef662bc8661ec5a9e74e51162f1f&mode=view' target=_blank>Загрузить оригинал (224.22 КБ)</a>
Если ты не можешь решить проблему, значит это не твоя проблема!
Мой канал на YouTube: YouTube
ЧПУ "Бобр" 600x500 мм
shalek64@gmail.com
Ответить

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