При детектировании заправок используются обработанные данные (на этапах Подготовка данных и Фильтрация).
Многоточие (...) заменяет Свойства объекта → Датчики → Свойства ДУТ → Рассчитывать данные по датчику при указании путей к опциям.
Данные опции и ситуации тесно связаны с данным детектированием:
- Опция: Минимальный объем заправки;
- Опция: Искать заправки только при остановках;
- Опция: Рассчитывать объем заправки по сырым данным;
- Ситуация: как детектируется заправка?
Минимальный объем заправки
... → Базовые настройки → «Минимальный объем заправки»
Данная опция позволяет исключить ложные заправки, поскольку в процессе движения возможны ложные показания подъемов уровня топлива.
Искать заправки только при остановке
... → Расширенные настройки → Настройки заправки → «Искать заправки только при остановке»
В нормальных условиях транспортные средства заправляют при остановках. Данная опция сужает поиск заправок лишь на остановки/стоянки. Кроме того, если на вкладке Дополнительно указан максимальный интервал между сообщениями и он был превышен, то на этом интервале может быть определена заправка.
Рассчитывать объем заправки по сырым данным
... → Расширенные настройки → Настройки заправки → «Рассчитывать объем заправки по сырым данным»
При включенной фильтрации возможны искажения начального и конечного уровней топлива. Для того, чтобы исключить погрешности, при расчете объема заправки используются данные, не прошедшие фильтрацию. Эта опция применяется только тогда, когда значение до применения фильтрации превышает значение, полученное в результате фильтрации.
Ситуация: как детектируется заправка?
Временные границы заправки и ее объем
Совершается заправка.
Пусть объем топлива в текущем сообщении будет Vтекущ, объем топлива в предыдущем сообщении – Vпред. Если разница d для текущего сообщения (= Vтекущ - Vпред) будет положительной, то данное сообщение будет считаться начальным сообщением заправки.
Проходит время. Близок конец заправки. Когда для какого-то сообщения величина d будет отрицательной (т. е. объем топлива в текущем сообщении, меньше объема топлива в предыдущем), данное сообщение будет считаться конечным сообщением заправки.
Если уровень топлива остается неизменным на протяжении времени, указанного в параметре Таймаут для разделения заправок в настройках ДУТ, то заправка также будет считаться завершенной.
Объем заправки равен Vконеч - Vнач (разница уровней топлива между конечным и начальным сообщениями заправки).
Если включена опция Рассчитывать объем заправки по сырым данным, используются значения максимального (Vмакс) и минимального объема топлива (Vмин) на интервале заправки. Объем заправки будет равен Vмакс - Vмин.
Алгоритм расчета времени заправки
Теперь ищется момент совершения заправки.
Итеративно для каждого сообщения, лежащего в границах интервала заправки (исключаем последнее сообщение), ищется дельта со следующим сообщением d=Vслед - Vтекущ, показывающая величину роста топлива между текущим и следующим сообщениями.
Время сообщения, чья дельта больше остальных дельт, считается временем заправки (другими словами, выбирается левое сообщение из пары сообщений, чья дельта больше остальных).
Время (момент времени) заправки рассчитывается в каждой конкретной ситуации динамически на основании имеющихся данных от датчиков.
Определение заправок в таблице «Движение топлива»
Таблица Движение топлива определяет топливную активность (заправки, сливы и интервалы работы счетчика) объекта, по которому выполняется отчет, а также объектов, которые находились рядом с ним. Следующий алгоритм объясняет принцип, по которому система определяет, какому из находившихся рядом объектов было выдано топливо.
Интервалы выдачи и получения топлива считаются связанными, если время заправки получившего топливо объекта попало в интервал работы счетчика объекта, его раздававшего (см. рисунок).
Если такого совпадения не было, то алгоритм ищет пересечения всего интервала заправки объекта, получившего топливо, с интервалами работы счетчика объекта, его раздававшего, и выбирает ближайший из них (см. рисунок).