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

Python-скрипт: выгрузка данных Fanuc в Excel по RS232 без остановки станка

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

    Стойки Fanuc на RS232 шлют кучу данных - нагрузку шпинделя, время резки, параметры инструмента. Но вручную копировать в Excel - это ад для смены. Скрипт на Python решает: тянет данные онлайн, парсит и кидает в таблицу с графиками. Экономит часы на отчетах, планах и контроле износа.

    Без этого нормо-часы считаешь на глаз, станок простаивает, а начальник злится на ‘непонятные’ простои. Скрипт подключается по 9600 baud, ловит макросы типа #3004 или #3901, строит DataFrame и экспортит в xlsx. Работает на любой Fanuc 0i/31i, без FOCAS и доп. железа. Готово за 10 минут установки.

    Подготовка порта и библиотек

    RS232 на Fanuc - классика: кабель DB9, настройки 9600,8,N,1. Стойка шлет данные по запросу M198 или через DNC-канал. Проблема в том, что без правильной кодировки Python глотает кракозябры вместо цифр. Реальный кейс: на 31i с O9999 макросом скрипт тянет нагрузку каждые 5 сек, без остановки программы.

    Параметры стойки: чекни 3010=3 для доступа, baud rate в 3101-3104. Python через pyserial открывает COM1, шлет команду, читает ответ. Если таймаут - добавь parity=‘N’. Pandas сразу форматирует в df, готовый к графикам. Логика простая: цикл запрос-ответ-парсинг, без блокировок.

    Установи пакеты одним махом:

    • pip install pyserial pandas openpyxl matplotlib
    • pyserial для порта, pandas для df, openpyxl для xlsx без Excel.
    • Настрой COM-порт в Windows Device Manager, драйверы Prolific не ставь - глючат.
    Параметр RS232 Значение Fanuc Нюанс в скрипте
    Baud rate 9600 Жестко в serial.Serial
    Data bits 8 bytesize=8
    Parity None parity=‘N’
    Stop bits 1 stopbits=1

    Логика скрипта: запрос макросов и парсинг

    Скрипт использует M198 P{param} для чтения #3004 (нагрузка), #3901 (время). Стойка отвечает строкой с цифрой, Python float() парсит. Цикл на 60 итераций - 10 мин данных, потом экспорт. Кодировка cp1251 спасает от ANSI-мусора Fanuc.

    Пример: шпиндель на 80% - алерт в консоль, тренд по rolling mean. Без остановки: скрипт пассивно слушает DNC или активно дергает. Реальный профит - нормо-часы по факту, не по техкарте. График matplotlib сразу показывает пики износа.

    Ключевые макросы Fanuc для выгрузки:

    • #3004 - нагрузка шпинделя (%).
    • #3901 - общее время обработки.
    • #3021 - позиция инструмента, для износа.
    • Добавь #5001 для feedrate, если подача корректируется.

    Полный скрипт ниже. Запусти в терминале, подключи кабель - и данные в Excel.

    import serial
    import pandas as pd
    import matplotlib.pyplot as plt
    import time
    
    ser = serial.Serial('COM1', 9600, timeout=1, parity='N', bytesize=8, stopbits=1)
    def read_param(param):
        ser.write(f'M198 P{param} F1000\n'.encode('cp1251'))
        return float(ser.readline().decode('cp1251').strip())
    
    loads = []
    times = []
    for i in range(60):  # 10 мин по 10 сек
        load = read_param(3004)
        t = read_param(3901)
        loads.append(load)
        times.append(t)
        print(f'Нагрузка: {load}%, Время: {t}с')
        time.sleep(10)
    
    ser.close()
    df = pd.DataFrame({'load': loads, 'time': times})
    df['load_trend'] = df['load'].rolling(10).mean()
    
    # Экспорт в Excel
    df.to_excel('fanuc_data.xlsx', index=False, sheet_name='Данные')
    
    # График
    plt.plot(df['load_trend'])
    plt.title('Нагрузка шпинделя Fanuc')
    plt.xlabel('Минуты')
    plt.ylabel('%')
    plt.savefig('load_plot.png')
    plt.show()
    
    if df['load_trend'].iloc[-1] > 90:
        print('**АЛЕРТ: Износ шпинделя, проверь инструмент!**')
    

    Обработка данных в Excel и анализ

    Pandas делает xlsx с колонками load/time/trend, freeze_panes для заголовков. Формат float %.2f, N/A для пустых. Открой в Excel - фильтры, pivot на месте. Сравни с нормой: если средняя нагрузка >70% - оптимизируй траекторию.

    График сохраняется png, кидай в отчет. Линейная регрессия на df[‘load’] предсказывает износ за неделю. Без SCADA, чистый Python - дешево и сердито. Масштабируй: добавь несколько COM-портов для цеха.

    Сравнение с ручным учетом:

    Метод Время на смену Точность Автомат?
    Ручной 2 часа Низкая Нет
    Excel макрос 30 мин Средняя Частично
    Python RS232 1 мин Высокая Полная

    Статистика по df:

    • Средняя нагрузка: df['load'].mean().
    • Макс время цикла: df['time'].max().
    • Тренд износа: if >100 - стоп.

    Готовые связки для цеха

    Скрипт крутит в фоне через Task Scheduler, логи в папку по датам. Добавь Telegram-бот для алертов: telebot + if load>95. Для 10 станков - multiprocessing, каждый порт в потоке. Тестируй на эмуляторе Fanuc перед боем.

    Интеграция с 1C: экспорт CSV, импорт в базу нормо-часов. Графики в Power BI через xlsx. План смены: если время > нормы - перераспределяй.

    Расширения скрипта:

    • Email с отчетом: smtplib.
    • База износа: SQLite для истории по инструментам.
    • Web-дашборд: Flask + df.plot.

    Когда RS232 не тянет - апгрейд

    RS232 глючит на длинах >10м - бери конвертер в USB или Ethernet. FOCAS лучше: pyfocas по TCP 8193, без кабеля. Но для legacy 0i - только serial. Подумай о параметрах 0000=1 для debug-логов стойки.

    Скрипт покрывает 80% задач: нагрузка, время, инструмент. Остальное - кастом макросы O9001. Тестируй на холостом ходу, чтоб не словить сбой. Дальше - парсинг G-кода из DNC для полной аналитики.

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

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

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

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

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

    • kirilljsxK

      Макрос #100-#110 для вылета инструмента Fanuc 0i-TF: забудь ручной подсчет

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

      Параметризуем G10 на Fanuc: забудьте дубли УП за 10 мин

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

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

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

      Выгрузка циклов простоя из Балт-Систем через Python для OEE

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

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

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

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

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

      Выбор инструмента для ЧПУ: ключевые критерии и рекомендации по станкам

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

      Как сделать еврозапил на чпу станке

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

    Категории

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

    Контакты

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

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

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

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

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