WLMill-beta. Изменено окно редактирования скриптов.

В WLMill beta было переработано окно редактирования скриптов.

Было добавлено:

  1. Одновременная работа с несколькими файлами (которые были добавлены через include).
  2. Подсветка синтаксиса.
  3. Добавлена система подсказок при написание скриптов. То есть при нажатии CTRL+Пробел редактор может предложить нам варианты, что можно вписать. Это могут быть функции, глобальные переменные, объекты и их методы. И нам не надо держать в голове весь багаж этих функций.

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) // устанавливаем номер смещения

Также смещение инструментов доступно и для фрезерных станков.

https://youtu.be/9wAd8sSuW9M

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

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