slagbyte

рабочий дневник инженера по данным · телеметрия печей и разливки

[ userinfo: kudinov_at · журнал с 11.2024 ]

ЛентаАрхивПоискО журналеИнструментывы: гостьВойтиПрофиль

Как я усреднил себе аварию

· временные рядыагрегаты

Настроение: виноватоеМузыка: старый вентилятор БП
Настроение: виноватоеМузыка: старый вентилятор БП

Здесь виноват не прибор, не оператор и не вендор. Здесь виноват я, причём дважды: сначала выбросил нужную полосу частот, а потом сам же придумал объяснение тому, что от неё осталось.

Задача

Дашборд по приводам вспомогательного оборудования открывался 40 секунд. За эти 40 секунд он тянул сутки секундных данных по сорока каналам - три с половиной миллиона точек, чтобы нарисовать график шириной в тысячу пикселей. Мастера им не пользовались ровно по этой причине.

Я сделал предрасчёт: среднее за 10 секунд, одна таблица на сутки. Дашборд стал открываться за 1,2 секунды, им начали пользоваться, и месяц всё было хорошо.

Что случилось

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

Самое неприятное: я этот тренд видел. На дашборде была медленная волна с периодом около пятидесяти секунд, которой раньше не было, и я объяснил её работой регулятора - у него цикл как раз порядка сорока пяти секунд. Объяснение было правдоподобным, непроверенным и ложным.

Как мерил

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

В сыром ряду нашлась пульсация 0,12 Гц, растущая по амплитуде трое суток. В прореженном её не было, зато была та самая волна 0,02 Гц. Это не совпадение, это арифметика: при шаге 10 секунд частота Найквиста равна 0,05 Гц, всё, что выше, отражается вниз, и 0,12 Гц попадает ровно в 0,02 Гц.

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

Чем разделил

Сравнил четыре способа сжать те же сутки и посмотрел, что каждый делает с пульсацией 0,12 Гц. Разделяющий признак выбрал заранее: способ годится, если по нему виден рост амплитуды за трое суток.

Один и тот же суточный ряд по 40 каналам, четыре способа сжатия. Объём - число хранимых чисел.
СпособРост виден?Что стало с 0,12 ГцОбъём
Каждая десятая точканетотразилась в 0,02 Гц без потери амплитуды346 тыс.
Среднее за 10 снетослаблена втрое и отражена в 0,02 Гц346 тыс.
Фильтр 0,04 Гц, затем прореживаниенетудалена честно, ложной волны нет346 тыс.
Минимум, максимум, первое, последнеедавидна как рост размаха внутри окна1,38 млн

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

Вывод

Прореживать ряд можно только после фильтра - иначе вы не удаляете шум, а переносите его на другую частоту, где он притворяется процессом. Это правило знает любой учебник, и ровно поэтому я его не вспомнил: оно было в разделе про обработку сигналов, а я решал задачу про скорость загрузки страницы.

Хранить за окно надо минимум, максимум, первое и последнее значение. Это вчетверо больше места и в тридцать раз меньше, чем сырой ряд, - цена, которую я теперь плачу не задумываясь. По сути это та же мысль, что в разборе про брак, только там среднее скрывало провал за десять минут, а здесь - пульсацию за десять секунд.

И третье, про себя. Моё «это регулятор» было подгонкой объяснения под уже сделанную правку: я придумал причину, которая не требовала признать, что предрасчёт испортил данные. Такое объяснение всегда находится, и единственная защита от него - проверить его отдельным замером до того, как успокоился.