Пример использования универсального сумматора
Представим задачу:
Клиенту требуется пользовательский отчет с расширенными данными о моточасах объекта, где будут дополнительно учитываться обороты с 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".
Если все действия выполнены верно, при запросе отчета мы увидим искомые показатели по моточасам: