WLMIll beta + QML(Qt)

Для организации графических пользовательских интерфесов была добавлена возможность их встраивания в WLMill . Данные интерфесы должны быть написаны на QML.

Файлы *.qml размещаются в папке /qml/

Для добавления файла на главный экран имеется функция:

WLMILL.addTabQML(«file.qml»)

Для вызова окна QML как диалога:

WLMILL.runQML(«file.qml)

Ознокомительное видео с использованием WLProbe.qml

Будет сделано несколько базовых уроков по созданию простых интерфесов.

https://youtu.be/KPnjLa5OOF4

WLMill + PID + FF . Энкодерная линейка.

Для более точного позиционирования в WLMill была добавлена поддержка энкодерных линеек с организацией обратной связи ещё этой весной. Однако динамическое позиционирование было не столько хорошим как хотелось. И чтобы его улудшить были добавлены 2 коэффициента (FFP\FFD) прямой регулировки (без учёта линейки). В результате чего динамическая точность существенно повысилась.

Общий принцип сейчас такой:

Общий алгоритм такой.

  1. Устанавливаем все коэффициенты в ноль.
  2. Расcчитываем и устанавливаем FFP для шагового двигателя. FFP = (шаг линейки)/(один шаг двигателя)
  3. Устанавливаем режим для ШД все 0. (нет ограничений)
  4. Устанавливаем заведомо большую ошибку позиционирования. Например 10мм
  5. Включаем WLMill и пробуем подвигать ось в ручном режиме. При этом нужно проверить совпадает ли направление энкодерного входа(по закладке где входы/выходы ). В случае необходимости инвертируем энкодер ПКМ на энкодер в настройке оси.
  6. Если мы правильно задали FFP, то наша ось должна двигаться практически по всему диапазону перемещения без ошибок.
  7. Настраиваем FFD,P,I,D. И Уменьшаем ошибку.

необходимо обновить WLMill + прошивка beta

WLMill — упреждение люфта

У WLMill появилась возможность опережения выборки люфта какой либо осью если она на текущем элементе перемещения не движется. То есть мы экономим время, которое мы тратим на выборку люфта. Данная функция даёт приемущество если обработка в основном происходит ортогонально, то есть движения вдоль X,Y,Z.
Для включения и выключения данной возможности был добавлен G код.

G111 включить опережающую выборку люфта
G110 выключить опережающую выборку люфта

Без опережающей выборки люфта:

С опережающей выборки люфта:

Новый контроллер WLM55E (USB/Ethernet)

Данный контроллер был разработан на базе WLM55J и имеет схожие характеристики. Но его основной особенностью является наличие интерфейса Ethernet (модуль W5500).

На данный момент:

4 оси

14 входов

12 выходов

2 ШИМ выхода

4 Входа подключения энкодеров

1 преобразователь ШИМ напряжение

Интерфейс USB/Ethernet

USB изолятор для контроллеров

Иногда случаются пропажи связи по USB если работает частотник. Купили на испытание вот такую штуку. Пока всё хорошо

WLMill script.

Упразднён GCODE.isMCode(num).

Раньше эта функция использовалась для определения включен ли шпиндель. Сейчас для этого можно использовать:

MACHINE.isSpindleCW()Возвращает 1 если шпиндель вращается по часовой стрелке. (M3)
MACHINE.isSpindleCCW()Возвращает 1 если шпиндель вращается против часовой стрелке. (M4)
MACHINE.isSpindleStop()Возвращает 1 если шпиндель остановлен. (M5)

WLMill beta — добавлена панель с пользовательскими кнопками в таблицу инструментов

  1. Таблица перенесена в отдельную закладку. Ниже таблицы расположена панель для добавления кнопок.
  2. Новая панель кнопок называется TOOLBARTOOLS. В неё можно добавлять кнопки(как для TOOLBAR1(2)) а также также заправшивать какой элемент таблицы сейчас выбран.

TOOLBARTOOLS.selectTool() — индекс выбранного инструмента (на котором сейчас указатель)

TOOLBARTOOLS.selectData() — название выбранного столбца

Например скрипт.

TOOLBARTOOLS.addButton("MYBUTTONTOOLS") //добавляем кнопку
MYBUTTONTOOLS.setShow(1)  //делаем её видимой
MYBUTTONTOOLS.setText("Текущий") //устанавливаем текст
MYBUTTONTOOLS.setScript("SCRIPT.console(TOOLBARTOOLS.selectTool())"); //по нажатия запускаем скрипт который пишет в консоль индекс выделенного инструмента

TOOLBARTOOLS.addButton("MYBUTTONTOOLS2")
MYBUTTONTOOLS2.setShow(1)
MYBUTTONTOOLS2.setText("Параметр")
MYBUTTONTOOLS2.setScript("SCRIPT.console(TOOLBARTOOLS.selectData())");//по нажатия запускаем скрипт который пишет в консоль название параметра выделенной ячейки (столбца)

Этот код можно поместить в функцию init() скрипта MScript. После чего у нас появится 2 кнопки при нажатии на которые будет выводится информация в консоль

TOOLBARTOOLS.selectTool() — индекс выбранного инструмента (на котором сейчас указатель)

Обновился WLMill <=> WLMill — beta. В WLMill -Beta новые возможности!.

  1. Количество инструментов стало неограниченным, также стала возможным применять свободную нумерацию инструментов. То есть не по порядку.

Для работы с этим добавлены новые функции в GCODE.

Теперь мы можем добавить новый параметр например так:

GCODE.setDataTool(128,»noAutoH»,0) //будет записан параметр по имени «noAutoH» и ему будет присвоено значени 0.

var A=GCODE.getDataToolNum(128,»noAutoH»,1) //возьмём значение переменной из инструмента 128, а если его (такого значения или инструмента) нет в базе то по умолчанию вовратится 1 (значение по умолчанию).

2. Для удобного отображения данных инструментов сделана новая настройка.

Был создан новый файл config.ini на замену config.xml. В нём (сгенерируется после первого запуска и выхода) можно увидеть параметр «Tools/showColumn». Это колонки таблицы которые будут отображаться в WLMill.

И если мы зададим GCODE.setDataTool(5,»sss»,6) то будет

Также возможен прямой ввод данных в таблицу.

CNCProbe — 3D Щуп. Новая бета прошивка!!!

При работе с датчиком столкнулись с некоторыми неудобствами.

  1. Приходится его пробуждать с помощью нажатия на стилус. — неудобно
  2. Уходит в сон при работе станка (если стилус долго не срабатывал) и как следсвие п1. — неудобно, нужно следить
  3. В режиме работы (быстрый опрос) находился достаточно долго вне зависимости происходят ли измерения или нет… — лишний расход энергии

Теперь изменился принцип работы CNCProbe TX/RX (beta)

  1. Передатчик находится в 3 режимах
    1.1 работа (run)
    1.2 сон (sleep)
    1.2 ожидание (standby)
  2. В сон передатчик уходит если:
    2.1 На приёмнике вход in в логическом 0.
  3. Переходит в режим работы
    3.1 Появление связи с приёмником.
    3.2 На приёмнике вход in в логической 1.
    3.3 Срабатывание стилуса.
  4. Переходит в режим ожидания
    4.1 Долгое время нет связи с приёмником
  5. Увеличено время сканирования радиоэфира перед началом работы.
  6. Сторожевой таймер наличия связи в режиме работы 75мсек

То есть мы включаем режим run когда нам нужно измерять, и выключаем когда не нужно.

Сделаны прошивки beta

WLMill — Использование карты высот HMap.

Добавлена возможность работы с картой высот. Она нужна когда нам необходимо фрезеровать на неровной поверхности. Например мы имеем программу для фрезеровки плоской детали, а заготовка явно не плоская, то есть имеет неровности. Тогда перед фрезеровкой мы сканируем нашу заготовку (делаем карту). Далее мы включаем нашу карту и запускаем фрезеровку. Теперь наш станок будет изменять Z согласно нашей карты. В результате мы получим правильную глубину фрезеровки на всей детали.

Порядок работы с картой высот.

  1. Определяем положение нашей заготовки в плоскости XY. И корректируем нашу СК.
  2. Устанавливаем сканер/щуп/контактор т.е. инструмент, который будет производить  замер карты.
  3. Позиционируем его на высоту, при которой он может свободно перемещаться над заготовкой.
  4. Запускаем сканирование карты высот.
  5. После успешного сканирования включаем нашу карту высот(если она выключена). Установив галочку «активна». В окне работы с картой высот.
  6. Устанавливаем инструмент и задаём положение Z заготовки в любом месте (будет учтена карта высот). Внимание отображаемое положение может отличаться от заданного – это корректировка согласно карте высот.
  7. Можем произвести перемещение с помощью MDI (ручной ввод) и убедиться, что у нач корректируется координата Z.
  8. Запускаем программу.

Поясняющее видео: