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

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

Добавлено: 05 янв 2020, 18:38
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

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

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

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

G1 F111 X[#<_hal[gladevcp.userparam]>]
ось X поедет со скоростью 1111 мм/мин в координату ,которая "записана" в пин gladevcp.userparam(разумеется - пин свой прописать ;) )
=====================
в ini файле пишем в разделе
[RS274NGC]
FEATURES = 30

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

Добавлено: 05 янв 2020, 19:34
nkp

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

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

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

G1 F111 X[#<_hal[gladevcp.userparam]>]
ось X поедет со скоростью 1111 мм/мин в координату ,которая "записана" в пин gladevcp.userparam(разумеется - пин свой прописать ;) )
=====================
в ini файле пишем в разделе
[RS274NGC]
FEATURES = 30
благодарю за направление. буду изучать

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

Добавлено: 09 янв 2020, 09:12
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

в чем может быть проблема?

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

Добавлено: 09 янв 2020, 09:32
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.

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

Добавлено: 09 янв 2020, 11:06
Сергей Саныч
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:

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

Добавлено: 09 янв 2020, 12:55
daiman444
А как это через м66?

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

Добавлено: 09 янв 2020, 13:02
nkp
daiman444 писал(а):А как это через м66?
вот тут есть все файлы(по ссылкам) и всё хорошо видно
http://www.bodgesoc.org/lathe/lathe.html
(pyvcp панель или glade не имеет значения)

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

Добавлено: 09 янв 2020, 13:10
Сергей Саныч
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 ; копируем в нужную нам переменную

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

Добавлено: 09 янв 2020, 13:13
Сергей Саныч
Что-то не открывается :(

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

Добавлено: 09 янв 2020, 13:14
nkp
проверил - ссылка работает
Выделение_090.png (4326 просмотров) <a class='original' href='./download/file.php?id=174696&mode=view' target=_blank>Загрузить оригинал (61.56 КБ)</a>

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

Добавлено: 09 янв 2020, 13:18
nkp
Сергей Саныч писал(а):И вывести значения на индикацию из G-кода так не получится
а что именно вывести?
для большинства задач есть linuxcnc.stat

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

Добавлено: 09 янв 2020, 13:38
Сергей Саныч
nkp писал(а):а что именно вывести?
любую переменную, вычисленную в G-коде, скажем, в виджет на панели pyvcp (number, meter и т.п.)
nkp писал(а):проверил - ссылка работает
Проверил у двух провайдеров - не работает.

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

Добавлено: 09 янв 2020, 18:13
nkp
Сергей Саныч писал(а):Проверил у двух провайдеров - не работает.
может кто нибудь еще проверить:
http://www.bodgesoc.org/lathe/lathe.html

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

Добавлено: 09 янв 2020, 21:51
FLUKE
Не работает...

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

Добавлено: 09 янв 2020, 21:57
aftaev
nkp писал(а):может кто нибудь еще проверить:
http://www.bodgesoc.org/lathe/lathe.html
Ссылка у меня работает.

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

Добавлено: 10 янв 2020, 10:15
Сергей Саныч
nkp писал(а):может кто нибудь еще проверить:
http://www.bodgesoc.org/lathe/lathe.html
Проверил еще пару провайдеров - не работает. И не пингуется.
Посмотрел на всякий случай список блокировок РКН, нет там этого сайта. Да и сообщается обычно о блокировках при попытке доступа. А тут просто нет ответа от сайта Винни-Пуха Andy Puh'а.

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

Добавлено: 10 янв 2020, 12:34
Serg
Там у чикагского провайдера косяк с маршрутизацией...

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

Добавлено: 11 янв 2020, 23:17
shalek
Под VPN работает