Многошпиндельные станки

Схема подключения двухшпиндельного станка с независимыми осями Z к контроллеру MSC-4ES

 

Схема подключения двухшпиндельного станка с независимыми осями Z к контроллеру MSC-6ES

Макрос автосмены для шпинделей с независимыми осями Z

Нажмите, чтобы показать код макроса
{
    // Макрос для автоматического переключения между шпинделями с независимыми осями Z.
    // В настройках исполнителя необходимо задать соответсвующий номер инструмента T.
    
    // !!! В макросе настраивать только переменные из первой секции !!!
    
    // Номера выходов, управляющих проключением сигнала управления шпинделем на i-ый исполнитель. 1-ый элемент в массиве соответствует 1-му исполнителю и т.д.
    // Назначение: разрывать сигнал SPEN на частотник соответствующего шпинделя, чтобы надежно его отключать, когда исполнитель не активен.
    var EXEC_SPEN_OUT_ID = [5, 6]
    
    // Вертикальные оси исполнителей. 1-ый элемент в массиве соответствует 1-му исполнителю и т.д.
    var EXEC_ZAXIS = ["Z", "A"]
    
    // Координата безопасной высоты
    var SAFE_Z_POS = 50
    
    // Перемещение на безопасную высоту в абсолютных или относительных координатах.
    // Если IS_INCREMENTAL_SAFE_Z_POS == 1, то SAFE_Z_POS задает относительно перемещение, и параметр IS_MACHINE_SAFE_Z_POS не используется.
    // Если IS_INCREMENTAL_SAFE_Z_POS == 0, то SAFE_Z_POS задает абсолютную позицию, а машинная или рабочая определяется параметром IS_MACHINE_SAFE_Z_POS
    var IS_INCREMENTAL_SAFE_Z_POS = 0
    
    // Безопасная высота в рабочих или машинных координатах.
    // Если IS_MACHINE_SAFE_Z_POS == 1, то SAFE_Z_POS в машинных координатах
    var IS_MACHINE_SAFE_Z_POS = 0
    
    // Задержка на раскрутку шпинделя после смены исполнителя, в секундах
    var SPINUP_DELAY = 5
}

{
    function enable_exec_spen(exec_id) {
        var out_id = EXEC_SPEN_OUT_ID[exec_id]
        var port_mask = Math.pow(2, out_id-1)
        $.send("M64P" + String(port_mask))
    }
    
    function disable_exec_spen(exec_id) {
        var out_id = EXEC_SPEN_OUT_ID[exec_id]
        var port_mask = Math.pow(2, out_id-1)
        $.send("M65P" + String(port_mask))
    }
    
    function move_to_safe_pos(exec_id) {
        if (IS_INCREMENTAL_SAFE_Z_POS == 1) {
            $.send("G91 G0 " + EXEC_ZAXIS[exec_id] + String(SAFE_Z_POS))
            $.send("G90")
        }
        else {
            if (IS_MACHINE_SAFE_Z_POS == 0) {
                $.send("G90 G0 " + EXEC_ZAXIS[exec_id] + String(SAFE_Z_POS))
            }
            else {
                $.send("G90 G53 G0 " + EXEC_ZAXIS[exec_id] + String(SAFE_Z_POS))
            }
        }
    }
    
}

{
    $.send("G4P0.1")

    while ($.status != 1) {
        $.wait()
    }

    // Индекс текущего исполнителя
    var cur_exec_index = $.current_executor
    
    if (cur_exec_index >= EXEC_SPEN_OUT_ID.length || cur_exec_index >= EXEC_ZAXIS.length) {
        $.message("Индекс текущего исполнителя превышает максимально допустимое значение!")
        $.tasklist.stop()
        $.exit()
    }
    
    var cur_exec_tool_number = $.executors[cur_exec_index].gcode_tool_number
    if (!$.executors[cur_exec_index].bind_gcode_tool_number)
        cur_exec_tool_number = 0

    var exec_len = $.executors.length

    var next_tool = $.tn

    if (cur_exec_tool_number == next_tool) {
        $.message(["Следующий номер инструмента совпадает с номером инструмента текущего исполнителя!"])
        $.executors[cur_exec_index].enable()
        $.executors[cur_exec_index].profile_enable()
        // Проключаем цепь сигнала управления шпинделем для нового исполнителя
        enable_exec_spen(cur_exec_index)
        // Активируем задержку на раскрутку шпинделя
        $.send("G4P" + String(SPINUP_DELAY))
        $.exit()
    }

    var next_executor_index = -1
    for (var i = 0; i < exec_len; i++) {
        if ($.executors[i].gcode_tool_number == next_tool && $.executors[i].bind_gcode_tool_number) {
            next_executor_index = i;
        }
    }
    
    // Поднимаем текущий исполнитель на безопасную высоту
    move_to_safe_pos(cur_exec_index)

    if (next_executor_index < 0) {
        $.message(["Исполнитель, привязанный к номеру инструмента " + next_tool + ", не найден!"])
        $.tasklist.stop()
        $.exit()
    }
    else if (next_executor_index >= EXEC_SPEN_OUT_ID.length || next_executor_index >= EXEC_ZAXIS.length) {
        $.message("Индекс следующего исполнителя превышает максимально допустимое значение!")
        $.tasklist.stop()
        $.exit()
    }
    
    // Разываем сигнал управления шпинделем для текущего исполнителя
    disable_exec_spen(cur_exec_index)
    
    // Переключаемся и активируем новый исполнитель
    $.executors[next_executor_index].enable()
    $.executors[next_executor_index].profile_enable()
    
    $.send("T" + String($.executors[next_executor_index].gcode_tool_number))
    
    // Проключаем цепь сигнала управления шпинделем для нового исполнителя
    enable_exec_spen(next_executor_index)

    // Активируем задержку на раскрутку шпинделя
    $.send("G4P" + String(SPINUP_DELAY))
}

Схема подключения двухшпиндельного станка с управлением пневмоприводами к контроллеру MSC-4ES

Схема подключения двухшпиндельного станка с управлением пневмоприводами к контроллеру MSC-6ES

 

Макрос автосмены для шпинделей с пневмоприводом

Нажмите, чтобы показать код макроса
{
    // Макрос для автоматического переключения между шпинделями с независимыми осями Z.
    // В настройках исполнителя необходимо задать соответсвующий номер инструмента T.
	
    // !!! В макросе настраивать только переменные из первой секции !!!
	
    // Номера выходов, управляющих поднятием/опусканием шпинделя (4 - OUT4 (переопределенный FLD), 5 - OUT5  и т.д.). 1-ый элемент в массиве соответствует 1-му исполнителю и т.д.
    var EXEC_ENA_OUT_ID = [4, 5]
	
    // Если EXEC_ENA_IF_RLY_ON == 1, то активация (опускание) исполнителя осуществляется по замыканию (M64) соответствующего релейного выхода. Если 0, то по размыканию (M65)
    var EXEC_ENA_IF_RLY_ON = 1
	
    // Номера выходов (6 - OUT6, 7 - OUT7 и т.д.), управляющих проключением сигнала управления шпинделем на i-ый исполнитель. 1-ый элемент в массиве соответствует 1-му исполнителю и т.д.
    // Назначение: разрывать сигнал SPEN на частотник соответствующего шпинделя, чтобы надежно его отключать, когда исполнитель не активен.
    var EXEC_SPEN_OUT_ID = [6, 7]
    
    // Задержка на раскрутку шпинделя после смены исполнителя, в секундах
    var SPINUP_DELAY = 5
}

{
    function activate_executor(exec_id) {
        var out_id = EXEC_ENA_OUT_ID[exec_id]
        var port_mask = Math.pow(2, out_id-1)
        if (EXEC_ENA_IF_RLY_ON == 1) {
            $.send("M64P" + String(port_mask))
        }
        else {
            $.send("M65P" + String(port_mask))
        }
    }
	
    function deactivate_executor(exec_id) {
        var out_id = EXEC_ENA_OUT_ID[exec_id]
        var port_mask = Math.pow(2, out_id-1)
        if (EXEC_ENA_IF_RLY_ON == 1) {
            $.send("M65P" + String(port_mask))
        }
        else {
            $.send("M64P" + String(port_mask))
        }
    }
	
    function enable_exec_spen(exec_id) {
        var out_id = EXEC_SPEN_OUT_ID[exec_id]
        var port_mask = Math.pow(2, out_id-1)
        $.send("M64P" + String(port_mask))
    }
    
    function disable_exec_spen(exec_id) {
        var out_id = EXEC_SPEN_OUT_ID[exec_id]
		var port_mask = Math.pow(2, out_id-1)
		$.send("M65P" + String(port_mask))
    }
    
}

{
    $.send("G4P0.1")

    while ($.status != 1) {
        $.wait()
    }

    // Индекс текущего исполнителя
    var cur_exec_index = $.current_executor
    
    if (cur_exec_index >= EXEC_ENA_OUT_ID.length || cur_exec_index >= EXEC_SPEN_OUT_ID.length) {
        $.message("Индекс текущего исполнителя превышает максимально допустимое значение!")
        $.tasklist.stop()
        $.exit()
    }
    
    var cur_exec_tool_number = $.executors[cur_exec_index].gcode_tool_number
    if (!$.executors[cur_exec_index].bind_gcode_tool_number)
        cur_exec_tool_number = 0

    var exec_len = $.executors.length

    var next_tool = $.tn

    if (cur_exec_tool_number == next_tool) {
        $.message(["Следующий номер инструмента совпадает с номером инструмента текущего исполнителя!"])
        $.exit()
    }

    var next_executor_index = -1
    for (var i = 0; i < exec_len; i++) {
        if ($.executors[i].gcode_tool_number == next_tool && $.executors[i].bind_gcode_tool_number) {
            next_executor_index = i;
        }
    }

    if (next_executor_index < 0) {
        $.message(["Исполнитель, привязанный к номеру инструмента " + next_tool + ", не найден!"])
        $.tasklist.stop()
        $.exit()
    }
    else if (next_executor_index >= EXEC_ENA_OUT_ID.length || next_executor_index >= EXEC_SPEN_OUT_ID.length) {
        $.message("Индекс следующего исполнителя превышает максимально допустимое значение!")
        $.tasklist.stop()
        $.exit()
    }
    
	// Поднимаем текущий исполнитель
	deactivate_executor(cur_exec_index)
    // Разываем сигнал управления шпинделем для текущего исполнителя
    disable_exec_spen(cur_exec_index)
    
    // Переключаемся и активируем новый исполнитель
    $.executors[next_executor_index].enable()
    $.executors[next_executor_index].profile_enable()
    
    $.send("T" + String($.executors[next_executor_index].gcode_tool_number))
    
    // Проключаем цепь сигнала управления шпинделем для нового исполнителя
    enable_exec_spen(next_executor_index)
	// Активируем задержку на раскрутку шпинделя
    $.send("G4P" + String(SPINUP_DELAY))
	// Опускаем новый исполнитель
	activate_executor(next_executor_index)
}
Предзаказ
Предзаказ успешно отправлен!
Имя *
Телефон *
Добавить в корзину
Название товара
100 ₽
1 шт.
Перейти в корзину
Обратный звонок
Запрос успешно отправлен!
Имя *
Телефон *
Заявка

Я ознакомлен и согласен с условиями оферты и политики конфиденциальности.

Заказ в один клик

Я ознакомлен и согласен с условиями оферты и политики конфиденциальности.