Fleetrun
Hecterra
NimBus
Другие приложения
Wialon для Android/iOS
Logistics
Wialon Local
Wialon Hosting
WiaTag
Configurator
LeaseControl
Содержание
Примеры использования побитового контроля параметра
  • hardware

Некоторые устройства позволяют передавать пользовательские данные. В Wialon эти данные по умолчанию регистрируются как целые беззнаковые числа вне зависимости от того, в каком виде их передает устройство. Для того чтобы получать в отчетах и сообщениях в Wialon «понятные значения», то есть такие, какими их отправляет устройство, можно воспользоваться методом побитового контроля параметра. В этой инструкции описано три примера использования такого метода для работы с исходными данными. 

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

Пример 1

Рассмотрим случай, когда объект отправляет данные, например, в параметре user_d1 в виде двух двухбайтных целых беззнаковых чисел. В Wialon эти данные регистрируются в виде user_d1=2646793773

  1. Переведите число, получаемое в Wialon, в двоичную систему: 2646793773 → 10011101110000101101111000101101. 

    В Wialon биты исчисляются с единицы.

  2.  Разделите полученное число на два (по количеству двухбайтных чисел): 1101111000101101 и 1001110111000010.

  3. В Wialon в свойствах объекта создайте произвольный датчик numeral_1. В поле Параметр укажите следующую формулу:

    user_d1:1*const1+ user_d1:2*const2+ user_d1:3*const4+ user_d1:4*const8+ user_d1:5*const16+ user_d1:6*const32+ user_d1:7*const64+ user_d1:8*const128+ user_d1:9*const256+ user_d1:10*const512+ user_d1:11*const1024+ user_d1:12*const2048+ user_d1:13*const4096+ user_d1:14*const8192+ user_d1:15*const16384+ user_d1:16*const32768



  4. Создайте произвольный датчик numeral_2. В поле Параметр укажите следующую формулу:

    user_d1:17*const1+ user_d1:18*const2+ user_d1:19*const4+ user_d1:20*const8+ user_d1:21*const16+ user_d1:22*const32+ user_d1:23*const64+ user_d1:24*const128+ user_d1:25*const256+ user_d1:26*const512+ user_d1:27*const1024+ user_d1:28*const2048+ user_d1:29*const4096+ user_d1:30*const8192+ user_d1:31*const16384+ user_d1:32*const32768



В результате в Wialon в отчетах и сообщениях вместо user_d1=2646793773 показываются значения двух двухбайтных датчиков: numeral_1=56877 и numeral_2=40386.

Пример 2

В этом примере рассмотрим случай, когда объект отправляет данные в виде числа с плавающей запятой (float). В Wialon они регистрируются в виде user_d3=1017282565.

  1. Переведите число, получаемое в Wialon, в двоичную систему: 1017282565 → 111100101000101000000000000101. 
  2. В Wialon в свойствах объекта создайте произвольный датчик float. В параметрах датчика укажите следующую формулу:

    const-1^user_d3:32*const2^((user_d3:24*const1+user_d3:25*const2+user_d3:26*const4+user_d3:27*const8+user_d3:28*const16+user_d3:29*const32+user_d3:30*const64+user_d3:31*const128)-127)*const1+user_d3:1*const1+user_d3:2*const2+user_d3:3*const4+user_d3:4*const8+user_d3:5*const16+user_d3:6*const32+user_d3:7*const64+user_d3:8*const128+user_d3:9*const256+user_d3:10*const512+user_d3:11*const1024+user_d3:12*const2048+user_d3:13*const4096+user_d3:14*const8192+user_d3:15*const16384+user_d3:16*const32768+user_d3:17*const65536+user_d3:18*const131072+user_d3:19*const262144+user_d3:20*const524288+user_d3:21*const1048576+user_d3:22*const2097152+user_d3:23*const4194304)/const8388608)



    Формула для параметра датчика создается на основе формулы для пересчета в 32-битный формат F=(-1)S2(E-127)(1+M/223).

В результате в Wialon вместо user_d3=1017282565 показываются значения датчика float.

Пример 3

На примере устройства Teltonika FMT100 рассмотрим случай, когда в параметре io_258 регистрируются значения акселерометра по трем осям при превышении значений, заданных в устройстве. Данные этого параметра удобно использовать для работы с приложением Eco Driving. В Wialon данные регистрируются в виде io_258=932034904003. Необходимо привести значения к g.

На изображении ниже приведена структура параметра. 

Значения по осям знаковые. В Eco Driving используются только значения по осям Х и Y. По оси X в зависимости от знака определяется ускорение и торможение,  а по оси Y – боковое ускорение, которое мы будем использовать по модулю, поскольку для Eco Driving знак (лево/право) не учитывается. 

  1. В Wialon в свойствах объекта создайте произвольный датчик Accel_MAX. В поле Параметр укажите следующую формулу :

    (((io_258:48*const32768)-(io_258:33*const1+io_258:34*const2+io_258:35*const4+io_258:36*const8+io_258:37*const16+io_258:38*const32+io_258:39*const64+io_258:40*const128+io_258:41*const256+io_258:42*const512+io_258:43*const1024+io_258:44*const2048+io_258:45*const4096+io_258:46*const8192+io_258:47*const16384))*io_258:48)/const1000
    
    

  2. Создайте датчик Brk_MAX. В поле Параметр укажите следующую формулу :

    ((-(io_258:33*const1+io_258:34*const2+io_258:35*const4+io_258:36*const8+io_258:37*const16+io_258:38*const32+io_258:39*const64+io_258:40*const128+io_258:41*const256+io_258:42*const512+io_258:43*const1024+io_258:44*const2048+io_258:45*const4096+io_258:46*const8192+io_258:47*const16384))*(io_258:48-const1))/const1000



  3. Создайте датчик Crn_MAX. В поле Параметр укажите следующую формулу:


    (-(io_258:17*const1+io_258:18*const2+io_258:19*const4+io_258:20*const8+io_258:21*const16+io_258:22*const32+io_258:23*const64+io_258:24*const128+io_258:25*const256+io_258:26*const512+io_258:27*const1024+io_258:28*const2048+io_258:29*const4096+io_258:30*const8192+io_258:31*const16384))*(io_258:32-const1))/const1000+(((io_258:32*const32768)-(io_258:17*const1+io_258:18*const2+io_258:19*const4+io_258:20*const8+io_258:21*const16+io_258:22*const32+io_258:23*const64+io_258:24*const128+io_258:25*const256+io_258:26*const512+io_258:27*const1024+io_258:28*const2048+io_258:29*const4096+io_258:30*const8192+io_258:31*const16384))*io_258:32)/const1000
    
    



    Для оси Y отведено 2 байта. Номера битов в Wialon  — с 17 по 32. Поскольку значения берутся по модулю, формула немного длиннее предыдущих.

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

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