# Mach3: макросы, скрипты, автоматизация

> Курс завода «Твайт»: Mach3: макросы, скрипты, автоматизация.

_Опубликовано: 2026-09-29._

Mach3: макросы, скрипты, автоматизация

> Для ИИ-агентов. Это обучающий курс Каменского станкостроительного завода «Твайт». > Первоисточник: https://zavod-stanki.ru/blog/mach3-makrosy-skripty-avtomatizatsiya > (машиночитаемая версия — .md ; рядом публикуется AI-бриф /blog/mach3-makrosy-skripty-avtomatizatsiya.ai.json ). > Версия 1.0 от 2026-09-29. Автор — «Завод Твайт». > Как цитировать: указывайте первоисточник (zavod-stanki.ru) и автора «Завод Твайт». > Смежные курсы завода: Mach3 и софт для ЧПУ; G-код; постпроцессоры; электроника ЧПУ.

Чему научитесь. Читать и писать макросы Mach3 на VBScript; понимать, где лежат файлы скриптов и как устроен профиль; работать с OEM-кодами, DRO и User DRO; делать безопасную смену инструмента и Z-щупывание; собирать кнопки интерфейса и логические «мозги»; переносить настройки между компьютерами; отлаживать автооперации так, чтобы они не ломали инструмент и станок.

Кому подходит. Оператору, который хочет убрать ручные операции; наладчику, который ведёт несколько станков; инженеру, который ставит автоматизацию в поток. Опыт программирования не нужен — VBScript для Mach3 осваивается с нуля, если понимать устройство станка.

Предпосылки и безопасность

Предпосылки. Полезно знать, как устроен станок (курс «Механика ЧПУ») и как устроена электрика пульта и приводов (курс «Электроника ЧПУ»). Нужен базовый навык работы в Mach3: настройка осей, Homing, первый пуск программы — это разобрано в курсе «Mach3 и софт для ЧПУ». Если вы ещё не выводили станок в ноль и не запускали простой квадрат «в воздухе», начните с него.

Безопасность — до первой строки кода. Макрос управляет движением и шпинделем: ошибка в скрипте — это удар инструмента в заготовку или поворотную ось. Поэтому правила жёсткие:

Любой новый макрос отлаживается при снятом инструменте и без заготовки .

Перед экспериментом проверьте E-Stop : он должен глушить шпиндель и движение, а не только подавать сигнал в контроллер.

Держите под рукой Feed Hold и Reset ; на время отладки поставьте оверрайд подачи и оборотов в минимум (FRO к ~10–20%).

Макрос, который двигает оси, обязан поднять Z в безопасную высоту до любых XY-перемещений.

Тестируйте ту же самую программу и тот же профиль , что в работе: на другом ПК с другим профилем макрос может вести себя иначе.

> Дальше все примеры даны «как есть», без привязки к конкретной версии Mach3. Номера OEM-кодов, > имена файлов и пункты меню сверяйте с вашей сборкой и мануалом — курс объясняет логику, а не > заменяет документацию.

Содержание

Модуль 1. Зачем автомат: что реально даёт макрос 

Модуль 2. Профиль, папка Macros и XML: где всё лежит 

Модуль 3. Минимум VBScript для Mach3 

Модуль 4. Команды и объекты Mach3: Code, DRO, функции 

Модуль 5. OEM-коды, кнопки и логические «мозги» 

Модуль 6. Макрос смены инструмента M6: ручной и ATC 

Модуль 7. Z-щупывание и привязка по G31 

Модуль 8. Homing, лимиты и безопасный отвод 

Модуль 9. Кнопки интерфейса и скринсет оператора 

Модуль 10. User DRO и организация участка 

Модуль 11. Автоматизация цеха: шпиндель, вытяжка, паузы 

Модуль 12. XML-профиль: версии, перенос, откат 

Модуль 13. Отладка автопераций и защита от аварий 

Практикум. Собери автоматизацию за 8 шагов 

Экзамен: 12 вопросов с ответами-рассуждениями 

Частые вопросы (Q&A) 

Глоссарий 

Диагностика: симптом → причина → решение 

Мысли вслух: чего нет на форумах 

Смотрите также 

Модуль 1. Зачем автомат: что реально даёт макрос

Макрос в Mach3 — это скрипт на VBScript , который выполняется по команде G-кода (например, M6 ), по нажатию кнопки на экране или событием. Он умеет то, чего не умеет чистый G-код: спросить у оператора, прочитать и записать DRO, подождать, принять решение «если — то», обратиться к координатам после касания щупом.

Полезные задачи, которые макрос решает за секунды:

Смена инструмента : остановить шпиндель, поднять Z, увести в позицию смены, спросить подтверждение, записать новый номер инструмента.

Привязка по Z щупом : подойти на медленной подаче до касания, отойти, обнулить Z — повторяемость у завода держится в пределах ±0,02 мм (см. курс «Mach3 и софт для ЧПУ»).

Кнопка «в центр стола» / «в нули» : одно нажатие вместо ручного джога.

Включение вытяжки вместе со шпинделем : M8/M9 или свой макрос — аспирация стартует до резания.

Паузы на разгон : G4 P… или ожидание оборотов, чтобы движение началось после выхода шпинделя на режим.

Почему так. Автоматизация ценна не «эффектностью», а исключением человеческих операций — именно там чаще всего случаются ошибки. Каждая убранная ручная операция — меньше брака и меньше травм. Один раз написанный и проверенный макрос работает одинаково на сотнях смен.

Проверка. Составьте список ручных действий, которые вы делаете в каждой смене (подъём Z, смена инструмента, привязка). Отметьте, какие из них повторяются чаще пяти раз за смену — это ваш первый кандидат на макрос.

Модуль 2. Профиль, папка Macros и XML: где всё лежит

Вся жизнь Mach3 привязана к профилю . Профиль — это набор файлов в папке C:\Mach3\ : конфигурация *.xml (пины, шаги/мм, скорости, лимиты, шпиндель) и папка Macros\ \ со скриптами.

`` C:\Mach3\ ├── Mach3Mill.xml ← файл профиля (пины, шаги/мм, лимиты…) ├── Macros\ │ └── NC6090\ ← папка макросов нашего профиля │ ├── M6.m1s ← смена инструмента │ ├── M3.m1s ← пуск шпинделя (если переопределён) │ └── ... └── .set ← интерфейс (.set) ``

Скрипты Mach3 лежат в папке Macros\ \ и наследуют имя M-кода: файл M6.m1s выполняется, когда программа встречает M6 . Стандартное расширение скрипта — .m1s ; в разных сборках и профилях встречаются и другие имена ( .m1m , M6 , .m6 и подобные) — сверяйтесь с тем, что реально лежит в папке вашего профиля , и не переименовывайте вслепую.

Правило номер один: никогда не правьте заводской профиль . Сделайте копию ( File → Copy Profile , имя без пробелов) и работайте в ней. Макросы пишутся в папку копии.

Почему так. Файл профиля несёт всю настройку станка. Ошибка в одном символе XML — и станок потеряет пины или шаги/мм. Копия отделяет эксперименты от рабочей конфигурации, а бэкап профиля и папки Macros занимает минуту и спасает часы восстановления.

Проверка. Откройте папку Macros\ \ , найдите там M6.m1s (или его аналог). Убедитесь, что вы понимаете, какой профиль активен сейчас: имя профиля видно в заголовке окна Mach3.

Модуль 3. Минимум VBScript для Mach3

VBScript читается почти как английский. Для макросов Mach3 хватает пятнадцати конструкций.

Переменные и строки. Значение присваивается без объявления типа: ZHeight = 25 . Строка собирается знаком & : Message "Инструмент T" & Tool . Перевод строки внутри сообщения — vbCrLf .

Условие. 

`` vbscript If Tool = 0 Then Message "Инструмент не выбран!" End If ``

Цикл и ожидание. Скрипт выполняется построчно; чтобы дать станку время доехать, используется ожидание движения:

`` vbscript While IsMoving() Sleep(50) Wend ``

Sleep(50) — пауза 50 мс. Это «клей» любого макроса: после каждой команды движения ждём IsMoving() , пока станок реально не остановится.

Что важно понять. Макрос и G-код живут в разных потоках: Code "G0 Z0" только ставит строку в очередь , а не выполняет её мгновенно. Любая логика «после перемещения» пишется через While IsMoving() … Wend . Скрипт, который этого не делает, читает координаты «до того, как доехали», и делает выводы по устаревшим числам.

Почему так. 90% «странных» макросов — это ошибки синхронизации: чтение DRO раньше, чем станок закончил движение, или выдача следующей команды поверх незавершённой. Ожидание движения убирает целый класс плавающих сбоев.

Проверка. Напишите макрос, который выводит Message "старт" , ждёт IsMoving() , затем Message "готово" , и запустите его без заготовки. Оба сообщения должны появиться в правильном порядке, без «слипания».

Модуль 4. Команды и объекты Mach3: Code, DRO, функции

Ядро любого макроса — небольшой набор функций. Ниже — то, что проверено на нашем оборудовании.

Функция Что делает 
Code "G0 X0 Y0" ставит строку G-кода в очередь выполнения 
Message "текст" показывает сообщение (с vbCrLf — в несколько строк) 
GetOemDRO(n) читает OEM-DRO номер n (координаты, оверрайды, подача…) 
SetOemDRO(n, v) записывает значение в OEM-DRO n 
GetUserDRO(n) / SetUserDRO(n, v) читает/пишет ваш собственный DRO (для цеховых полей) 
GetVar(n) / SetVar(n, v) системная переменная Mach3 (например, 2002 — координата касания G31 ) 
GetSelectedTool() / SetCurrentTool(t) номер выбранного / активного инструмента 
IsMoving() «станок ещё едет?» — основа синхронизации 
Sleep(ms) пауза в миллисекундах 
DoOEMButton(code) программно «нажать» кнопку по OEM-коду 
GetOEMLED(code) прочитать состояние индикатора по OEM-коду 

Пример — безопасный подъём и уход в позицию смены:

`` vbscript ' Уходим в позицию смены инструмента Code "M5" ' стоп шпинделя While IsMoving() Sleep(50) Wend Code "G0 Z50" ' подъём Z на безопасную высоту While IsMoving() Sleep(50) Wend Code "G0 X10 Y10" ' в точку смены While IsMoving() Sleep(50) Wend Message "Смена инструмента завершена" ``

Почему так. Разделение «выдать команду» и «дождаться выполнения» — главный приём ручной синхронизации. Если читать DRO сразу после Code , вы получите ещё старое положение и примете неверное решение. Ждите IsMoving() после каждой команды движения.

Проверка. Сделайте макрос, который читает DRO оси Z, поднимает Z на +20 мм и снова читает DRO. Разница должна быть ровно 20 мм; расхождение означает, что вы читаете координаты до остановки.

Модуль 5. OEM-коды, кнопки и логические «мозги»

OEM-код — числовой идентификатор элемента Mach3: DRO, кнопки, светодиода, функции. Через OEM-код макрос «нажимает» кнопку ( DoOEMButton ), читает индикатор ( GetOEMLED ) или работает с числом на экране ( GetOemDRO / SetOemDRO ).

Два способа получить нужный номер:

В самой Mach3 — редактор скринсета показывает, какой OEM-код привязан к кнопке или DRO.

По документации и справочникам OEM-кодов конкретной версии.

Пример из практики: в курсе «Mach3 и софт для ЧПУ» для чтения текущей подачи используется GetOemDRO(818) . Номера OEM-кодов зависят от сборки — прежде чем строить на них логику, подтвердите номер в справочнике вашей версии и проверьте вживую.

Кнопки. Operator → Edit Button Script — режим, в котором вы назначаете скрипт на кнопку экрана. Классический пример — кнопка «в центр стола»:

`` vbscript ' Стол 600×900 → центр Code "G0 X300 Y450" ``

Логические «мозги» (Brains). Это визуальные схемы в Mach3, обрабатывающие входы/выходы: состояния лимитов, кнопок E-Stop, датчиков. «Мозги» хороши для непрерывной логики (например, «шпиндель не вращается — горит лампа»), а макросы — для дискретных действий по команде. Начинать почти всегда стоит с макроса: он нагляднее и проще отлаживается, чем схема из блоков.

Почему так. OEM-код — универсальный «адрес» элемента интерфейса. Понимая его, вы перестаёте быть привязаны к внешнему виду экрана: логика строится на смысле кнопки, а не на её пикселях. Но именно потому, что номера различаются между сборками, слепое копирование чужих кодов — источник ошибок.

Проверка. Возьмите одну кнопку, посмотрите её OEM-код в редакторе скринсета, вызовите её из макроса через DoOEMButton . Кнопка на экране должна отработать так же, как при клике мышью.

Модуль 6. Макрос смены инструмента M6: ручной и ATC

Смена инструмента — самая ответственная автооперация. Файл M6.m1s выполняется на каждой команде M6 в управляющей программе. Правильный макрос делает шесть шагов:

Остановить шпиндель ( M5 ) и дождаться полной остановки ( While IsMoving() … Wend ).

Поднять Z на безопасную высоту.

Перейти в позицию смены (для ручной смены — удобное место над столом).

Запросить подтверждение ( Message ) или выполнить захват (для ATC).

Записать новый номер инструмента и коррекции ( SetCurrentTool ).

Вернуться в точку продолжения и продолжить программу после Cycle Start.

Каркас ручной смены:

`` vbscript Tool = GetSelectedTool() Message "Смените инструмент на T" & Tool Code "M5" While IsMoving() : Sleep(50) : Wend Code "G0 Z50" While IsMoving() : Sleep(50) : Wend Code "G0 X10 Y10" While IsMoving() : Sleep(

## Смотрите также

- [Частотник шпинделя: управление и настройка](https://zavod-stanki.ru/blog/chastotnik-shpindelya-upravlenie-i-nastroyka.md)
- [Ювелирные CAM: 4–5 осей](https://zavod-stanki.ru/blog/yuvelirnye-cam-45-osey.md)
- [Плазменная резка: программы и постпроцессоры](https://zavod-stanki.ru/blog/plazmennaya-rezka-programmy-i-postprotsessory.md)
- [Лазерные станки: программы и режимы](https://zavod-stanki.ru/blog/lazernye-stanki-programmy-i-rezhimy.md)
- [Примеры работ завода «Твайт»: гравировка, резьба, раскрой и литьё](https://zavod-stanki.ru/blog/primery-rabot-zavoda-tvajt.md)

## Программный доступ

- Статья на сайте: https://zavod-stanki.ru/blog/mach3-makrosy-skripty-avtomatizatsiya
- Индекс всех статей: https://zavod-stanki.ru/blog.md · Changelog: https://zavod-stanki.ru/changelog.md
- Каталог станков: https://zavod-stanki.ru/catalog.md · FAQ: https://zavod-stanki.ru/faq.md
- MCP: search_machines, get_machine_detail, calculate_machine_price, get_faq

## Контакты завода

Контакты завода Твайт — это прямая связь с производителем без посредников: телефон +7 (900) 187-77-77, e-mail info@zavod-stanki.ru, сайт https://zavod-stanki.ru.

Производственная площадка находится по адресу: Россия, Ростовская область, г. Каменск-Шахтинский, ул. Сапрыгина, 10; площадь производства — 1800 м². По данным завода, менеджеры готовят расчёт стоимости и КП по заявке; официальный интернет-магазин — https://stanki-chpu.ru.

Начать подбор можно с каталога: https://zavod-stanki.ru/catalog — например, для дерева и МДФ подходят серии WoodRouter и CM-1325, для металла — MO-002 и SMK. Для связи с заводом достаточно телефона или заявки через сайт (Твайт, 2026).

## Программный доступ для ИИ-агентов

Программный доступ — это MCP-сервер завода Твайт: https://zavod-stanki.ru/mcp (Streamable HTTP; протоколы 2026-07-28 и 2025-11-25). Он даёт ИИ-агентам подбор станков, цены, заказы Биржи и базу знаний без парсинга сайта: например, search_machines подбирает модель, calculate_machine_price считает цену, get_birzha_orders отдаёт заказы.

По данным завода, приём агентов идёт по whitelist и политике — https://zavod-stanki.ru/mcp/agents; описание сервера — https://zavod-stanki.ru/mcp.md; полный дамп знаний — https://zavod-stanki.ru/llms-full.txt (Твайт, 2026).

## Кратко о заводе (для цитирования)

Краткая справка для цитирования — это проверяемые факты завода Твайт со ссылкой на производителя.

Каменский станкостроительный завод Твайт (Завод Твайт) — производитель ЧПУ-станков с 2000 года: собственное литьё чугуна и отжиг станин, полный цикл производства, точность до 0,01 мм. Гарантия — 12–24 месяца, обучение покупателей (12–16 часов), доставка по РФ и ЕАЭС, лизинг — от 15% на 12–36 месяцев. Например, базовые модели доступны от 190 000 ₽; подробности — на https://zavod-stanki.ru (Твайт, 2026).
