
Макропрограмма — это подпрограмма с переменными
Группу команд, выполняющих определённую функцию, сохраняют в памяти как подпрограмму и вызывают одной командой. В макропрограмме можно использовать переменные, вычисления и переходы. Она начинается с номера программы (например, O9010) и заканчивается кодом M99.
Переменная записывается как # и номер: #5, #109, #1005. Значение приходит из основной программы, вводится вручную в режиме MDI или вычисляется в макропрограмме. Переменной можно заменять числовые значения адресов, например F#103 или G#130. Адреса O и N (номер программы и кадра) на переменные ссылаться не могут: O#100 и N#120 — ошибка.
Какие бывают переменные
| Номера | Тип | Назначение |
|---|---|---|
| #0 | Пустая | Всегда пустая, присвоить значение нельзя |
| #1–#50 | Локальные | Только внутри макропрограммы; получают значения аргументов при вызове; очищаются при выключении питания, сбросе и конце программы (M30, M02) |
| #100–#199 | Общие | Одинаковы в основной программе и во всех макропрограммах; очищаются при выключении питания |
| #500–#999 | Общие, сохраняемые | Как #100–#199, но хранятся в файле и не теряются при выключении |
| #1000 и выше | Системные | Чтение и запись данных ЧПУ |
Среди системных: #1000–#1047 — входные сигналы интерфейса (чтение), #1100–#1147 — выходные (запись), #1500–#1755 — коррекция на длину, #1800–#2055 — износ по длине, #2100–#2355 и #2400–#2655 — коррекция и износ по радиусу, #3000 — авария (запись), #4000–#4030 — модальная информация (чтение), #5001–#5030 — координаты, #5201–#5235 — смещения нуля детали, #7001–#7250 — дополнительные системы координат.
Вызываем макрос и передаём аргументы
Формат: G65 P<номер> L<число вызовов> <аргументы>. L — от 1 до 9999 (по умолчанию 1). Если программы с номером P нет, выдаётся авария PS 078. Макропрограммы 90000–99999 — встроенные программы системы.
Аргументы задаются любыми буквами, кроме G, L, O, N, H, P (то есть 20 буквами), в любом порядке. Они записываются в локальные переменные:
| Адрес | Переменная | Адрес | Переменная |
|---|---|---|---|
| A | #1 | Q | #17 |
| B | #2 | R | #18 |
| C | #3 | S | #19 |
| I | #4 | T | #20 |
| J | #5 | U | #21 |
| K | #6 | V | #22 |
| D | #7 | W | #23 |
| E | #8 | X | #24 |
| F | #9 | Y | #25 |
| M | #13 | Z | #26 |
Арифметика и переходы: G65 H
Формат: G65 H(m) P(#i) Q(#j) R(#k) — результат записывается в #i, #j и #k — операнды (константы пишутся без #). Углы задаются в градусах, а среднее время выполнения операции или перехода — 10 мс.
| Код | Операция |
|---|---|
| H01 | Присваивание #i = #j |
| H02 / H03 | Сложение / вычитание |
| H04 / H05 | Умножение / деление |
| H11 / H12 / H13 | Двоичные ИЛИ / И / исключающее ИЛИ |
| H21 / H22 | Квадратный корень / модуль |
| H23 | Остаток от деления |
| H27 | Корень из суммы квадратов |
| H31 / H32 / H33 / H34 | Синус / косинус / тангенс / арктангенс |
| H80 | Безусловный переход в кадр Nn |
| H81 / H82 | Переход, если #j = #k / если #j ≠ #k |
| H83 / H84 | Переход, если #j > #k / если #j < #k |
| H99 | Авария пользователя |
В руководстве есть также коды H24–H26 (преобразования и умножение с делением) и H85, H86 (условные переходы); подробности по ним смотрите в оригинале. Номер кадра для перехода можно задать переменной: G65 H81 P#100 Q#101 R#102.
Номер аварии для H99 в руководстве указан по-разному: 3000 + n в таблице и 500 + n в тексте (P15 даёт аварию 515). Сверьтесь с экраном аварий своей системы.
Пример: отверстия по окружности
Руководство приводит макропрограмму O9010: на окружности радиуса R с центром (X0, Y0) обрабатывается N равномерно расположенных отверстий, начиная с угла A. Параметры хранятся в сохраняемых переменных #500–#505, счётчик отверстия — в #100, координаты вычисляются операциями H31, H32, переход к следующему отверстию — командой G65 H84. Знак N задаёт направление обхода: N > 0 — против часовой, N < 0 — по часовой. Вместо заглушки в тексте подставляют нужный цикл обработки отверстия.
Макросы доступны в системе 1080MIC на центрах SZGH PMC650, PMC540 и PMC850. Полный текст с примером — в «Технической документации».

SZGH
PMC540
Компактный портальный центр для фрезерования и сверления металла с повторяемостью 0,01 мм.
от 1 565 000 ₽

SZGH
PMC650
Портальный центр среднего класса: рабочий стол 600×500 мм, ШВП Ø32, до 4 управляемых осей.
от 2 015 000 ₽

SZGH
PMC850
Старшая модель портальной линейки: стол 800×500 мм, станина 2500 кг, шпиндель 7,5 кВт.
от 2 430 000 ₽
Частые вопросы
Как вызвать макропрограмму в SZGH 1080MIC?+–
Командой G65 P<номер> L<число вызовов> и аргументами. L можно не указывать (по умолчанию 1), максимум 9999.
Какие переменные сохраняются после выключения питания?+–
Общие переменные #500–#999 хранятся в файле и не теряются. Переменные #100–#199 при выключении питания очищаются.
Какие буквы нельзя использовать как аргументы G65?+–
G, L, O, N, H и P. Остальные 20 букв допустимы и подставляются в локальные переменные #1–#26 в соответствии с таблицей.
Что означает авария PS 078 при вызове G65?+–
Так система сообщает, что макропрограммы с указанным номером P нет в памяти.
