TSIP ПРОТОКОЛ ДЛЯ ВЗАИМОДЕЙСТВИЯ С GPS ПРИЕМНИКОМ THUNDERBOLT
Шевский В.С.
Шевский Владислав Сергеевич - студент, кафедра математического обеспечения электронно-вычислительных машин, факультет компьютерных технологий и информатики, Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина), г. Санкт-Петербург
Аннотация: в статье описывается принцип работы с GPS приемником Thunderbolt в соответствии с правилами протокола TSIP.
Ключевые слова: протокол, данные, идентификатор, байт, кодировка, дескриптор.
Аббревиатура TSIP расшифровывается как Trimble Standard Interface Protocol. Как следует из названия, протокол разработала компания Trimble, работающая в направлении разработки аппаратных и программных продуктов в области навигационных систем, таких как GPS. Протокол описывает набор правил для взаимодействия с GPS приемником. В данной статье в качестве приемника приведено устройство Thunderbolt-E GPS Disciplined Clock. Приемник взаимодействует с программным приложением посредством отправки сообщений в формате запрос -ответ через Com порт компьютера.
Для начала работы с Thunderbolt, к нему сперва необходимо подключиться. Для этого существуют различные средства, в зависимости от языка, на котором вы пишете программу. Например: в C++ можно использовать дескриптор HANDLE, платформа .NET предлагает класс SerialPort. Последний вариант является более предпочтительным в связи с тем, что класс уже содержит набор готовых методов для манипуляций с портом. Далее, при подключении необходимо указать параметры соединения. По умолчанию, TSIP определяет следующие параметры:
- скорость передачи данных (в бодах): 9600;
- использование проверки на возможные ошибки: отключить проверку;
- количество передаваемых бит: 8;
- количество стоповых/стартовых бит: 1.
Таким образом, на языке, поддерживающем .NET (например - C#), код подключения к порту будет выглядеть следующим образом:
SerialPort port = new SerialPort ("COM1", 9600, Parity.None, 8, StopBits.One);
port.Open();
После подключения, работа происходит посредством записи и считывания набора байт из внутреннего потока созданного объекта port. Для этого имеются соответствующие методы: Read(), ReadByte(), Write(). WriteLine() и другие.
Правильно сформированный для отправки или получения набор данных обозначается в TSIP как пакет. TSIP протокол определяет два вида пакетов данных:
- Command packet - пакет для отправки на GPS устройство;
- Response packet - пакет для получения от GPS в оперативную память приложения.
Протокол подразумевает работу с устройством по принципу запрос-ответ. Это означает, что определенный Response пакет может быть отправлен в ответ на запрос соответствующего Request пакета. Однако некоторые пакеты могут быть получены без запроса. Пакеты 0x8F-AB и 0x8F-AC (идентификатор каждого состоит из двух элементов) отправляются клиенту по умолчанию и несут в себе основную информацию о GPS приемнике: его текущая дата, время; координаты широты, долготы, высоты и прочее.
Данные в пределах одного пакета представляют собой текст в кодировке ASCII. Поэтому единица данных определяется в виде числа в шестнадцатеричной системе счисления. Для каждого пакета существуют признаки начала и окончания. Ниже представлен стандартный формат пакета:
0x10 id data 0x03 0x10.
Здесь: первый элемент (0x10) определяет начало пакета; id - определяет идентификатор текущего пакета; data - данные, которые содержит пакет; замыкающая последовательность элементов (0x03 0x10) - признак окончания пакета [1, с. 56]. Можно заметить, что id не всегда состоит из одного элемента. Например, TSIP определяет Response пакет с идентификатором 0x8F 0xAB. Член пакета data является необязательным и может содержать произвольное количество элементов или отсутствовать вовсе. Такое поведение очень часто встречается для Command пакетов. Например, Command пакет 0x24, запрашивающий список спутников, использовавшихся для определения текущего местоположения GPS приемника, не содержит данных (data) и, таким образом, имеет вид:
0x10 0x24 x03 0x10.
За исключением идентификатора 0x24, в тексте выше приведен минимальный набор данных, который содержит каждый пакет, определенный в TSIP.
Помимо простого запроса, Command пакеты могут изменять настройки приемника. Например, используя пакет 0x35 можно установить требуемые опции ввода/вывода (отключение/включение LLA, ECEF; выбор GPS или UTC счетчика времени).
После формирования или получения целевых данных, их требуется преобразовать в правильный формат.
Как было сказано ранее, в пакете опционально хранится его содержимое, условно обозначенное как data. Некоторые единицы содержимого (байты) пакета самостоятельно хранят определенное значение, которое напрямую можно использовать в программе. Другие связаны с соседними байтами. Последние требуют преобразования в один из определенных протоколом типов [2, с. 48]. Протокол TSIP описывает всего 6 таких типов:
- Short: аналог в C# - short;
- UShort: аналог в C# - ushort;
- Long: аналог в C# - long;
- ULong: аналог в C# - ulong;
- Single: аналог в C# - float;
- Double: аналог в C# - double.
Short и UShort используют 2 соседних байта; Long, ULong и Single - 4; Double - 8 байт.
Список литературы
1. Trimble. ThunderBolt™ GPS Disciplined Clock Manual version 3.0, 2000.
2. Trimble. User Guide Acutime GG Multi-GNSS Smart Antenna version 1.0, 2013.