Skip to main content

131 Отчет по датчику бурения

Отчёт показывает, когда и сколько буровая установка бурила, и сколько метров скважин пройдено за выбранный период. Каждая строка — одна скважина. Внизу — итоги: общее время бурения, общий метраж, средние показатели датчиков и количество скважин.

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

  1. Датчик глубины — главный ориентир. Если глубина растёт, значит, бурение идёт.
  2. Датчик режима бурения — если он есть и включён в настройках, отчёт определяет бурение строго по нему. Самый точный способ.
  3. Датчик давления на бур — используется как запасной вариант, если первых двух нет.

Если датчика глубины нет или он неисправен, отчёт не останавливается, а автоматически переключается на датчик режима бурения, а если и его нет — на датчик давления. В этом случае графа «Глубина» будет заполнена нулём, и общий метраж тоже будет нулевым — это ожидаемо.

Как отчёт уточняет границы скважин Помимо основных датчиков, отчёт смотрит на давление вращения и давление воздуха. Если короткий провал одного из них — это ещё не остановка бурения (смена породы, продувка скважины). Отчёт заполняет такие короткие провалы и не разрывает скважину.

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

Чтобы их поймать, в отчёт добавлен дополнительный анализ. Он работает так:

  1. Берёт две соседние уже найденные скважины.
  2. По ним определяет образцовые значения датчиков — типичное давление воздуха и типичный режим бурения в этих скважинах.
  3. Просматривает промежуток между ними и ищет участки, где оба датчика держатся в пределах образцовых значений.
  4. Если находит такой участок достаточно длинный — добавляет его в отчёт как новую скважину.

Этот анализ не заменяет основную логику, а дополняет её: сначала работают основные правила, потом — дополнительная проверка. Скважины, найденные основной логикой, остаются на месте.

Почему события иногда «дёргаются» При бурении датчики могут дать короткий сбой — на одну-две секунды. Раньше этого хватало, чтобы отчёт разбил одну скважину на две короткие и обе отбросил как «слишком маленькие». Теперь дополнительный анализ терпит короткие сбои — до одной минуты — и не разрывает скважину из-за них.

Что можно настроить Минимальная продолжительность — Слишком короткие включения игнорируются — 60 секунд Глубина начала и окончания бурения — С какой глубины считать бурение — 1 метр Использовать датчик режима бурения — Определять бурение строго по нему — выключено Длина штанги бура — Нужна для корректного подсчёта глубины — 9 метров Допуск по давлению воздуха — Насколько давление может отклоняться от образцового — 1 единица Допуск по режиму бурения — Насколько режим может отклоняться от образцового — 0,1 Терпимость к коротким сбоям — Какой длины сбой ещё не считается остановкой — 60 секунд

Эти настройки задаются в коде и могут быть вынесены в интерфейс, если потребуется менять их без участия программиста.

Что получилось в итоге • Отчёт не падает, если датчик глубины сломан или отсутствует — переключается на запасные датчики. • Дополнительный анализ находит пропущенные скважины, которые основная логика не увидела. • Короткие сбои датчиков не разрывают длинные скважины. • Графы «Глубина», «Скорость подачи», давления и время бурения заполняются по единым правилам.

Формулировка для клиента: "Для повышения полноты обнаружения скважин применён двухпроходный метод. На первом проходе выделяются скважины с высокой степенью достоверности. Они используются как эталоны для второго прохода, в котором выполняется поиск пропущенных скважин по ослабленным критериям относительно эталонных значений датчиков. Такой подход известен как гистерезисная пороговая обработка с поиском по эталонам и широко применяется в задачах обнаружения сигналов на фоне шумов."

Мы применили классический двухпроходный подход, который в разных областях называется по-разному. Его суть: первый (строгий) проход находит только абсолютно надёжные события, а второй (мягкий) — ищет пропущенные, опираясь на параметры уже найденных как на эталон.

🎯 Как называется наш приём

В обработке сигналов и изображений это гистерезисная пороговая обработка (Hysteresis Thresholding). Классический пример — детектор границ Кэнни, где используются высокий и низкий пороги: по высокому находятся «сильные» границы, а «слабые» добавляются только если они связаны с сильными.

В анализе изображений и биоинформатике — поиск с расширением от начальных точек (Seed-and-Extend / Region Growing). Сначала выбираются «семена» (заведомо верные объекты), а затем от них «растут» регионы по более мягким критериям.

В машинном обучении — самообучение с псевдоразметкой (Self-Training / Pseudo-Labeling). Модель сначала размечает данные, в которых уверена, а затем использует эту разметку как эталон для доразметки остального.

В нашем отчёте это точнее всего назвать «поиск по эталонам с гистерезисом» — мы берём образцовые значения датчиков из двух подтверждённых скважин (эталоны) и по ним ищем третью с ослабленными допусками.

📚 Классические работы по теме

Гистерезисная пороговая обработка (детектор Кэнни)

  • Canny, J. (1986). A Computational Approach to Edge Detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 8(6), 679–698. Основополагающая работа, где впервые формализован метод с двумя порогами для подавления разрывов.

Поиск с расширением от начальных точек (Seed-and-Extend / Region Growing)

  • Adams, R., & Bischof, L. (1994). Seeded Region Growing. IEEE Transactions on Pattern Analysis and Machine Intelligence, 16(6), 641–647. Классическая работа, где вводится понятие «семян» и итеративного расширения областей.

Самообучение с псевдоразметкой (Self-Training / Pseudo-Labeling)

  • Yarowsky, D. (1995). Unsupervised Word Sense Disambiguation Rivaling Supervised Methods. Proceedings of the 33rd Annual Meeting on Association for Computational Linguistics, pp. 189–196. Одна из первых работ по самообучению: алгоритм начинал с небольшого набора вручную размеченных примеров и постепенно расширял обучающую выборку.
  • Lee, D.-H. (2013). Pseudo-Label: The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks. ICML Workshop on Challenges in Representation Learning. Современная формализация псевдоразметки для нейронных сетей.

Справка: двухпроходный поиск событий по эталонам с гистерезисом

Внутренний документ. Применение в отчёте «Отчёт по датчику бурения» (код 131).


1. Постановка задачи

Дано: временной ряд показаний нескольких датчиков. Требуется выделить интервалы, соответствующие целевому процессу (бурению), при условии, что:

  • сигналы зашумлены;
  • часть событий может быть кратковременно прервана сбоями датчиков;
  • строгие критерии дают высокую точность, но низкую полноту;
  • мягкие критерии дают высокую полноту, но много ложных срабатываний.

Цель: получить и высокую точность, и высокую полноту одновременно.


2. Идея метода

Применяется двухпроходная схема:

Проход 1 (строгий). Находятся только события, в которых алгоритм уверен на 100%. Критерии жёсткие, ложные срабатывания почти исключены. Результат — набор «эталонных» событий.

Проход 2 (мягкий). Для каждого промежутка между двумя соседними эталонными событиями:

  1. По эталонам вычисляются образцовые значения каждого датчика (эталоны).
  2. В промежутке ищутся участки, где показания датчиков близки к эталонным с заданным допуском.
  3. Найденные участки добавляются к результату.

Ключевая идея: эталоны берутся не из внешних источников, а из уже подтверждённых событий той же установки и того же периода. Это автоматически учитывает особенности конкретной машины, породы, оператора и режима.


3. Математическая формализация

3.1. Обозначения

Пусть:

  • $T = {t_1, t_2, \ldots, t_N}$ — временная шкала;
  • $s_k(t)$ — значение $k$-го датчика в момент $t$;
  • $E_1 = {e_1, e_2, \ldots, e_M}$ — события, найденные на первом проходе;
  • $e_i = [b_i, e_i]$ — интервал $i$-го события.

3.2. Эталоны

Для $k$-го датчика эталон в паре событий $(e_i, e_{i+1})$ вычисляется как медиана значений внутри этих событий:

$$ r_k^{(i)} = \mathrm{median}\bigl{, s_k(t) ;\bigm|; t \in e_i \cup e_{i+1} ,\bigr} $$

Для дискретных сигналов (режим бурения) вместо медианы используется мода:

$$ r_k^{(i)} = \mathrm{mode}\bigl{, s_k(t) ;\bigm|; t \in e_i \cup e_{i+1} ,\bigr} $$

Медиана и мода устойчивы к выбросам — одиночные шумовые значения не смещают эталон.

3.3. Критерий попадания в дельту

Точка $t$ попадает в дельту для датчика $k$, если:

$$ \bigl| s_k(t) - r_k^{(i)} \bigr| \le \Delta_k $$

где $\Delta_k$ — допуск по $k$-му датчику.

3.4. Совместное условие

Событие фиксируется, когда оба датчика одновременно в дельте:

$$ A(t) = \bigwedge_{k \in K} \bigl[, |s_k(t) - r_k^{(i)}| \le \Delta_k ,\bigr] $$

где $K$ — множество датчиков, участвующих в постобработке (в нашем случае — воздух и режим бурения).

3.5. Склейка коротких разрывов

Вводится порог $g$ (допустимая длина разрыва). Участок, где $A(t) = \text{false}$ в течение времени $< g$, не закрывает текущее событие. Формально, если обозначить $t_{\text{last good}}$ — момент последнего $A(t) = \text{true}$, то разрыв закрывается только если:

$$ t - t_{\text{last good}} > g $$

3.6. Итоговое правило

Событие $[t_{\text{start}}, t_{\text{end}}]$ добавляется в результат, если:

$$ t_{\text{end}} - t_{\text{start}} \ge m $$

где $m$ — минимальная длительность события.


4. Блок-схема

┌─────────────────────────────────────────────────────────────┐
│                     ВХОДНЫЕ ДАННЫЕ                          │
│  Показания датчиков за период: воздух, режим бурения,       │
│  глубина, вращение, подача и т.д.                           │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│                    ПРОХОД 1: СТРОГИЙ                        │
│                                                             │
│  • Основные правила определения бурения                     │
│  • Жёсткие пороги                                           │
│  • Результат: только 100% надёжные события E₁               │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│              Есть ли между событиями промежутки?            │
│           (длительность ≥ минимальной)                      │
└─────────────────────────────────────────────────────────────┘
                            │
              ┌─────────────┴─────────────┐
              │ НЕТ                       │ ДА
              ▼                           ▼
       ┌───────────┐         ┌───────────────────────────────┐
       │  КОНЕЦ    │         │  ПРОХОД 2: МЯГКИЙ             │
       └───────────┘         │                               │
                             │  Для каждой пары (eᵢ, eᵢ₊₁):  │
                             │    1. Вычислить эталоны       │
                             │       r_air, r_work           │
                             │    2. Пройти по промежутку    │
                             │       между ними              │
                             │    3. Найти участки, где оба  │
                             │       датчика в дельте        │
                             │    4. Склеить короткие        │
                             │       разрывы (≤ g)           │
                             │    5. Отфильтровать           │
                             │       короткие (≤ m)          │
                             └───────────────────────────────┘
                                          │
                                          ▼
                             ┌───────────────────────────────┐
                             │  Добавить найденные события   │
                             │  к результату                 │
                             └───────────────────────────────┘
                                          │
                                          ▼
                             ┌───────────────────────────────┐
                             │  ИТОГ: E₁ ∪ E₂                │
                             │  Высокая точность + высокая   │
                             │  полнота                      │
                             └───────────────────────────────┘

5. Почему это работает

5.1. Устойчивость эталонов

Медиана и мода — робастные оценки. Если в эталонном событии 5% значений шумовые, они не смещают оценку. Обычное среднее сместилось бы.

5.2. Контекстная адаптация

Эталон вычисляется по конкретной установке и конкретному периоду. Если на одной буровой воздух держится на 6.2 бар, а на другой — на 5.5 бар, каждая будет искать по «своему» эталону. Никаких универсальных порогов, которые не подходят ни к одной машине.

5.3. Локальность поиска

Поиск ведётся только в промежутках между подтверждёнными событиями. Это исключает появление событий там, где их в принципе быть не может (вне смены, в период простоя).

5.4. Терпимость к сбоям

Порог $g$ позволяет игнорировать короткие «дёргания» датчиков. Без него любая одиночная шумовая точка разбивала бы событие на части.


6. Параметры метода

Параметр Обозначение Смысл Значение в отчёте
Допуск по воздуху $\Delta_{\text{air}}$ Насколько давление может отличаться от эталона 1.0 бар
Допуск по режиму бурения $\Delta_{\text{work}}$ Насколько режим может отличаться от эталона 0.1
Минимум точек для эталона $n_{\min}$ Иначе эталон ненадёжен 5
Допустимый разрыв $g$ Склейка коротких сбоев 60 сек
Минимальная длительность $m$ Отсечение ложных срабатываний 60 сек

7. Сравнение с классическими алгоритмами

7.1. Детектор границ Кэнни (Canny, 1986)

Аспект Кэнни Наш метод
Что ищет Границы на изображении События на временном ряду
Два порога Высокий и низкий Строгий и мягкий
Связь слабых с сильными Через связность пикселей Через промежуток между событиями
Эталоны Фиксированные пороги Адаптивные, из подтверждённых событий

Отличие: у Кэнни пороги фиксированные, у нас — вычисляются адаптивно.

7.2. Разрастание областей от семян (Adams & Bischof, 1994)

Аспект Seed Region Growing Наш метод
Семена Вручную или автоматически События первого прохода
Критерий роста Однородность с семенем Попадание в дельту эталона
Направление От семени наружу По всему промежутку между событиями

Сходство: обе схемы используют уже подтверждённые объекты как опору для расширения.

7.3. Самообучение с псевдоразметкой (Yarowsky, 1995; Lee, 2013)

Аспект Self-Training Наш метод
Разметка Модель размечает уверенные примеры Алгоритм находит уверенные события
Обучение На псевдоразметке По эталонам из псевдоразметки
Итерации Много Два прохода

Сходство: используем результат первого прохода как опору для второго.


8. Применение в отчёте

8.1. Что берётся в качестве эталонных датчиков

В отчёте 131 для постобработки используются два датчика:

  • Давление воздуха — стабильное плато, надёжный сигнал;
  • Режим бурения — дискретный или аналоговый, самый точный индикатор.

Их сочетание даёт высокую специфичность: ложное срабатывание возможно только если оба датчика одновременно оказались в дельте, что маловероятно при простое.

8.2. Что не берётся

  • Глубина — используется в основной логике, в постобработке играет вспомогательную роль.
  • Давление вращения — шумное, в постобработке не участвует.
  • Скорость подачи — очень шумная, для эталонов не годится.

8.3. Последовательность работы

  1. Основная логика (V1 или V2) находит все события строгими методами.
  2. Постобработка проходит по парам соседних событий.
  3. Для каждой пары вычисляются эталоны по воздуху и режиму бурения.
  4. В промежутке ищутся участки, где оба датчика в дельте.
  5. Короткие разрывы внутри участков склеиваются.
  6. Участки короче минимальной длительности отбрасываются.
  7. Остальные добавляются в отчёт как новые события.

9. Ограничения метода

  1. Зависимость от эталонов. Если эталонные события сами найдены неверно, второй проход тоже будет ошибаться.
  2. Не работает на первом событии. Для самого первого события нет «левого» соседа — постобработка его не рассматривает.
  3. Не работает на последнем событии. То же самое справа.
  4. Промежутки меньше минимальной длительности пропускаются. Если между событиями меньше $m$, поиск не ведётся.
  5. Требует двух надёжных датчиков. Если хотя бы один отсутствует, постобработка не запускается.

10. Возможные улучшения

  1. Адаптивные допуски. Вычислять $\Delta_k$ по разбросу значений внутри эталонных событий: $\Delta_k = \alpha \cdot \sigma_k$, где $\sigma_k$ — стандартное отклонение внутри эталонов.
  2. Постобработка с обоих концов. Добавить поиск событий до первого и после последнего эталонного.
  3. Многодатчиковое расширение. Включить в критерий глубину как третий голос.
  4. Итеративное уточнение. После добавления новых событий повторить проход, используя их как эталоны.

11. Литература

  1. Canny, J. (1986). A Computational Approach to Edge Detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 8(6), 679–698.
  2. Adams, R., & Bischof, L. (1994). Seeded Region Growing. IEEE Transactions on Pattern Analysis and Machine Intelligence, 16(6), 641–647.
  3. Yarowsky, D. (1995). Unsupervised Word Sense Disambiguation Rivaling Supervised Methods. Proceedings of the 33rd Annual Meeting on Association for Computational Linguistics, pp. 189–196.
  4. Lee, D.-H. (2013). Pseudo-Label: The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks. ICML Workshop on Representation Learning.
  5. Gonzalez, R. C., & Woods, R. E. (2018). Digital Image Processing (4th ed.). Pearson. — главы о пороговой обработке и выделении границ.
  6. Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer. — главы о робастных оценках и полуавтоматической разметке.

Документ подготовлен для внутреннего использования. При внедрении на других объектах рекомендуется пересмотреть значения допусков и порогов — они могут отличаться в зависимости от типа буровой установки и характеристик датчиков.