Все представленные в этой статье макросы для их корректной работы необходимо назначить на фоновые задачи через меню Сервис-Настройки-Фоновые задачи. Версия визуализатора должна быть 4.3 или выше.
Содержание
Запуск определенной управляющей программы по внешней кнопке
Коррекция скорости рабочей подачи по внешней кнопке
Коррекция скорости вращения шпинделя/мощности лазера по внешней кнопке
Переключение состояния релейного выхода по нажатию на внешнюю кнопку
Включение релейного выхода по нажатию на внешнюю кнопку
Выключение релейного выхода по нажатию на внешнюю кнопку
Постановка УП на паузу и вывод сообщения об ошибке по сигналу на определенном входе
Запуск определенной управляющей программы по внешней кнопке
При замыкании кнопки, подключенной ко входу из переменной INPUT_ID, происходит открытие и запуск файла управляющей программы G-кода, полный путь к которому указывается в переменной GCODE_FILE_PATH. Если при этом значение переменной CHECK_STATUS_IDLE равно 1, то перед попыткой открыть файл осуществляется проверка состояния контроллера: если в данный момент уже выполняется какая-либо другая УП или состояние контроллера не ГОТОВ, запуск УП из макроса отменяется.
Код макроса:
{
// БЛОК КОНФИГУРАЦИОННЫХ ПЕРЕМЕННЫХ
// Макрос для запуска управляющей программы (УП) по внешней кнопке
// !!! В макросе нужно изменить только переменные INPUT_ID, CHECK_STATUS_IDLE и GCODE_FILE_PATH.
// !!! Макрос необходимо назначить на фоновую задачу, которая будет периодически его запускать.
// INPUT_ID - идентификатор входа, к которому подключена кнопка запуска УП.
// Например, 7 означает, что кнопка подключены ко входу IN7 (переопределенный RST).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var INPUT_ID = 7
// CHECK_STATUS_IDLE - включение проверки, чтобы запускать задачу, только если контроллер находится в состоянии Готов
// и никакая другая УП не выполняется. 1 - проверка включена, 0 - выключена.
var CHECK_STATUS_IDLE = 1
// GCODE_FILE_PATH - полный путь к файлу управляющей программы G-кода, который требуется запустить по нажатию на кнопку.
// В Windows разделителем каталогов является двойной обратный слеш.
var GCODE_FILE_PATH = "D:\\Documents\\G-Code\\rectangle.tap"
}
{
// БЛОК КОДА МАКРОСА
var detected = 0
if ($.inputs["i" + String(INPUT_ID)]) {
if (CHECK_STATUS_IDLE == 1) {
// Проверяем, запущена ли какая-то управляющая программа на исполнение.
if ($.tasklist.is_running()) {
$.message("На выполнении находится другая управляющая программа, запуск УП отменён!")
$.exit()
}
// Проверяем статус контроллера.
// $.status - значение 1 означает состояние Готов
if ($.status != 1) {
$.message("Контроллер не в состоянии ГОТОВ, запуск УП отменён!")
$.exit()
}
}
// Останавливаем текущую УП, если запущена, и открываем нужный нам файл УП
$.tasklist.stop()
var res = $.tasklist.add_task(GCODE_FILE_PATH, 1)
if (res == 0) {
$.message("Ошибка открытия файла " + String(GCODE_FILE_PATH))
$.exit()
}
// Запускаем G-код файл на исполнение
$.tasklist.start_hold()
var detected = 1
}
if (detected == 1) {
while($.inputs["i" + String(INPUT_ID)])
$.wait()
}
}
Коррекция скорости рабочей подачи по внешней кнопке
При нажатии на кнопку, подключенную ко входу DECREASE_FEED_IN_ID, происходит уменьшение скорости подачи. При нажатии на кнопку, подключенную ко входу INCEREASE_FEED_IN_ID, происходит увеличение скорости подачи. При нажатии на кнопку, подключенную ко входу RESET_FEED_IN_ID, осуществляется сброс коррекции подачи в 100%.
Код макроса:
{
// БЛОК КОНФИГУРАЦИОННЫХ ПЕРЕМЕННЫХ
// Макрос для регулировки скорости рабочей подачи с помощью физически подключенных к контроллеру кнопок
// !!! В макросе нужно изменить только переменные DECREASE_FEED_IN_ID, INCEREASE_FEED_IN_ID и RESET_FEED_IN_ID.
// !!! Макрос необходимо назначить на фоновую задачу, которая будет периодически его запускать.
// DECREASE_FEED_IN_ID - идентификатор входа, к которому подключена кнопка уменьшения подачи.
// Например, 7 означает, что датчик/кнопка подключены ко входу IN7 (переопределенный RST).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var DECREASE_FEED_IN_ID = 7
// INCEREASE_FEED_IN_ID - идентификатор входа, к которому подключена кнопка увеличения подачи.
// Например, 8 означает, что датчик/кнопка подключены ко входу IN8 (переопределенный HOLD).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var INCEREASE_FEED_IN_ID = 8
// RESET_FEED_IN_ID - идентификатор входа, к которому подключена кнопка сброса коррекции скорости подачи.
// Например, 9 означает, что датчик/кнопка подключены ко входу IN9 (переопределенный STRT).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var RESET_FEED_IN_ID = 9
}
{
// БЛОК ФУНКЦИЙ
// Функция грубого увеличения скорости подачи (на 10%)
function fead_rate_increase_coarse() {
$.rt.ov.feed.coarse_plus()
}
// Функция грубого уменьшения скорости подачи (на 10%)
function fead_rate_decrease_coarse() {
$.rt.ov.feed.coarse_minus()
}
// Функция точного увеличения скорости подачи (на 1%)
function fead_rate_increase_fine() {
$.rt.ov.feed.fine_plus()
}
// Функция точного уменьшения скорости подачи (на 1%)
function fead_rate_decrease_fine() {
$.rt.ov.feed.fine_minus()
}
// Функция сброса коррекции скорости подачи
function fead_rate_reset() {
$.rt.ov.feed.reset()
}
}
{
// БЛОК КОДА МАКРОСА
if ($.inputs["i" + String(DECREASE_FEED_IN_ID)]) {
// Если требуется точная регулировка, замените функцию ниже на fead_rate_decrease_fine()
fead_rate_decrease_coarse()
}
if ($.inputs["i" + String(INCEREASE_FEED_IN_ID)]) {
// Если требуется точная регулировка, замените функцию ниже на fead_rate_increase_fine()
fead_rate_increase_coarse()
}
if ($.inputs["i" + String(RESET_FEED_IN_ID)]) {
fead_rate_reset()
}
}
Коррекция скорости вращения шпинделя/мощности лазера по внешней кнопке
При нажатии на кнопку, подключенную ко входу DECREASE_RPM_IN_ID, происходит уменьшение скорости вращения шпинделя (или мощности лазера в режиме лазера). При нажатии на кнопку, подключенную ко входу INCEREASE_RPM_IN_ID, происходит увеличение скорости вращения шпинделя (или мощности лазера в режиме лазера). При нажатии на кнопку, подключенную ко входу RESET_RPM_IN_ID, осуществляется сброс коррекции скорости вращения шпинделя (или мощности лазера в режиме лазера) в 100%.
Код макроса:
{
// БЛОК КОНФИГУРАЦИОННЫХ ПЕРЕМЕННЫХ
// Макрос для регулировки скорости вращения шпинделя с помощью физически подключенных к контроллеру кнопок
// !!! В макросе нужно изменить только переменные DECREASE_RPM_IN_ID, INCEREASE_RPM_IN_ID и RESET_RPM_IN_ID.
// !!! Макрос необходимо назначить на фоновую задачу, которая будет периодически его запускать.
// DECREASE_RPM_IN_ID - идентификатор входа, к которому подключена кнопка уменьшения скорости вращения шпинделя.
// Например, 7 означает, что датчик/кнопка подключены ко входу IN7 (переопределенный RST).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var DECREASE_RPM_IN_ID = 7
// INCEREASE_RPM_IN_ID - идентификатор входа, к которому подключена кнопка увеличения скорости вращения шпинделя.
// Например, 8 означает, что датчик/кнопка подключены ко входу IN8 (переопределенный HOLD).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var INCEREASE_RPM_IN_ID = 8
// RESET_RPM_IN_ID - идентификатор входа, к которому подключена кнопка сброса коррекции скорости вращения шпинделя.
// Например, 9 означает, что датчик/кнопка подключены ко входу IN9 (переопределенный STRT).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var RESET_RPM_IN_ID = 9
}
{
// БЛОК ФУНКЦИЙ
// Функция грубого увеличения скорости подачи (на 10%)
function rpm_increase_coarse() {
$.rt.ov.spindle.coarse_plus()
}
// Функция грубого уменьшения скорости подачи (на 10%)
function rpm_decrease_coarse() {
$.rt.ov.spindle.coarse_minus()
}
// Функция точного увеличения скорости подачи (на 1%)
function rpm_increase_fine() {
$.rt.ov.spindle.fine_plus()
}
// Функция точного уменьшения скорости подачи (на 1%)
function rpm_decrease_fine() {
$.rt.ov.spindle.fine_minus()
}
// Функция сброса коррекции скорости подачи
function rpm_reset() {
$.rt.ov.spindle.reset()
}
}
{
// БЛОК КОДА МАКРОСА
if ($.inputs["i" + String(DECREASE_RPM_IN_ID)]) {
// Если требуется точная регулировка, замените функцию ниже на rpm_decrease_fine()
rpm_decrease_coarse()
}
if ($.inputs["i" + String(INCEREASE_RPM_IN_ID)]) {
// Если требуется точная регулировка, замените функцию ниже на rpm_increase_fine()
rpm_increase_coarse()
}
if ($.inputs["i" + String(RESET_RPM_IN_ID)]) {
rpm_reset()
}
}
Переключение состояния релейного выхода по нажатию на внешнюю кнопку
При нажатии на кнопку, подключенную ко входу IN_ID, происходит переключение релейного выхода OUT_ID в противоположное состояние. Переключение выхода происходит до тех пор, пока кнопка не будет отжата. Частота переключения равна частоте вызова макроса в фоновой задаче.
Код макроса:
{
// БЛОК КОНФИГУРАЦИОННЫХ ПЕРЕМЕННЫХ
// Простой макрос, который по сигналу на определенном входе переключает заданный выход в противоположное состояние.
// !!! В макросе нужно изменить только переменные IN_ID и OUT_ID.
// !!! Макрос необходимо назначить на фоновую задачу, которая будет периодически его запускать.
// IN_ID - идентификатор входа, на котором отслеживаем активный сигнал.
// Например, 7 означает, что датчик/кнопка подключены ко входу IN7 (переопределенный RST).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var IN_ID = 7
// OUT_ID - идентификатор выхода, состояние которого меняем по сигналу на входе IN_ID.
// Например, 5 означает, что управляем выходом OUT5.
// Если используются выходы OUT1-OUT4 их нужно переопределить через меню Станок-Конфигурация-Входы/выходы.
var OUT_ID = 5
}
{
// БЛОК ФУНКЦИЙ
// Функция переключает релейный выход, заданный входным параметром out_id, в противоположное состояние (из 0 в 1 или наоборот)
function controller_output_toggle(out_id) {
if (out_id == 1)
$.rt.output.out1_toggle()
else if(out_id == 2)
$.rt.output.out2_toggle()
else if(out_id == 3)
$.rt.output.out3_toggle()
else if(out_id == 4)
$.rt.output.out4_toggle()
else if(out_id == 5)
$.rt.output.out5_toggle()
else if(out_id == 6)
$.rt.output.out6_toggle()
else if(out_id == 7)
$.rt.output.out7_toggle()
}
}
{
// БЛОК КОДА МАКРОСА
if ($.inputs["i" + String(IN_ID)]) {
controller_output_toggle(OUT_ID)
}
}
Включение релейного выхода по нажатию на внешнюю кнопку
При нажатии на кнопку, подключенную ко входу IN_ID, происходит активация (включение) релейного выхода OUT_ID.
Код макроса:
{
// БЛОК КОНФИГУРАЦИОННЫХ ПЕРЕМЕННЫХ
// Простой макрос, который по сигналу на определенном входе включает заданный выход.
// !!! В макросе нужно изменить только переменные IN_ID и OUT_ID.
// !!! Макрос необходимо назначить на фоновую задачу, которая будет периодически его запускать.
// IN_ID - идентификатор входа, на котором отслеживаем активный сигнал.
// Например, 7 означает, что датчик/кнопка подключены ко входу IN7 (переопределенный RST).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var IN_ID = 7
// OUT_ID - идентификатор выхода, который включаем по сигналу на входе IN_ID.
// Например, 5 означает, что управляем выходом OUT5.
// Если используются выходы OUT1-OUT4 их нужно переопределить через меню Станок-Конфигурация-Входы/выходы.
var OUT_ID = 5
}
{
// БЛОК ФУНКЦИЙ
// Функция переключает релейный выход, заданный входным параметром out_id, в противоположное состояние (из 0 в 1 или наоборот)
function controller_output_toggle(out_id) {
if (out_id == 1)
$.rt.output.out1_toggle()
else if(out_id == 2)
$.rt.output.out2_toggle()
else if(out_id == 3)
$.rt.output.out3_toggle()
else if(out_id == 4)
$.rt.output.out4_toggle()
else if(out_id == 5)
$.rt.output.out5_toggle()
else if(out_id == 6)
$.rt.output.out6_toggle()
else if(out_id == 7)
$.rt.output.out7_toggle()
}
}
{
// БЛОК КОДА МАКРОСА
if ($.inputs["i" + String(IN_ID)] && !$.outputs["o" + String(OUT_ID)]) {
controller_output_toggle(OUT_ID)
}
}
Выключение релейного выхода по нажатию на внешнюю кнопку
При нажатии на кнопку, подключенную ко входу IN_ID, происходит выключение релейного выхода OUT_ID.
Код макроса:
{
// БЛОК КОНФИГУРАЦИОННЫХ ПЕРЕМЕННЫХ
// Простой макрос, который по сигналу на определенном входе выключает заданный выход.
// !!! В макросе нужно изменить только переменные IN_ID и OUT_ID.
// !!! Макрос необходимо назначить на фоновую задачу, которая будет периодически его запускать.
// IN_ID - идентификатор входа, на котором отслеживаем активный сигнал.
// Например, 7 означает, что датчик/кнопка подключены ко входу IN7 (переопределенный RST).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var IN_ID = 7
// OUT_ID - идентификатор выхода, который выключаем по сигналу на входе IN_ID.
// Например, 5 означает, что управляем выходом OUT5.
// Если используются выходы OUT1-OUT4 их нужно переопределить через меню Станок-Конфигурация-Входы/выходы.
var OUT_ID = 5
}
{
// БЛОК ФУНКЦИЙ
// Функция переключает релейный выход, заданный входным параметром out_id, в противоположное состояние (из 0 в 1 или наоборот)
function controller_output_toggle(out_id) {
if (out_id == 1)
$.rt.output.out1_toggle()
else if(out_id == 2)
$.rt.output.out2_toggle()
else if(out_id == 3)
$.rt.output.out3_toggle()
else if(out_id == 4)
$.rt.output.out4_toggle()
else if(out_id == 5)
$.rt.output.out5_toggle()
else if(out_id == 6)
$.rt.output.out6_toggle()
else if(out_id == 7)
$.rt.output.out7_toggle()
}
}
{
// БЛОК КОДА МАКРОСА
if ($.inputs["i" + String(IN_ID)] && $.outputs["o" + String(OUT_ID)]) {
controller_output_toggle(OUT_ID)
}
}
Постановка УП на паузу и вывод сообщения об ошибке по сигналу на определенном входе
При поступлении сигнала на вход IN_ID происходит постановка запущенной УП на паузу, и выводится сообщение о причине ошибки/аварии. Чтобы продолжить работу, необходимо снять этот сигнал.
Код макроса:
{
// БЛОК КОНФИГУРАЦИОННЫХ ПЕРЕМЕННЫХ
// По сигналу на определенном входе макрос ставит управляющую программу на паузу с выводом
// сообщения о причине остановки.
// !!! В макросе нужно изменить только переменные IN_ID и MSG.
// !!! Макрос необходимо назначить на фоновую задачу, которая будет периодически его запускать.
// IN_ID - идентификатор входа, на котором отслеживаем сигнал ошибки/аварии.
// Например, 7 означает, что сигнал ошибки/аварии подключен ко входу IN7 (переопределенный RST).
// Соответствующий вход нужно переопределить на сервисную функцию (Ix) в меню Станок-Конфигурация-Входы/выходы.
var IN_ID = 7
// MSG - информационное сообщение о причине остановки
var MSG = "Получен сигнал аварии I" + String(IN_ID) + "! Снимите сигнал, чтобы продолжить работу."
}
{
// БЛОК КОДА МАКРОСА
if ($.inputs["i" + String(IN_ID)]) {
if ($.tasklist.is_running()) {
// Если в данный момент выполняется УП, ставим на паузу
$.rt.hold()
}
$.message(MSG)
}
}
