WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
wldev
Мастер
Сообщения: 1639
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение wldev »

Наверное стоит сделать несколько вариантов начала с середины?
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

wldev писал(а): Добавил функции возвращающие список файлов или директорий. (по умолчанию через запятую)
FILE.listFiles(FILE.curPath())
FILE.listDirs(FILE.curPath())
ок. мне пока нужен был просто пусто/непусто - но чем больше инфы тем лучше
wldev писал(а): GCODE.readToolFile(QString _fileName);
GCODE.writeToolFile(QString _fileName);

GCODE.readSCFile(QString _fileName);
GCODE.writeSCFile(QString _fileName);
ок, QString _fileName - это полный путь?
wldev писал(а): 3. Пока на уровне контроллера. - именно перемещений...
не понял.. движение по шагам ведь с компьютера управляется?
есть запуск с определенного элемента. как остановится на следующем или заданном элементе? или это как то через startmov/stopmov решается?
wldev писал(а): 4. Да.
это по поводу тулсеттера? пока он не установлен - но планирую сделать ему конструкцию быстросъемную в ближайшее время и если я нужен для проб - то обозначьте примерно когда. там нюансов тоже похоже хватает.
wldev писал(а): 5. Дело в фокусе ввода. Можно попробовать обойти
если я правильно понял Qt - это просто графический интерфейс к тем что есть
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

wldev писал(а): Наверное стоит сделать несколько вариантов начала с середины?
собственно вариантов 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..
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

vtgmfg писал(а): QString _fileName - это полный путь?
работает
Cvazist
Мастер
Сообщения: 1082
Зарегистрирован: 16 окт 2017, 16:07
Репутация: 85
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение Cvazist »

Сергей написал как организовать кнопку старта управляющей программы.
В 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 строки, даже если была прервана. :good:
Последний раз редактировалось Cvazist 07 дек 2022, 20:51, всего редактировалось 1 раз.
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

Cvazist писал(а): И добавится кнопка, у меня в верхнем правом углу. При нажатии управляющая программа запускается сразу с 0 строки, даже если была прервана.
мне именно такая логика не особо интересна хотя ее можно реализовать частным порядком - если хочешь начать с какой угодно строки нужно просто ткнуть в эту строку мышью и потом подтвердить или отказаться. но можно же и просто заново загрузить УП?
есть некоторый процент юзеров, которым нужна возможность настроить инициализацию программы так, чтобы она сразу запускала юзерский скрипт. я вариант реализации описал. не нужно - вы увидите то же самое как и раньше. а я увижу сразу приглашение своего скрипта, а не моргающий ВКЛ. который лично для меня никакого смысла не несет. а потом нужно еще одной кнопкой запускать то что мне надо.
===========
2й раз ловлю на том что тулбар 2 исчезает и больше никак его не возвратить кроме как удалить state. а вот если бы не было автосохранения всех конфигов может хоть перезапуск бы помогал. а так приходится удалять state. возможно это случилось после переключения вин10 на 2 монитора. но на тулбар 1 это не отразилось. загрузка расположений вроде ничего не меняет да и не может по определению - испорченное и автосохранилось испорченно.
вот это то уж точно не должно вызвать сложностей в переносе в отдельный скрипт где будут команды апдейта 5ти конфигов. я вот не вижу доводов за сохранение хотя бы одного из 5ти по выходу из программы. но может кому то надо.
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

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мс полупериод меандра)..
И соответственно хотелось бы при опустошении буфера ниже критического давать вызов скрипта - а тутда уже кто что хочет - я бы поместил сообщение о потере связи и вызов Стоп. Единственно можно ли понять буфер что пустеет законно - например кончилась УП или нажата экранная Стоп или Пауза? Можно было бы судить хоть так о качестве связи если эмулятор компорта ничего не может
Последний раз редактировалось vtgmfg 09 дек 2022, 09:12, всего редактировалось 2 раза.
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

vtgmfg писал(а): 1. Исходная позиция инструмента. Что это - мне не очень ясно, В эту точку станок приезжает понятия не имея на какой высоте у него сейчас фреза, коррекция еще не включена. Я ее в SC делаю равной плоскости безопасности.
Может быть "лишнюю" высоту можно убрать в ПП.. но может она и не лишняя. кто бы объяснил.
G00 G54 G90 X25. Y-0.5
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) - управление фрезерным ЧПУ

Сообщение wldev »

vtgmfg писал(а): 07 дек 2022, 15:54
vtgmfg писал(а): QString _fileName - это полный путь?
работает
Если есть "File" - значит полный путь
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Аватара пользователя
wldev
Мастер
Сообщения: 1639
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение wldev »

vtgmfg писал(а): 4.Для прогона "по воздуху" УП постоянно приходится выкусывать М6.. это вообще то опасное дело - можно и забыть.. функция включения симуляции была бы очень кстати для тестирования.. т.е. чтобы контакт имитировался по табличной длине и соответственно таблица не менялась. не реализация в интерфейсе а просто функция..
Вообще без инструмента?
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

wldev писал(а): Вообще без инструмента?
да.. иначе приходится удалять Tx M6 из УП. можно наверное по разному это решить - но заметное неудобство есть при отладке - готовые уп не используешь - их надо предварительно препарировать .
Можно просто сделать кнопку "игнор ТхМ6" но траектория будет другая. "Изобразить" замену и замер было бы интереснее.
но не первой важности задача.

обнаружилось еще вот - если случайно запустить 2й экземпляр программы - он не достучится до контроллера - он уже занят - но при закрытии проапдейтит все конфиги, а они не его.. То есть на данный момент если не поддерживается работа нескольких экземпляров программы - то надо хотя бы не давать загружаться 2й копии. ну или ей тогда нужны свои папки конфигов скриптов и логов.
ну и кстати при этом пропал тулбар 2. что вполне логично. а может и не очень. но state приходится удалять
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

GPROGRAM.setActivElement(20)
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) - управление фрезерным ЧПУ

Сообщение wldev »

vtgmfg писал(а): 09 дек 2022, 19:04
wldev писал(а): Вообще без инструмента?
да.. иначе приходится удалять Tx M6 из УП. можно наверное по разному это решить - но заметное неудобство есть при отладке - готовые уп не используешь - их надо предварительно препарировать .
Можно просто сделать кнопку "игнор ТхМ6" но траектория будет другая. "Изобразить" замену и замер было бы интереснее.
но не первой важности задача.

обнаружилось еще вот - если случайно запустить 2й экземпляр программы - он не достучится до контроллера - он уже занят - но при закрытии проапдейтит все конфиги, а они не его.. То есть на данный момент если не поддерживается работа нескольких экземпляров программы - то надо хотя бы не давать загружаться 2й копии. ну или ей тогда нужны свои папки конфигов скриптов и логов.
ну и кстати при этом пропал тулбар 2. что вполне логично. а может и не очень. но state приходится удалять
можно добавить кнопку а в M6 сделать условие. если нажата то игнор смены итд...
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

wldev писал(а): можно добавить кнопку а в M6 сделать условие. если нажата то игнор смены итд...
ну это будет эквивалент выкусывания TxM6 по тексту УП.. траектория другая, опять же не будет вопросов про смену инструмента - а это тоже интересно. и там есть что отлаживать.
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

DIALOG.enterNum похоже ограничен числом 100 000

ActivElement=300000
а вот тут в окошке диалога число уже урезано до 100000
ActivElement=DIALOG.enterNum("Нажмите OK или скорректируйте",ActivElement)
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

Не получается загрузить clear.ncc из функции M30(). Видимо блокирует предыдущая УП
А если из M30 выйти - то нечем загружать clear.ncc - только вручную..
Можно как то разблокировать это? или как то еще удалить с экрана ненужную УП.

как шагать по программе? ну заколебался я уже эксперименты ставить.
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

vtgmfg писал(а): 09 дек 2022, 19:04
wldev писал(а): Вообще без инструмента?
да.. иначе приходится удалять Tx M6 из УП. можно наверное по разному это решить - но заметное неудобство есть при отладке - готовые уп не используешь - их надо предварительно препарировать .
Можно просто сделать кнопку "игнор ТхМ6" но траектория будет другая. "Изобразить" замену и замер было бы интереснее.
но не первой важности задача.
уже не надо - сам сделаю

В случае ошибки например поиска вываливаемся из скрипта в программу. а надо вообще-то в скрипт. например с тем же замером инструмента. У меня скрипт как может узнать что фреза не достала до таблетки и как ему вырулить? В нем активна только кнопка "Стоп", что логично.

то же самое будет со щупом предполагаю..

Собственно все измерительные скрипты лишены финальной фазы - должен быть диалог по результату и выбор типа "ошибка", "повтор", "отмена", "принять (с окошками для коррекции координат если не 0)". И изменение результата от предыдущего измерения.
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

function Home_Search()
{
MACHINE.goDriveFind("Z")
while(MACHINE.isActiv()) SCRIPT.process()

MACHINE.goDriveFind("Y")
MACHINE.goDriveFind("X")
}
поиск идет сразу по всем 3м осям.
ну и предыдущий был вопрос..
keeperius
Новичок
Сообщения: 5
Зарегистрирован: 16 ноя 2021, 17:41
Репутация: 2
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение keeperius »

Добрый день.
Подскажите по такой проблеме, куда копать. WLMILL виснет наглухо про работе с 4-х осевой траекторией, - шпиндель крутится, моторы стоят, соответственно на каком именно месте это происходит понять не представляется возможным. На 3 осях такое было пару раз, когда шаг по оси был больше координаты перемещения. Тут такого не видно. Компьютера не хватает? Процессор 1.4 ГГц, нагружен на 80% при нормальной работе, памяти 4 Гб, практически не ест. Вин 10. При зависании нагрузка 100%. Сегодня 6 часов работы станка и зависание, час не доработал. Палка на выброс.
Большая программа? Есть ограничения на количество строк? Или настройки какие-то хитрые надо выставлять именно под 4 ось, кроме стандартных?
vtgmfg
Мастер
Сообщения: 1459
Зарегистрирован: 23 июн 2022, 14:13
Репутация: 53
Настоящее имя: Максим
Контактная информация:

Re: WLMill (Windows/Linux (Qt) + WLMotion) - управление фрезерным ЧПУ

Сообщение vtgmfg »

техподдержка - ау!
Ответить

Вернуться в «Windows / Mach»