Параметр датчика можно указать в виде составного выражения. Благодаря таким параметрам можно создавать самые разные датчики, отвечающие любым потребностям и поставленным задачам. В выражении можно использовать:
- параметры из последнего сообщения (adc1, in1 и т. п.);
- параметры из предыдущего сообщения (перед ними необходимо ставить знак #, например, #adc1);
- побитовый контроль параметра (param199:3 и т. п.);
- имена датчиков (их необходимо указывать в квадратных скобках, например, [Уровень топлива]);
- константные параметры (const10, const-4.54 и т. п.);
- знаки математических операций, приведенные ниже.
Знак | Операция |
---|---|
+ | сложение |
− | вычитание |
∗ | умножение |
/ | деление |
^ | возведение в степень (например, ^const2 — возвести в квадрат, ^const0.5 — извлечь квадратный корень) |
( ) | скобки приоритета (например, в выражении const1.5*(param1−#param1) скобки указывают на то, что вычитание должно выполняться перед умножением) |
| | |
: | преобразование параметра |
Параметры из предыдущего сообщения недоступны:
- для датчика Частный режим и его валидатора,
- для датчика Назначение водителя и его валидатора,
- для датчиков в уведомлениях,
- при трассировке графиков,
- ретрансляции датчиков.
Значения датчиков рассчитываются в следующем порядке:
- вычисление выражения в поле Параметр,
- преобразование значения по таблице расчета (если настроена),
- валидация (если настроена).
Параметр датчика, определяющего скорость по координатам
В этом разделе описывается, как подготовить формулу для параметра датчика, который позволяет определять скорость объекта по его координатам. Датчик с этим параметром может быть полезен, если трекер не присылает значение скорости, а только координаты.
Готовая формула указывается в поле Параметр создаваемого датчика. Тип датчика должен быть Произвольный.
Такой датчик можно использовать только в отчетах (не в онлайн-уведомлениях), так как для него требуются параметры из предыдущего сообщения.
Ниже приведен пример готовой формулы для Вильнюса, а также этапы для применения формулы. В ее основе скорость рассчитывается как расстояние, деленное на время.
(((lat-#lat)*const111.1365)^const2+((lon-#lon)*const64.3541)^const2)^const0.5/((time-#time)/const3600)
Действия по вычислению скорости по этой формуле можно разделить на 3 этапа:
- Вычисление коэффициентов для перевода значений широты и долготы в километры с учетом места расположения объекта.
- Вычисление расстояния по теореме Пифагора.
- Итоговое вычисление скорости с использованием данных, полученных на 2 шаге.
Вычисление коэффициентов для значений lat и lon
Значения широты (lat) и долготы (lon) необходимо перевести из градусов в километры. Для этого необходимо рассчитать коэффициенты. Коэффициент для значения долготы зависит от места.
- Широта (lat). Расстояние, покрываемое 1 градусом широты, отличается незначительно от северного до южного полюса: от 110.579 километров на экваторе до 111.694 километров на полюсах. Для упрощения расчетов можно использовать среднее значение: 110.579+111.694)/2=111.1365.
- Долгота (lon). Расстояние, покрываемое 1 градусом долготы, значительно отличается от северного до южного полюса: от 0 километров на полюсах до 111.321 километров на экваторе. Это расстояние вычисляется по формуле 111.321*cos(lat). Вильнюс расположен на широте 54.6833 градусов (в десятичном формате), поэтому получаем: 111.321*cos(54.6833)=64.3541.
Если нужно рассчитать коэффициент для другого места, подставьте его широту в формулу, не меняя остальные значения.
Также можно создать таблицу расчета, автоматически вычисляющую значение косинуса для разных широт. В таком случае будет использоваться следующая формула:
(((lat-#lat)*const111.1365)^const2+((lon-#lon)*const111.321*[Датчик вычисления косинуса широты])^const2)^const0.5/((time-#time)/const3600)
Вычисление расстояния по теореме Пифагора
При вычислении расстояния по теореме Пифагора выполняются следующие действия:
- Вычислить разницу между значениями широты из текущего и предыдущего сообщения в километрах, возвести в квадрат.
- Вычислить разницу между значениями широты из текущего и предыдущего сообщения в километрах, возвести в квадрат.
- Сложить эти два значения.
- Извлечь квадратный корень из суммы, чтобы получить расстояние в километрах.
Итоговое вычисление скорости
Для вычисления скорости с использованием полученного значения расстояния выполняются следующие действия:
- Преобразовать разницу во времени между текущим и предыдущим сообщением из секунд в часы. Для этого необходимо разделить количество секунд на коэффициент 3600.
- Разделить расстояние на полученное значение.
Добавление датчика зажигания в формулу (опционально)
Если для объекта настроен датчик зажигания, то в формулу можно добавить условие нулевого значения при выключенном зажигании. Это позволит избежать учета ошибочного изменения координат во время стоянок. Для этого выражение можно указать в следующем виде:
(((lat-#lat)*const111.1365)^const2+((lon-#lon)*const64.3541)^const2)^const0.5/((time-#time)/const3600)*[Имя датчика зажигания]
Результат
Полученная скорость выражается в километрах в час. Этот метод показывает среднюю скорость, необходимую для перемещения от одной точки к другой за время между двумя сообщениями, а не мгновенную скорость, как это делают трекеры.
Параметр датчика относительных моточасов
Для получения данных о реальных моточасах необходимо создать два датчика:
- датчик коэффициента моточасов (определяет интенсивность работы оборудования в зависимости от оборотов двигателя);
- датчик относительных моточасов.
Чтобы создать датчик коэффициента моточасов, выполните следующие шаги:
- Нажмите на Создать.
- Укажите имя датчика.
- В качестве типа выберите Произвольный датчик.
- Укажите параметр датчика в виде выражения (param1+#param1)/const2, где param1 — параметр, присылающий значение оборотов двигателя. Параметр датчика коэффициента представляет собой среднее арифметическое оборотов двигателя за интервал между двумя соседними сообщениями.
В таблице расчета включите пары XY и настройте их следующим образом:
X Y Пояснение 500
0.33
Одна минута работы при 500 об/мин соответствуют 20 секундам моточасов, значит, коэффициент равен 0.33.
1000
0.67
Одна минута работы при 1000 об/мин соответствуют 40 секундам моточасов, значит, коэффициент равен 0.67.
1500
1
Одна минута работы при 1500 об/мин соответствую 60 секундам моточасов, значит, коэффициент равен 1.
2000
1.5
Одна минута работы при 2000 об/мин соответствуют 90 секундам моточасов, значит, коэффициент равен 1,5.
- Нажмите на кнопку Генерировать.
- Нажмите ОК.
Далее создайте датчик типа Относительные моточасы и укажите для него следующий параметр:
(time-#time)*[Имя датчика коэффициента]/const3600
Параметр представляет собой разницу во времени между соседними сообщениями, умноженную на коэффициент интенсивности работы и разделенную на 3600. Деление на 3600 необходимо, чтобы перевести секунды в часы.
Проверка наличия значения
Проверка наличия значения используется для исключения потери данных при замене оборудования. Для применения этой операции в поле Параметр необходимо указать используемые параметры через вертикальную черту (|). Система учитывает первое валидное значение из указанных параметров.
Пример. В течение одного месяца на объекте было установлено оборудование, присылающее данные в параметре param1, а в течение второго месяца использовалось другое оборудование, присылающее те же данные в параметре param2. Чтобы исключить потерю данных, при выполнении отчета за два месяца в свойствах датчика в поле Параметр необходимо указать param1|param2. В таком случае система берет значение из параметра param1, а если оно невалидно, — из param2.
Вместо параметра можно также использовать значения других датчиков в формате [Имя датчика1]|[Имя датчика2].
Проверка наличия значения не работает с параметрами цифровых входов, а также с датчиками, созданными на их основе. Например, функция не работает, если в поле Параметр указано in1|in2.