WLMill + Подключение переменного резистора

У контроллера WLM155S имеется 4 аналоговых входа которые можно использовать по-разному.

Например для плавного изменения корректоров F и S.

Для этого мы будем использовать следующую функцию в LScript:

function updateProportionalF() //установка значения корректора S
{
var    ain=5  //номер аналогового входа
var  max=0.9726  //максимальное значение
var   min=0.0230  //минимальное значение

var inA=(MACHINE.getAIn(ain)-min) / (max-min)

value=Math.round(inA*100) //нормируем к 100

MACHINE.setPercentF(value) //устанавливаем
}

Также необходимо добавит постоянный вызов этой функции при включении станка (в ON() LScript)

function ON() 
{
SCRIPT.setInterval("updateProportionalF()",200) //каждые 200мс	
}

Также необходимо добавит удаление всех постоянных вызовов при выключении станка (в OFF() LScript)

function OFF() 
{
SCRIPT.clearInterval();
}

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

https://youtu.be/kg5L09z9U3E

WLMill + PORG,MORG (алгоритм поиска положения оси)

В WLMill beta были добавили 2 новых алгоритма поиска положения оси. Они используют датчик положения inORG (оригинальное положение) когда этот датчик находится в положительном пределе(PORG) и в отрицательном пределе (MORG).

Фактически используются прежний алгоритмы поиска положения оси по концевым датчикам. Но у нового способа есть существенное преимущество — это сохранение максимальной рабочей зоны станка.

При использование PORG/MORG мы пользуемся датчиками только во время поиска положения. В отличие от концевых датчиков.

Также доступна модификация этих режимов с возможностью переезда в заданное положение после успешного завершения поиска положения.

WLMill + Смещение инструмента

В бета версии была добавлена возможность использования смещения инструмента (не системы координат). В основном эта возможность была реализована для WLTurn (Токарная версия ЧПУ), но в WLMill она также будет полезной.

Зачем.?

Данное смещение можно использовать когда нам нужно работать с несколькими интрументами, которые имеют смещение друг относительно друга. Например:

  1. Несколько шпинделей
  2. Использование 3D щупа на штанге.
  3. Использование камеры.
  4. Прочий инструмент.

Как пользоваться?

Для использования в WLMill нужно выбрать смещение инструмента в G-коде либо задать его в скрипте.

В G — коде (MDI):

P1 //В строке должнен быть «P», который включает соотв. смещение инструмента. В строке не должно быть параметра «G».

Смещение инструмента определяется в таблице инструментов как Xo, Yo, Zo. И корректировки смещения Xw ,Yw, Zw (необязательны).

Для удобного задания смещения был написан скрипт (WLToolOffset.js), который добавляет кнопку в низ таблицы инструментов. После чего мы можем «задавать текущие координаты» с помощью этой кнопки. Но фактически будет задаваться смещение инструмента таким, при котором текущая координата установится в заданное значение.

Также были добавлены новые функции в скрипты.

MACHINE.setCurPositionSCT(nameCoord,double pos) //задание текущего положения с помощью смещения инструмента

GCODE.getOfstTool() //возвращает текущий номер смещения инструмента

GCODE.setOffsetTool(int index) // устанавливаем номер смещения

WLMill + Подключение селектора.

Некоторым пользователям удобно(привычно) использовать селектор(галлетник) для установки подачи и скорости вращения шпинделя.

Селектор удобно использовать совместно с аналоговым входом. То есть мы используем переключатель с резисторным делителем. В результате чего имеем несколько фиксированных положений которым соотв. напряжения на входе контроллера.

Для интеграции в WLMill мы используем следующий алгоритм. (файл WLSelector.js)

/*
WLSelector — пример работы с селектором (делителем напряжения, с фиксированными положенями)

Установка:
1.Создаём функцию обработчика положения в скрипте WLScript

function updateSelectorF() //установка значения корректора F
{
var select=12 //количество положений селектора
var ain=4 //номер аналогового входа
var data=[0,0.5,1,2,5,10,15,25,50,75,100,125,150] //значения которые будем устанавливать.

value=Math.round(MACHINE.getAIn(ain)* select)

MACHINE.setPercentF(data[value])
}

  1. Добавляем вызов функции п1 в функцию ON()

function ON()
{
SCRIPT.setInterval(«updateSelectorF()»,200) //каждые 200мс
//….
}

  1. Добававляем отмену вызова п2 в функцию OFF()

function OFF()
{
SCRIPT.clearInterval();
//….
}

*/

ОС Astra + WLMill = Astra CNC

Многие пользователи стали всё чаще обращать внимание на операционную систему Astra.

В связи с чем была сделана сборка программы WLMill прямо в ОС Astra.

На первый взляд ОС Astra по интерфейсу сильно приближена к Windows.

Создан новый модуль MSpindle

До настоящего времени у контроллера было реализована возможность управления шпинделем с помощью выхода ШИМ или аналогового выхода.

В beta были добавлены:

  • возможность дискретного управления шпинделем (вкл/выкл)
  • можно задавать выходы для организации прямого и обратного вращения шпинделя
  • возможность управления шпинделем с помощью импульсов (шаг/направление)
  • остановка шпинделя контроллером по сигналу inEMGStop при дискретном управлении (без участия компьютера)
  • поддержка многошпиндельности (пока нет поддержки в WLMill)

В скриптах (M3/M4/M5) необходимо указывать установку состояние шпинделя.

M3<<<MACHINE.setSpindleState(1) // вращение в прямом направлении

M4<<<MACHINE.setSpindleState(-1) // вращение в обратном направлении

M5<<<MACHINE.setSpindleState(0) // остановка

Для совместимости с прошлыми версиями команда MACHINE.enableSOut интерпретируется как:

  • MACHINE.enableSOut(1) = MACHINE.setSpindleState(1)
  • MACHINE.enableSOut(0) = MACHINE.setSpindleState(0)

Изменено окно настройки шпинделя, добавлены подсказки:

Установка QtCreator

Для сборки (компиляции) программ которые могут работать снашими контроллерами, а также написания интерфесов (QML) рекомендуется использовать среду разработки Qt Creator.

Windows. Установка на примере Qt5.12.2:

1. Рекомендуем скачать offline инсталятор с нашего сайта. https://wldev.ru/data/other/qt/qt-opensource-windows-x86-5.12.2.exe . — Это иснталятор которому не нужно подключение к сети интернет.

2. Перед началом установки рекомендуем отключить сеть, чтобы инсталятор не пытался сделать вам аккаунт с подтверждением итд.

3. Запускаем инсталятор. Жмём далее…..И выбираем следующие (минимальные) параметры установки.

4. Установка закончена.

Linux

Для установки в среде линукс нужно последовательно выполнить несколько комманд для установки.

Linux(Debian)

sudo apt install qt5-default
sudo apt install qtcreator
sudo apt install qtdeclarative5-dev
sudo apt install libqt5serialport5-dev
sudo apt install qtscript5-dev
sudo apt install qtmultimedia5-dev
sudo apt install libsdl2-dev
sudo apt install libqt5multimedia5-plugins

Linux(Armbian)

sudo apt install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
sudo apt install qtcreator
sudo apt install qtdeclarative5-dev
sudo apt install libqt5serialport5-dev
sudo apt install qtscript5-dev
sudo apt install qtmultimedia5-dev
sudo apt install libqt5opengl5-dev
sudo apt install libqt5multimedia5-plugins

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. Расчитываем и устанавливаем 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 выключить опережающую выборку люфта

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

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