Перейти к содержанию
  • Лента
  • Популярные
  • Последние
  • Теги
  • Пользователи
  • Сотрудничество
Свернуть
Логотип бренда
Категории
  1. Промышленный форум
  2. Категории
  3. ПO для чпу
  4. Парсинг DNC-файлов Fanuc через Python для подсчета нормо-часов и оптимизации плана

Парсинг DNC-файлов Fanuc через Python для подсчета нормо-часов и оптимизации плана

Запланировано Прикреплена Закрыта Перенесена ПO для чпу
fanucpythondnc
1 Сообщения 1 Постеры 16 Просмотры 1 Отслеживают
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsxK Не в сети
    kirilljsxK Не в сети
    kirilljsx
    Модератор
    написал отредактировано
    #1

    Обложка: Как парсить DNC-файлы Fanuc через Python-скрипт для автоматического подсчета нормо-часов и оптимизации сменного плана без остановки станка

    DNC-файлы с Fanuc - это G-код, который летит на стойку по RS-232 или Ethernet. Парсить их на Python нужно, чтоб вытащить реальное время резания, нагрузку шпинделя и износ инструмента. Без этого нормо-часы считаешь вручную, а план смены хромает - станок простаивает.

    Скрипт решает проблему: тянет данные nonstop, считает норму по #3004 нагрузке и #3901 времени, строит CSV для экселя. Станок не трогаешь, все онлайн. Получаешь точный прогноз - сколько деталей уйдет за смену, без сюрпризов с поломкой фрезы.

    Почему DNC-файлы Fanuc парсят именно так

    DNC - это прямой numerical control, когда программа стримится на контроллер без остановки. На Fanuc это NC-файлы с макросами #100-#999, где сидят ключевые параметры: подача, обороты шпинделя, вылет инструмента. Парсером выдираешь их, чтоб посчитать нормо-часы - реальное время на деталь минус холостой ход.

    Пример: программа на 0i-MF с циклом болтания #100=контур, #101=глубина. Без парсера ты открываешь файл в нотиспаде, считаешь строки вручную - час уходит. С Python скриптом за секунды имеешь таблицу: деталь - 0.45 нормо-часа, инструмент T10 - износ 12%. Оптимизируешь план: ставишь легкие детали на утро, тяжелые - на ночь.

    • Подготовка данных: Открываешь DNC-файл, ищешь блоки O9001 для инструментов, парсишь M03/M05 для шпинделя.
    • Нюанс с кодировкой: Fanuc шлет в ANSI, Python читает utf-8 - добавь encoding=‘cp1251’.
    • Автоматический подсчет: Регулярки находят (G1 X.+ Y.+ F.+), суммируют расстояние / подачу = время.
    Параметр Описание Пример из DNC
    #3004 Нагрузка шпинделя 45.2%
    #3901 Время инструмента 2.15ч
    S1200 Обороты 1200 об/мин
    F200 Подача 200 мм/мин

    Подключение к стойке Fanuc без остановки

    FOCAS API - официалка от Fanuc для чтения памяти контроллера по Ethernet. Порт 8193 TCP, никаких остановок программы. Библиотека pyfocas дергает cnc_rdmacro - тянет #3004 нагрузку каждые 5 сек, логирует в pandas DataFrame.

    Реальный кейс: стойка 31i на сотке нержаки, цикл резки 20 мин. Скрипт мониторит онлайн, если нагрузка >80% - алерт в телеграм. Нормо-часы считаешь как sum(время_инструмента) / количество_деталей. План смены: 45 деталей вместо 32, без брака от перегрева.

    1. pip install pyfocas pandas - ставишь паки.
    2. Подключаешься: focas = Focas('192.168.1.100', 8193) - IP твоей стойки.
    3. Читаешь: load = focas.cnc_rdmacro(3004) - нагрузка.
    4. Чекни параметр 3010=3 - для сетевого доступа, иначе таймаут.
    5. Логируешь в CSV: df.to_csv('normo.csv').
    from pyfocas import Focas
    import pandas as pd
    import time
    
    focas = Focas('192.168.1.100', 8193)
    data = []
    while True:
        load = focas.cnc_rdmacro(3004)  # нагрузка
        time_work = focas.cnc_rdmacro(3901)  # время
        data.append({'load': load, 'time': time_work, 'timestamp': time.time()})
        df = pd.DataFrame(data)
        df.to_csv('normo.csv', index=False)
        time.sleep(5)
    

    Логика простая: бесконечный цикл, аппенд в список, дамп в файл. Работает на любой Fanuc с FOCAS.

    Парсинг DNC-файла и расчет нормо-часов

    Берешь DNC-файл .NC, открываешь через open(file, ‘r’). Регулярки ищут G1/G2 для резания, M06 для смены инструмента. Суммируешь длину пути / подачу = время резания. Нормо-час = (резание + 10% на воздух) / эффективность.

    Пример файла: O1234 (деталь), T10 M06; G01 X50 Y50 F150 - 70мм пути за 28 сек. За программу 10 деталей - 8.5 нормо-часов. Скрипт парсит все O-номера, группирует по инструментам, строит график износа. Оптимизация плана: меняешь последовательность, чтоб инструмент не жарился.

    • Регулярка для подачи: re.findall(r'F(\d+)', line) - вытаскивает все F.
    • Коррекция на ускорение: G00 не считаем, только G01/G02/G03.
    • Интеграция с постом: Вывод в формат для КАМ-системы, типа Mastercam.
    Деталь Инструмент Время резания Нормо-час
    O1234 T10 фреза 0.45ч 0.52ч
    O5678 T20 сверло 0.32ч 0.37ч
    Итого - 4.2ч 4.8ч

    Оптимизация сменного плана на основе данных

    Собранные данные из DNC и FOCAS кидаешь в pandas, строишь прогноз. Если износ T10 >15%, ставишь его на конец смены. План: утро - чернина на высокой подаче, вечер - нержа с контролем нагрузки.

    Кейс: цех с тремя стойками, скрипт агрегирует CSV, ранжирует детали по норме. Вместо хаоса - excel с графиком: 95% загрузка без остановок. Ключ: цикл скрипта на raspberry pi рядом со стойкой - дешево и надежно.

    • Автоматическая сортировка: df.sort_values('normo').
    • Алерт на износ: if load > 80: send_mail().
    • Интеграция в 1C: экспорт в XML для плана.

    Скрипт в деле - типичные косяки и фиксы

    Тут код целиком: парсит DNC + FOCAS, считает норму, выводит план. Запускаешь на ноуте у стойки, стойка работает. Осталось доработать под твои макросы #5000 - там свои переменные, под них регулярки подкрути. Или интегрируй с DNC-сервером для стримминга файлов.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовал этот пост, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    • kirilljsxK

      Выгрузка скорректированных параметров подачи Fanuc 31i через Python для OEE и оптимизации

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу fanuc 31i python oee параметры подачи
      1
      1
      0 Голоса
      1 Сообщения
      17 Просмотры
      Нет ответов
    • kirilljsxK

      Интеграция простоев Fanuc 31i с ChatGPT через Python для оптимизации сменного плана

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу fanuc 31i chatgpt python оптимизация чпу
      1
      1
      0 Голоса
      1 Сообщения
      16 Просмотры
      Нет ответов
    • kirilljsxK

      Чтение износа инструмента Fanuc 31i через Python: предсказание замены без остановки

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу fanuc 31i износ инструмента python focas
      1
      1
      0 Голоса
      1 Сообщения
      17 Просмотры
      Нет ответов
    • locolizatorL

      Ошибки G83 на FANUC 0i-TF: неправильный отход сверла и сброс цикла

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC g83 fanuc ошибки сверления
      1
      1
      0 Голоса
      1 Сообщения
      19 Просмотры
      Нет ответов
    • kirilljsxK

      Ошибки Fanuc: диагностика и устранение неисправностей на ЧПУ

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу fanuc ошибки чпу диагностика
      1
      0 Голоса
      1 Сообщения
      236 Просмотры
      Нет ответов
    • kirilljsxK

      G-код G17/G18/G19: выбор рабочей плоскости в Fanuc для ЧПУ

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC g17 fanuc чпу плоскость
      1
      0 Голоса
      1 Сообщения
      127 Просмотры
      Нет ответов
    • kirilljsxK

      Макропрограммирование в Fanuc: подпрограммы и переменные для ЧПУ

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC fanuc макропрограммирование подпрограммы
      1
      0 Голоса
      1 Сообщения
      202 Просмотры
      Нет ответов
    • kirilljsxK

      Работа с файлами в C: от открытия до закрытия

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу
      1
      0 Голоса
      1 Сообщения
      76 Просмотры
      Нет ответов

    Категории

    • Главная
    • Новости
    • Объявления
    • ПО и ЧПУ
    • Обсуждение

    Контакты

    • Сотрудничество
    • forum@investsteel.ru

    © 2022 - 2026 InvestSteel, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Популярные
    • Последние
    • Теги
    • Пользователи
    • Сотрудничество