Мне 19. Днем я очный студент‑айтишник, а в остальное время — единственный человек в цеху, кто работает на 15-тонном советском горизонтально‑фрезерном станке ИР-500 1982 года выпуска. Мозги у этого монстра под стать эпохе: древняя японская стойка Fanuc 0-M начала 90-х.

Сам ИР-500 — настоящий танк. По оси Z ездит сразу вся огромная чугунная коробка на рельсах. А когда эта масса разгоняется, пол вибрирует, но сам станок стоит намертво. Он воспринимает дикие нагрузки на минимальных оборотах — как легкую прогулку.

Но есть проблема, передачу файлов через кабель он не поддерживает, CAM‑систему не подключить.
Для меня, привыкшего к созданию 3D‑моделей и визуализации всех траекторий в Fusion360 было непросто адаптироваться.

Мои первые самостоятельные дни были очень болезненными, хотелось просто уволиться, ведь малейшая ошибка и невнимательность здесь — это не упавший сервер, а разнесенная фреза и тиски. Поэтому каждый первый запуск новой программы — это паранойя. Рука на остановке подачи, покадровый режим, минимальные перемещения и подача. И только когда фреза пускала стружку, я выдыхал и выкручивал подачу на максимум.

Пока детали требовали обработки в пару проходов, было все отлично. Но потом..

Началось спагетти из g‑кода

Пошли заказы на глубокое торцевание (или более сложные траектории, но сегодня не об этом), где можно потратить полсмены на написание программы.

Первые трудности появились, когда принесли стальную болванку, с которой нужно снять больше 15 мм металла со всех сторон. Моя торцевая фреза за один проход безопасно берет 4 мм. +деталь широкая, нужно делать несколько проходов по высоте (Y).

Обычные программы для таких деталей превращались в огромные портянки однообразных строк кода, в которых меняются только глубина (Z) и шаг по высоте (Y). Десятки строк унылого хардкода, где ошибиться — плевое дело. У меня были лишь безобидные случаи, забывал минус перед координатой Z и станок послушно резал воздух) Но можно ошибиться серьезнее, испортив тиски за 150 тысяч.

После этого момента я начал копаться в стойке и просторах интернета, чтобы найти способ перестать быть роботом. Я все‑таки учусь на айтишника и здравый смысл мне твердил, что писать хардкод руками — это преступление.

Немножко о стеке 1982 года

Оказалось, что в моей стойке поддерживается полноценное программирование (Custom Macro B), я был поражен, ведь эта функция в те годы стоила заводам приличных денег, ±как хорошая подержанная машина.

Однако не без минусов, по памяти конечно беда, она ограничена килобайтами, много программ не сохранить, приходится удалять старые программы, фоткая их на телефон.
Количество переменных тоже ограничено 33, но главная боль не в этом. Комментарии на этой стойке писать нельзя. Вообще. Любой код превращается в месиво на пузатом экране.

Здесь меня очень выручает Obsidian. В нем у меня лежит всё: бэкапы кода, фото как крепить каждую из заготовок, нули по оси Z для инструментов (многие фрезы живут в постоянных оправках, это экономит время). Там же я храню расшифровки самописных кодов. На стойку текст не выведешь, поэтому телефон стал моим вторым монитором.

Пишу Custom Macro B

Итак, выяснив, что у меня есть макросы, я начал их осваивать. Принцип оказался очень примитивным и ограниченным, есть только 1 цикл и условие IF. Поэтому вместо else приходится использовать много переходов на другие строки командой GOTO.
 Быстро освоив это все, я написал универсальный макрос для торцевания и вынес его в отдельную программу.
Теперь основная программа выглядит примерно так:

%
O1000;
(...)
G0 Z50. (SAFE-Z)

G65 P9001 X90. Y90. Z-10. D20. Q70. F400. K1.5 H10. I0.;

M30
%

G65 — это вызов макроса. Для программиста это обычный вызов функции с передачей аргументов. Буквы стойка автоматически конвертирует в локальные переменные от #1 до #33.

Чтобы было понятнее, вот расшифровка:

  • P9001 — номер программы, в которой сохранен макрос.

  • X90. / Y90. — ширина и высота детали в мм.

  • Z-10. — финальная глубина.

  • D20. — диаметр фрезы (20 мм).

  • Q70. — перекрытие прошлого реза в процентах. Фреза будет смещаться на 70% от своего диаметра (14 мм).

  • F400. — рабочая подача (400 мм/мин).

  • K1.5 — съем за один проход по Z.

  • H10. (необязательный) — плоскость безопасности по Z.

  • I0. (необязательный) — координата нуля детали по оси X.

А вот сам код макроса. В нем есть комментарии в скобках для вас и моей базы в телефоне. На станке крутятся голые цифры.

%
O9001; (FACING MACRO-B)

N10 (STATE SAVING)
#100 = #4003 (G90\91 SAVE)
G90


N20 (SANITY CHECKS)
IF [#24 EQ #0] GOTO 9901 (X - WIDTH)
IF [#25 EQ #0] GOTO 9902 (Y - HEIGHT)
IF [#26 EQ #0] GOTO 9903 (Z - DEPTH END)
IF [#7 LT 1.] GOTO 9904 (D - CUTTER)
IF [#17 LT 1.] GOTO 9905 (Q - STEPOVER)
IF [#9 LT 1.] GOTO 9906 (F - FEED)
IF [#6 EQ #0] GOTO 9907 (Z - STEP)


N30 (INITIALIZATION)
IF [#11 NE #0] GOTO 31
#11 = 10.

N31 IF [#4 NE #0] GOTO 32
#4 = 0.

N32 
#8 = [#7 * [#17/100]] (STEPOVER_MATH)
#10 = 0. (Z-START)
#12 = [[#7 / 2] + 5.] (SAFE-X)
#14 = 1. (ZIG-ZAG, 1 - CLIMB)

IF [#25 GT #8] GOTO 33
(SINGLE PASS Y)
#13 = [#25 / 2] (Y - START)
#25 = #13 (Y - END)
#22 = #13 (SAVE Y-START)
GOTO 40

N33 (MULTI PASS Y)
#13 = [#8 - [#7 / 2]]
#25 = [#25 - [#7 / 2]]
#22 = #13

 
N40 (MAIN)
G0 X[#4 - #12] Y#13; (START_POSITION)
Z#11
 
WHILE [#10 GT #26] DO 1 (CYCLE-Z)
#10 = [#10 - #6]
IF [#10 GT #26] GOTO 41
#10 = #26

N41 G0 Z#11
Y#13 
Z#10

WHILE [#13 LE #25] DO 2 (CYCLE-Y)

IF [#14 EQ 1.] GOTO 43
G1 X[#4-#12] F#9
GOTO 44
N43 G1 X[#24+#12+#4] F#9
N44 #14 = -#14

IF [#13 EQ #25] GOTO 49
#13 = [#13+#8]
IF [#13 LT #25] GOTO 45
#13 = #25
N45 G0 Y#13;
END 2

N49 #13 = #22 (RESTORE Y-START)
END 1


N50 (RESTORE)
N90
G0 Z#11
G#100 (G90/G91)
GOTO 9999

(ERRORS)
N9901 M00 (ERR: X - WIDTH)
GOTO 9999
N9902 M00 (ERR: Y - HEIGHT)
GOTO 9999
N9903 M00 (ERR: Z - DEPTH)
GOTO 9999
N9904 M00 (ERR: D - CUTTER)
GOTO 9999
N9905 M00 (ERR: Q - STEPOVER)
GOTO 9999
N9906 M00 (ERR: F - FEED)
GOTO 9999
N9907 M00 (ERR: Z - STEP)

N9999 M99
%

Моя логика

Я постарался перенести в G‑код базовые паттерны из программирования.

1) Сохранение состояния
В блоке N10 я читаю системную переменную #4003. Она хранит текущий режим: абсолютный (G90) или инкрементальный (G91). Я сохраняю это значение в глобальную переменную #100, включаю G90 для своих расчетов, а в конце (N90) возвращаю все как было. Если этого не сделать, после выхода из цикла станок может поехать не туда, будет неприятно.

2) Защита от дурака
Блок N20 — это валидация входных данных. В Fanuc пустая переменная равна #0 (аналог null). Если я забыл передать ширину детали (#24), условие IF [#24 EQ #0] сработает и перекинет меня на строку GOTO 9901.

3) Защита от перереза глубины
В начале цикла я вычитаю шаг из текущей глубины, но если глубина не делится на шаг без остатка, то последний проход будет глубже чем нам нужно.
Решение здесь банально: Если результат выше дна (IF [#10 GT #26]), скрипт прыгает на кадр N41 и продолжает резать. Но как только глубина больше, скрипт игнорирует прыжок и жестко приравнивает текущую глубину к финальной: #10 = #26.

4) Вариативность высоты
В блок N30, После тестов кода на граничные условия (код, при значении Y меньше диаметра фрезы, не входил в цикл и тупо включал режим дятла, без перемещений) я добавил проверку IF [#25 GT #8] GOTO 33 — если высота (Y) меньше перекрытия (Q), то иди всегда по центру, без смещений.

В конце программы на строке N9901 стоит команда M00 — безусловный останов. Станок замирает. Я смотрю на экран, вижу, что выполнение остановилось на кадре 9901, открываю Obsidian на телефоне и читаю: «Ага, ошибка 9901 — забыл указать ширину по X».

Вторая частая ошибка на этой стойке — забыть точку. Если написать подачу F400 без точки, станок прочитает это не как 400 мм/мин, а как 400 микрон (0.4 мм/мин). Фреза будет ползти вечность. Поэтому я проверяю значения на < 1.. Задал диаметр фрезы в микронах? Ловлю ошибку 9904.

Также в блоке N30 я задаю некоторые дефолтные значения. Если я не передал начальную координату X или плоскость безопасности Z, макрос сам назначит им нуль и 10 мм соответственно.

Первый запуск и потные ладони

Писать код — одно. Запускать его на 15-тонном куске железа — совсем другое.

Сначала я прогнал макрос через симулятор CIMCO на ноуте. Траектории отрисовались идеально. Но симулятор не учитывает особенности стойки с возможными ошибками.

Поэтому первый запуск на станке был в воздухе, все прошло отлично.
Но на второй, я пошел сразу в бой по хардкору. В шпинделе — 100-миллиметровая сковородка. В тисках — стальная болванка. Включаю покадровый режим (Single Block) — станок выполняет всего по одной строке кода. Левая рука намертво лежит на кнопке удержания подачи (Feed Hold), правая жмет Cycle Start.

Станок с гулом опускается на первый проход. Стружка летит, звук ровный, по координатам идеально. Жму дальше. Цикл отрабатывает шаг по Y, переходит на следующий слой по Z. Математика фиксации дна сработала четко — последний проход снял ровно заданный припуск.

Преимущества подхода

Многие не задумываются, но большинство привычных нам циклов в ЧПУ — от банального сверления G81–G84 до автосмены инструмента через M06 — написаны таким же способом. Поэтому любой, кто освоит макросы — может сам запрограммировать цикл, адаптировав его под свои задачи.

Понятно, что сейчас почти везде есть CAM‑системы. Но чтобы просто подготовить базу и сторцевать пару миллиметров с черновой болванки, идти за компьютер — это лишние 10 минут. Макрос позволяет оператору просто замерить деталь и вбить одну строчку на пульте. И торцеванием это не ограничивается. Вы часто сверлите сетки отверстий или делаете гравировку даты? — это всё можно отдать математике станка, освободив CAM‑программиста для более сложных задач.

И для полного удобства этот вызов можно привязать к кастомному G‑коду через параметры стойки (например, сделать G100 X90...). Тогда для оператора это будет как родной безопасный цикл станка.

Подведем итоги

Раньше на написание программы торцевания для такой детали уходило минут двадцать, а то и полсмены нудного стучания по клавиатуре пульта, руки затекали. Сейчас — 10 секунд. Замерил заготовку, вбил семь параметров в строку G65, нажал зеленую кнопку.

Сама стойка Fanuc 0-M старше меня на двадцать с лишним лет. В ней нет CAM‑системы, нет графики, нет даже комментариев. Но логика программирования везде одинакова. Если есть переменные, циклы и операторы, то легко заставить поумнеть даже советский фрезерный танк. Дерзайте, парни.

На этом всё. Это мой первый макрос, поэтому судите строго и тыкайте в ошибки, буду этому рад. Также буду рад ответить на все вопросы по коду и режимам резания в комментариях.

Комментарии (109)


  1. vesowoma
    26.08.2026 16:00

    Сразу не понял откуда на советском станке корейская японская система FANUC. Но 1982 это все же наверное не год выпуска системы управления, а год выпуска оригинального станка. Делали мне детальки на ИР-800, там Маяк уже был кажется.


    1. Hafeg Автор
      26.08.2026 16:00

      Привет! И правда, с Кореей я затупил) На заводе начальник байку пустил, а я и поверил.. Fanuc конечно япония.

      А 1982 год действительно год рождения самого чугуна. Родные советские мозги прошлый наладчик давно поменял. И слава богу, потому что писать макросы на перфолентах я бы точно не осилил)

      Наш 500-й по сравнению со зверем 800-м просто малыш) Спасибо за внимательность!


      1. sim2q
        26.08.2026 16:00

        писать макросы на перфолентах я бы точно не осилил)

        Зато I/O доступен, а из статьи не понятно, что у вас с этим кроме кнопок и "пузатого экрана" - ЭЛТ ? фото бы не помешало, а то гуглится красивое LCD


        1. Hafeg Автор
          26.08.2026 16:00

          Физически порт RS-232 есть. Но на этом станке он давно мертв( Начальству восстанавливать линию невыгодно, “и так же работает”. Поэтому пульт — единственное спасение… А насчет экрана, корпус там родной, огромный и пузатый (от старой ЭЛТ). Но сама трубка давно выгорела, и вместо нее внутрь вколхозили LCD.


          1. kuza2000
            26.08.2026 16:00

            Физически порт RS-232 есть. Но на этом станке он давно мертв( 

            Там именно rs-232, без развязки? Если да - то не удивительно, что мертв. В условиях производства они сгорают как спички. Есть с гальванической развязкой, с трансформатором на входе, вот они-живучие. Называются по другому, хотя временные диаграммы как у rs232. Сам физический интерфейс другой.


        1. Hafeg Автор
          26.08.2026 16:00


    1. vbifkol
      26.08.2026 16:00

      Ставили. У меня на токарном Ивановце был фанук, вся электрика Сименс, главный шпиндель тоже немецкий, роликовые направляли хайвин - крч, советский только чугун. И на одном из первых 16к20ф30 тоже, причем на нем был а стойка фанук, а привода болгарские. На портальном фрезере тех годов видел бошевскую стойку. Интернационал однако.


      1. Hafeg Автор
        26.08.2026 16:00

        О да, советский чугун реально неубиваемый, станины льют на века. Поэтому модернизация таких монстров хорошими мозгами лучшее, что с ними могло случиться!


        1. Evgenisav
          26.08.2026 16:00

          Да, там единственное что может сломаться это фундамент, или сам цех рухнет


          1. bkar
            26.08.2026 16:00

            Оказалось проще снести страну, чем сковырнуть такой станок. : (


        1. vbifkol
          26.08.2026 16:00

          О да, советский чугун реально неубиваемый, станины льют на века. 

          Нет. Лить не умели, качество металла тоже так себе. Я видел лопнувшую станину шестишпиндельного - дефект литья. Повторить немецкий VDF 20х годов у страны советов не получалось, станина лопалась. Пришлось вдвое увеличить толщину, тогда получился ДИП200/1Д62/1А62/1K62/16К20


          1. RTFM13
            26.08.2026 16:00

            Советские станины любят самодельщики за то, что они отлежались 50+ лет и их уже ведёт не так сильно как новые по тем же технологиям. На этом их плюсы заканчиваются.

            А так подтверждаю, в нулевых кто-то из крупных типа DMG пытался локализовывать обрабатывающие центры, литьё оказалось ни в какие ворота. А строить с нуля нормальную литейку затея не из дешевых. Не знаю чем кончилось, но вроде что-то они потом производили.


  1. Berks
    26.08.2026 16:00

    "-Алле, девушка, посмотрите, а в цеху его нет?

    -Прекратите хулиганить, никакой Авцех*ев у нас не работает!"

    (Наив)

    Навеяло первой строчкой статьи (извините).

    Статья интересная!


    1. Hafeg Автор
      26.08.2026 16:00

      Хаха классика! Спасибо большое, рад, что статья зашла!


  1. CitizenOfDreams
    26.08.2026 16:00

    Но есть проблема, передачу файлов через кабель он не поддерживает, CAM‑систему не подключить.

    Перфоленточного или еще какого интерфейса у него нет? Не набивали же программы каждый раз с клавиатуры в 1982 году.


    1. Hafeg Автор
      26.08.2026 16:00

      Интерфейс RS-232 есть, но на моем станке он мертв( А памяти на самой стойке пара десятков килобайт. Даже если бы порт работал, закинуть туда нормальную 3D-траекторию из CAM не вышло бы — память забьется мгновенно, нужно настраивать капельное чтение. А так как руководству это не нужно, приходится выкручиваться макросами и вбивать переменные руками. Кстати, в плане простых, повторяющихся операций, макросы мне показались даже лучшей альтернативой CAM!


      1. CitizenOfDreams
        26.08.2026 16:00

        Интерфейс RS-232 есть, но на моем станке он мертв

        В смысле физически выгорел? Тогда паяльник в руки, найти на плате микросхему драйвера/ресивера (что там обычно ставили в 1982 году? SN75188/189 тогда уже были?) и поменять.


        1. kuza2000
          26.08.2026 16:00

          Не дадут студенту туда с паяльником лезть. Работает - не трогай! Тем более, вон какой смышлёный студент попался, макросы освоил! Как хорошо дело пошло, лучше и не надо! Лучшее - враг хорошего! )


          1. Markscheider
            26.08.2026 16:00

            Вот вот. Тем более, что

            руководству это не нужно

            Надеюсь, этот пассаж не доставит автору проблем и руководство не читает Хабр


            1. EvilBeaver
              26.08.2026 16:00

              Тут наверное неправильно вводить в уравнение "злое равнодушное руководство". Руководству "это" не нужно, "это" - что? Потратить время на потенциальное убийство работающего станка, ради прокачки скиллов способного студента? Ну да, я понимаю руководство. И студента понимаю, но станок сломанный вообще не починить, а со студентом еще можно договориться не трогать станок.


              1. CitizenOfDreams
                26.08.2026 16:00

                потенциальное убийство работающего станка, ради прокачки скиллов способного студента?

                Ну так оно и так уже происходит. Если студент ошибется в макросе и станок сделает себе судоку, то оживлять его тоже будет долго и дорого.


          1. P1ngZer0
            26.08.2026 16:00

            Начальство скорее удавится, чем пустит стажера с паяльником к стойке. Запоротая плата фанука стоит как почка этого студента


        1. Komrus
          26.08.2026 16:00

          Надеюсь, Вы понимаете риски и стоимость ошибки при перепайке выгоревшей (и не критически важной для работы системы в целом) микросхемы?
          Сколько будет стоить заменить вылетевшую плату у Fanuc ? И удастся ли её найти?

          Или - сколько стоит адаптировать современный пром.контроллер к этому станку?


          1. ksbes
            26.08.2026 16:00

            Или - сколько стоит адаптировать современный пром.контроллер к этому станку?

            Там от простоя станка будет больше убытков чем цена работ (там миллион-другой максимум - это о-малое от оборота для такого производства). “Простой” - это самый страшный жупел производстенника (“заказы - все уже расписаны, сроки, сроки сдвигать нельзя!!! А-а-а-а!!!”). Поэтому пока станок не встанет никто и не почешется.


            1. P1ngZer0
              26.08.2026 16:00

              Цена простоя всегда кроет цену ремонта, это ж база) Пока из шпинделя дым не пойдет, бюджет на апгрейд никто не согласует)


            1. RTFM13
              26.08.2026 16:00

              Торцевать болванки вам может любой дядя ваня на ручном станке. По крайней мере перебиться на время ремонта на стороне можно. Обычно на производствах таких контактов навалом.

              Впрочем, нормальный обрабатывающий центр из него всё равно не сделать, по этому никакие апгрейды большой погоды не сделают.


            1. Komrus
              26.08.2026 16:00

              миллион-другой максимум - это о-малое

              Как показывает опыт общения с эксплуатантами - "О-малое" оно в процессе строительства. Когда инвестиции широкой рекой текут и на фоне общей стоимости создания Объекта, "миллион-другой" - действительно не особо заметен.
              А вот в процессе эксплуатации уже существующего объекта обосновать выделение этого самого "миллиона" (а тем паче - "другого" :) - этот тот ещё квест...


              1. ksbes
                26.08.2026 16:00

                Обоснование затрат - это квест независимо от объёмов. Даже новые трекболы на 100 тыс для производства обосновать - квест. Знаю случай когда админ “билися” за новые патчкорды - десяток на пару тысяч (человек просто пошёл не принцип - не покупать самому). Чуть до гендира не дошёл - заму всё же стало стыдно.


  1. khomenkoev
    26.08.2026 16:00

    Круто, больше зрелища бы - фото,да на отечественную платформу видео)

    Вспоминая школьные годы, когда на уроках труда можно было за раз выточить подсвечник и ножки для стула.


    1. Hafeg Автор
      26.08.2026 16:00

      Спасибо! На самом деле, эта статья — мой прощальный памятник этому станку. Я как раз увольняюсь, чтобы двигаться дальше. ИР-500 дал мне отличную суровую базу, но пора идти вперед. И спасибо за совет, в свои будущие статья обязательно добавлю больше зрелища!!


  1. dimone73
    26.08.2026 16:00

    Очень подкупает язык от первого лица. Обычно комментарии к коду или просто описание, да даже диссертации пишут от третьего "мы делаем, умножаем...".

    На счёт этого учительница русского ещё в пятом классе четко подкадюлывала "кто это мы и сколько нас?".

    Не вы же со станком....Тут же четко: задал, хранит, читает.

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


    1. sintech
      26.08.2026 16:00

      "мы делаем" это все равно от первого лица только во множественном числе.
      От третьего это "они делают".

      В диссертациях обычно используется пассивный залог "было сделано".


      1. dimone73
        26.08.2026 16:00

        Но я почитывал у некоторых "мы будем рассматривать...", "сделаем..", "умножим.." и т.д. типа из учебника, но в диссертации.

        Про лица - все верно. Это я "забыл алфавит, падежей припомнил только два".


    1. Yuriy_krd
      26.08.2026 16:00

      Ну, сейчас уже, в большинстве случаев, можно смело употреблять "мы"... И отвечать учительнице: "я и ИИ" :)


  1. Kogolbok
    26.08.2026 16:00

    Ох уж этот Fanuc 0-m... G65... Помним. Скорбим.

    Про неработающий rs232 отдельная боль. Я на своём восстанавливал. И оказалось... Оказалось, что внутри самого гнезда небыло контакта. Поменял и заработало. Мне повезло. И работал даже на dreep feeding через minicom. А для Freecad писал постпроцессор, который в CAM модуле для меня делал всю магию. Но всё давно ушло. И поделиться не могу.


  1. JustEv
    26.08.2026 16:00

    Статья очень понравилась. Прочитал на одном дыхании.


  1. inakrin
    26.08.2026 16:00

    Почему не заменить контроллер на более современный? Grbl думаю для завода не лучший вариант, но в grbl прошивке например, можно откалибровать любую ось и сконвертировать pwm в милиметры(это если новый контроллер не те частоты выдаёт например по умолчанию). Вот только что собрал домашний станочек на grbl. Плата контроллера просто отправляет gcode, а вся логика на ноуте, где что угодно можно на любом языке и в любом cad.


    1. CitizenOfDreams
      26.08.2026 16:00

      Блин, ну только не GRBL. Вот в упор не понимаю любовь самодельщиков к этому нелепому уродцу. Да Mach3 на старом компе с параллельным портом и то была лучше в свое время. А уж для настоящего железного станка можно за разумные деньги купить настоящий железный контроллер, хотя бы тот же Syntec.


  1. SGordon123
    26.08.2026 16:00

    не понял про отсутстве комментов, а что такое в скобках? И про else не понятно, поменяй в IF условие, зачем GOTO?


    1. Sloop
      26.08.2026 16:00

      "А вот сам код макроса. В нем есть комментарии в скобках для вас и моей базы в телефоне. На станке крутятся голые цифры."
      Автор ведь написал про комментарии


    1. Kogolbok
      26.08.2026 16:00

      На тех фануках нельзя было писать комментарии. И вообще куча ограничений.

      А вообще не могу понять, мне казалось и математические функции там были через подпрограммы, а не просто в выражении. Это автор упростил для нас? Или у меня были ещё более примитивные фануки? Или что-то с моим блоком памяти? Если автор отпишется, буду благодарен.


      1. Hafeg Автор
        26.08.2026 16:00

        Дело в купленных опциях самой стойки. У меня на станке полный фарш, куплен Custom Macro B, он позволяет писать нормальные математические выражения прямо в квадратных скобках и использовать некоторые функции типа SIN/COS.

        А на ваших станках, видимо, был открыт только базовый Macro A. Там да, даже математику нормально писать нельзя... Фанук очень любил продавать базовые функции за отдельные, не малые деньги. Придумали микрогигатранзакции задолго до игр)


        1. Kogolbok
          26.08.2026 16:00

          Аааа.... Точно! Да. Вот. Это было больно :))


  1. BobbieZi
    26.08.2026 16:00

    Там должен быть ридер с перфоленты. так вот, сигнал там TTL и прекрасно эмулируется на микроконтроллере. А далее ставится какой-нибудь распбери пи и удаленно через сеть с любимого фьюжна кидаются ж-коды на распи, а далее станок просто исполняет ж-код как бы с ленты. :)


    1. ksbes
      26.08.2026 16:00

      Там если курочить - то по-крупному. На круг - проще, дешевле и надёжнее будет сделать новую управляющую плату, которая непосредственно выдаёт сигналы на исполнительные механизмы (контролёры моторов и т.п.). И программы соответственно хоть на питоне хоть прямо из КАДа какого-нибудь. Это, если что, реальный опыт - управление “старым” станком из МАТЛАБа .


      1. Hafeg Автор
        26.08.2026 16:00

        Ого , идеи просто огонь!

        BobbieZi7, эмуляция перфоленты через Raspberry Pi — отличная идея. Хоть изредка и ковыряюсь с платками, но в голову такое не приходило. Дешево и сердито.

        ksbes, а вот полная замена мозгов — полнейший хардкор, от прочтения страшно стало) Для лаборатории — мечта. Но из цеха вырвать родной ПЛК (электроавтоматику, смену инструмента, смазку) — это остановить станок на полгода. Директор меня вместе с этим Raspberry Pi в шпиндель зажмет за такие простои)


        1. ksbes
          26.08.2026 16:00

          Если директор умный и может заставить бухгалтера правильно подсчитать - то он эти полгода даст. Тем более что там именно останова будет мало - основная работа (исследование, разработка, испытания на макете) - идут без останова производства (или с очень короткими)

          ЕСЛИ

          Новые современные мозги могут дать довольно много экономии в долгой перспективе. Даже если по-началу не задваться оптимизациями. А оптимизации потом обязятельно попрут - т.к. делать их станет элементарно.


          1. Hafeg Автор
            26.08.2026 16:00

            Звучит очень интересно и сложно... К сожалению, в этом цеху горизонт планирования — "вчера") Но из интереса, поизучаю эту тему, спасибо!


  1. GlennMiller1991
    26.08.2026 16:00

    Ээх, когда-то готовился к Atomskills, и писал на стойке всё, вплоть до уклона по криволинейной траектории сферической фрезой. Но на соревнованиях всё равно тиски отфрезеровал при обычном торцевании)


    1. Hafeg Автор
      26.08.2026 16:00

      Ничего себе, AtomSkills — очень мощно! Писать 3D прямо со стойки через макросы — мое искреннее почтение, это высший пилотаж математики в голове, надеюсь дойду до такого уровня!

      А про тиски... Классика жанра, на самом простом всё идёт не так(


  1. scrllock
    26.08.2026 16:00

    Здесь хорошо видна разница между инструкцией и ограничением.

    Пока оператор должен помнить про знак, точку, глубину и параметры, результат зависит от его внимания. Когда эти требования превращаются в проверки и принудительные остановки, часть работы просто перестает требовать внимания человека.

    Автоматизация здесь экономит не только время, а уменьшает количество ситуаций, в которых вообще можно ошибиться.


  1. P1ngZer0
    26.08.2026 16:00

    Хорошо что сваливаешь с этого завода, пока тебя не сделали главным по тарелочкам. Теперь этот G-код станет местным священным писанием. Следующий наладчик будет бояться даже дышать на твой макрос


    1. UFO_01
      26.08.2026 16:00

      О да, мой любимый тип мазохистского удовольствия. Когда видишь чужой код непонятно что делающий, как и зачем написанный, а тебе в него надо внести какие-то правки. Выживших нет, разумной жизни не наблюдается, как и остатков жизнедеятельности автора этого кода, помимо самого кода. Даже время в такие моменты замедляется, 20 минут работы превращаются в увлекательное приключение на 2 месяца с непредвиденными последствиями и неожиданными решениями.


      1. CitizenOfDreams
        26.08.2026 16:00

        О да, мой любимый тип мазохистского удовольствия. Когда видишь чужой код непонятно что делающий, как и зачем написанный, а тебе в него надо внести какие-то правки.

        А код к тому же написан на немецком, которым ты не владеешь. И словарь не особо помогает, потому что названия переменных сокращены до чего-то вроде "LsDbOden". И вообще ты этот TwinCAT впервые в жизни видишь и смутно понимаешь, какой пункт меню сделает то, что тебе нужно, а какой обнулит PLC к чертям кошачьим.


        1. ksbes
          26.08.2026 16:00

          Я как то разбирал код написанный французами, дорабатывавщийся индусами и с дписанными дополнительными модулями китайцами: переменные и классы иероглифами в перемушку с комментариями на индусском французском - обожаю! (и гугл переводчик тогда был не сильно менее смешной чем ПРОМТ)


          1. st1373
            26.08.2026 16:00

            Я видел код с комментариями написанные на русском ... в трех разных кодировках в одном файле, так и живём


        1. UFO_01
          26.08.2026 16:00

          Ещё из прикольного когда вперемешку английский и транслит с путающими названиями. Что-то в духе CurrentUsilSvoy, нет, это не коэффициент усиления тока, это усиленный перед измерением ток. Ещё люблю макросы в которых меняется глобально объявленная переменная, хочешь использовать макрос в другом месте - делай extern (из сишный будней, ибо не одним плк едины). Или когда открываешь проект, а там список extern-ов на 1000 строк. В каждом файле, список минимум из 500 extern. В такие минуты трудно понять, где заканчивается реальность и начинается мечта.


      1. Hafeg Автор
        26.08.2026 16:00

        О да) Надеюсь, следующий наладчик не будет поминать меня недобрым словом)


    1. Hafeg Автор
      26.08.2026 16:00

      Прямо как я боюсь дышать на вот такое чудо на несколько страниц, оставленное предками...)


      1. anshdo
        26.08.2026 16:00

        И главное, даже если ты честно-благородно отдашь все свои откомментированные файлы из обсидиана, это не поможет — прое*ут-с.


  1. InsiderCrush
    26.08.2026 16:00

    Почитал статью. Очень интересно! Сразу скажу - я не эксперт вообще. Но у меня родилась идея. Почитай. Может что годным окажется. Суть - вместо того чтобы пытаться впихнуть логику в ограниченную память этой Фанук можно построить внешний параметрический интерпретатор. Прога на ноуте или твоем смартфоне, которая хранит базу шаблонов и макросов неограниченного объёма. Ты забиваешь туда размеры заготовки, инструмент и режимы — интерпретатор по этим данным собирает готовую управляющую программу или короткий вызов G65 с нужными аргументами. Эта програ не эмулирует станок, а генерирует для него команды, точно так же, ка ты сейчас дешаешь вручную в голове и на пульте, но автоматизировано, с проверками, тестами и гипотетическими прогонами холостыми. То есть ты испольхуешь тольк же канал доставки, что и сейчас убрав рутины и ошибоки. Все доки, комменты и логика работы хранятся внутри интерпретатора. Это будет полноценный наследуемый гайд для следующих наладчиков которые не будут орать "что тут поналяпано" и не придётся разбираться в голых цифрах чужого макроса. Очевидные плюсы - внешняя память. Не ограничена килобайтами стойки. Можно хранить миллиарды шаблонов, таблицы режимов резания, фотки креплений и пояснения для каждого шага и операции. Безопасность - ты подгоняешь и уточняешь все параметры до попадания в станок. интерпретатор не даст сгенерировать код с пропущенным минусом, нулевой подачей ну и какие там можно ошибки еще допустить? я их не знаю. Наследуемость - следующий наладчик получает не священный макрос, а твою понятную логику и твой понятный механизм исполнения. И где что за что отвечает и какие значения по умолчанию. Никакого вмешательства в железо. Не нужно лезть в стойку паяльником, менять платы или согласовывать апгрейд с руководством. Ты вообще не лезешь в него. Станок остаётся в заводской конфигурации. Единственный минус доставка кода по-прежнему требует ручного ввода с пульта. Но перепечатать готовую, проверенную программу из интерпретатора надежнее и быстрее чем каждый раз собирать логику обработки с нуля. Было бы круто получить от тебя фидбек по моей идее


    1. Hafeg Автор
      26.08.2026 16:00

      Идея супер! По сути, самописный мини-CAM в кармане получается) Я частично так и делаю — храню полную технологию для каждой детали в Obsidian на телефоне. Но, конечно, остается проблема ручного ввода. Даже если прога на телефоне выдаст мне идеальную готовую строку, вбивать ее руками — это всё еще риск опечатки. Прозевал и пропустил точку — и привет. Поэтому я постарался побольше математики зашить внутрь стойки, чтобы с пульта вводить только голые габариты с чертежа. Меньше кнопок нажал — чуть менее тревожно сидишь)


      1. InsiderCrush
        26.08.2026 16:00

        Спасибо за ответ! Очень приятно что ты и прочел и понял задумку саму!


  1. noldo
    26.08.2026 16:00

    с похожей ерундой(станок вроде чпу и с программами и кнопками, но ушатаный и без доков и с паяльником врываца в бандуру за уйму денег такое себе предприятие, а настроек вагон, каждая деталь - целая олимпиада по математике и тд) ...решил вопрос внешним софтом, приложение с пачкой калькуляторов и вбитыми типа макросами...затыкал цифарки с чертежа, тык, готовые настройки и весь компот кто куда кого сверлит, выплевывает и тд


  1. Tatiana_Alferova
    26.08.2026 16:00

    Статья интересная, респект тебе, чел ☺☺☺


    1. Hafeg Автор
      26.08.2026 16:00

      Очень рад что понравилась!)


  1. Devastator82
    26.08.2026 16:00

    писать хардкод руками — это преступление.

    Эмбеддеры печально вздохнули

    За статью спасибо!


    1. ksbes
      26.08.2026 16:00

      Даже у эмбедеров обычно есть возможность вывести хардкод в тот или иной вид конфигурации хотя бы для условной компиляции. Чтоб порты потом не переименовывать по всему коду в тысяче мест при переезде на проапгрейженную плату. И обратно.

      Хотя да, в DIY этим редко заморачиваются.


      1. UFO_01
        26.08.2026 16:00

        А вы уверены что только в DIY :)

        То что я видел во вполне себе активно работающих проектах, даже не то что из 90-х, из 00-х и 10-х, там разработчикам впору у DIY-щиков учиться. Такое бывает когда человек вообще не разработчик, но в домене хорошо разбирается.


  1. pistoletov
    26.08.2026 16:00

    Перспективная тема ловить звуковые аномалии и останавливаться. Правда очень не завидую отладке этого процесса... Или писать все с контактных микрофонов потом анализировать


    1. RTFM13
      26.08.2026 16:00

      Ага, 256 раз убить шпиндель чтобы научить нейронку распознавать убитый шпиндель. Кстати, чтобы что?

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


      1. pistoletov
        26.08.2026 16:00

        Да нейронка и не обязательна. Фурье достаточно думаю. Просто собирать данные для анализа. Специально убивать точно не стоит


        1. UFO_01
          26.08.2026 16:00

          Не, Фурье там хватит максимум на то, чтобы понять физику процесса и собрать данные для анализа. Если мы говорим о какой-то автоматизации, то наверное больше подойдёт кепстральный анализ и сравнение с эталоном. И угрохаем мы на это кучу времени, зато кандидатскую закрыть можно.


          1. RTFM13
            26.08.2026 16:00

            Задача уже давно и качественно решена другими гораздо более надёжными способами.

            Вместо того чтобы детектить "аномалии" их заранее предупреждают и избегают самыми разными сособами.


            1. UFO_01
              26.08.2026 16:00

              Это я знаю. Я поэтому и говорю про кандидатскую, потому что академические изыскания и реальное производство вещи несколько разные.


              1. RTFM13
                26.08.2026 16:00

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


                1. UFO_01
                  26.08.2026 16:00

                  Не ну как, в подобных изысканиях (даже в этом) польза номинально есть, но вот реально ли применить результаты вопрос другой. Как бы и по построению мажоритарных систем до сих пор проводят исследования, но все почему-то используют просто дублирование. Да и надо всё-таки разделять кто проводит исследование - технологи с завода или университеты, потому что в последних зачастую исследование ради исследования.


        1. RTFM13
          26.08.2026 16:00

          За 10 лет на небольшом парке станков при мне шпиндель был убит ровно 1 раз и то его можно было легко избежать. Останов по звуку там не помог бы никак. Т.е. до момента столкновения все звуки были идеальные.

          Не говоря о том, что ложный останов это часто запоротая деталь.


          1. UFO_01
            26.08.2026 16:00

            Ну, многое из того что не различает человек ухо, вполне можно отследить математическими методами. Да, экономическая целесообразность около нулевая. Разве что для удовлетворения желания заняться какой-то сложной фигнёй потому что круто. Плюс у каждой системы распознавания есть ошибки. Если принять ложноположительную ошибку в 0.1%, станок производит ну скажем 8 деталей в сутки, получим брак каждые 4 месяца что как бы много.


            1. RTFM13
              26.08.2026 16:00

              Единственное что полезного может сделать нейронка постфактум - это определить степень нормального износа инструмента. Но во-первых с этим справляется калибратор. А во-вторых делать это надо не по звуку, а по картинке с микроскопа. И если бы это было целесообразно лидеры рынка бы давно внедрили.


              1. UFO_01
                26.08.2026 16:00

                Не, я даже не про нейронку говорю, у этих точность дай бог 90%, а если идёт различение звуков, в лучшем случае 80% (лично убеждался в универе в своё время). Вы мне кстати напомнили одно выступление где студенты грозились на основе статистики предсказывать степень износа составов и вагонов для диагностики на основе статистических данных с участка.


      1. grt_pretender
        26.08.2026 16:00

        Можно спокойно нанять саунд-дизайнера и получить от него готовый синтезированный аудиодатасет с нужными звуками. А потом дообучить.


        1. UFO_01
          26.08.2026 16:00

          Использовать примерно похожие на правду обучающие данные чтобы получить примерно похожий на правду результат. Гениально. Причём хочу заметить, примерно похожие для человеческого уха данные, а его характеристика нелинейная.


          1. grt_pretender
            26.08.2026 16:00

            Можно в процессе проверить по известным мелграммам. Способов масса.

            Не все можно качественно записать. Не все безопасно записывать. Не на все есть бюджет или время. Иногда людям нужны компромиссы.

            Иногда - лишний способ показать, как они умны. Ну, ок)


            1. UFO_01
              26.08.2026 16:00

              MFCC можно использовать, но тут тоже есть проблема при разложении звука на субполосы - резкие всплески, особенно если они попадают на края окна, это даёт отклик по всем частотам. Точности выше 80% добиться нереально, поверьте мне, я пробовал. Как минимум потому что у человеческого уха точность тоже 75-80%.

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

              Не ну а что, вот когда человек красивый, сразу видно. А что умный не поймёшь пока рот не откроет. А свои выгодные стороны надо подчёркивать :)


  1. Moog_Prodigy
    26.08.2026 16:00

    Вот насчет запрета влезать в станок, сразу напрашивается такая конструкция. Обьемная, из алюминиевого профиля, по сути повторяющая проект 3018, только с увеличенными габаритами. По XY ездит каретка, и по Z координате специальным пластмассовым пальцем оно будет само натыкивать программу любой сложности. Пришел на смену, поставил конструкцию на стойку, ушел курить на 20 минут, а оно пусть набивает код. Конструкция не изменяет схему станка и вообще никак с ним не взаимодействует, кроме физического нажимания кнопок.

    Я это к чему. У меня по работе тоже такие решения бывают. Операторы некоторой установки захотели ее автоматизировать (не чпу станок а скорее огромный шкаф с кнопками и не один), ну а я соответственно рассматривал это предложение со всех ракурсов поскольку эту установку обслуживаю я. В чем беда - при работе с установкой нужно повторять буквально сотни нажатий кнопок, и операторы задалбывались. Они предложили на каждую значимую кнопку параллельно поставить маленькое реле, а этими реле рулить уже с ардуинки по скрипту. Решение с реле вполне красивое, но это вмешательство в схему, а поскольку установка хитрая и со своими приколами, то я запретил это делать, т.к. случись что это я буду бегать с горящей...в общем с воспламененными штанами. Предложил им вариант другой - раз вы такие прошаренные ардуинщики, сделайте физические кнопконажималки, которые будут примагничиваться на шкаф когда вам надо, а не надо - отлепили и сложили в ящик. Ну они и сделали на 15 сервах такие "нажималки", по нажималке на кнопку. Сами написали себе скрипты, красота, оно реально работает. Изменений в конструкции не внесено. Ответственность полностью лежит за пределами физических кнопок на операторе. Поработал, не нужно более - снял и убрал. Костыль, но практически единственно допустимый в ситуации, когда внутрь нельзя лазить. А для клавиатуры древнего ЧПУ я бы порекомендовал координатную систему.


    1. ksbes
      26.08.2026 16:00

      А на всяких западах и востоках, говорят, человекоподобные роботы таким занимаются! “Нас не победить!” )))

      Мы делали нечто похоже. Но у нас и проще и научнее: световое перо, камера (да не простая, а 120 fps - чтобы следить за лучём), распознование и специальная контактная площадка для пера, которая в нужный момент давала импульс.

      Слышал(но не видел) про накладку на трекбол …


    1. Hafeg Автор
      26.08.2026 16:00

      Вау, гениальный костыль! Представил картину: ЧПУ станок, который управляется другим самодельным ЧПУ станком, матрешка автоматизации!) Для закрытых систем — решение топ. Но боюсь, если бы мой директор увидел, как робот-палец тыкает в Фанук, пока я пью кофе, у него случился бы инфаркт)


  1. pistoletov
    26.08.2026 16:00

    Чтоб порты потом не переименовывать по всему коду в тысяче мест при переезде на проапгрейженную плату. И обратно.

    Ну для этого код писать нужно платформонезависимый. Так называемый слой hal


  1. smirnov_ai
    26.08.2026 16:00

    19 лет…снимаю шляпу!