См. Документы Федеральной службы по регулированию алкогольного рынка
ФЕДЕРАЛЬНАЯ СЛУЖБА ПО РЕГУЛИРОВАНИЮ АЛКОГОЛЬНОГО РЫНКА
ПРИКАЗ
от 8 августа 2012 г. N 212
О ФОРМАТЕ
ПЕРЕДАЧИ СВЕДЕНИЙ В ЭЛЕКТРОННОМ ВИДЕ ОРГАНИЗАЦИЯМИ,
ОСУЩЕСТВЛЯЮЩИМИ ПЕРЕВОЗКУ ЭТИЛОВОГО СПИРТА (В ТОМ ЧИСЛЕ
ДЕНАТУРАТА) И НЕФАСОВАННОЙ СПИРТОСОДЕРЖАЩЕЙ ПРОДУКЦИИ
С СОДЕРЖАНИЕМ ЭТИЛОВОГО СПИРТА БОЛЕЕ 25 ПРОЦЕНТОВ
ОБЪЕМА ГОТОВОЙ ПРОДУКЦИИ АВТОМОБИЛЬНЫМ ТРАНСПОРТОМ,
В АВТОМАТИЗИРОВАННУЮ СИСТЕМУ КОНТРОЛЯ ПЕРЕВОЗОК
ЭТИЛОВОГО СПИРТА И СПИРТОСОДЕРЖАЩЕЙ ПРОДУКЦИИ
НА ТЕРРИТОРИИ РОССИЙСКОЙ ФЕДЕРАЦИИ
В соответствии с пунктом 3 постановления Правительства Российской Федерации от 6 июля 2012 г. N 688 "О Правилах ведения автоматизированной системы контроля перевозок этилового спирта и спиртосодержащей продукции на территории Российской Федерации" (Собрание законодательства Российской Федерации, 2012, N 29, ст. 4117) приказываю:
1. Утвердить прилагаемый формат передачи сведений в электронном виде организациями, осуществляющими перевозку этилового спирта (в том числе денатурата) и нефасованной спиртосодержащей продукции с содержанием этилового спирта более 25 процентов объема готовой продукции автомобильным транспортом, в автоматизированную систему контроля перевозок этилового спирта и спиртосодержащей продукции на территории Российской Федерации.
2. Контроль за исполнением настоящего приказа возложить на заместителя руководителя Федеральной службы по регулированию алкогольного рынка А.Ю. Кружалина.
Руководитель
И.ЧУЯН
Утвержден
приказом Федеральной службы
по регулированию алкогольного рынка
от 8 августа 2012 г. N 212
ФОРМАТ
ПЕРЕДАЧИ СВЕДЕНИЙ В ЭЛЕКТРОННОМ ВИДЕ ОРГАНИЗАЦИЯМИ,
ОСУЩЕСТВЛЯЮЩИМИ ПЕРЕВОЗКУ ЭТИЛОВОГО СПИРТА (В ТОМ ЧИСЛЕ
ДЕНАТУРАТА) И НЕФАСОВАННОЙ СПИРТОСОДЕРЖАЩЕЙ ПРОДУКЦИИ
С СОДЕРЖАНИЕМ ЭТИЛОВОГО СПИРТА БОЛЕЕ 25 ПРОЦЕНТОВ
ОБЪЕМА ГОТОВОЙ ПРОДУКЦИИ АВТОМОБИЛЬНЫМ ТРАНСПОРТОМ,
В АВТОМАТИЗИРОВАННУЮ СИСТЕМУ КОНТРОЛЯ ПЕРЕВОЗОК
ЭТИЛОВОГО СПИРТА И СПИРТОСОДЕРЖАЩЕЙ ПРОДУКЦИИ
НА ТЕРРИТОРИИ РОССИЙСКОЙ ФЕДЕРАЦИИ
1. Общие положения
Формат передачи в автоматизированную систему контроля перевозок этилового спирта и спиртосодержащей продукции на территории Российской Федерации информации, указанной в пункте 7 Правил ведения автоматизированной системы контроля перевозок этилового спирта и спиртосодержащей продукции на территории Российской Федерации, утвержденных постановлением Правительства Российской Федерации от 06.07.2012 N 688, определяется протоколом передачи навигационных данных NDTP (Navigation Data Transfer Protocol) 16.03.2012, версии 1.0.
2. Структура стека протоколов NDTP
Описание протокола обмена данными представлено согласно модели OSI. Все уровни реализованы стандартными средствами:
- для специальных технических средств регистрации в автоматическом режиме движения, устанавливаемых на автомобильные транспортные средства, оснащенные специальными емкостями для перевозки продукции (далее - СТС) - встроенным стеком GPRS модема;
- для сервера сбора данных (далее - ССД) - средствами операционной системы.
┌─────────────────┬─────────────────────────┬─────────────────────────────┐ │ Уровни │ СТС │ ССД │ ├─────────────────┼─────────────────────────┼─────────────────────────────┤ │ Прикладной │ команды и пакеты данных │ команды и пакеты данных │ ├─────────────────┼─────────────────────────┼─────────────────────────────┤ │ Сеансовый │ NPL │ NPL │ ├─────────────────┼─────────────────────────┼─────────────────────────────┤ │ Транспортный │ TCP │ TCP │ └─────────────────┴─────────────────────────┴─────────────────────────────┘
Протокол передачи данных NDTP (Navigation Data Transfer Protocol) состоит из двух уровней:
- NPL - Navigation data transfer Protocol (Low level) - протокол нижнего уровня (сеансовый);
- NPH - Navigation data transfer Protocol (High level) - протокол верхнего уровня (представления).
Протокол нижнего уровня (сеансовый) предназначен для передачи обезличенных блоков данных и контроля целостности принимаемых данных. На данном уровне определены правила адресации устройств, правила проверки целостности данных и др.
Протокол верхнего уровня (представления данных) описывает форматы и правила передачи данных для реализуемой услуги. На данном уровне учитывается состав и форматы передаваемых данных.
Все пакеты типа NPH (прикладной уровень), передаваемые со стороны СТС, передаются с подтверждением приема на стороне ССД.
Все данные в пакетах NPL и NPH передаются в little-endian "*" формате, если не установлено иное. В описаниях структуры пакетов длина полей указывается в байтах, либо var - для полей с переменной длиной.
3. Сеансовый уровень (протокол NPL)
На сеансовом уровне осуществляется шифрование и маршрутизация пакетов.
Пакета NPL, протокола нижнего уровня (NPL) имеет следующий формат:
┌──────────┬───────────────┬───────┬─────────┬────────────────────────┬──────────────┐ │ │ Поле │ Длина │ Тип │ Описание │ Может ли │ │ │ │ │ │ │ данное поле │ │ │ │ │ │ │ (значение) │ │ │ │ │ │ │ изменяться │ ├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤ │заголовок │ "signature" │ 2 │ int16 │ Сигнатура - │ Нет. В поле │ │ пакета │ │ │ │ предопределенное поле │ всегда │ │ NPL │ │ │ │данных в начале пакета, │ должно быть │ │ │ │ │ │ предназначенное для │ установлено │ │ │ │ │ │проверки на принимающей │значение 7E7E │ │ │ │ │ │ стороне того, что по │ │ │ │ │ │ │данному адресу в памяти │ │ │ │ │ │ │ находятся данные │ │ │ │ │ │ │ соответствующего │ │ │ │ │ │ │ пакета. Наличие │ │ │ │ │ │ │ сигнатуры является │ │ │ │ │ │ │ обязательным. │ │ ├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤ │ │ "data_size" │ 2 │unsigned │ Определяет размер │ Нет. В поле │ │ │ │ │ int16 │ данных, находящихся │ всегда │ │ │ │ │ │ в поле "data". Для │ должно быть │ │ │ │ │ │ незашифрованных и │ установлено │ │ │ │ │ │ зашифрованных пакетов │ значение 0 - │ │ │ │ │ │ "data_size" всегда │дополнительных│ │ │ │ │ │ равно размеру NPH │ данных в │ │ │ │ │ │ данных. │ пакете не │ │ │ │ │ │ Если данные передаются │ содержится │ │ │ │ │ │ в зашифрованном виде, │ │ │ │ │ │ │ размер поля "data" │ │ │ │ │ │ │ равен длине данных, │ │ │ │ │ │ │ выровненной по границе │ │ │ │ │ │ │ 8 байт (требования │ │ │ │ │ │ │ алгоритма Blowfish). │ │ │ │ │ │ │При этом дополнительные │ │ │ │ │ │ │ байты в расшифрованном │ │ │ │ │ │ │пакете не используются. │ │ │ │ │ │ │ Пример: если длина NPH │ │ │ │ │ │ │ пакета равна 18, │ │ │ │ │ │ │ то "data_size" = 18, │ │ │ │ │ │ │ а длина поля "data" │ │ │ │ │ │ │ равна 24. │ │ ├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤ │ │ "flags" │ 2 │ int16 │ NPL_FLAG_CRC - │ Нет. В поле │ │ │ │ │ │ определяет расчет │ всегда │ │ │ │ │ │ контрольной суммы │ должно быть │ │ │ │ │ │ пакета (CRC) для │ установлено │ │ │ │ │ │обеспечения возможности │ значение 1 │ │ │ │ │ │ проверки валидности │ │ │ │ │ │ │ пакета получателем. │ │ │ │ │ │ │ Принимает значения: │ │ │ │ │ │ │ 0 - нет, 1 - да. │ │ ├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤ │ │ "crc" │ 2 │unsigned │ Значение контрольной │ │ │ │ │ │ int16 │суммы поля "data", либо │ │ │ │ │ │ │ 0x0000, если флаг │ │ │ │ │ │ │ NPL_FLAG_CRC │ │ │ │ │ │ │ не установлен. │ │ ├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤ │ │ "type" │ 1 │ Byte │ Указывает тип │ Да │ │ │ │ │ │ передаваемых данных. │ │ │ │ │ │ │NPL_TYPE_ERROR - ошибка │ │ │ │ │ │ │ протокола NPL │ │ │ │ │ │ │ NPL_TYPE_NPH - пакет │ │ │ │ │ │ │ данных NPH │ │ ├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤ │ │"peer_address" │ 4 │unsigned │ Определяет адрес │ Да │ │ │ │ │ int32 │ участника соединения: │ │ │ │ │ │ │ NPL_ADDRESS_SERVER - │ │ │ │ │ │ │сервер. Другие значения │ │ │ │ │ │ │ - мобильные устройства.│ │ ├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤ │ │ "request_id" │ 2 │unsigned │ Идентификатор пакета │ Да │ │ │ │ │ int16 │ (ID) рекомендуется │ │ │ │ │ │ │ делать уникальным хотя │ │ │ │ │ │ │ бы в рамках одной │ │ │ │ │ │ │сессии передачи данных. │ │ │ │ │ │ │ Например, выбрать │ │ │ │ │ │ │ некоторое значение │ │ │ │ │ │ │ ID при установке │ │ │ │ │ │ │ соединения и для │ │ │ │ │ │ │ каждого последующего │ │ │ │ │ │ │ пакета увеличивать │ │ │ │ │ │ │ его ID на единицу. │ │ │ │ │ │ │ При достижении │ │ │ │ │ │ │ 0 x FFFFFFFF следующее │ │ │ │ │ │ │значение ID будет равно │ │ │ │ │ │ │ 0 x 00000000 и т.д. │ │ ├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤ │ │ "data" │ Var │ │ │ │ └──────────┴───────────────┴───────┴─────────┴────────────────────────┴──────────────┘
Пакеты протокола NPL однонаправленные, подтверждения не требуют.
"peer_address" входящего пакета указывает адрес отправителя пакета. В данном поле может передаваться либо адрес ССД (для пакетов, приходящих со стороны ССД на СТС), либо адрес СТС (для пакетов, приходящих со стороны СТС на ССД).
4. Типы пакетов NPL
Пакеты NPL имеют следующие типы:
- NPL_TYPE_ERROR - ошибка протокола NPL;
- NPL_TYPE_NPH - пакет данных NPH.
4.1. Тип пакета: NPL_TYPE_ERROR
Коды об ошибке протокола NPL передаются пакетами NPL_TYPE_ERROR, которые при передаче не шифруются. Поле передачи данных содержит код ошибки и имеет следующий формат:
┌─────────────┬───────┬────────┬─────────────────────────────┬────────────┐ │ Поле │ Длина │ Тип │ Описание │ Может ли │ │ │ │ │ │данное поле │ │ │ │ │ │ (значение) │ │ │ │ │ │ изменяться │ ├─────────────┼───────┼────────┼─────────────────────────────┼────────────┤ │"error_code" │ 4 │unsigned│ Содержит коды ошибки: │ Да │ │ │ │ int32 │ NPL_ERR_OK │ │ │ │ │ │ NPL_ERR_UNDEFINED │ │ │ │ │ │NPL_ERR_INVALID_PEER_ADDRESS │ │ │ │ │ │ NPL_ERR_PEER_NOT_AVAILABLE │ │ │ │ │ │ NPL_ERR_PEER_PERM_DENIED │ │ └─────────────┴───────┴────────┴─────────────────────────────┴────────────┘
Существуют следующие ошибки протокола NPL:
Общие ошибки:
- NPL_ERR_OK - запрос выполнен успешно;
- NPL_ERR_UNDEFINED - код для ошибок, не имеющих описания;
Ошибки маршрутизации пакетов:
- NPL_ERR_INVALID_PEER_ADDRESS - недопустимый адрес участника соединения;
- NPL_ERR_PEER_NOT_AVAILABLE - участник соединения недоступен;
- NPL_ERR_PEER_PERM_DENIED - доступ запрещен.
4.2. Тип пакета: NPL_TYPE_NPH
Тип пакета NPL_TYPE_NPH - пакет NPH, передается на уровне представления (протокол NPH).
4.3. Уровень представления (протокол NPH)
Каждый участник соединения (СТС) обладает набором функций (услуг), которые он может предоставить другим участникам соединения. Все функции логически разделены на группы услуг мониторинга. Набор услуг мониторинга, которые поддерживает определенный участник соединения, определяет интерфейс его взаимодействия с другими участниками соединения.
Для каждого типа услуг мониторинга определены свои типы пакетов и логика работы. Отдельные типы пакетов могут использоваться в нескольких типах услуг мониторинга (например: пакет NPH_RESULT - пакет подтверждения, отсылающийся на не требующий получения данных запрос). Участник соединения может не поддерживать отдельные пакеты в определенном типе услуг мониторинга.
Обмен данными на уровне представления ведется с помощью пакетов NPH.
Пакет NPH имеет следующий формат:
┌───────────┬───────────────┬──────┬─────────┬─────────────────────┬────────────────┐ │ │ Поле │Длина │ Тип │ Описание │Может ли данное │ │ │ │ │ │ │поле (значение) │ │ │ │ │ │ │ изменяться │ ├───────────┼───────────────┼──────┼─────────┼─────────────────────┼────────────────┤ │ заголовок │ "service_id" │ 2 │unsigned │ Тип услуги │ Нет. В поле │ │пакета NPH │ │ │ int16 │ │ всегда должно │ │ │ │ │ │ │быть установлено│ │ │ │ │ │ │значение 0100 - │ │ │ │ │ │ │ NPH_SRV_NAV │ │ │ │ │ │ │ DATA │ ├───────────┼───────────────┼──────┼─────────┼─────────────────────┼────────────────┤ │ │ "type" │ 2 │unsigned │ Тип пакета │ Да │ │ │ │ │ int16 │ │ │ ├───────────┼───────────────┼──────┼─────────┼─────────────────────┼────────────────┤ │ │ "flags" │ 2 │unsigned │ Флаги пакета │ Нет. В поле │ │ │ │ │ int16 │ (определяет │ всегда должно │ │ │ │ │ │ необходимость │быть установлено│ │ │ │ │ │ подтверждения). │ значение 1 - │ │ │ │ │ │ Bit 0 │ пакет требует │ │ │ │ │ │ NPH_FLAG_REQUEST - │ подтверждения │ │ │ │ │ │ определяет │ │ │ │ │ │ │ необходимость │ │ │ │ │ │ │ подтверждения │ │ │ │ │ │ │ пакета. │ │ │ │ │ │ │Принимает значения: │ │ │ │ │ │ │0 - пакет не требует │ │ │ │ │ │ │ подтверждения; │ │ │ │ │ │ │ 1 - пакет требует │ │ │ │ │ │ │ подтверждения. │ │ │ │ │ │ │ Возможен случай, │ │ │ │ │ │ │ когда бит │ │ │ │ │ │ │ установлен, но │ │ │ │ │ │ │ подтверждение не │ │ │ │ │ │ │ высылается. │ │ │ │ │ │ │ Подтверждение │ │ │ │ │ │ │ высылается только в │ │ │ │ │ │ │ том случае, когда │ │ │ │ │ │ │ направление │ │ │ │ │ │ │ подтверждения │ │ │ │ │ │ │ предусматривается │ │ │ │ │ │ │ протоколом обмена. │ │ ├───────────┼───────────────┼──────┼─────────┼─────────────────────┼────────────────┤ │ │ "request_id" │ 4 │unsigned │ Идентификатор │ Да │ │ │ │ │ int32 │пакета, используется │ │ │ │ │ │ │ для подтверждения │ │ │ │ │ │ │ запроса. ID пакетов │ │ │ │ │ │ │рекомендуется делать │ │ │ │ │ │ │уникальным хотя бы в │ │ │ │ │ │ │ рамках одной сессии │ │ │ │ │ │ │ передачи данных. │ │ │ │ │ │ │ Например, выбрать │ │ │ │ │ │ │ некоторое значение │ │ │ │ │ │ │ ID при установке │ │ │ │ │ │ │ соединения и для │ │ │ │ │ │ │каждого последующего │ │ │ │ │ │ │ пакета увеличивать │ │ │ │ │ │ │ его ID на единицу. │ │ │ │ │ │ │ При достижении │ │ │ │ │ │ │ 0xFFFFFFFF │ │ │ │ │ │ │ следующее значение │ │ │ │ │ │ │ ID будет равно │ │ │ │ │ │ │ 0x00000000 и т.д. │ │ ├───────────┼───────────────┼──────┼─────────┼─────────────────────┼────────────────┤ │ данные │ "data" │ var │ var │ Поле содержит │ Да │ │пакета NPH │ │ │ │ данные, является │ │ │ │ │ │ │ необязательным. │ │ │ │ │ │ │ Наличие и структура │ │ │ │ │ │ │ поля "data" должны │ │ │ │ │ │ │ однозначно │ │ │ │ │ │ │ определяться типом │ │ │ │ │ │ │услуг ("service_id") │ │ │ │ │ │ │ и типом пакета │ │ │ │ │ │ │ ("type"). │ │ └───────────┴───────────────┴──────┴─────────┴─────────────────────┴────────────────┘
Тип пакета NPH_RESULT относится ко всем типам услуг.
4.4. Общий пакет подтверждения: NPH_RESULT
Пакет NPH_RESULT является общим для всех типов услуг, если запрос не предусматривает получения каких-либо данных. В ответ на пакет запроса посылается пакет подтверждения NPH_RESULT.
Пакет подтверждения NPH_RESULT имеет следующий формат поля данных:
┌──────────────┬──────┬──────────┬──────────────────────┬─────────────────┐ │ Поле │Длина │ Тип │ Описание │ Может ли данное │ │ │ │ │ │ поле (значение) │ │ │ │ │ │ изменяться │ ├──────────────┼──────┼──────────┼──────────────────────┼─────────────────┤ │ "error" │ 4 │ unsigned │ 0 в случае успешного │ Да │ │ │ │ int32 │ выполнения запроса │ │ │ │ │ │ или код ошибки │ │ └──────────────┴──────┴──────────┴──────────────────────┴─────────────────┘
Поле "error" пакета NPH_RESULT может принимать следующие значения:
- 0 - успешное выполнение запроса;
Общие ошибки:
- NPH_RESULT_OK - запрос выполнен успешно;
- NPH_RESULT_UNDEFINED - код для ошибок, не имеющих описания;
- NPH_RESULT_BUSY - участник соединения не может обработать пакет в данный момент;
- NPH_RESULT_SERVICE_NOT_SUPPORTED - тип услуг не поддерживается;
- NPH_RESULT_SERVICE_NOT_ALLOWED - тип услуг запрещен для данного участника соединения;
- NPH_RESULT_SERVICE_NOT_AVAILABLE - тип услуг не доступен в данный момент;
- NPH_RESULT_PACKET_NOT_SUPPORTED - неизвестный тип пакета, либо тип пакета не поддерживается;
- NPH_RESULT_PACKET_INVALID_FORMAT - неверный формат пакета;
- NPH_RESULT_PACKET_INVALID_PARAMETER - неверный параметр пакета;
Ошибки установки соединения:
- NPH_RESULT_PROTO_VER_NOT_SUPPORTED - версия протокола не поддерживается;
- NPH_RESULT_CLIENT_NOT_REGISTERED - клиент не зарегистрирован на сервере (в БД);
- NPH_RESULT_CLIENT_TYPE_NOT_SUPPORTED - тип клиента не поддерживается;
- NPH_RESULT_CLIENT_AUTH_FAILED - ошибка аутентификации клиента.
5. Установка соединения с сервером
Соединение с сервером может быть защищенным или незащищенным. Параметры соединения задаются инициатором соединения в поле "connection_flags" пакета NPH_SGC_CONN_REQUEST. В первом случае все пакеты передаются в зашифрованном виде, за исключением пакетов установки соединения:
- NPH_SGC_CONN_REQUEST;
- NPH_SGC_CONN_AUTH_STRING.
В случае отказа в установке соединении (на любом этапе) сервер посылает клиенту незашифрованный пакет NPH_RESULT с кодом ошибки.
Пакет запроса установки соединения NPH_SGC_CONN_REQUEST имеет следующий формат поля "data":
┌─────────────────────┬──────┬───────────┬─────────────────────┬───────────────┐ │ Поле │Длина │ Тип │ Описание │Может ли данное│ │ │ │ │ │поле (значение)│ │ │ │ │ │ изменяться │ ├─────────────────────┼──────┼───────────┼─────────────────────┼───────────────┤ │"proto_version_high" │ 2 │ unsigned │ Версия протокола │ Нет. В поле │ │ │ │ int16 │NDTP (старший номер) │ всегда должно │ │ │ │ │ │ быть │ │ │ │ │ │ установлено │ │ │ │ │ │ значение 1 │ ├─────────────────────┼──────┼───────────┼─────────────────────┼───────────────┤ │ "proto_version_low" │ 2 │ unsigned │ Версия протокола │ Да │ │ │ │ int16 │NDTP (младший номер) │ │ ├─────────────────────┼──────┼───────────┼─────────────────────┼───────────────┤ │ "connection_flags" │ 2 │ unsigned │ Опции соединения, │ Нет. Все │ │ │ │ int16 │определяет настройки │значения битов │ │ │ │ │ соединения, которые │ кроме второго │ │ │ │ │будут использоваться │ должны быть │ │ │ │ │ после установки │ установлены в │ │ │ │ │ соединения. (бит2: │ 0. Значение │ │ │ │ │ рассчитывать CRC │ второго бита │ │ │ │ │ пакетов (0 - нет, │ должно быть │ │ │ │ │ 1 - да) │установлено в 1│ ├─────────────────────┼──────┼───────────┼─────────────────────┼───────────────┤ │ "peer_address" │ 4 │ unsigned │ Адрес участника │ Да │ │ │ │ int32 │ соединения, │ │ │ │ │ │ пославшего пакет │ │ ├─────────────────────┼──────┼───────────┼─────────────────────┼───────────────┤ │ "max_packet_size" │ 4 │ unsigned │ Максимальный размер │ Нет. Все │ │ │ │ int32 │ пакета, который │значения битов │ │ │ │ │ сможет обработать │ должны быть │ │ │ │ │ данный участник │установлены в 0│ │ │ │ │ соединения │ │ └─────────────────────┴──────┴───────────┴─────────────────────┴───────────────┘
Так как сервер не устанавливает соединения, то пакет запроса соединения посылают только клиенты (СТС).
Поля "proto_version_high" и "proto_version_low" определяют версию протокола, по которой собирается работать клиент. "proto_version_high" всегда должно быть установлено в 1.
Пакет с массивом данных для аутентификации клиента NPH_SGC_CONN_AUTH_STRING имеет следующий формат поля "data":
┌────────┬───────┬────────┬─────────────────────────────┬─────────────────┐ │ Поле │ Длина │ Тип │ Описание │Может ли данное │ │ │ │ │ │ поле (значение) │ │ │ │ │ │ изменяться │ ├────────┼───────┼────────┼─────────────────────────────┼─────────────────┤ │ "data" │ var │ char[] │Массив данных. Длина массива │ Да │ │ │ │ │ определяется по полю │ │ │ │ │ │ "data_size" пакета NPL │ │ └────────┴───────┴────────┴─────────────────────────────┴─────────────────┘
6. Мониторинг транспортных средств: NPH_SRV_NAVDATA
Навигационные данные передаются в типе передачи NPH_SRV_NAVDATA.
Существует два типа пакетов:
- NPH_SND_REALTIME - передача навигационных данных в реальном времени;
- NPH_SND_HISTORY - передача навигационных данных, сохраненных в памяти устройства ("ретроспективы").
Передача навигационных данных, сохраненных в памяти устройства, предназначена для случаев нарушения соединения с сотовой сетью. При потере соединения клиент записывает данные во внутренний буфер. При восстановлении соединения клиент передает данные из внутреннего буфера. На стороне сервера при обработке данных необходимо различать случаи передачи данных в реальном времени и из внутреннего буфера. Для этого введены отдельные типы пакетов для передачи данных в режиме реального времени из внутренней памяти.
┌─────────┬──────┬─────────┬────────────────────────────┬─────────────────┐ │ Поле │Длина │ Тип │ Описание │ Может ли данное │ │ │ │ │ │ поле (значение) │ │ │ │ │ │ изменяться │ ├─────────┼──────┼─────────┼────────────────────────────┼─────────────────┤ │ "Type" │ 1 │unsigned │ Тип ячейки (определяет │ Да │ │ │ │ int8 │ длину и содержимое). │ │ │ │ │ │Различаются следующие типы: │ │ │ │ │ │ 0 - основные навигационные │ │ │ │ │ │ данные; │ │ │ │ │ │ 2 - данные от внутренних │ │ │ │ │ │ портов; │ │ │ │ │ │ 8 - данные от датчиков │ │ │ │ │ │ уровня продукта в отсеках │ │ ├─────────┼──────┼─────────┼────────────────────────────┼─────────────────┤ │"Number" │ 1 │unsigned │ Определяет навигационный │ Да │ │ │ │ int8 │ приемник: N=0 - GPS │ │ │ │ │ │ приемник, N=1 - GLONASS │ │ │ │ │ │ приемник. │ │ │ │ │ │ Если Type=13, данное поле │ │ │ │ │ │ определяет номер отсека, к │ │ │ │ │ │ которому подключен │ │ │ │ │ │ уровнемер │ │ ├─────────┼──────┼─────────┼────────────────────────────┼─────────────────┤ │ "Data" │ var │ char[] │ Данные от датчика. │ Да │ │ │ │ │ Структура определяется │ │ │ │ │ │ полем "Type" │ │ └─────────┴──────┴─────────┴────────────────────────────┴─────────────────┘
Пакеты передачи навигационных данных NPH_SND_HISTORY и NPH_SND_REALTIME имеют следующий формат поля "data":
Структура поля "Data" состоит из ячеек, каждая из которых имеет поля "Type", "Number" и "Data" переменной длины. Длина каждой ячейки поля "Data" определяется полем "Type".
Ячейки следуют строго по увеличению поля "Type". Возможно следование нескольких ячеек с одинаковым полем "Type", но обязательно разными полями "Number", которое определяет номер датчика, от которого направлен данный пакет. Время формирования данных от внешних датчиков определяется пакетом навигационных данных.
Ячейка 2
Ячейка 1
Data
N байт
Number=1
1 байт
Type=2
1 байт
Data
N байт
Number=1
1 байт
Type=0
1 байт
Ячейка передачи основных навигационных данных (Type=0, N=1) Дополнительные навигационные данные Type=1, N=1.
┌───────────────┬───────┬──────────┬────────────────────┬─────────────────┐ │ Поле │ Длина │ Тип │ Описание │ Может ли данное │ │ │ │ │ │ поле (значение) │ │ │ │ │ │ изменяться │ ├───────────────┼───────┼──────────┼────────────────────┼─────────────────┤ │ │ 20 │ struct │ │ │ ├───────────────┼───────┼──────────┼────────────────────┼─────────────────┤ │ "time_stamp" │ 4 │ unsigned │ Содержит значение │ Да │ │ │ │ int32 │ реального времени │ │ ├───────────────┼───────┼──────────┼────────────────────┼─────────────────┤ │ "longitude" │ 4 │ unsigned │ Содержит долготу │ Да │ │ │ │ int32 │ в градусах, │ │ │ │ │ │ умноженную на │ │ │ │ │ │ 10 000 000 │ │ ├───────────────┼───────┼──────────┼────────────────────┼─────────────────┤ │ "latitude" │ 4 │ unsigned │ Содержит широту │ Да │ │ │ │ int32 │ в градусах, │ │ │ │ │ │ умноженную на │ │ │ │ │ │ 10 000 000 │ │ ├───────────────┼───────┼──────────┼────────────────────┼─────────────────┤ │ "extra_dop" │ 1 │ unsigned │bit7 - │ Да. │ │ │ │ int8 │достоверность │ Примечание: │ │ │ │ │навигационных │ в настоящей │ │ │ │ │данных │ версии bit2 │ │ │ │ │(1 - достоверны, │ не должен │ │ │ │ │0 - нет); │ устанавливаться │ │ │ │ │bit6 - полушарие │ │ │ │ │ │долготы (1 - E, │ │ │ │ │ │0 - W); │ │ │ │ │ │bit5 - полушарие │ │ │ │ │ │широты (1 - N, │ │ │ │ │ │0 - S); │ │ │ │ │ │bit4 - флаг работы │ │ │ │ │ │от встроенного │ │ │ │ │ │аккумулятора; │ │ │ │ │ │bit3 - флаг │ │ │ │ │ │первоначального │ │ │ │ │ │включения; │ │ │ │ │ │bit2 - состояние │ │ │ │ │ │SOS (1 - SOS, │ │ │ │ │ │0 - нет SOS) │ │ │ │ │ │bit1 - флаг │ │ │ │ │ │тревожной │ │ │ │ │ │информации (один из │ │ │ │ │ │параметров │ │ │ │ │ │находится в │ │ │ │ │ │диапазоне тревоги) │ │ ├───────────────┼───────┼──────────┼────────────────────┼─────────────────┤ │ "bat_voltage" │ 1 │ unsigned │Напряжение батареи,│ Да │ │ │ │ int8 │1 бит = 20 мВ │ │ ├───────────────┼───────┼──────────┼────────────────────┼─────────────────┤ │ "track" │ 2 │ unsigned │ Пройденный путь, м │ Да │ │ │ │ int16 │ │ │ ├───────────────┼───────┼──────────┼────────────────────┼─────────────────┤ │ "altitude" │ 2 │ signed │ Высота над уровнем │ Да │ │ │ │ int16 │ моря в метрах │ │ │ │ │ │ (-18000 - +18000) │ │ ├───────────────┼───────┼──────────┼────────────────────┼─────────────────┤ │ "nsat" │ 1 │ unsigned │ Количество видимых │ Да │ │ │ │ int8 │ спутников │ │ ├───────────────┼───────┼──────────┼────────────────────┼─────────────────┤ │ "pdop" │ 1 │ unsigned │ PDOP - снижение │ Да │ │ │ │ int8 │ точности по │ │ │ │ │ │ местоположению. │ │ │ │ │ │ Термин, │ │ │ │ │ │ использующийся в │ │ │ │ │ │ области систем │ │ │ │ │ │ глобального │ │ │ │ │ │ позиционирования │ │ │ │ │ │ для │ │ │ │ │ │ параметрического │ │ │ │ │ │ описания │ │ │ │ │ │ геометрического │ │ │ │ │ │ взаиморасположения │ │ │ │ │ │ спутников │ │ │ │ │ │ относительно │ │ │ │ │ │ антенны приемника. │ │ │ │ │ │ Этот параметр │ │ │ │ │ │должен передаваться │ │ │ │ │ │ на сервер для │ │ │ │ │ │ дальнейшего │ │ │ │ │ │ использования │ │ └───────────────┴───────┴──────────┴────────────────────┴─────────────────┘
Данные от внутренних датчиков Type=2, N=1
┌──────────────┬──────┬────────────┬────────────────────┬─────────────────┐ │ Поле │Длина │ Тип │ Описание │ Может ли данное │ │ │ │ │ │ поле (значение) │ │ │ │ │ │ изменяться │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ │ 24 │ struct │ │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "an_in0" │ 2 │ unsigned │ Значение 0 │ Да │ │ │ │ int16 │аналогового входа в │ │ │ │ │ │ 16 битном формате │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "an_in1" │ 2 │ unsigned │ Значение 1 │ Да │ │ │ │ int16 │аналогового входа в │ │ │ │ │ │ 16 битном формате │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "an_in2" │ 2 │ unsigned │ Значение 2 │ Да │ │ │ │ int16 │аналогового входа в │ │ │ │ │ │ 16 битном формате │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "an_in3" │ 2 │ unsigned │ Значение 3 │ Да │ │ │ │ int16 │аналогового входа в │ │ │ │ │ │ 16 битном формате │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "di_in" │ 1 │ unsigned │ Значение цифровых │ Да │ │ │ │ int8 │ входов │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "di_out" │ 1 │ unsigned │ Состояние │ Да │ │ │ │ int8 │ дискретных выходов │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │"di0_counter" │ 2 │ unsigned │ Количество │ Да │ │ │ │ int16 │ импульсов на │ │ │ │ │ │ дискретном входе 0 │ │ │ │ │ │ с предыдущей нав. │ │ │ │ │ │ отметки │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │"di1_counter" │ 2 │ unsigned │ Количество │ Да │ │ │ │ int16 │ импульсов на │ │ │ │ │ │ дискретном входе 1 │ │ │ │ │ │ с предыдущей нав. │ │ │ │ │ │ отметки │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │"di2_counter" │ 2 │ unsigned │ Количество │ Да │ │ │ │ int16 │ импульсов на │ │ │ │ │ │ дискретном входе 2 │ │ │ │ │ │ с предыдущей нав. │ │ │ │ │ │ отметки │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │"di3_counter" │ 2 │ unsigned │ Количество │ Да │ │ │ │ int16 │ импульсов на │ │ │ │ │ │ дискретном входе 3 │ │ │ │ │ │ с предыдущей нав. │ │ │ │ │ │ отметки │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "odometer" │ 4 │ unsigned │ Длина трека с │ Да │ │ │ │ int32 │ момента первого │ │ │ │ │ │ включения │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "CSQ" │ 1 │ unsigned │ Сила GSM сигнала │ Да │ │ │ │ int8 │ │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "GPRS_State" │ 1 │ unsigned │ Состояние GPRS │ Да │ │ │ │ int8 │ подключения │ │ └──────────────┴──────┴────────────┴────────────────────┴─────────────────┘
16 битное значение полей "an_inN". В случае если устройством поддерживается 12 битная оцифровка, значение умножается на 4. Максимальное значение становится равным 0xFFFC. У такого устройства дискретность становится не 1, а 4.
Данные от датчиков уровня продукта в отсеке Type=13, N=1..6
┌──────────────┬──────┬────────────┬────────────────────┬─────────────────┐ │ Поле │Длина │ Тип │ Описание │ Может ли данное │ │ │ │ │ │ поле (значение) │ │ │ │ │ │ изменяться │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ │ 13 │ struct │ │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "density" │ 4 │ unsigned │ Плотность продукта │ Да │ │ │ │ int32 │ │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │"temperature" │ 4 │ unsigned │Температура продукта│ Да │ │ │ │ int32 │ │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "level" │ 4 │ unsigned │ Уровень продукта │ Да │ │ │ │ int32 │ │ │ ├──────────────┼──────┼────────────┼────────────────────┼─────────────────┤ │ "level_unit" │ 1 │ uint8 │ Единица измерения: │ Да │ │ │ │ │ Декалитры │ │ └──────────────┴──────┴────────────┴────────────────────┴─────────────────┘
Пример пакета навигационных данных NPH_SND_REALTIME
Весь пакет:
7E7E42000200665A02000000000000010065000100990500000000931B4E4FF14
59B1DAF2FED22E0D000000000510000008D0008000200000000000000000000
0000000000000000002FC800001F040000
Заголовок NPL
7E7E 4200 0200 665A 02 00000000 0000
┌──────────────────────┬──────────────────────────────────────────────────┐ │Значение │Описание │ ├──────────────────────┼──────────────────────────────────────────────────┤ │7E7E │Сигнатура │ ├──────────────────────┼──────────────────────────────────────────────────┤ │4200 │Размер данных (nph + размер массива данных) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0200 │Флаги соединения (2 - проверять crc) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │665A │Crc │ ├──────────────────────┼──────────────────────────────────────────────────┤ │02 │Тип пакета (nph) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │00000000 │Идентификатор NPL │ └──────────────────────┴──────────────────────────────────────────────────┘
Заголовок NPH
0100 6500 0100 99050000
┌──────────────────────┬──────────────────────────────────────────────────┐ │ 0100 │ Идентификатор услуги (NPH_SRV_NAVDATA) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │ 6500 │ NPH_SND_REALTIME │ ├──────────────────────┼──────────────────────────────────────────────────┤ │ 0100 │ Флаг (1 - требуется подтверждение) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │ 99050000 │ Идентификатор nph │ └──────────────────────┴──────────────────────────────────────────────────┘
Массив данных
0000931B4E4FF1459B1DAF2FED22E0D000000000510000008D000800020000
000000000000000000000
00000000000002FC800001F040000
Начало данных 2 байта тип и номер ячейки:
0000
┌──────────────────────┬──────────────────────────────────────────────────┐ │ 0 │ Тип ячейки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │ 0 │ Номер ячейки │ └──────────────────────┴──────────────────────────────────────────────────┘
Нулевая ячейка размер 52 байта:
931B4E4FF1459B1DAF2FED22E0D000000000510000008D000800
┌──────────────────────┬──────────────────────────────────────────────────┐ │931B4E4F │Значение реального времени unixtime utc │ ├──────────────────────┼──────────────────────────────────────────────────┤ │F1459B1D │Долгота в градусах, умноженная на 10 000 000 │ ├──────────────────────┼──────────────────────────────────────────────────┤ │AF2FED22 │Широта в градусах, умноженная на 10 000 000 │ ├──────────────────────┼──────────────────────────────────────────────────┤ │E0 │bit7 - достоверность навигационных данных │ │ │(1 - достоверны, 0 - нет); │ │ │bit6 - полушарие долготы (1 - E, 0 - W); │ │ │bit5 - полушарие широты (1 - N, 0 - S); │ │ │bit4 - флаг работы от встроенного аккумулятора; │ │ │bit3 - флаг первоначального включения; │ │ │bit2 - состояние SOS (1 - SOS, 0 - нет SOS); │ │ │bit1 - флаг тревожной информации (один из │ │ │параметров находится в диапазоне тревоги) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │D0 │Напряжение батареи, 1 бит = 20 мВ │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000 │Пройденный путь, м │ ├──────────────────────┼──────────────────────────────────────────────────┤ │8D00 │Высота над уровнем моря в метрах (-18000 - │ │ │+18000) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │08 │Количество видимых спутников │ ├──────────────────────┼──────────────────────────────────────────────────┤ │00 │PDOP │ └──────────────────────┴──────────────────────────────────────────────────┘
Пример пакета данные от датчиков уровня продукта Type=13, N=1
Массив данных
0D01931B4E4FF1459B1DAF2FED2201
Начало данных 2 байта тип и номер ячейки:
0D01
┌──────────────────────┬──────────────────────────────────────────────────┐ │13 │Тип ячейки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │1 │Номер ячейки │ └──────────────────────┴──────────────────────────────────────────────────┘
13 ячейка размер 13 байт:
931B4E4FF1459B1DAF2FED2201
┌──────────────────────┬──────────────────────────────────────────────────┐ │931B4E4F │Плотность продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │F1459B1D │Температура продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │AF2FED22 │Уровень продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │01 │Единица измерения: Декалитры │ └──────────────────────┴──────────────────────────────────────────────────┘
Пример пакета NPH_SND_REALTIME
В данном пакете содержатся ячейки следующих типов:
- основные навигационные данные;
- данные от внутренних датчиков;
- данные от датчиков уровня продукта (число отсеков 6).
Весь пакет:
7E7E94000200316E02000000000000010065000100990500000000931B4E4FF14
59B1DAF2FED22E0D000008D0008000200000000000000000000000000000000
0000002FC800001F040D01F5676F3F0000A0418FC2B142010D02F5676F3F000
0A0418FC2B142010D03F5676F3F0000A0418FC2B142010D04F5676F3F0000A
0418FC2B142010D05F5676F3F0000A0418FC2B142010D06F5676F3F0000A04
18FC2B14201
Заголовок NPL
7E7E 9400 0200 316E 02 00000000 0000
┌──────────────────────┬──────────────────────────────────────────────────┐ │Значение │Описание │ ├──────────────────────┼──────────────────────────────────────────────────┤ │7E7E │Сигнатура │ ├──────────────────────┼──────────────────────────────────────────────────┤ │9400 │Размер данных (nph + размер массива данных) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0200 │Флаги соединения (2 - проверять crc) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │316E │Crc │ ├──────────────────────┼──────────────────────────────────────────────────┤ │02 │Тип пакета (nph) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │00000000 │Адрес участника соединения │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000 │Идентификатор NPL │ └──────────────────────┴──────────────────────────────────────────────────┘
Заголовок NPH
0100 6500 0100 99050000
┌──────────────────────┬──────────────────────────────────────────────────┐ │ 0100 │ Идентификатор услуги (NPH_SRV_NAVDATA) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │ 6500 │ NPH_SND_REALTIME │ ├──────────────────────┼──────────────────────────────────────────────────┤ │ 0100 │ Флаг (1 - требуется подтверждение) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │ 99050000 │ Идентификатор nph │ └──────────────────────┴──────────────────────────────────────────────────┘
Массив данных
0000931B4E4FF1459B1DAF2FED22E0D000008D000800020000000000000000
00000000000000000000002FC800001F040D01F5676F3F0000A0418FC2B14201
0D02F5676F3F0000A0418FC2B142010D03F5676F3F0000A0418FC2B142010D
04F5676F3F0000A0418FC2B142010D05F5676F3F0000A0418FC2B142010D06
F5676F3F0000A0418FC2B14201
Начало данных 2 байта тип и номер ячейки:
0000
┌──────────────────────┬──────────────────────────────────────────────────┐ │0 │Тип ячейки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0 │Номер ячейки │ └──────────────────────┴──────────────────────────────────────────────────┘
Ячейка (Type=0, N=0) размер 20 байт:
931B4E4F F1459B1D AF2FED22 E0 D0 0000 8D00 08 00
┌──────────────────────┬──────────────────────────────────────────────────┐ │931B4E4F │Значение реального времени unixtime utc │ ├──────────────────────┼──────────────────────────────────────────────────┤ │F1459B1D │Долгота в градусах, умноженная на 10 000 000 │ ├──────────────────────┼──────────────────────────────────────────────────┤ │AF2FED22 │Широта в градусах, умноженная на 10 000 000 │ ├──────────────────────┼──────────────────────────────────────────────────┤ │E0 │bit7 - достоверность навигационных данных │ │ │(1 - достоверны, 0 - нет); │ │ │bit6 - полушарие долготы (1 - E, 0 - W); │ │ │bit5 - полушарие широты (1 - N, 0 - S); │ │ │bit4 - флаг работы от встроенного аккумулятора; │ │ │bit3 - флаг первоначального включения; │ │ │bit2 - состояние SOS (1 - SOS, 0 - нет SOS); │ │ │bit1 - флаг тревожной информации (один из │ │ │параметров находится в диапазоне тревоги) │ ├──────────────────────┼──────────────────────────────────────────────────┤ │D0 │Напряжение батареи, 1 бит = 20 мВ │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000 │Пройденный путь, м │ ├──────────────────────┼──────────────────────────────────────────────────┤ │8D00 │Высота над уровнем моря в метрах (-18000 - +18000)│ ├──────────────────────┼──────────────────────────────────────────────────┤ │08 │Количество видимых спутников │ ├──────────────────────┼──────────────────────────────────────────────────┤ │00 │PDOP │ └──────────────────────┴──────────────────────────────────────────────────┘
2 байта тип и номер ячейки:
0200
┌──────────────────────┬──────────────────────────────────────────────────┐ │02 │Тип ячейки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │00 │Номер ячейки │ └──────────────────────┴──────────────────────────────────────────────────┘
Ячейка (Type=2, N=0) размер 24 байта:
0000 0000 0000 0000 00 00 0000 0000 0000 0000 2FC80000 1F 04
┌──────────────────────┬──────────────────────────────────────────────────┐ │0000 │Значение 0 аналогового входа в 16 битном формате │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000 │Значение 1 аналогового входа в 16 битном формате │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000 │Значение 2 аналогового входа в 16 битном формате │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000 │Значение 3 аналогового входа в 16 битном формате │ ├──────────────────────┼──────────────────────────────────────────────────┤ │00 │Значение цифровых входов │ ├──────────────────────┼──────────────────────────────────────────────────┤ │00 │Состояние дискретных выходов │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000 │Количество импульсов на дискретном входе 0 с │ │ │предыдущей нав. отметки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000 │Количество импульсов на дискретном входе 1 с │ │ │предыдущей нав. отметки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000 │Количество импульсов на дискретном входе 2 с │ │ │предыдущей нав. отметки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000 │Количество импульсов на дискретном входе 3 с │ │ │предыдущей нав. отметки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │2FC80000 │Длина трека с момента первого включения │ ├──────────────────────┼──────────────────────────────────────────────────┤ │1F │Сила GSM сигнала │ ├──────────────────────┼──────────────────────────────────────────────────┤ │04 │Состояние GPRS подключения │ └──────────────────────┴──────────────────────────────────────────────────┘
2 байта тип и номер ячейки:
0D01
┌──────────────────────┬──────────────────────────────────────────────────┐ │13 │Тип ячейки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │01 │Номер ячейки │ └──────────────────────┴──────────────────────────────────────────────────┘
Ячейка (Type=13, N=1) размер 13 байт:
F5676F3F 0000A041 8FC2B142 01
┌──────────────────────┬──────────────────────────────────────────────────┐ │F5676F3F │Плотность продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000A041 │Температура продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │8FC2B142 │Уровень продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │01 │Единица измерения: Декалитры. │ └──────────────────────┴──────────────────────────────────────────────────┘
2 байта тип и номер ячейки:
0D02
┌──────────────────────┬──────────────────────────────────────────────────┐ │13 │Тип ячейки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │02 │Номер ячейки │ └──────────────────────┴──────────────────────────────────────────────────┘
Ячейка (Type=13, N=2) размер 13 байт:
F5676F3F 0000A041 8FC2B142 01
┌──────────────────────┬──────────────────────────────────────────────────┐ │F5676F3F │Плотность продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000A041 │Температура продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │8FC2B142 │Уровень продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │01 │Единица измерения: Декалитры. │ └──────────────────────┴──────────────────────────────────────────────────┘
2 байта тип и номер ячейки:
0D03
┌──────────────────────┬──────────────────────────────────────────────────┐ │13 │Тип ячейки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │03 │Номер ячейки │ └──────────────────────┴──────────────────────────────────────────────────┘
Ячейка (Type=13, N=3) размер 13 байт:
F5676F3F 0000A041 8FC2B142 01
┌──────────────────────┬──────────────────────────────────────────────────┐ │F5676F3F │Плотность продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000A041 │Температура продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │8FC2B142 │Уровень продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │01 │Единица измерения: Декалитры. │ └──────────────────────┴──────────────────────────────────────────────────┘
2 байта тип и номер ячейки:
0D04
┌──────────────────────┬──────────────────────────────────────────────────┐ │13 │Тип ячейки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │04 │Номер ячейки │ └──────────────────────┴──────────────────────────────────────────────────┘
Ячейка (Type=13, N=4) размер 13 байт:
F5676F3F 0000A041 8FC2B142 01
┌──────────────────────┬──────────────────────────────────────────────────┐ │F5676F3F │Плотность продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000A041 │Температура продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │8FC2B142 │Уровень продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │01 │Единица измерения: Декалитры. │ └──────────────────────┴──────────────────────────────────────────────────┘
2 байта тип и номер ячейки:
0D05
┌──────────────────────┬──────────────────────────────────────────────────┐ │13 │Тип ячейки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │05 │Номер ячейки │ └──────────────────────┴──────────────────────────────────────────────────┘
Ячейка (Type=13, N=5) размер 13 байт:
F5676F3F 0000A041 8FC2B142 01
┌──────────────────────┬──────────────────────────────────────────────────┐ │F5676F3F │Плотность продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000A041 │Температура продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │8FC2B142 │Уровень продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │01 │Единица измерения: Декалитры. │ └──────────────────────┴──────────────────────────────────────────────────┘
2 байта тип и номер ячейки:
0D06
┌──────────────────────┬──────────────────────────────────────────────────┐ │13 │Тип ячейки │ ├──────────────────────┼──────────────────────────────────────────────────┤ │06 │Номер ячейки │ └──────────────────────┴──────────────────────────────────────────────────┘
Ячейка (Type=13, N=6) размер 13 байт:
F5676F3F 0000A041 8FC2B142 01
┌──────────────────────┬──────────────────────────────────────────────────┐ │F5676F3F │Плотность продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │0000A041 │Температура продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │8FC2B142 │Уровень продукта │ ├──────────────────────┼──────────────────────────────────────────────────┤ │01 │Единица измерения уровня: Декалитры. │ └──────────────────────┴──────────────────────────────────────────────────┘