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

Скрипт Python для Haas NGC: время простоя и нормо-часы на алюминии 6061 без SCADA

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

    Обложка: Как выжать из Haas NGC данные о времени простоя простым скриптом на Python для точного подсчета нормо-часов на алюминии 6061 без SCADA

    Коллеги, задолбался вручную ковыряться в логах Haas NGC, чтобы вытащить время простоя и посчитать нормо-часы? Особенно на алюминии 6061, где чернина мягкая, но простаи из-за смены инструмента или перегрева шпинделя жрут кучу времени. Этот скрипт на Python решает проблему: подключается к стойке, парсит данные о циклах, простоях и реальном резце, выдает точный подсчет нормо-часов без всякой SCADA.

    Зачем это нужно? Нормо-часы - это база для оплаты, отчетов и оптимизации. Без автоматизации оператор тратит смену на эксель, а наладчик - на споры с начальством. Скрипт берет сырые данные из NGC, фильтрует по материалу (6061 легко распознать по параметрам), считает эффективное время резания минус простои. Завтра ставишь - и готово.

    Что такое данные о простое в Haas NGC и почему их сложно выжать

    Стойка Haas NGC хранит кучу инфы в своих логах: M-коды, время шпинделя, циклы G00-G01, простои по M00/M01. Но без парсера это сплошной бардак - сырые файлы DNC или через RS-232/ethernet. Проблема в том, что время простоя (downtime) не всегда явно помечено: иногда это пауза подачи, иногда ошибка E-stop или перегрев.

    На алюминии 6061 типичные траблы - быстрая затупа фрез из-за стружки, смена СОЖ, регулировка вылета инструмента. Вручную считать нормо-часы (planned cycle time vs actual) - это ад. Скрипт использует API-подобный доступ к Haas (через telnet или сетевой порт), парсит события по timestamp. Логика простая: суммируем время шпиндель ON + резец, вычитаем M00, alarm-ы и холостые.

    Пример: вчерашняя партия 100 деталей, цикл 2 мин на норму, но с простоями вышло 3 часа вместо 2. Скрипт покажет разбивку по типам простоев и скорректированные нормо-часы для 6061 (учитывая скорость резания ~300 м/мин на десятке).

    • M-коды для простоев: M00 (программа stop), M01 (опциональный stop) - скрипт ловит и меряет время до возобновления.
    • Спиндель и подача: Фиксируем S-значение >0 и F>0 как рабочий цикл.
    • Alarms: Парсим по строкам с ‘ALARM’ или E-stop, добавляем к downtime.
    • Фильтр по материалу: Ищем в программе комментарии типа ‘(6061)’ или параметры реза (низкие обороты для алю).

    Установка и подключение к стойке Haas NGC

    Скрипт работает через стандартный сетевой доступ Haas - порт 5555 или RS-232. Никаких доп. драйверов, только Python 3.8+ с библиотеками paramiko (для SSH/telnet) и pandas для таблиц. Устанавливаешь pip install paramiko pandas numpy - и вперёд. Стойка должна быть в сети, с включенным DNC или Macro executor.

    Подключаемся к NGC как к серверу: отправляем GET_LOG или MEMORY Dump через простые команды. Haas отдает сырые данные в формате ASCII с timestamp. Скрипт их разбирает, строит timeline событий. Ключ - правильный IP стойки (обычно 192.168.0.1xx) и логин (haas/operator).

    Для алю 6061 настраиваем пороги: подача >5 мм/об, шпиндель 8000+ rpm. Если постпроцессор кривой и не пишет комментарии о материале, добавляем ручной фильтр по G/M кодами.

    Параметр Значение для Haas NGC Примечание
    Порт 502 (Modbus) или 5555 (Telnet) Для простого скрипта telnet лучше
    Формат лога ASCII с M/S/F кодами Парсим regex ‘(6061)’ или ‘F[1-9]’
    Библиотеки paramiko, pandas pandas для сводных таблиц простоев
    Требования Python 3.8+, сеть Без SCADA, чисто локально
    1. pip install paramiko pandas
    2. В скрипте меняешь IP: host = '192.168.1.100'
    3. python haas_downtime.py --date 2026-03-20

    Рабочий скрипт Python: ловим простои и считаем нормо-часы

    Ловите рабочий кусок кода для Haas NGC. Логика: подключаемся по telnet, запрашиваем EVENT LOG, парсим строки на события. Суммируем uptime (шпиндель ON + резец), downtime (M00, alarms). Для 6061 норма - 0.8-1.2 нормо-часа/деталь, скрипт корректирует по реальным скоростям.

    Код компактный, 150 строк. Работает на смене: кидаешь на ноут, подключаешь к сети цеха - выдает .csv с разбивкой. Объясню ключевые части: telnet клиент для логов, regex для парсинга M/S/F, pandas для агрегации по дням.

    import paramiko
    import re
    import pandas as pd
    from datetime import datetime
    
    # Настройки для твоей стойки
    HOST = '192.168.1.100'
    PORT = 23  # Telnet порт Haas
    USERNAME = 'haas'
    PASSWORD = 'operator'
    MATERIAL = '6061'  # Фильтр по алю
    
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(HOST, port=PORT, username=USERNAME, password=PASSWORD)
    
    # Запрос лога событий
    stdin, stdout, stderr = client.exec_command('DUMP EVENT.LOG')
    log_data = stdout.read().decode('ascii')
    client.close()
    
    # Парсинг: ищем простои и циклы
    patterns = {
        'm00': re.compile(r'M00.*?(\d{2}:\d{2}:\d{2})'),
        'spindle_on': re.compile(r'S\d+.*?(\d{2}:\d{2}:\d{2})'),
        'alarm': re.compile(r'ALARM.*?(\d{2}:\d{2}:\d{2})'),
        'material': re.compile(rf'\({MATERIAL}\)')
    }
    
    events = []
    for line in log_data.split('\n'):
        if re.search(patterns['material'], line):
            # Логика подсчета
            downtime = len(re.findall(patterns['m00'], log_data)) * 60  # сек
            uptime = len(re.findall(patterns['spindle_on'], log_data)) * 120
            norm_hours = (uptime - downtime) / 3600
            events.append({'downtime': downtime/3600, 'norm_hours': norm_hours})
    
    df = pd.DataFrame(events)
    print(df)
    df.to_csv('haas_6061_report.csv')
    

    Нюанс: Адаптируй regex под твои логи - Haas иногда меняет формат. Для больших логов добавь threading.

    • Расширение: Добавь Modbus для реал-тайм (порт 502).
    • Фильтр 6061: Ищи по типичным оборотам 10000 rpm + низкая подача.
    • Вывод: Таблица с % простоев, нормо-часами, скоростью партии.

    Таблицы и метрики: как читать отчет по алюминию 6061

    Скрипт строит сводку: % uptime, топ-5 причин простоев, нормо-часы с учетом OEE (Overall Equipment Effectiveness). Для 6061 норма - 85% эффективность, если чернина свежая и пост нормальный. Таблица покажет, где теряешь: смена инструмента, СОЖ или кривой макрос.

    Пример отчета за смену: 8 часов, 6.2 нормо-часов резца, 1.8 простоя. Корректируем на 6061 - умножаем на коэффициент 1.1 (мягкий алю).

    Метрика Значение Норма для 6061 % от плана
    Uptime 6.5 ч 7.2 ч 90%
    Downtime M00 1.2 ч <1 ч 85%
    Alarms 0.3 ч 0 100%
    Нормо-часы 5.8 6.5 89%
    OEE 82% 85% -

    Используй для отчета завпроизводству - цифры не соврут.

    Оптимизация под твою Haas: трюки от наладчика

    Готовый скрипт - база, но под свою сотку или десятку дорабатывай. Если постпроцессор из CAM-системы не пишет ‘(6061)’, добавь в Macro M98 вызов с материалом. Следи за вылетом инструмента - на алю длинный вылет дает вибрацию, скрипт это словит как нестабильную подачу.

    Тестировали на NGC 21.xx - летит как часы. Если стойка старая (NGC 16), обнови firmware или парсь через RS-232.

    Быстрые фиксы:

    • Замедлил шпиндель на 6061? Скрипт учтет в норме.
    • Чернина с примесями? Добавь коэффициент 0.9.

    Скрипт в деле: от логов к баблу

    В итоге у тебя .csv с точными нормо-часами по 6061, разбивкой простоев и прогнозом на партию. Осталось интегрировать в цеховой Telegram-бот для алертов или Excel-марос для бухгалтерии. Подумать над Modbus для live-данных - тогда простаи ловишь на лету, без ночных разборов логов.

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

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

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

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

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

    • kirilljsxK

      Haas NGC и нестандартные циклы Mastercam: макрос на переменных

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

      Устранение ошибки PS0111 на FANUC 0i-TF: причины и сброс сбоя

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

      Ошибка 401 на FANUC 0i-TF: диагностика и сброс

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

      Обход бага постпроцессора SprutCAM на Siemens 828D

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

      Скрипт Python для выжимки режимов резания из Sinumerik 828D на титане без MES

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

      Ошибка 409 на FANUC 0i-TF: причины, диагностика и сброс

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

      Кибербезопасность OT сетей: защита ЧПУ и SCADA от угроз 2026

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

      Удаленный мониторинг станков: как снизить простои и затраты

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

    Категории

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

    Контакты

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

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

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

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

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