В линейке программ, которые могут работать с контроллерами ЧПУ WLMotion пополнение! УЧПУ “СКАТ” – это новый продукт для управления станком фигурной резки листового металла, а также резки круглых и профильных труб с помощью плазмы. УЧПУ …
Стала доступна функция включения и выключения выхода по ходу выполнения программы. Без остановки движения и выполнения скрипта например. Эта функция выполняется сугубо контроллером для чего ему помещается соотв. элемент в буфер. Для её использования необходимо …
Произошли следующие обновления. 1. Изменилась система ошибок. Стали более подробно прописываться сообщения от программы, а также о необходимости тех или иных действий. 2.Обновился файл перевода (Нужно обновить папку “lang”). 2. Добавились функции для работы с …
Была обновлена плата выравнивания портала. Теперь для питания логической части можно использовать встроенный DC-DC преобразователь. Который может работать от напряжения 7-30В. (DC2/0v) Но также возможно использовать питание 5В. (5v/0v) Для совместимости со старыми версиями. Доработана …
В последнее время стали возникать проблемы с установкой WLMill на одноплатники Rasberry Pi4B. Это было вызвано изменением пакетов на которых работали сборки для Linux. Теперь всё что нужно для установки есть на нашем сайте. Подключение …
В процессе работы приходится сталкиваться с недочётами у наших устройств, которые конечно исправляются. Однако можно исправить некоторые недочёты у ранних версий устройств.
Например:
Организация раздельного питания
Дополнительный резистор входа
Для устранения этих недочётов были дополнены инструкции (мануалы). С описанием необходимых действий. Если вы сомневаетесь, то можете выслать контроллер нам на доработку.
Добавлена поддержка пульта управления XHC (WHB04…). Основные особенности:
Ручной маховик.
Два селектора выбора режимов.
16 кнопок. + поддержка комбинации двух кнопок (когда удерживается одна и нажимается другая)
Проводная и беспроводная версия. (Внимание требуется хорошее питание по USB)
Для работы с пультом был создан объект XHB (в обоих скриптах LScript/MScript):
Можно узнавать состояние кнопок и селекторов пульта. Выводить некоторые данные на дисплей пульта.
Подсказки
При изменении состояния маховика, кнопок, селекторов. Вызываются функции для обработки этих событий (LScript).
Был написан базовый скрипт WLXHC.js (и добавлен в стандартный набор) в котором реализованы основные операции работы с ним.
Ручное перемещение (с точным позиционированием). Согласно установленным селекторам
Реализованы кнопки:
RESET
Stop
Start/pause
Fn+Feed+
Fn+Feed-
Fn+Spindle+
Fn+Spindle-
Fn+M_HOME (переезд в G54 X0 Y0 Z0)
Fn+Safe-Z
Fn+W_HOME
Fn+Probe-Z
Реализованы вызовы макросов 1-10 с помощью кнопок. Вызывается макрос “macroXXWLXHC()” в скрипте MScript (добавлены подсказки в редакторе скриптов)
PS также был расширен функционал скриптов. Теперь возможно добавлять функции “wek” которые будут высвечиваться в редакторе скриптов. Например в скрипте WLXHC.js:
MSCRIPT.addIncludeWeakFunction(“macro”+(i+1)+”WLXHC”) //добавляем прjтотип функции в MScript
Текст первой версии:
/*
WLXHC - пример работы с пультом XHC
Установка:
1.Для работы с пультом XHC нужно определить функции которые вызываются при изменение данных от него.
2.Ниже будут примеры функций. Которые могут быть использованы вами.
3. Копируем этот файл (WLXHCk.js) в папку /wlmillconfig/script/include
Подключаем, добавляя в LScript.
function init()
{
SCRIPT.includeFile("/include/WLXHC.js")
....
}
*/
function WLXHCInit()
{
SCRIPT.console("WLXHCInit()")
SCRIPT.setTimeout("updateDisplayWLXHC()",50)
var i=5
for(i=0;i<10;i++)
MSCRIPT.addIncludeWeakFunction("macro"+(i+1)+"WLXHC")
}
function updateDisplayWLXHC()
{
if(XHC.getSelectorA()==20 //A || B ||C
||XHC.getSelectorA()==21
||XHC.getSelectorA()==22)
XHC.setDisplayData(MACHINE.getCurPositionSC("A")
,MACHINE.getCurPositionSC("B")
,MACHINE.getCurPositionSC("C")
,GCODE.getValue("F"))
else
XHC.setDisplayData(MACHINE.getCurPositionSC("X")
,MACHINE.getCurPositionSC("Y")
,MACHINE.getCurPositionSC("Z")
,GCODE.getValue("F"))
SCRIPT.setTimeout("updateDisplayWLXHC()",50)
}
function changedWhellXHC(dist)
{
SCRIPT.console("changedWhellXHC("+dist+")")
var distXYZ=0
switch(XHC.getSelectorX())
{
case 13: //2%
distXYZ=0.001
break;
case 14: //5%
distXYZ=0.010
break;
case 15://10%
distXYZ=0.100
break;
case 16: //30%
distXYZ=1.000
break;
case 26: //60%
distXYZ=1.000
break;
case 27: //100%
distXYZ=1.000
break;
case 155: //Lead
distXYZ=1.000
break;
}
var F=20
if(MACHINE.isPossiblyManual())
switch(XHC.getSelectorA())
{
case 17: //X
DRIVEX.runMovRel(dist*distXYZ,F,1)
break;
case 18: //Y
DRIVEY.runMovRel(dist*distXYZ,F,1)
break;
case 19: //Z
DRIVEZ.runMovRel(dist*distXYZ,F,1)
break;
case 20: //A
DRIVEA.runMovRel(dist*distXYZ,F,1)
break;
}
}
function changedButtonsXHC(button1,button2)
{
SCRIPT.console("changedButtonsXHC("+button1+","+button2+")")
switch(button1)
{
case 1: //RESET
MACHINE.reset();
break;
case 2: //Stop
MACHINE.stopMov()
break;
case 3: //Start/pause
if(MACHINE.isPause())
MACHINE.setPause(0)
else
{
if(MACHINE.isActiv())
MACHINE.setPause()
else
MACHINE.startMov()
}
break;
case 12: //Fn key + button2
switch(button2)
{
case 4: //Feed+
MACHINE.setPercentF(MACHINE.getPercentF()+2.5)
break;
case 5: //Feed -
MACHINE.setPercentF(MACHINE.getPercentF()-2.5)
break;
case 6: //Spindle+
MACHINE.setPercentS(MACHINE.getPercentS()+2.5)
break;
case 7: //Spindle-
MACHINE.setPercentS(MACHINE.getPercentS()-2.5)
break;
case 8: //M_HOME <--
if(MACHINE.getCurPosition("Z")<0)
MACHINE.runGCode("G53 G90 G0 Z0")
MACHINE.runGCode("G53 G90 G0 X0 Y0")
break;
case 9: //Safe-Z
MACHINE.runGCode("G91 G28 G0 Z0")
break;
case 10: //W_HOME <--
if(MACHINE.getCurPositionSC("Z")<0)
MACHINE.runGCode("G90 G0 Z0")
MACHINE.runGCode("G90 G0 X0 Y0")
break;
case 11: //W_HOME <--
if(MACHINE.getStateSpindle()!=0)
MACHINE.runMCode(5);
else
MACHINE.runMCode(3);
break;
case 13: //Probe-Z
break;
}
break;
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:MSCRIPT.runFunction("macro"+(button1-3)+"WLXHC()",1);
break
case 13:MSCRIPT.runFunction("macro9WLXHC()",1);
break
case 16:MSCRIPT.runFunction("macro10WXHC()",1);
break
}
}
function changedSelectorXXHC(pselect)
{
SCRIPT.console("changedSelectorXXHC("+pselect+")")
}
Обновилась программа для обновления прошивок наших устройств. Основные изменения:
На компьютере создаётся репозиторий(папка с прошивками) и прошивки хранятся в нём – и они всегда доступны. При появлении новых прошивок можно их скачать с нашего сайта (в том числе автоматически с помощью программы WLFW).
Создан файл настроек “wlfw.ini” с настройками программы.
WLFW теперь имеет 2 набора отображаемых инструментов. Простой и Эксперт – с расширенными возможностями.
Изменились надписи на кнопках для лучшего понимания их назначения.
PS Теперь все программы и прошивки имеют версию не связанную со временем (как это было раньше). Также у исполняемых файлов программ и файлов прошивок добавляются версии в их название. Для более простой идентификации.
По умолчанию появляется окно с подтверждением смены инструмента в ручном режиме, либо отмены этого действия.
5. Работа со смещениями инструмента.(они доступны и в WLMill)
В закладке Tool желательно добавить колонки для отображения смещения инструмента. Для этого нажимаем на колонки и вводим колонки которые мы хотим отображать через запятую.
Comment – добавили колонку комментария для каждого инструмента. В ней мы можем коротко охарактеризовать инструмент. Теперь у нас будут подсвечиваться(красным) смещения которые сейчас активны.
Задание смещений. Задание смещений удобно производить с помощью скрипта WLToolOffset.js – он идёт по умолчанию с программой. Также его можно добавить самостоятельно.
WLToolOffset – Добавляет кнопку внизу таблицы инструментов. Нажав на неё мы можем установить смещения инструмента задав текущее(истинное) значение координаты для этого инструмента. После чего будет рассчитано и установлено смещение инструмента. И координаты установятся нужные значения.
Общий алгоритм задания смещений будет выглядеть так:
1. Устанавливаем первый инструмент он будет базовый. (вводим Т101)
2. Задаём ему смещения Xo=0 Yo=0 (вводим в таблицу).
3. Определяем координаты Z и X для этого инструмента и вводим их как смещение СК (Где кнопки ручных перемещений)
4. Меняем инструмент (Т202 – инструмент №2 смещение №2) и определяем координаты Z и X для этого инструмента и задаём смещения этого инструмента с помощью кнопки ToolOffset.
5.Проделываем п3 и п4 для остальных инструментов.
PS На данный момент не отлажена работа станка с середины программы. Она будет происходить как и с WLMill (подход XY и опускание по Z) !!!
Были добавлены короткие описания типов элементов которые можно подставить в текст скрипта.
obj – объект к нему можно обращаться через функции.
var – глобальные переменные который определил пользователь (в тексте скриптов)
fun – функция которая была определена
pro – свойства, которые можно использовать в программе как глобальные переменные. Но которые были созданы скриптом. Например на скрине снизу WLJoystickPath – путь до файла WLJoystick.js
wek – функция которую можно переопределить в тексте скрипта. То есть если не было определения этой функции в тексте скрипта, то будет выполняться стандартная функция (из памяти WLMill). Если мы хотим переопределить эту функцию, то мы выбираем её и редактор автоматически вставит(из памяти WLMill) в текст стандартной функции в текст скрипта.
Например мы можем переопределить 4 функции которые ещё не определены, но используются стандартные.
Уже давно можно создавать пользовательские кнопки. При нажатии на которые можно запускать выполнение скриптов. Но до настоящего времени отсутствовала возможность фиксации кнопки в нажатом положении (чекабельности).
Теперь это свойство доступно. И для работы с ним добавлено несколько методов.
setChekable(enable) // вкл/выкл использования защёлкивания
setChecked(check) // перевести кнопку в состояние нажата/отпущена
isChecked() // -> возвращает текущее состояние кнопки
setScriptRelease( txt) //устанавливает скрипт выполнения при отжатии кнопки
setScript( txt) //устанавливает скрипт выполнения при нажатии кнопки ///как и раньше
Ниже приведён пример функции которая создаёт кнопку ENABLEH с фиксацией. Для теста можно добавить данную функцию в MScript и добавить её вызов в init().
В WLMill beta было переработано окно редактирования скриптов.
Было добавлено:
Одновременная работа с несколькими файлами (которые были добавлены через include).
Подсветка синтаксиса.
Добавлена система подсказок при написание скриптов. То есть при нажатии CTRL+Пробел редактор может предложить нам варианты, что можно вписать. Это могут быть функции, глобальные переменные, объекты и их методы. И нам не надо держать в голове весь багаж этих функций.
У контроллера 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)