Последние авторы
1 {{info}}
2 Для работы функции необходимо наличии опции "**Поочерёдное управление несколькими двигателями, подключенными к оси**", а также опции "**Создание и редактирование макросов**" или "**Автоматическая смена инструмента**" для реализации логики переключения двигателей.
3 {{/info}}
4
5 Данная функция позволяет отключать и подключать каждый из двигателей, назначенных на определённую ось (или несколько осей). Рассмотрим ситуацию, когда необходимо управлять станком с двумя суппортами, каждый из которых приводится в движение своим двигателем по оси Z. В этом случае можно модифицировать макрос (% style="color:#8d69b2" %)**M6**(%%) таким образом, чтобы при смене инструмента сначала старый отводился на безопасную высоту и затем производилось переключение активных двигателей.
6
7 В функции SwitchMotors(0, 1) первый параметр - индекс двигателя (начиная с нуля), который необходимо отключить. Второй параметр - индекс двигателя, который необходимо включить. Таким образом при выполнении данной команды будет произведено переключение активного двигателя с первого на второй по списку в меню "Настройки" → "Двигатели".
8
9 {{code language="lua"}}
10 function m6()
11 if (Is_THC_Mode() or Is_Oxy_Mode()) then
12 return
13 end
14
15 local toolSlot = GetSelectedToolSlot()
16 local previousToolSlot = GetToolSlot()
17
18 ExecuteMDI("G53 G0 Z0")
19
20 if (toolSlot == 2) then
21 SwitchMotors(0,1)
22 else
23 SwitchMotors(1,0)
24 end
25
26 local delta = 200 -- расстояние между двумя "головами"
27
28 if (toolSlot == 2 and toolSlot ~= previousToolSlot) then
29 local CurrX = AxisGetPos(Axis.X)
30 local CurrY = AxisGetPos(Axis.Y)
31 local NewY = CurrY - delta
32 ExecuteMDI("G55")
33 ExecuteMDI("G10L20P0 X"..str(CurrX).." Y"..str(NewY))
34 ExecuteMDI("G90 G0 Y"..str(CurrY))
35 elseif (previousToolSlot == 2 and toolSlot ~= previousToolSlot) then
36 local CurrX = AxisGetPos(Axis.X)
37 local CurrY = AxisGetPos(Axis.Y)
38 local NewY = CurrY + delta
39 ExecuteMDI("G54")
40 ExecuteMDI("G10L20P0 X"..str(CurrX).." Y"..str(NewY))
41 ExecuteMDI("G90 G0 Y"..str(CurrY))
42 end
43
44 SetToolSlot(toolSlot)
45 end
46 {{/code}}
47
48 После того, как работа вторым инструментом завершена, переключиться на использование первого суппорта можно командой (% style="color:#8d69b2" %)**M6**(%%)** T1**, в которой будет вызвана функция SwitchMotors(1,0). При этом будет автоматически восстановлена машинная координата по оси Z на значение, которое она имела, когда был активен первый двигатель.
49
50 При необходимости управления отключением/подключением каждого двигателя по отдельности можно использовать функции MotorDisable и MotorEnable, принимающие один параметр - индекс двигателя.
51
52 На вкладке "Диагностика" для отключенных двигателей отображается красный индикатор "Двигатель отключен". Включить все двигатели, т.е. вернуть состояние по-умолчанию, можно с помощью кнопки "Сделать все двигатели активными".