Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
cms:units:sensors:param [13/08/2019 17:09]
mary [Текстовые параметры] kmal
cms:units:sensors:param [14/07/2020 09:54] (текущий)
mary [Текстовые параметры]
Строка 2: Строка 2:
 ====== Параметр датчика ====== ====== Параметр датчика ======
  
-Параметр является обязательным [[props|свойством датчика]]. ​Как правило, на основе данных,​ приходящих в параметре, и базируется работа датчика+Параметр является обязательным [[props|свойством датчика]]. ​Датчики в системе работают,​ главным ​образом, на основе данных,​ приходящих в параметре.
  
-Параметры могут иметь самые разные наименования,​ которые закладываются в [[https://​gurtam.com/​ru/​gps-hardware/​auto|конфигурации оборудования]] ​— например, ​//param199////param240////TEMP////pwr_int////gsm////can6// и многие другие. Как правило,​ узнать,​ какие параметры используются и за что они отвечают,​ можно в спецификации оборудования. Также ​можно в [[user/​msg/​msg|панели сообщений]] запросить сообщения от объекта и в соответствующей графе просмотреть доступные параметры.  +Параметры могут иметь самые разные наименования,​ которые закладываются в [[https://​gurtam.com/​ru/​gps-hardware/​auto|конфигурации оборудования]]например, ​**param199****param240****TEMP****pwr_int****gsm****can6** и многие другие. Как правило,​ узнать,​ какие параметры используются и за что они отвечают,​ можно в спецификации оборудования. Также на вкладке **[[user/​msg/​msg|Сообщения]]** можно ​запросить сообщения от объекта и в соответствующем столбце увидеть доступные параметры. 
- +  
-Параметры из последнего сообщения объекта доступны для выбора в выпадающем списке при добавлении или редактировании датчика. Но даже если параметр отсутствует ​в выпадающем списке, его все равно ​можно ввести вручную.  +При ​[[props|добавлении или редактировании]] датчика в выпадающем списке можно выбрать параметры, которые когда-либо приходили в сообщениях от объекта. ​Если параметр отсутствует в выпадающем списке, его можно ​ввести вручную.
- +
-Один и тот же параметр ​может использоваться для ​создания ​любого количества датчиковМаксимально ​разрешенное количество датчиков можно ​посмотреть ​в настройках пользователя на вкладке «[[user/​set/​account|Учетная запись]]»+
  
 +Один и тот же параметр можно использовать для создания любого количества датчиков. Максимально разрешенное количество датчиков можно посмотреть в настройках пользователя на вкладке **[[user/​set/​account|Учетная запись]]**.
 ===== Виртуальные параметры =====  ===== Виртуальные параметры ===== 
  
Строка 23: Строка 22:
 ^**regtime**| время регистрации сообщения на сервере| ^**regtime**| время регистрации сообщения на сервере|
  
-:!: //​Примечание//​.\\ +:!: Некоторые редкие типы оборудования могут не поддерживать какие-либо из этих параметровнапример высоту или скорость. ​
-Некоторые редкие типы оборудования могут не поддерживать какие-либо из этих параметров ​— напримервысоту или скорость. ​+
  
 ===== Параметры входов и выходов ===== ===== Параметры входов и выходов =====
Строка 36: Строка 34:
 Например,​ **adc8** — это параметр,​ фиксирующий значения с восьмого аналогового входа.   Например,​ **adc8** — это параметр,​ фиксирующий значения с восьмого аналогового входа.  
  
-Обычно данные по цифровым входам/​выходам представлены в сообщениях в следующем формате: ​//I/O = 0/0//, где I — вход (input), O — выход (output). Если I/O = 0/0, все биты (входы/​выходы) не активны. Если что-либо из этого не 0, значит,​ какой-то вход (I) или выход (O) активирован. Чтобы определить,​ какой именно,​ нужно шестнадцатеричное число преобразовать в двоичное и по нему определить номер бита.+Обычно данные по цифровым входам/​выходам представлены в сообщениях в следующем формате: ​**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). +Допустим,​ в месте, где было включено зажигание,​ мы получили сообщение с параметром ​**I/O = 10/0**. Чтобы получить отсюда номер бита (входа),​ в котором отображается значение датчика,​ в калькуляторе в режиме шестнадцатеричных чисел (HEX) нужно ввести полученное значение,​ то есть 10, а затем переключиться в двоичный режим (BIN). Мы получим новое число — 10000. Теперь необходимо посчитать,​ в какой позиции появилась единица. Счет необходимо вести справа налево. В нашем случае единица стоит в пятой позиции,​ значит,​ датчик зажигания подключен к пятому порту, а так как изменившаяся цифра стоит до дроби (I/O), следовательно,​ речь идет о входе. Таким образом,​ мы получаем наименование параметра — **in5** (цифровой вход 5). 
  
-Для датчика также допускается указание наименования параметра в виде ​"in" ​или ​"out" ​для обозначения суммы всех входов и выходов,​ соответственно.+Для датчика также допускается указание наименования параметра в виде ​**in** или ​**out** для обозначения суммы всех входов и выходов,​ соответственно.
  
 ===== Константный параметр ===== ===== Константный параметр =====
Строка 51: Строка 49:
  
 Параметр при конфигурации датчика можно задавать составным выражением,​ где могут использоваться: ​ Параметр при конфигурации датчика можно задавать составным выражением,​ где могут использоваться: ​
-  * параметры в текущем сообщении (//adc1////in1// и т.п.);  +  * параметры в текущем сообщении (**adc1****in1** и т. п.);  
-  * параметры из предыдущего сообщения (перед ними нужно ставить знак #, например, ​//#adc1//); +  * параметры из предыдущего сообщения (перед ними нужно ставить знак #, например, ​**#adc1**); 
-  * побитовый контроль параметра (//param199:3// и т.п.); +  * побитовый контроль параметра (**param199:3** и т. п.); 
-  * имена датчиков (их нужно заключать в квадратные скобки,​ например, ​//[Уровень топлива]//);  +  * имена датчиков (их нужно заключать в квадратные скобки,​ например, ​**[Уровень топлива]**);  
-  * константные числа (//const10////const-4.54// и т.п.); ​+  * константные числа (**const10****const-4.54** и т. п.); 
   * знаки математических операций: ​   * знаки математических операций: ​
  
Строка 69: Строка 67:
 ^  ** : **  | [[cms/​units/​sensors/​param#​preobrazovanie_parametrov|операция преобразования]] |  ^  ** : **  | [[cms/​units/​sensors/​param#​preobrazovanie_parametrov|операция преобразования]] | 
  
-Например, ​//^const2// — возвести в квадрат, ​//^const0.5// — извлечь квадратный корень.+Например, ​**^const2** — возвести в квадрат, ​**^const0.5** — извлечь квадратный корень.
  
 :!: Если один из параметров,​ входящих в выражение,​ невалиден,​ невалидным является и его значение целиком. :!: Если один из параметров,​ входящих в выражение,​ невалиден,​ невалидным является и его значение целиком.
Строка 75: Строка 73:
 ===== ===== ===== =====
  
-:!: //​Примечание//​.\\  +:!: Параметры из предыдущего сообщения недоступны ​ ​для датчика **Частный режим** и его валидатора, ​в уведомлениях,​ при трассировке графиков и ретрансляции датчиков.
-Параметры из предыдущего сообщения недоступны в уведомлениях, ​а также ​при трассировке графиков. ​+
  
 Благодаря выражениям можно создавать самые разнообразные датчики,​ отвечающие любым потребностям и поставленным задачам. ​ Благодаря выражениям можно создавать самые разнообразные датчики,​ отвечающие любым потребностям и поставленным задачам. ​
Строка 88: Строка 85:
 </​code>​ </​code>​
  
-//Расшифровка:​//\\ +**Расшифровка:​**\\ 
-Скорость вычисляется по формуле ​"расстояние,​ деленное на время". Для вычисления расстояния применяется теорема Пифагора. Получается разница широты в соседних сообщениях,​ возведенная в квадрат,​ плюс разница долготы в соседних сообщениях,​ возведенная в квадрат,​ и из этой суммы извлекается квадратный корень. Полученный результат и есть расстояние (правда,​ в градусах). Оно делится на разницу времени в соседних сообщениях. Таким образом,​ получается расстояние,​ выраженное в градусах в секунду. Для перевода в привычные километры в час нужно применить коэффициент. Он может быть разным для различных мест. В примере выше приведен коэффициент для Москвы,​ который равен 200000. ​+Скорость вычисляется по формуле ​**расстояние,​ деленное на время**. Для вычисления расстояния применяется теорема Пифагора. Получается разница широты в соседних сообщениях,​ возведенная в квадрат,​ плюс разница долготы в соседних сообщениях,​ возведенная в квадрат,​ и из этой суммы извлекается квадратный корень. Полученный результат и есть расстояние (правда,​ в градусах). Оно делится на разницу времени в соседних сообщениях. Таким образом,​ получается расстояние,​ выраженное в градусах в секунду. Для перевода в привычные километры в час нужно применить коэффициент. Он может быть разным для различных мест. В примере выше приведен коэффициент для Москвы,​ который равен 200000. ​
  
 Если при этом имеется датчик зажигания,​ то параметр можно задать так: ​ Если при этом имеется датчик зажигания,​ то параметр можно задать так: ​
Строка 105: Строка 102:
   - датчик коэффициент моточасов в зависимости от оборотов двигателя. ​   - датчик коэффициент моточасов в зависимости от оборотов двигателя. ​
  
-Создаем датчик с типом ​"Относительные моточасы" ​и параметром: ​+Создаем датчик с типом ​**Относительные моточасы** и параметром: ​
  
 <​code>​ <​code>​
Строка 121: Строка 118:
   * 1 минута работы при 500 об/мин соответствуют 20 секундам моточасов => коэффициент 0.33.   * 1 минута работы при 500 об/мин соответствуют 20 секундам моточасов => коэффициент 0.33.
  
-Допустим,​ параметр ​//param1// шлет значение оборотов двигателя. Тогда параметр датчика коэффициента будет такой: ​+Допустим,​ параметр ​**param1** шлет значение оборотов двигателя. Тогда параметр датчика коэффициента будет такой: ​
  
 <​code>​ <​code>​
Строка 140: Строка 137:
 ==== Пример 3: проверка наличия значения ==== ==== Пример 3: проверка наличия значения ====
  
-На автомобиле установлено оборудование,​ которое присылает какой-либо параметр (например,​ param1). Затем данное оборудование сломалось и было установлено новое. Новое оборудование присылает те же самые данные только в другом параметре (например,​ param2). Чтобы исключить потерю данных при генерации отчета, ​ в поле ввода параметров при создании датчика необходимо использовать проверку наличия значения. Старое оборудование отработало на автомобиле в течение декабря,​ новое — в течение января,​ а отчет необходимо получить за два этих месяца. Тогда, если при вводе параметров была применена проверка наличия значения (указано в параметрах датчика ​"param1|param2"), то система будет брать значение из параметра ​"param1", а если значение ​"param1" ​невалидно (например,​ оборудование отсутствует),​ то из параметра ​"param2". Другими словами,​ при использовании проверки наличия значения системой берется в расчет первое валидное значение параметра.+На автомобиле установлено оборудование,​ которое присылает какой-либо параметр (например,​ param1). Затем данное оборудование сломалось и было установлено новое. Новое оборудование присылает те же самые данные только в другом параметре (например,​ param2). Чтобы исключить потерю данных при генерации отчета, ​ в поле ввода параметров при создании датчика необходимо использовать проверку наличия значения. Старое оборудование отработало на автомобиле в течение декабря,​ новое — в течение января,​ а отчет необходимо получить за два этих месяца. Тогда, если при вводе параметров была применена проверка наличия значения (указано в параметрах датчика ​**param1|param2**), то система будет брать значение из параметра ​**param1**, а если значение ​**param1** невалидно (например,​ оборудование отсутствует),​ то из параметра ​**param2**. Другими словами,​ при использовании проверки наличия значения системой берется в расчет первое валидное значение параметра.
  
 <​code>​ <​code>​
Строка 159: Строка 156:
   * в [[user/​tools/​player|проигрывателе треков]]; ​   * в [[user/​tools/​player|проигрывателе треков]]; ​
   * при [[user/​tools/​hittest|трассировке трека]]; ​   * при [[user/​tools/​hittest|трассировке трека]]; ​
-  * в таблице [[user/​reports/​tables/​tracing|«Трассировка датчика»]] в колонке ​"Форматированное значение"+  * в таблице ​**[[user/​reports/​tables/​tracing|Трассировка датчика]]** в колонке ​**Форматированное значение**
  
 ===== Преобразование параметров ===== ===== Преобразование параметров =====
Строка 167: Строка 164:
 **Побитовый контроль параметра** **Побитовый контроль параметра**
  
-Побитовый контроль параметра позволяет контролировать не весь параметр в целом, а конкретный бит. Например,​ чтобы контролировать третий бит параметра ​//param199// после его названия нужно поставить двоеточие и номер бита. ​+Побитовый контроль параметра позволяет контролировать не весь параметр в целом, а конкретный бит. Например,​ чтобы контролировать третий бит параметра ​**param199** после его названия нужно поставить двоеточие и номер бита. ​
  
 <​code>​ <​code>​
Строка 175: Строка 172:
 Это удобно,​ если устройство через один параметр показывает множество разнообразных данных:​ например,​ первый бит соответствует состоянию сигнализации (вкл/​выкл),​ второй — состоянию водительской двери (открыта/​закрыта),​ третий — состоянию фар и т. д. Таким образом,​ при помощи побитового контроля параметра можно на основе одного параметра создать несколько различных датчиков. ​ Это удобно,​ если устройство через один параметр показывает множество разнообразных данных:​ например,​ первый бит соответствует состоянию сигнализации (вкл/​выкл),​ второй — состоянию водительской двери (открыта/​закрыта),​ третий — состоянию фар и т. д. Таким образом,​ при помощи побитового контроля параметра можно на основе одного параметра создать несколько различных датчиков. ​
  
-:!: Параметры типа ​//double// при побитовом контроле автоматически приводятся к //int//, после чего выделяется бит.+:!: Параметры типа ​**double** при побитовом контроле автоматически приводятся к **int**, после чего выделяется бит.
  
 :!: Советуем напрямую не обращаться к биту выше 53-его. Если это необходимо,​ можно придерживаться следующей схемы: ​ :!: Советуем напрямую не обращаться к биту выше 53-его. Если это необходимо,​ можно придерживаться следующей схемы: ​
-  - Создайте датчик,​ в котором приходит нужный параметр. Например, ​//Датчик1//+  - Создайте датчик,​ в котором приходит нужный параметр. Например, ​**Датчик1**
-  - Создайте второй датчик. Например, ​//Датчик2//.+  - Создайте второй датчик. Например, ​**Датчик2**.
   - В качестве параметра второго датчика укажите формулу [Датчик1]/​const4294967296. Таким образом,​ произойдет смещение на 4 байта вправо.  ​   - В качестве параметра второго датчика укажите формулу [Датчик1]/​const4294967296. Таким образом,​ произойдет смещение на 4 байта вправо.  ​
  
 **Преобразование текстовых параметров** **Преобразование текстовых параметров**
  
-Если в формуле датчика встречается текстовый параметр,​ то он преобразуется в 53-битное целое число. Указать систему счисления можно через двоеточие (по умолчанию считается в десятичной системе). Допустим,​ в параметр ​"text_param" ​пришло значение ​"100", тогда ​+Если в формуле датчика встречается текстовый параметр,​ то он преобразуется в 53-битное целое число. Указать систему счисления можно через двоеточие (по умолчанию считается в десятичной системе). Допустим,​ в параметр ​**text_param** пришло значение ​**100**, тогда ​
  
 <​code>​ <​code>​
Строка 195: Строка 192:
 **Определение номера дня в году** **Определение номера дня в году**
  
-Для определения номера дня в году (относительно 1 января) необходимо указать после двоеточия ​"d". Например,​ для 28 марта 2017 года в 11:00:00 (UTC) UNIX-время соответствует значению ​"1490698800". Следовательно, ​+Для определения номера дня в году (относительно 1 января) необходимо указать после двоеточия ​**d**. Например,​ для 28 марта 2017 года в 11:00:00 (UTC) UNIX-время соответствует значению ​**1490698800**. Следовательно, ​
  
 <​code>​ <​code>​
Was this helpful?
Thank you!