WOTLABPERFORMANCE DATA
РУКОВОДСТВО ПО ПРОСМОТРУ ЛОГОВ Вернуться в приложение
WOT LAB · РУКОВОДСТВО

Формулы и правила,
которым можно доверять.

Практическое руководство по созданию вычисляемых сигналов и анализу автомобильных CSV-логов.

01

Быстрый старт

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

Вычисляемый канал
  1. Откройте CSV-лог.
  2. Нажмите Formula или Ctrl/⌘+F.
  3. Задайте имя, единицу измерения и выражение.
  4. Нажмите Create channel.
Правило анализа
  1. Откройте Settings → Diagnostics.
  2. Выберите Configure diagnostic rules.
  3. Нажмите New rule.
  4. Настройте условия и запустите анализ повторно.
Что у них общегоВ обоих случаях доступны арифметика, параметры, обычные функции и оконные функции. Отличается только запись каналов: в вычисляемом канале используется название из лога, а в правиле — единое имя WOT Lab.
02

Общий язык выражений

Эти возможности доступны и в вычисляемых каналах, и в условиях правил.

Канал[Engine Speed (rpm)]Название канала в квадратных скобках
ПараметрMIN_RPMИмя из букв, цифр и знака _, не начиная с цифры
Число0.5 · .5 · 1e-3Обычная или показательная запись
Арифметика+ − * / % ^Обычный порядок действий; его можно менять скобками
Сравнение> >= < <= == !=Результат — 1, если условие верно, иначе 0
ЛогикаAND · OR · NOTОбъединение нескольких условий

Обычные функции

abs(x)модуль числа
min(a, b, …)наименьшее значение
max(a, b, …)наибольшее значение
avg(a, b, …)среднее аргументов
sqrt(x)квадратный корень
pow(x, y)x в степени y
clamp(x, min, max)ограничение диапазона
round(x)округление
floor(x)округление вниз
ceil(x)округление вверх
if(condition, yes, no)выбор по условию

Названия каналов должны совпадать с показанными в приложении. Деление на ноль и недостаток данных для расчёта дают неопределённое значение.

03

Вычисляемые каналы

Новый канал рассчитывается для каждого отсчёта исходного лога.

Как указать исходный канал

Поместите точное название из лога, включая пробелы и единицы измерения, в квадратные скобки: [Boost Pressure Actual (bar)]. Проще нажать нужный канал в правой части редактора — ссылка вставится автоматически.

Поля редактора формул

Channel name

Уникальное имя нового канала. На него могут ссылаться другие вычисляемые каналы.

Unit

Единица измерения для подписи на графике. Автоматического пересчёта единиц нет.

Expression

Выражение, которое рассчитывается для каждого отсчёта.

Reusable parameters

Именованные числовые значения. Например, BAR_TO_PSI = 14.5038.

Простой пример

Имя: Ошибка наддува
Единица: bar
Выражение: [Boost Pressure Target (bar)] - [Boost Pressure Actual (bar)]

Приложение запоминает созданные каналы и пытается восстановить их при открытии следующих логов. Если нужного исходного канала нет или его название отличается, вычислить результат не получится. Нельзя создавать замкнутые зависимости, когда каналы прямо или косвенно ссылаются друг на друга.

Оконные функции разрешеныВ выражении вычисляемого канала можно использовать lag, delta, moving_avg, moving_min, moving_max и moving_sum. Подробности приведены в разделе «Оконные функции».
Как изменить каналВыберите вычисляемый канал на графике и нажмите Edit selected либо значок карандаша рядом с ним в списке каналов. После сохранения приложение пересчитает и зависимые каналы.
04

Правила анализа лога

Правило находит непрерывные участки, в которых выполняются заданные условия.

Формулы работают и в правилах

В левой и правой частях условия можно использовать параметры, арифметику, обычные функции и все оконные функции. Например: moving_avg([boost.target] - [boost.actual], 10) > MAX_ERROR.

Как создать правило

  1. 1
    Откройте редактор

    Settings → Diagnostics → Configure diagnostic rules, затем нажмите New rule.

  2. 2
    Добавьте условия

    В режиме All conditions должны выполняться все условия, в Any condition — хотя бы одно.

  3. 3
    Задайте длительность

    Короткие участки отбрасываются по Duration, а близкие участки объединяются по Cooldown.

  4. 4
    Ограничьте область полного газа

    При включённом WOT area only учитываются только участки внутри найденных WOT-заездов.

  5. 5
    Запустите анализ

    После сохранения нажмите Re-run diagnostics, чтобы применить изменения к текущему логу.

Основные поля

Severity

Важность найденного события: информационное, предупреждение или критическое.

WOT area only

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

Duration, ms

Минимальное время непрерывного выполнения условий.

Cooldown, ms

Наибольший разрыв, при котором два участка объединяются.

Correlation window, ms

Промежуток для связывания близких по времени событий.

Parameters

Пороговые значения для условий. Имя меняется двойным щелчком.

Recommended channels

Каналы, которые полезно показать вместе с найденным событием.

Message / Possible causes

Описание результата и возможные причины проблемы.

Пример правила для области WOT

Название: Отставание наддува от цели
Только область WOT: включено

Условие 1:
  [boost.target] - [boost.actual]  >  MAX_ERROR
Условие 2:
  [engine.rpm]  >  MIN_RPM

Параметры:
  MAX_ERROR = 0.25
  MIN_RPM = 2500
Минимальная длительность = 200 мс
Объединять разрывы до 300 мс

Для подавления одиночных выбросов первое условие можно заменить на moving_avg([boost.target] - [boost.actual], 10) > MAX_ERROR. Если нужный канал не найден, правило не сможет проверить это условие.

Правила WOT зависят от найденных заездов.Если приложение не смогло определить ни одной области полного газа, правила с включённым WOT area only не выдадут событий.
05

Оконные функции

Общий набор функций для вычисляемых каналов и правил анализа.

Где их можно использовать

Все перечисленные ниже функции работают как в выражении вычисляемого канала, так и в левой или правой части условия диагностического правила.

N — количество отсчётов, а не время.При частоте 50 Гц окно из 10 отсчётов примерно равно 200 мс. Если записи сделаны с разными промежутками, фактическая длительность окна меняется. N должно быть целым числом от 1 до 10 000; вместо числа можно указать параметр.
ФункцияРезультатНачало лога
lag(expr, N)Значение выражения N отсчётов назад.Первые N значений не определены.
delta(expr, N)Текущее значение минус значение N отсчётов назад.Первые N значений не определены.
moving_avg(expr, N)Среднее по последним N отсчётам, включая текущий.Нужно полное окно без пропусков.
moving_min(expr, N)Наименьшее значение среди последних N отсчётов.Нужно полное окно без пропусков.
moving_max(expr, N)Наибольшее значение среди последних N отсчётов.Нужно полное окно без пропусков.
moving_sum(expr, N)Сумма последних N отсчётов.Нужно полное окно без пропусков.

В вычисляемом канале

// Сглаженное отклонение наддува за последние 10 отсчётов
moving_avg([Boost Target] - [Boost Actual], 10)

// Изменение оборотов относительно 5 отсчётов назад
delta([Engine Speed (rpm)], 5)

В условии правила

Левая часть:  moving_avg([boost.target] - [boost.actual], WINDOW)
Знак:         >
Правая часть: MAX_ERROR

Параметры: WINDOW = 10, MAX_ERROR = 0.25

Для lag и delta первые N строк не имеют достаточной истории. Для функций moving_* результат появляется после заполнения первого полного окна. Пропуск внутри окна делает результат этого окна неопределённым.

06

Почему названия каналов отличаются

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

Boost Pressure Actual (bar)сопоставление[boost.actual]

Вычисляемый канал обращается к точному названию столбца текущего файла. Правило анализа использует короткое единое имя WOT Lab. Обычно приложение находит соответствие автоматически.

Если выбран не тот столбец или название вашего логгера не распознано, откройте Settings → Diagnostics → Map channels или нажмите Map channels в редакторе правил и выберите соответствие вручную. В списке доступны как исходные, так и вычисляемые каналы: результат формулы можно связать с единым именем и использовать в диагностических правилах.

Единицы не пересчитываютсяПорог правила должен соответствовать единицам настоящего канала. Например, порог в bar нельзя без изменения применять к значению в kPa.
07

Готовые примеры

Замените названия в квадратных скобках на названия каналов своего лога.

НАДДУВ

Ошибка наддува

[Boost Target] - [Boost Actual]
ТОПЛИВО

Ошибка лямбды

[Lambda Actual] - [Lambda Target]
СГЛАЖИВАНИЕ

Сглаженный сигнал

moving_avg([Fuel Pressure Actual], 20)
ИЗМЕНЕНИЕ

Изменение за окно

delta([Engine Speed (rpm)], 5)
ОГРАНИЧЕНИЕ

Ограничение диапазона

clamp([Throttle Position], 0, 100)
УСЛОВИЕ

Условный сигнал

if([Engine Speed] > MIN_RPM, [Boost Actual], 0)