Протокол передачи данных между ПО для мониторинга мобильных объектов РИТМ и сторонним ПО. Версия протокола 1.2 Версия IDorTransNav 1.06 Санкт-Петербург 2011 г. 1. Назначение протокола. Протокол предназначен для передачи данных мобильных объектов с системой слежения Вояджер: местоположения, состояния дискретных входов, состояние аналоговых входов, состояния выходов, значения бортового напряжения питания, значения датчиков пассажиропотока. 2. Фреймы. Фрейм состоит из следующих составных частей: заголовок фрейма, тело фрейма, контрольная сумма фрейма (табл.1). Тело фрейма представляет собой контейнер, в котором хранятся информационные пакеты. В одном фрейме может передаваться как один, так и несколько информационных пакетов. Структура информационного пакета описана в разделе 2. Контрольная сумма фрейма представляет собой «исключающее или» всех байтов фрейма за исключением байта контрольной суммы. Таблица 1. Структура фрейма Поле Длина Тип Описание <frame_tag> 2 char [2] Признак начала фрейма. символом «~» (тильда). <frame_len> 4 unsigned int32 Общая длина фрейма в байтах. <reserved> 6 byte [6] Зарезервировано. Заполняется нулями. var struct Тело фрейма 1 Byte Контрольная сумма <frame_body> <checksum> Заполняется 3. Информационные пакеты Информационный пакет является неделимым элементом обмена информацией между клиентом и сервером. Информационный пакет состоит из следующих составных частей: заголовок информационного пакета, тело информационного пакета (табл. 2). Тело информационного пакета содержит полезную информацию, передаваемую в пакете. Структура и размер этой информации определяется типом пакета. Таблица 2. Структура информационного пакета Поле Длина Тип Описание <pack_len> 4 unsigned int32 Общая длина информационного пакета в байтах. <pack_num> 4 unsigned int32 Уникальный номер пакета. После того как номер достигнет значения 4294967295, он сбрасывается в 0. <pack_type> 2 unsigned int16 Тип пакета <reserved> 2 byte [2] Зарезервировано. Заполняется нулями. Struct Тело информационного пакета <pack_body> 4. var Авторизация на коммуникационном сервере Подключившись к серверу, клиентская служба в первую очередь должна пройти процедуру авторизации. Для этих целей она отправляет информационный пакет с типом 1 и ждет ответа от сервера (10-15 сек). В случае отсутствия ответа, клиентская служба повторно отправляет пакет с типом 1. Если и на этот раз ответ от сервера не поступил, клиентская служба разрывает подключение и через определенное время (5 сек) повторно предпринимает попытку соединиться с коммуникационным сервером. В ответ на пакет с типом 1, сервер отправляет ответный пакет с типом 101, информируя об успехе, либо неуспехе авторизации. До тех пор, пока клиентская служба не авторизуется на сервере, никакие пакеты (за исключением пакета с типом 1) сервером не принимаются. 5. Передача навигационных данных Передача навигационных данных осуществляется посредством информационного пакета с типом 2. Помимо базовой навигационной информации, к каждой посылке могут быть прикреплены дополнительные блоки данных по датчикам, вешним периферийным устройствам и др. В ответ сервер формирует информационные пакеты с типом 0, подтверждая каждую полученную навигационную посылку. Если от клиентской службы в течение заданного промежутка времени (13 мин.) не поступило ни одного пакета, то сервер принудительно разрывает с ней связь. Для предотвращения разрыва связи служба может периодически отправлять на сервер информационные пакеты с типом 10 (проверка связи). В ответ сервер пришлет подтверждающий информационный пакет с типом 0. Приложение 1. Структура тела информационного пакета Перечень типов информационных пакетов, которые поддерживаются в настоящее время, представлен в таблице 1. Таблица 1. Перечень типов информационных пакетов Типа пакета Описание пакета Отправитель 0 Подтверждение в получении пакета К,С 1 Авторизация на коммуникационном сервере К 2 Получена навигационная посылка К 10 Проверка связи К 101 Результат авторизации на коммуникационном сервере С Таблица 2. Структура тела информационного Подтверждение в получении пакета. пакета с типом 0. Поле Длина Тип Описание <conf_list> var unsigned int32[] Коды успешно полученных информационных пакетов Таблица 3. Структура тела информационного пакета с типом 1. Авторизация на сервере. Поле Длина Тип Описание <auth_code> 16 byte [16] Уникальный код клиентской службы. В данный момент: 0x2D 0x85 0xA8 0xB4 0x04 0xC7 0x92 0x41 0xB8 0xF7 0x9D 0x3B 0x75 0xBA 0xA5 0x23 Таблица 4. Структура тела информационного пакета с типом 2. Получена навигационная посылка. Поле Длина Тип Описание <radionum> 4 unsigned int32 Номер мобильного блока <radiotype> 2 unsigned int16 Тип мобильного блока. <timeso> 4 unsigned int32 Время поступления навигационной посылки. Количество секунд прошедшее с 01.01.1970 00:00:00. Мировое время (GMT). <timenav> 4 unsigned int32 Время навигационной посылки. Количество секунд прошедшее с 01.01.1970 00:00:00. Мировое время (GMT). <flags> 1 byte bit7 - достоверность навигационных данных ( 1- достоверная, 0 – нет ); bit6 - полушарие долготы ( 1 – E, 0 – W ); bit5 - полушарие широты ( 1 – N, 0 – S ); bit4 - работа от встроенного аккумулятора ( 1- да, 0 – нет ); bit3 данные пришли из буфера (не оперативные) ( 1- да, 0 – нет );; bit2 - состояние SOS (1 – SOS, 0 – нет SOS); bit1 - признак включенного зажигания ( 1вкл., 0 –выкл ); bit0 - состояние вызова на голосовую связь (1 – есть запрос на голосовую связь; 0 – нет запроса на голосовую связь). <latitude> 4 unsigned int32 Широта в градусах, умноженная на 10 000 000 <longitude> 4 unsigned int32 Долгота в градусах, умноженная на 10 000 000 <speed> 2 unsigned int16 Скорость движения, км/ч <course> 2 unsigned int16 Направление движения (вектор скорости), градусы <altitude> 2 signed int16 Высота над уровнем моря в метрах ( -18000 … +18000) <nsat> 1 byte Количество видимых спутников <track> 4 unsigned int32 Накопленный пробег (одометр), метры <reserved> 8 byte[8] Зарезервировано. Заполняется нулями. <dop 1> var struct Дополнительный блок 1 … … … … <dop n> var struct Дополнительный блок n Номер мобильного блока – уникальный номер, который однозначно идентифицирует мобильный блок конкретного типа в системе. Тип мобильного блока присваивается из файла IServer.ini (папка C:\pcn6), секция idortransnav, параметр block_type. Дополнительные блоки содержат данные, дополняющие базовую навигационную информацию. Дополнительный блок не имеет фиксированного размера и состоит из следующих элементов: заголовок дополнительного блока, тело дополнительного блока (табл. 5). Таблица 5. Структура дополнительного блока навигационной посылки. Поле Длина Тип Описание <block_len> 4 unsigned int32 Длина дополнительного блока <block_type> 1 byte Тип дополнительного блока <reserved> 1 byte Зарезервировано. Заполняется нулями var struct Тело дополнительного блока <block_body> Тело дополнительного блока содержит полезную информацию, передаваемую в блоке. Структура и размер этой информации определяется типом дополнительного блока. Таблица 6. Структура тела дополнительного блока с типом 2. Данные аппаратуры подсчета пассажиропотока. Поле Длина Тип Описание <irma_door_in1> 1 byte Количество вошедших пассажиров через первую дверь. <irma_door_in2> 1 byte Количество вошедших пассажиров через вторую дверь. <irma_door_in3> 1 byte Количество вошедших пассажиров через третью дверь. <irma_door_in4> 1 byte Количество вошедших пассажиров через четвертую дверь. <irma_door_out1> 1 byte Количество вышедших пассажиров через первую дверь. <irma_door_out2> 1 byte Количество вышедших пассажиров через вторую дверь. <irma_door_out3> 1 byte Количество вышедших пассажиров через третью дверь. <irma_door_out4> 1 byte Количество вышедших пассажиров через четвертую дверь. <irma_present_door> 1 byte Битовая маска присутствия двери (bit3..bit0): 1 - дверь присутствует 0 – дверь не найдена Битовая маска закрытия двери (bit7..bit4): 1 - дверь закрывалась 0 – дверь не закрывалась Таблица 7. Структура тела информационного пакета с типом 10. Проверка связи. Поле Длина Тип Описание - 0 - Пустое тело Таблица 8. Структура тела информационного пакета с типом 101. Результат авторизации на сервере. Поле Длина Тип Описание <auth_res> 1 byte Результат авторизации: 0 – авторизация выполнена; 1 – ошибка авторизации. Приложение 2. Для передачи данных от приборов Вояджер в стороннее ПО через ПО РИТМ необходимо: 1. Установить дистрибутив для мониторинга мобильных объектов (http://www.ritm.ru/documents/ ->Пультовые программы. Мониторинг мобильных объектов->Пультовая программа для мониторинга мобильных объектов (версия 8.2.0.283, с поддержкой MySQL, без поддержки Firebird)) 2. 3. 4. Добавить новые объекты в БД. См. инструкцию http://www.ritm.ru/documentation/manuals/PCN8_rev.06.11.pdf ,стр. 27. Настроить прибор Вояджер (см краткую иснтрукцию http://www.ritm.ru/documentation/manuals/voyager_short_manual.pdf ). В IManager зайти в Настройки-> служба передачи данных ДорТрансНавигации, заполнить соответствующие поля и добавить список объектов, по которым будут передаваться данные в стороннее ПО.