Редактировал(а) Edgar Allan Poe 2024/02/22 11:35

Последние авторы
1 {{success title="**Внимание!**"}}
2 Перед началом работы убедитесь в наличии активной опции "Поочередное управление несколькими двигателями, подключенными к оси".
3 {{/success}}
4
5 {{error title="**Внимание!**"}}
6 Для работы необходима опция "Создание и редактирование макросов" или "Автоматическая смена инструмента".
7 {{/error}}
8
9 Данная функция позволяет отключать и подключать каждый из двигателей, назначенных на определённую ось (или несколько осей). Рассмотрим ситуацию, когда необходимо управлять станком с двумя суппортами, каждый из которых приводится в движение своим двигателем по оси Z. В этом случае можно модифицировать макрос (% style="color:#8d69b2" %)**M6**(%%) таким образом, чтобы при смене инструмента сначала старый отводился на безопасную высоту и затем производилось переключение активных двигателей.
10
11 В функции SwitchMotors(0, 1) первый параметр — индекс двигателя (начиная с нуля), который необходимо отключить. Второй параметр — индекс двигателя, который необходимо включить. Таким образом при выполнении данной команды будет произведено переключение активного двигателя с первого на второй по списку в меню "Настройки" → "Двигатели".
12
13 {{code language="lua" title="**Пример макроса M6**"}}
14 function m6()
15 if (Is_THC_Mode() or Is_Oxy_Mode()) then
16 return
17 end
18
19 local toolSlot = GetSelectedToolSlot()
20 local previousToolSlot = GetToolSlot()
21
22 ExecuteMDI("G53 G0 Z0")
23
24 if (toolSlot == 2) then
25 SwitchMotors(0,1)
26 else
27 SwitchMotors(1,0)
28 end
29
30 local delta = 200 -- расстояние между двумя "головами"
31
32 if (toolSlot == 2 and toolSlot ~= previousToolSlot) then
33 local CurrX = AxisGetPos(Axis.X)
34 local CurrY = AxisGetPos(Axis.Y)
35 local NewY = CurrY - delta
36 ExecuteMDI("G55")
37 ExecuteMDI("G10L20P0 X"..str(CurrX).." Y"..str(NewY))
38 ExecuteMDI("G90 G0 Y"..str(CurrY))
39 elseif (previousToolSlot == 2 and toolSlot ~= previousToolSlot) then
40 local CurrX = AxisGetPos(Axis.X)
41 local CurrY = AxisGetPos(Axis.Y)
42 local NewY = CurrY + delta
43 ExecuteMDI("G54")
44 ExecuteMDI("G10L20P0 X"..str(CurrX).." Y"..str(NewY))
45 ExecuteMDI("G90 G0 Y"..str(CurrY))
46 end
47
48 SetToolSlot(toolSlot)
49 end
50 {{/code}}
51
52 [[Скачать пример макроса M6>>attach:M6.zip]]
53
54 После того как работа вторым инструментом завершена, переключиться на использование первого суппорта можно командой (% style="color:#8d69b2" %)**M6**(%%)** T1**, в которой будет вызвана функция SwitchMotors(1,0). При этом будет автоматически восстановлена машинная координата по оси Z на значение, которое она имела, когда был активен первый двигатель.
55
56 При необходимости управления отключением/подключением каждого двигателя по отдельности можно использовать функции MotorDisable и MotorEnable, принимающие один параметр — индекс двигателя.
57
58 Для полноценного использования возможностей опции необходимо:
59
60 1. Приобрести и активировать опцию, применить лицензию в PUMOTIX ([[как применить лицензию?>>doc:Руководство пользователя.Ответы на типовые вопросы.Как применить лицензию?.WebHome]]).
61 1. Настроить несколько двигателей на одну ось ([[подробнее о настройке двигателей>>doc:Руководство пользователя.Настройка ПО.Настройка двигателей.WebHome]]). Функция может быть применена для любого количества осей.[[image:2020-12-03-Настройки.png||data-xwiki-image-style-alignment="center"]]
62 1. Модифицировать или написать новый макрос.
63 1. Использовать макрос для переключения между двигателями. Для этого воспользуйтесь строкой для ввода G-кода, кнопкой на панели макросов или специализированной кнопкой интерфейса.
64 1. Мониторить состояние системы на вкладке "Диагностика", где вы можете увидеть все настроенные Вами двигатели.[[image:2020-12-03 16_20_21-PUMOTIX.png||data-xwiki-image-style-alignment="center" height="300" width="315"]]
65
66 Также при активной опции на вкладке диагностика станет доступна кнопка для включения всех настроенных двигателей.
67
68 [[Кнопка "Сделать все двигатели активными">>image:2020-12-03 16_20_36-PUMOTIX.png||data-xwiki-image-style-alignment="center" height="201" width="300"]]