Протокол передачи данных из ПО РИТМ в другие

advertisement
Протокол передачи данных между ПО для мониторинга
мобильных объектов РИТМ и сторонним ПО.
Версия протокола 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 зайти в Настройки-> служба передачи данных
ДорТрансНавигации, заполнить соответствующие поля и
добавить список объектов, по которым будут передаваться
данные в стороннее ПО.
Download