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

Использование Python для анализа вибраций и шума станка

Запланировано Прикреплена Закрыта Перенесена Программирование ЧПУ | CNC
1 Сообщения 1 Постеры 10 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • KirilljsK В сети
    KirilljsK В сети
    Kirilljs
    Эксперт
    написал отредактировано
    #1

    66225819-f141-4cd2-b58e-20453e3739da-image.png

    Доброе утро коллеги!

    Пришла мне в голову мысль, как Python может стать мощным инструментом для анализа вибраций и шума на станках с ЧПУ.

    Эта тема особенно актуальна для тех, кто хочет повысить надежность оборудования, сократить простои и автоматизировать контроль качества. Ниже — основные аспекты, которые мы можем рассмотреть вместе.
    Вообще такой апгрейд наверное будет через чур или из разряда вон, но все же! Нам же надо как-то двигать прогресс!

    Почему вибрации и шумы важны?

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

    • Предсказывать поломки (например, выявлять износ подшипников).
    • Оптимизировать режимы резания.
    • Контролировать качество обработки в реальном времени.

    Python идеально подходит для таких задач благодаря библиотекам для обработки сигналов, машинного обучения и визуализации. Давайте разберем, как это работает.


    Как это реализовать?

    1. Сбор данных
    Для начала нужно подключить датчики: акселерометры для вибраций (например, ADXL345) и микрофоны для анализа шума. Сигналы можно считывать через Arduino, Raspberry Pi или напрямую с помощью USB-адаптеров. Библиотеки вроде pySerial или sounddevice помогут собрать данные, а затем передать их на обработку.

    2. Обработка и анализ
    Сырые данные часто содержат шум. Здесь пригодятся фильтры (например, scipy.signal.butter() для низкочастотной фильтрации) и преобразование Фурье (FFT) для перехода к частотному анализу. Например, доминирующие пики на спектре могут указывать на износ определенных деталей. Для аудиосигналов полезно строить спектрограммы с помощью librosa — это визуализирует изменения в шуме станка.

    3. Машинное обучение для диагностики
    Если вы хотите автоматизировать обнаружение проблем, можно обучить модель на исторических данных. Например, случайный лес (RandomForestClassifier) справится с классификацией состояний станка («исправен», «износ инструмента»), а изолирующий лес (IsolationForest) поможет выявлять аномалии в реальном времени. Для сложных временных зависимостей подойдут рекуррентные нейросети (RNN) на Keras.

    4. Интеграция в производство
    Создав веб-интерфейс с помощью Streamlit или Dash, вы сможете отслеживать параметры станка в режиме онлайн. А связь с ЧПУ через Modbus или OPC UA (с библиотеками вроде pymodbus) позволит автоматически корректировать режимы работы при обнаружении отклонений.


    Пример 1: Сбор данных с датчика через последовательный порт

    Используем pySerial для чтения данных с Arduino, где подключен акселерометр (напримере ADXL345).

    import serial
    import time
    
    # Подключение к COM-порту (указать свой порт)
    ser = serial.Serial('COM3', baudrate=9600, timeout=1)
    
    # Чтение данных в течение 10 секунд
    start_time = time.time()
    data = []
    
    while time.time() - start_time < 10:
        line = ser.readline().decode('utf-8').strip()
        if line:
            try:
                x, y, z = map(float, line.split(','))  # Пример формата данных: "x,y,z"
                data.append((x, y, z))
            except ValueError:
                continue
    
    ser.close()
    print("Собранные данные:", data[:5])  # Вывод первых 5 точек
    

    Пример 2: Фильтрация сигнала (низкочастотный фильтр)

    Удаляем высокочастотный шум с помощью scipy.

    from scipy.signal import butter, filtfilt
    import numpy as np
    
    def lowpass_filter(signal, cutoff=100, fs=1000, order=4):
        nyquist = 0.5 * fs
        normal_cutoff = cutoff / nyquist
        b, a = butter(order, normal_cutoff, btype='low', analog=False)
        return filtfilt(b, a, signal)
    
    # Пример сигнала (синтезируем с шумом)
    fs = 1000  # Частота дискретизации
    t = np.linspace(0, 1, fs, endpoint=False)
    signal = np.sin(2 * np.pi * 50 * t) + 0.5 * np.random.normal(size=fs)  # Сигнал 50 Гц + шум
    
    filtered_signal = lowpass_filter(signal, fs=fs)
    
    # Визуализация
    import matplotlib.pyplot as plt
    plt.plot(t, signal, label="Оригинал")
    plt.plot(t, filtered_signal, label="После фильтра")
    plt.legend()
    plt.show()
    

    Пример 3: Анализ вибраций через FFT

    Находим доминирующие частоты в сигнале.

    import numpy as np
    import matplotlib.pyplot as plt
    
    # Пример сигнала (см. выше)
    n = len(signal)
    fft_result = np.fft.fft(signal)
    frequencies = np.fft.fftfreq(n, 1/fs)
    
    # Оставляем только положительные частоты
    magnitude = np.abs(fft_result[:n//2])
    freqs = frequencies[:n//2]
    
    # Поиск доминирующей частоты
    dominant_freq = freqs[np.argmax(magnitude)]
    print(f"Доминирующая частота: {dominant_freq:.2f} Гц")
    
    # Визуализация спектра
    plt.plot(freqs, magnitude)
    plt.xlabel("Частота (Гц)")
    plt.ylabel("Амплитуда")
    plt.show()
    

    Пример 4: Построение спектрограммы аудиосигнала

    Используем librosa для анализа шума станка.

    import librosa
    import librosa.display
    import matplotlib.pyplot as plt
    
    # Загрузка аудиофайла (замените на свой)
    y, sr = librosa.load("machine_noise.wav")  # Пример файла: шум станка
    
    # Построение мел-спектрограммы
    S = librosa.feature.melspectrogram(y=y, sr=sr)
    S_dB = librosa.power_to_db(S, ref=np.max)
    
    plt.figure(figsize=(10, 4))
    librosa.display.specshow(S_dB, sr=sr, x_axis='time', y_axis='mel', fmax=8000)
    plt.colorbar(format='%+2.0f dB')
    plt.title('Мел-спектрограмма шума станка')
    plt.tight_layout()
    plt.show()
    

    Пример 5: Классификация состояния станка

    Обучаем модель на признаках вибраций.

    from sklearn.ensemble import RandomForestClassifier
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import accuracy_score
    
    # Пример данных: признаки (RMS, FFT-пики) + метки ("исправно", "износ")
    X = np.random.rand(100, 5)  # 100 образцов, 5 признаков
    y = np.random.choice(["исправно", "износ"], 100)  # Случайные метки
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    model = RandomForestClassifier()
    model.fit(X_train, y_train)
    
    predictions = model.predict(X_test)
    print("Точность:", accuracy_score(y_test, predictions))
    

    Пример 6: Визуализация в реальном времени (Streamlit)

    Создаем дашборд для мониторинга.

    import streamlit as st
    import numpy as np
    import time
    
    st.title("Мониторинг вибраций в реальном времени")
    
    # Симуляция данных
    placeholder = st.empty()
    while True:
        data = np.random.normal(0, 1, 100)  # Случайные данные
        placeholder.line_chart(data)
        time.sleep(1)  # Обновление каждую секунду
    

    Как начать?

    1. Установим библиотеки:
      pip install numpy scipy matplotlib librosa scikit-learn streamlit pyserial
      
    2. Протестируем примеры с синтетическими данными, затем заменим на реальные.
    3. Интегрируем в оборудование: используйте Raspberry Pi/Arduino для сбора данных, а Python — для анализа.

    Да, тема конечно интересная, но сложноватая. Хотя всего скорее основные сложности будут возникать с подключением всяких датчиков и так далее, но в целом идея достаточно реализуемая!


    Подписывайтесь на нас в телеграм!

    Link Preview Image
    InvestSteel

    Investsteel.ru - Услуги, изделия и металлоконструкции Наша компания изготавливает широкий выбор продукции по индивидуальным заказам, в дополнение к металлообрабатывающим услугам.

    favicon

    Telegram (t.me)

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

    • KirilljsK

      Как использовать API станков с ЧПУ для автоматизации процессов

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

      G70 в ЧПУ-программировании: финишная обработка на токарных станках

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

      Программирование лазерного станка с ЧПУ

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

      Python для адаптивных систем управления станками: автоматизация ЧПУ

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

      Изготовление ножей на станках с ЧПУ: технологии и пример кода

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

      G12.1 FANUC: Примеры использования на токарных станках

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

      Программа для станка Sowin: особенности, примеры и немного магии

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

      Управляющая программа для станка DMG Mori NLX 3000

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

    Категории

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

    Контакты

    • Сотрудничество
    • forum@investsteel.ru
    • Наш чат
    • Наш ТГ канал

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

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

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

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