Fleetrun
Hecterra
NimBus
Другие приложения
Wialon для Android/iOS
Logistics
Wialon Local
Wialon Hosting
WiaTag
Configurator
LeaseControl
Содержание
Параметр датчика
  • sensors
  • sensor_parameters

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

Параметры могут иметь самые разные наименования, которые закладываются в конфигурации оборудования — например, param199, param240, TEMP, pwr_int, gsm, can6 и многие другие. Как правило, узнать, какие параметры используются и за что они отвечают, можно в спецификации оборудования. Также на вкладке Сообщения можно запросить сообщения от объекта и в соответствующей графе просмотреть доступные параметры.

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

Один и тот же параметр может использоваться для создания любого количества датчиков. Максимально разрешенное количество датчиков можно посмотреть в настройках пользователя на вкладке Учетная запись.

Виртуальные параметры

Некоторые параметры определены в системе по умолчанию и подходят практически для любого типа оборудования:

speed

скорость движения

altitude

высота над уровнем моря

sats

количество спутников

course

курс (направление движения)

lat

географическая широта

lon

географическая долгота

time

UNIX-время сообщения

regtime

время регистрации сообщения на сервере

Некоторые редкие типы оборудования могут не поддерживать какие-либо из этих параметров — например, высоту или скорость.

Параметры входов и выходов

В системе зарезервировано 32 цифровых входа и выхода. Они задаются следующим образом:

inN

цифровой вход, где N — номер входа

outN

цифровой выход, где N — номер выхода

adcN

аналоговый вход, где N — номер входа

Например, adc8 — это параметр, фиксирующий значения с восьмого аналогового входа.

Обычно данные по цифровым входам/выходам представлены в сообщениях в следующем формате: I/O = 0/0, где I — вход (input), O — выход (output). Если I/O = 0/0, все биты (входы/выходы) не активны. Если что-либо из этого не 0, значит, какой-то вход (I) или выход (O) активирован. Чтобы определить, какой именно, нужно шестнадцатеричное число преобразовать в двоичное и по нему определить номер бита.

Допустим, в месте, где было включено зажигание, мы получили сообщение с параметром I/O = 10/0. Чтобы получить отсюда номер бита (входа), в котором отображается значение датчика, в калькуляторе в режиме шестнадцатеричных чисел (HEX) нужно ввести полученное значение, то есть 10, а затем переключиться в двоичный режим (BIN). Мы получим новое число — 10000. Теперь необходимо посчитать, в какой позиции появилась единица. Счет необходимо вести справа налево. В нашем случае единица стоит в пятой позиции, значит, датчик зажигания подключен к пятому порту, а так как изменившаяся цифра стоит до дроби (I/O), следовательно, речь идет о входе. Таким образом, мы получаем наименование параметра — in5 (цифровой вход 5).

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

Константный параметр

Кроме того, можно создать виртуальный датчик на основе параметра типа constN, где N — любое число. Датчик, созданный по этому параметру, всегда возвращает N. Например, const10, const-8.5.

Такой датчик может использоваться как самостоятельно (удобен в графиках для визуального обозначения какой-то критической отметки), так и для создания виртуальных датчиков при помощи системы валидации, а также в выражениях.

Параметры в виде выражений

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

  • параметры в текущем сообщении (adc1in1 и т.п.);

  • параметры из предыдущего сообщения (перед ними нужно ставить знак #, например, #adc1);

  • побитовый контроль параметра (param199:3 и т.п.);

  • имена датчиков (их нужно заключать в квадратные скобки, например, [Уровень топлива]);

  • константные числа (const10const-4.54 и т.п.);

  • знаки математических операций:

+сложение
вычитание
умножение
/деление
^возведение в степень
( )скобки приоритета
|проверка наличия значения
:операция преобразования

Например, ^const2 — возвести в квадрат, ^const0.5 — извлечь квадратный корень.

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

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

Благодаря выражениям можно создавать самые разнообразные датчики, отвечающие любым потребностям и поставленным задачам.

Пример 1: создание датчика скорости по координатам

Параметр для датчика скорости по координатам может выглядеть так:

((lat-#lat)||const2+(lon-#lon)||const2)||const0.5/(time-#time)*const200000

Расшифровка:

Скорость вычисляется по формуле расстояние, деленное на время. Для вычисления расстояния применяется теорема Пифагора. Получается разница широты в соседних сообщениях, возведенная в квадрат, плюс разница долготы в соседних сообщениях, возведенная в квадрат, и из этой суммы извлекается квадратный корень. Полученный результат и есть расстояние (в градусах). Оно делится на разницу времени в соседних сообщениях. Таким образом, получается скорость, выраженная в градусах в секунду. Для перевода в километры в час нужно применить коэффициент перевода градусов в километры на разных широтах. Он может отличаться в зависимости от расположения. В примере выше приведен коэффициент для Москвы, который равен 200 000.

Для расчета коэффициента используется следующая формула:


111321*cos(55.75583)/1000*3600=225513.52


где 111 321  —  длина дуги параллели в 1° по долготе на экваторе, м;

55.75583  —  широта Москвы в десятичном формате.

При необходимости рассчитать коэффициент для другого места подставьте в формуле его широту в десятичном формате, не меняя остальные значения.

Если при этом имеется датчик зажигания, то параметр можно задать так:

((lat-#lat)||const2+(lon-#lon)||const2)||const0.5/(time-#time)*const200000*[Имя датчика зажигания]

Такой датчик можно использовать только в отчетах (не в онлайн-уведомлениях), так как для него требуются параметры из предыдущего сообщения.

Пример 2: датчик относительных моточасов

Для получения данных о реальных моточасах нужно создать два датчика:

  • датчик относительных моточасов;
  • датчик коэффициент моточасов в зависимости от оборотов двигателя.

Создаем датчик с типом Относительные моточасы и параметром:

(time-#time)*[Имя датчика коэффициента]/const3600

Т.е. параметр представляет собой разницу во времени между соседними сообщениями, умноженную на коэффициент интенсивности работы и разделенную на 3600. Деление на 3600 необходимо, чтобы перевести секунды в часы.

Датчик коэффициента, который будет определять интенсивность работы оборудования в зависимости от оборотов двигателя, создаем по следующей схеме:

Сначала создаем датчик, с помощью которого будем высчитывать коэффициент моточасов:

  • 1 минута работы при 2000 об/мин соответствуют 90 секундам моточасов => коэффициент 1,5.
  • 1 минута работы при 1500 об/мин соответствую 60 секундам моточасов => коэффициент 1.
  • 1 минута работы при 1000 об/мин соответствуют 40 секундам моточасов => коэффициент 0.67.
  • 1 минута работы при 500 об/мин соответствуют 20 секундам моточасов => коэффициент 0.33.

Допустим, параметр param1 шлет значение оборотов двигателя. Тогда параметр датчика коэффициента будет такой:

(param1+#param1)/const2

Т.е. этот параметр представляет собой среднее арифметическое оборотов двигателя за интервал между двумя соседними сообщениями.

Чтобы получить из оборотов коэффициент, нужно применить таблицу преобразований:

  • x=500 y=0.33
  • x=1000 y=0.67
  • x=1500 y=1
  • x=2000 y=1.5

Такие датчики можно использовать только в отчетах (не в счетчиках и онлайн-уведомлениях), так как для них требуются параметры из предыдущего сообщения.

Пример 3: проверка наличия значения

На автомобиле установлено оборудование, которое присылает какой-либо параметр (например, param1). Затем данное оборудование сломалось и было установлено новое. Новое оборудование присылает те же самые данные только в другом параметре (например, param2). Чтобы исключить потерю данных при генерации отчета, в поле ввода параметров при создании датчика необходимо использовать проверку наличия значения. Старое оборудование отработало на автомобиле в течение декабря, новое — в течение января, а отчет необходимо получить за два этих месяца. Тогда, если при вводе параметров была применена проверка наличия значения (указано в параметрах датчика param1|param2), то система будет брать значение из параметра param1, а если значение param1 невалидно (например, оборудование отсутствует), то из параметра param2. Другими словами, при использовании проверки наличия значения системой берется в расчет первое валидное значение параметра.

param1|param2

Не работает с цифровыми датчиками.

Текстовые параметры

Как правило, данные параметров являются числовыми, но в некоторых случаях устройство может присылать в параметре текст. Это может быть, например, название какого-либо статуса (служебное/личное), состояние (свободен/занят, on/off), время, прошедшее с какого-то события, и др.

Датчики с текстовыми параметрами не требуют настройки таблиц расчета. Текстовые данные представляются в том виде, в котором они пришли.

Текстовые данные могут показываться:

Преобразование параметров

Операция преобразования может применяться только к параметрам, поступающим непосредственно от оборудования. Случаи применения описаны ниже.

Побитовый контроль параметра

Побитовый контроль параметра позволяет контролировать не весь параметр в целом, а конкретный бит. Например, чтобы контролировать третий бит параметра param199 после его названия нужно поставить двоеточие и номер бита.

param199:3

Это удобно, если устройство через один параметр показывает множество разнообразных данных: например, первый бит соответствует состоянию сигнализации (вкл/выкл), второй — состоянию водительской двери (открыта/закрыта), третий — состоянию фар и т. д. Таким образом, при помощи побитового контроля параметра можно на основе одного параметра создать несколько различных датчиков.

Параметры типа double при побитовом контроле автоматически приводятся к int, после чего выделяется бит.

Советуем напрямую не обращаться к биту выше 53-его. Если это необходимо, можно придерживаться следующей схемы:

  1. Создайте датчик, в котором приходит нужный параметр. Например, Датчик1.

  2. Создайте второй датчик. Например, Датчик2.

  3. В качестве параметра второго датчика укажите формулу [Датчик1]/const4294967296. Таким образом, произойдет смещение на 4 байта вправо.

Преобразование текстовых параметров

Если в формуле датчика встречается текстовый параметр, то он преобразуется в 53-битное целое число. Указать систему счисления можно через двоеточие (по умолчанию считается в десятичной системе). Допустим, в параметр text_param пришло значение 100, тогда

text_param = 100
text_param:10 = 100
text_param:16 = 256
text_param:2 = 4

Определение номера дня в году

Для определения номера дня в году (относительно 1 января) необходимо указать после двоеточия d. Например, для 28 марта 2017 года в 11:00:00 (UTC) UNIX-время соответствует значению 1490698800. Следовательно,

time = 1490698800
time:d = 87

Если вы заметили ошибку в тексте, пожалуйста, выделите её и нажмите Ctrl+Enter.
Спасибо за ваш отзыв!
Сообщить об ошибке
Текст с ошибкой Комментарий
Максимум 500 символов