Поочерёдное управление несколькими двигателями, подключенными к оси

Версия 3.1 от abolgov на 2020/12/11 14:00
Предупреждение: Из соображений безопасности документ отображается в ограниченном режиме, поскольку это не текущая версия. Из-за этого могут быть расхождения и ошибки.


Неизвестный макрос: tip. Нажмите на это сообщение для получения подробной информации.


Warning
Внимание!

Для работы необходима опция "Создание и редактирование макросов" или "Автоматическая смена инструмента".

Данная функция позволяет отключать и подключать каждый из двигателей, назначенных на определённую ось (или несколько осей). Рассмотрим ситуацию, когда необходимо управлять станком с двумя суппортами, каждый из которых приводится в движение своим двигателем по оси Z. В этом случае можно модифицировать макрос M6 таким образом, чтобы при смене инструмента сначала старый отводился на безопасную высоту и затем производилось переключение активных двигателей.

В функции SwitchMotors(0, 1) первый параметр - индекс двигателя (начиная с нуля), который необходимо отключить. Второй параметр - индекс двигателя, который необходимо включить. Таким образом при выполнении данной команды будет произведено переключение активного двигателя с первого на второй по списку в меню Настройки → Двигатели.

Пример макроса M6
function m6()
if (Is_THC_Mode() or Is_Oxy_Mode()) then
return
end

local toolSlot = GetSelectedToolSlot()
local previousToolSlot = GetToolSlot()

ExecuteMDI("G53 G0 Z0")

if (toolSlot == 2) then
SwitchMotors(0,1)
else
SwitchMotors(1,0)
end

local delta = 200  -- расстояние между двумя "головами"

if (toolSlot == 2 and toolSlot ~= previousToolSlot) then
local CurrX = AxisGetPos(Axis.X)
local CurrY = AxisGetPos(Axis.Y)
local NewY = CurrY - delta
ExecuteMDI("G55")
ExecuteMDI("G10L20P0 X"..str(CurrX).." Y"..str(NewY))
ExecuteMDI("G90 G0 Y"..str(CurrY))
elseif (previousToolSlot == 2 and toolSlot ~= previousToolSlot) then
local CurrX = AxisGetPos(Axis.X)
local CurrY = AxisGetPos(Axis.Y)
local NewY = CurrY + delta
ExecuteMDI("G54")
ExecuteMDI("G10L20P0 X"..str(CurrX).." Y"..str(NewY))
ExecuteMDI("G90 G0 Y"..str(CurrY))
end

SetToolSlot(toolSlot)
end

Скачать пример макроса M6

После того, как работа вторым инструментом завершена, переключиться на использование первого суппорта можно командой M6T1, в которой будет вызвана функция SwitchMotors(1,0). При этом будет автоматически восстановлена машинная координата по оси Z на значение, которое она имела, когда был активен первый двигатель.

При необходимости управления отключением/подключением каждого двигателя по отдельности можно использовать функции MotorDisable и MotorEnable, принимающие один параметр - индекс двигателя.

Для полноценного использования возможностей опции необходимо:

  1. Приобрести и активировать опцию, применить лицензию в PUMOTIX (как применить лицензию?).
  2. Настроить несколько двигателей на одну ось (подробнее о настройке двигателей). Функция может быть применена для любого количества осей.
    2020-12-03-Настройки.png
  3. Модифицировать или написать новый макрос.
  4. Использовать макрос для переключения между двигателями. Для этого воспользуйтесь строкой для ввода G-кода, кнопкой на панели макросов или специализированной кнопкой интерфейса.
  5. Мониторить состояние системы на вкладке "Диагностика", где вы можете увидеть все настроенные Вами двигатели.
    2020-12-03 16_20_21-PUMOTIX.png

Также при активной опции на вкладке диагностика станет доступна кнопка для включения всех настроенных двигателей.
2020-12-03 16_20_36-PUMOTIX.png