WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
- wldev
- Мастер
- Сообщения: 1639
- Зарегистрирован: 24 янв 2012, 16:04
- Репутация: 510
- Настоящее имя: Сергей Бочаров
- Откуда: Новосибирск
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
Наверное стоит сделать несколько вариантов начала с середины?
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
ок. мне пока нужен был просто пусто/непусто - но чем больше инфы тем лучше
ок, QString _fileName - это полный путь?
не понял.. движение по шагам ведь с компьютера управляется?
есть запуск с определенного элемента. как остановится на следующем или заданном элементе? или это как то через startmov/stopmov решается?
это по поводу тулсеттера? пока он не установлен - но планирую сделать ему конструкцию быстросъемную в ближайшее время и если я нужен для проб - то обозначьте примерно когда. там нюансов тоже похоже хватает.
если я правильно понял Qt - это просто графический интерфейс к тем что есть
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
собственно вариантов 2 - либо использовать данные CAM, либо задавать на станке.
например из шапки УП если Z=0 - поверхность заготовки
G00 G54 G90 X25. Y-0.5
G43 H3 Z120. //№1.исходная позиция инструмента, задается при задании рабочей СК
Z25. //№2 плоскость безопасности, задается при задании рабочей СК, но можно скорректировать в переходе
Z2. //№3 безопасное расстояние, задается в переходе.
G03 X25. Y0.5 Z1.863 I0. J0.5 F300.
1. Исходная позиция инструмента. Что это - мне не очень ясно, В эту точку станок приезжает понятия не имея на какой высоте у него сейчас фреза, коррекция еще не включена. Я ее в SC делаю равной плоскости безопасности.
Может быть "лишнюю" высоту можно убрать в ПП.. но может она и не лишняя. кто бы объяснил.
2. плоскость безопасности - чтобы не натыкаться на приспособления при работе с этой деталью или деталями в этом проекте, что еще может оказаться на столе она не знает. если больше ничего нет, то, по идее, сюда можно спускаться по диагонали.
3. безопасное расстояние - выбираем по минимуму для производительности - но надо уже смотреть чтобы не наткнуться на свои же приспособления.
Все эти высоты ессно с коррекцией.
По идее - по Стоп, если фрезу вообще можно поднять - то поднимать логично на №3. Но если куда то нужно отъехать - то сначала надо подняться хотя до №2, а выше уже как хочешь. Или сразу на #2 для простоты.
Если нужно приехать на точку для продолжения фрезеровки - то - та же самая №2.
Соответственно по окончании УП подъем на №2.
если в СолидКам назначать несколько СК в рамках одной фрезеровки, с z=0 на разной высоте - то #1 и #2 высоты в разных СК предлагаются уже скорректированными и по сути одинаковые для всех СК если смотреть на машинные координаты. но корректировать позволяет!!..
В общем резюме такое - если несколько деталей в одном проекте - назначать СК лучше начинать с самой высокой. Так выходит безопаснее.
Все это хорошо если приспособления нарисованы правильно и вообще нарисованы, а на столе нет каких то еще проектов.
====
если задавать на станке - то логично первым делом - до привязки одной или нескольких СК - приехать щупом(или фрезой) с включенной коррекцией к самой высокой приспособе на столе, примерится, что зазор достаточный для плоскости безопасности - и запомнить это значение Zпб(плоскость безопасности) в G53 с учетом длины инструмента. По идее это практический эквивалент того что КАМ выдает как №2 - но КАМ может чтото и не учесть, а виртуальные модели станков со всей оснасткой думаю вообще мало у кого и всегда все учтено..
соответственно спускаемся к точке прерывания УП так же примерно как и начале программы прямо по трем осям
G0 G90 G54 G43 H3 Xстоп Yстоп Zпб
потом уже можно по вертикали опуститься на высоту #1 (Z2. в примере)
и было бы совсем хорошо иметь возможность подменять CAMовскую высоты №2 и №1 в УП на практически замеренную Zпб.. а что?
кроме того что это надежнее и удобнее - решается проблема с ситуацией когда на столе есть еще и другой проект.. и у него детали повыше. править все УП?
собственно и в шапке и во всех перемещениях обычно разделено XY и Z. а зачем если задана плоскость безопасности? если мы сами себе верим - то выше нее можно передвигаться напрямую. не шибко большой прирост производительности - но красивее.
ну а кто привязывается непосредственно к детали - а ничего вроде не меняется - проходим фрезой над приспособлением - запоминаем плоскость безопасности, касаемся детали - привязались по Z..
-
- Мастер
- Сообщения: 1082
- Зарегистрирован: 16 окт 2017, 16:07
- Репутация: 85
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
Сергей написал как организовать кнопку старта управляющей программы.
В MScript вставляем:
function startCurGProgram()
{
if( !MACHINE.isRunGProgram()){ //если программа не запущена
MACHINE.runGProgram(0);
}
}
function initStartButton()
{
TOOLBAR2.addButton("MYSTARTBUTTON")
MYSTARTBUTTON.setShow(1);
MYSTARTBUTTON.setIcon("play.png")
MYSTARTBUTTON.setText("startGProgram")
MYSTARTBUTTON.setToolTip("Start current GProgram")
MYSTARTBUTTON.setScript("startCurGProgram()")
//MYSTARTBUTTON.setShortcut("F2") //горячая клавиша
}
и тут же в MScript в function init() добавляем: initStartButton()
И добавится кнопка, у меня в верхнем правом углу. При нажатии управляющая программа запускается сразу с 0 строки, даже если была прервана.
В MScript вставляем:
function startCurGProgram()
{
if( !MACHINE.isRunGProgram()){ //если программа не запущена
MACHINE.runGProgram(0);
}
}
function initStartButton()
{
TOOLBAR2.addButton("MYSTARTBUTTON")
MYSTARTBUTTON.setShow(1);
MYSTARTBUTTON.setIcon("play.png")
MYSTARTBUTTON.setText("startGProgram")
MYSTARTBUTTON.setToolTip("Start current GProgram")
MYSTARTBUTTON.setScript("startCurGProgram()")
//MYSTARTBUTTON.setShortcut("F2") //горячая клавиша
}
и тут же в MScript в function init() добавляем: initStartButton()
И добавится кнопка, у меня в верхнем правом углу. При нажатии управляющая программа запускается сразу с 0 строки, даже если была прервана.
Последний раз редактировалось Cvazist 07 дек 2022, 20:51, всего редактировалось 1 раз.
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
мне именно такая логика не особо интересна хотя ее можно реализовать частным порядком - если хочешь начать с какой угодно строки нужно просто ткнуть в эту строку мышью и потом подтвердить или отказаться. но можно же и просто заново загрузить УП?
есть некоторый процент юзеров, которым нужна возможность настроить инициализацию программы так, чтобы она сразу запускала юзерский скрипт. я вариант реализации описал. не нужно - вы увидите то же самое как и раньше. а я увижу сразу приглашение своего скрипта, а не моргающий ВКЛ. который лично для меня никакого смысла не несет. а потом нужно еще одной кнопкой запускать то что мне надо.
===========
2й раз ловлю на том что тулбар 2 исчезает и больше никак его не возвратить кроме как удалить state. а вот если бы не было автосохранения всех конфигов может хоть перезапуск бы помогал. а так приходится удалять state. возможно это случилось после переключения вин10 на 2 монитора. но на тулбар 1 это не отразилось. загрузка расположений вроде ничего не меняет да и не может по определению - испорченное и автосохранилось испорченно.
вот это то уж точно не должно вызвать сложностей в переносе в отдельный скрипт где будут команды апдейта 5ти конфигов. я вот не вижу доводов за сохранение хотя бы одного из 5ти по выходу из программы. но может кому то надо.
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
GPROGRAM.getSCListStr(split=",")
нужен параметр с какого элемента УП. так как если продолжение - то возможна ситуация когда нужно снова привязываться и нужно вывести актуальный список, того что осталось. А может сразу и не только начало задавать, а интервал. Мало ли - а реверс будете делать. Также в названии функции SC - нехорошо - надо бы перевернуть - CS.
SCRIPT.console(GPROGRAM.getToolListStr(split=","))
то же самое. учесть что текущий Т не тот который последний а который в одной строке с М6. Кстати даже при ручной смене хорошо бы пользоваться этой фичей - показать номер следующего инструмента пока идет обработка. кстати на одиночную Т в УП все равно надо как то реагировать - если автосмена - то там вероятен этот конвейер.
повисли в воздухе вопросы:
-как остановится на следующем или заданном элементе?
тоже кстати можно было бы расширить функцию MACHINE.runGProgram(), сделав не 1 параметр - элемент начала, а интервал. и реверс и шаги тогда бы ей можно было делать
-можно ли сделать функцию симулирующую срабатывания тулсеттера (и может щупа тоже) при достижении например максимальной глубины но чтобы не апдейтилась таблица.
- есть ли функция взять высоту #2(плоскость безопасности) из УП?
-не настраивается таймаут usb (10сек). уж за 100мс виндовс успеет проверить буфера usb - 100%. допустим сквозная задержка usb звуковых карт - порядка 10мс. а мач3 через принтерный порт работает до ~30кгц (15мс полупериод меандра)..
И соответственно хотелось бы при опустошении буфера ниже критического давать вызов скрипта - а тутда уже кто что хочет - я бы поместил сообщение о потере связи и вызов Стоп. Единственно можно ли понять буфер что пустеет законно - например кончилась УП или нажата экранная Стоп или Пауза? Можно было бы судить хоть так о качестве связи если эмулятор компорта ничего не может
нужен параметр с какого элемента УП. так как если продолжение - то возможна ситуация когда нужно снова привязываться и нужно вывести актуальный список, того что осталось. А может сразу и не только начало задавать, а интервал. Мало ли - а реверс будете делать. Также в названии функции SC - нехорошо - надо бы перевернуть - CS.
SCRIPT.console(GPROGRAM.getToolListStr(split=","))
то же самое. учесть что текущий Т не тот который последний а который в одной строке с М6. Кстати даже при ручной смене хорошо бы пользоваться этой фичей - показать номер следующего инструмента пока идет обработка. кстати на одиночную Т в УП все равно надо как то реагировать - если автосмена - то там вероятен этот конвейер.
повисли в воздухе вопросы:
-как остановится на следующем или заданном элементе?
тоже кстати можно было бы расширить функцию MACHINE.runGProgram(), сделав не 1 параметр - элемент начала, а интервал. и реверс и шаги тогда бы ей можно было делать
-можно ли сделать функцию симулирующую срабатывания тулсеттера (и может щупа тоже) при достижении например максимальной глубины но чтобы не апдейтилась таблица.
- есть ли функция взять высоту #2(плоскость безопасности) из УП?
-не настраивается таймаут usb (10сек). уж за 100мс виндовс успеет проверить буфера usb - 100%. допустим сквозная задержка usb звуковых карт - порядка 10мс. а мач3 через принтерный порт работает до ~30кгц (15мс полупериод меандра)..
И соответственно хотелось бы при опустошении буфера ниже критического давать вызов скрипта - а тутда уже кто что хочет - я бы поместил сообщение о потере связи и вызов Стоп. Единственно можно ли понять буфер что пустеет законно - например кончилась УП или нажата экранная Стоп или Пауза? Можно было бы судить хоть так о качестве связи если эмулятор компорта ничего не может
Последний раз редактировалось vtgmfg 09 дек 2022, 09:12, всего редактировалось 2 раза.
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
G00 G54 G90 X25. Y-0.5vtgmfg писал(а): ↑ 1. Исходная позиция инструмента. Что это - мне не очень ясно, В эту точку станок приезжает понятия не имея на какой высоте у него сейчас фреза, коррекция еще не включена. Я ее в SC делаю равной плоскости безопасности.
Может быть "лишнюю" высоту можно убрать в ПП.. но может она и не лишняя. кто бы объяснил.
G43 H3 Z120.
не так - движение по горизонтали () идет с выключенной коррекцией - хотя инструмент уже в цанге. потом включается коррекция и фреза опускается на эту высоту.. получается ПП лучше бы настроить, чтобы так выдавал:
G00 G54 G43 H3 G90 X25. Y-0.5 Z120
Но все равно высота №1 - непонятен смысл. хотя смысла все же больше - хоть направление меняется в этой точке. от нее снижение к плоскости безопасности - по вертикали
собственно G43 H у нас можно сразу после измерения включать.. хотя правильней было бы сразу после замены (м6). но почему то запрет на комбинацию G53 G43 H. неудобно.
- wldev
- Мастер
- Сообщения: 1639
- Зарегистрирован: 24 янв 2012, 16:04
- Репутация: 510
- Настоящее имя: Сергей Бочаров
- Откуда: Новосибирск
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
Если есть "File" - значит полный путь
- wldev
- Мастер
- Сообщения: 1639
- Зарегистрирован: 24 янв 2012, 16:04
- Репутация: 510
- Настоящее имя: Сергей Бочаров
- Откуда: Новосибирск
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
Вообще без инструмента?vtgmfg писал(а): ↑ 4.Для прогона "по воздуху" УП постоянно приходится выкусывать М6.. это вообще то опасное дело - можно и забыть.. функция включения симуляции была бы очень кстати для тестирования.. т.е. чтобы контакт имитировался по табличной длине и соответственно таблица не менялась. не реализация в интерфейсе а просто функция..
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
да.. иначе приходится удалять Tx M6 из УП. можно наверное по разному это решить - но заметное неудобство есть при отладке - готовые уп не используешь - их надо предварительно препарировать .
Можно просто сделать кнопку "игнор ТхМ6" но траектория будет другая. "Изобразить" замену и замер было бы интереснее.
но не первой важности задача.
обнаружилось еще вот - если случайно запустить 2й экземпляр программы - он не достучится до контроллера - он уже занят - но при закрытии проапдейтит все конфиги, а они не его.. То есть на данный момент если не поддерживается работа нескольких экземпляров программы - то надо хотя бы не давать загружаться 2й копии. ну или ей тогда нужны свои папки конфигов скриптов и логов.
ну и кстати при этом пропал тулбар 2. что вполне логично. а может и не очень. но state приходится удалять
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
GPROGRAM.setActivElement(20)
GPROGRAM.setActivElement(ElementA) // указатель в листинге нужно установить
ElementA=GPROGRAM.getActivElement()
SCRIPT.console("ElementA="+ElementA)
при загрузке УП считываем из конфига и устанавливаем ActivElement. если он такой же как был прошлый раз - в листинге оказывается 0. а внизу в строке ручного ввода 1.
то есть если ElementA =20 то в листинге оказывается не 20 а 0.
и - что при загрузке УП должно отобразится в строке ручного ввода? там то 0 то 1 - не уловлю зависимости. по идее там должен быть LastMov. но нужна тогда функция чтобы его установить
GPROGRAM.setActivElement(ElementA) // указатель в листинге нужно установить
ElementA=GPROGRAM.getActivElement()
SCRIPT.console("ElementA="+ElementA)
при загрузке УП считываем из конфига и устанавливаем ActivElement. если он такой же как был прошлый раз - в листинге оказывается 0. а внизу в строке ручного ввода 1.
то есть если ElementA =20 то в листинге оказывается не 20 а 0.
и - что при загрузке УП должно отобразится в строке ручного ввода? там то 0 то 1 - не уловлю зависимости. по идее там должен быть LastMov. но нужна тогда функция чтобы его установить
- wldev
- Мастер
- Сообщения: 1639
- Зарегистрирован: 24 янв 2012, 16:04
- Репутация: 510
- Настоящее имя: Сергей Бочаров
- Откуда: Новосибирск
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
можно добавить кнопку а в M6 сделать условие. если нажата то игнор смены итд...vtgmfg писал(а): ↑09 дек 2022, 19:04да.. иначе приходится удалять Tx M6 из УП. можно наверное по разному это решить - но заметное неудобство есть при отладке - готовые уп не используешь - их надо предварительно препарировать .
Можно просто сделать кнопку "игнор ТхМ6" но траектория будет другая. "Изобразить" замену и замер было бы интереснее.
но не первой важности задача.
обнаружилось еще вот - если случайно запустить 2й экземпляр программы - он не достучится до контроллера - он уже занят - но при закрытии проапдейтит все конфиги, а они не его.. То есть на данный момент если не поддерживается работа нескольких экземпляров программы - то надо хотя бы не давать загружаться 2й копии. ну или ей тогда нужны свои папки конфигов скриптов и логов.
ну и кстати при этом пропал тулбар 2. что вполне логично. а может и не очень. но state приходится удалять
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
DIALOG.enterNum похоже ограничен числом 100 000
ActivElement=300000
а вот тут в окошке диалога число уже урезано до 100000
ActivElement=DIALOG.enterNum("Нажмите OK или скорректируйте",ActivElement)
ActivElement=300000
а вот тут в окошке диалога число уже урезано до 100000
ActivElement=DIALOG.enterNum("Нажмите OK или скорректируйте",ActivElement)
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
Не получается загрузить clear.ncc из функции M30(). Видимо блокирует предыдущая УП
А если из M30 выйти - то нечем загружать clear.ncc - только вручную..
Можно как то разблокировать это? или как то еще удалить с экрана ненужную УП.
как шагать по программе? ну заколебался я уже эксперименты ставить.
А если из M30 выйти - то нечем загружать clear.ncc - только вручную..
Можно как то разблокировать это? или как то еще удалить с экрана ненужную УП.
как шагать по программе? ну заколебался я уже эксперименты ставить.
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
уже не надо - сам сделаюvtgmfg писал(а): ↑09 дек 2022, 19:04да.. иначе приходится удалять Tx M6 из УП. можно наверное по разному это решить - но заметное неудобство есть при отладке - готовые уп не используешь - их надо предварительно препарировать .
Можно просто сделать кнопку "игнор ТхМ6" но траектория будет другая. "Изобразить" замену и замер было бы интереснее.
но не первой важности задача.
В случае ошибки например поиска вываливаемся из скрипта в программу. а надо вообще-то в скрипт. например с тем же замером инструмента. У меня скрипт как может узнать что фреза не достала до таблетки и как ему вырулить? В нем активна только кнопка "Стоп", что логично.
то же самое будет со щупом предполагаю..
Собственно все измерительные скрипты лишены финальной фазы - должен быть диалог по результату и выбор типа "ошибка", "повтор", "отмена", "принять (с окошками для коррекции координат если не 0)". И изменение результата от предыдущего измерения.
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
function Home_Search()
{
MACHINE.goDriveFind("Z")
while(MACHINE.isActiv()) SCRIPT.process()
MACHINE.goDriveFind("Y")
MACHINE.goDriveFind("X")
}
поиск идет сразу по всем 3м осям.
ну и предыдущий был вопрос..
{
MACHINE.goDriveFind("Z")
while(MACHINE.isActiv()) SCRIPT.process()
MACHINE.goDriveFind("Y")
MACHINE.goDriveFind("X")
}
поиск идет сразу по всем 3м осям.
ну и предыдущий был вопрос..
-
- Новичок
- Сообщения: 5
- Зарегистрирован: 16 ноя 2021, 17:41
- Репутация: 2
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
Добрый день.
Подскажите по такой проблеме, куда копать. WLMILL виснет наглухо про работе с 4-х осевой траекторией, - шпиндель крутится, моторы стоят, соответственно на каком именно месте это происходит понять не представляется возможным. На 3 осях такое было пару раз, когда шаг по оси был больше координаты перемещения. Тут такого не видно. Компьютера не хватает? Процессор 1.4 ГГц, нагружен на 80% при нормальной работе, памяти 4 Гб, практически не ест. Вин 10. При зависании нагрузка 100%. Сегодня 6 часов работы станка и зависание, час не доработал. Палка на выброс.
Большая программа? Есть ограничения на количество строк? Или настройки какие-то хитрые надо выставлять именно под 4 ось, кроме стандартных?
Подскажите по такой проблеме, куда копать. WLMILL виснет наглухо про работе с 4-х осевой траекторией, - шпиндель крутится, моторы стоят, соответственно на каком именно месте это происходит понять не представляется возможным. На 3 осях такое было пару раз, когда шаг по оси был больше координаты перемещения. Тут такого не видно. Компьютера не хватает? Процессор 1.4 ГГц, нагружен на 80% при нормальной работе, памяти 4 Гб, практически не ест. Вин 10. При зависании нагрузка 100%. Сегодня 6 часов работы станка и зависание, час не доработал. Палка на выброс.
Большая программа? Есть ограничения на количество строк? Или настройки какие-то хитрые надо выставлять именно под 4 ось, кроме стандартных?
-
- Мастер
- Сообщения: 1459
- Зарегистрирован: 23 июн 2022, 14:13
- Репутация: 53
- Настоящее имя: Максим
- Контактная информация:
Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ
техподдержка - ау!