Пример использования универсального сумматора

Представим задачу:
Клиенту требуется пользовательский отчет с расширенными данными о моточасах объекта, где будут дополнительно учитываться обороты с CAN-шины автомобиля. Вывести нужно моточасы на холостом ходу (при оборотах менее 1200), моточасы в работе (обороты свыше 1200) и общие моточасы (по штатному датчику зажигания объекта).

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

Главным отличием универсального сумматора от подобных ему датчиков является возможность применения к входам произвольной математической формулы. Помимо простых арифметических действий доступны и логические операции:
Полный список операторов



Чтобы считать время, которое проходит между приходящими значениями оборотов, создадим "Счетчик времени" как универсальный датчик с Типом данных "Время от предыдущего пакета".


Далее рассмотрим на примере применение математической формулы, создав "Обороты менее 1200".

Настройка входов

В качестве источника в поле "Входы" указываем наш Счетчик времени и Обороты.


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

Формула

Для проверки условия нам понадобится логическая функция IIF :

iif(i2>0 and i2<1200,i1,0)

IIF – функция, которая получает одно из двух значений в зависимости от результата логического выражения и выглядит как:

IIF(expr, truepart, falsepart), где:

  • expr – Выражение для вычисления;
  • truepart – Значение, возвращаемое, если выражение имеет значение true;
  • falsepart – Значение, возвращаемое, если выражение равно false.

Чтобы учесть, что обороты приходят только при включенном зажигании и время нужно считать не всегда, учитываем что i2 должно не только быть меньше 1200, но и больше нуля.
Чтобы сразу считать время в часах вместо секунд, добавим тарировку из 3600 в 1.
Настройка датчика на этом завершена, при необходимости можно настроить дополнительные параметры такие как фильтрация и события.
По аналогии настраиваем второй датчик для оборотов, но уже свыше 1200.

Подключение датчика к конструктору отчетов

Для того, чтобы данный датчик можно было использовать в конструкторе отчетов, достаточно указать произвольный идентификатор в параметре "Идентификатор для Конструктора". В нашем случае это "lowspin".


Если все действия выполнены верно, при запросе отчета мы увидим искомые показатели по моточасам: