Способ формирования и расформирования текста сообщения в информационных бинарных пакетах прикладного уровня
METHOD OF GENERATING AND BREAKING UP A MESSAGE TEXT IN INFORMATION BINARY APPLICATION LAYER PACKETS

Изобретение относится к области формирования информационных сообщений и может быть использовано для оптимального автоматизированного формирования и расформирования текста сообщения в информационных бинарных пакетах прикладного уровня на основе имеющейся информации о диапазоне изменений и допустимой точности передаваемых параметров.
При передаче информационных сообщений, вне зависимости от выбранного способа кодирования и передачи информации, перед разработчиками стоит задача разработки протоколов прикладного уровня. На прикладном уровне в пакете любого протокола можно выделить «контейнерную» часть, задача которой довести пакет до нужного адресата и сообщить о типе текста сообщения, и собственно текста сообщения, передача которого и является целью взаимодействия между передающей и принимающей стороной.
Текст сообщения представляет собой набор байтов, где в соответствии с типом сообщения в двоичном виде размещена информация о заранее обусловленных передаваемых параметрах самого различного назначения, например, идентификаторы и адреса передающей стороны, время формирования сообщения, показания скорости объекта, его местоположения, состояния датчиков. В бинарном протоколе под каждый из этих параметров должно быть выделено необходимое число бит, которые и образуют в совокупности структуру текста сообщения. Одной из главных задач разработчика является определение структур и выделение полей под передаваемые параметры в соответствии с типами передаваемых сообщений. В некоторых случаях число выделяемых бит является очевидным. Если, к примеру, необходимо передать одну из 14 возможных команд, то достаточно выделить 4 бита, на которых любая команда в форме натурального числа может быть размещена в двоичном виде, причем останется еще резерв на расширение до 16 команд. Но параметры в исходном состоянии могут быть и дробными, и отрицательными, а в общем случае они выражаются вещественным числом с определенным диапазоном изменения, при этом на приемной стороне параметр должен быть восстановлен с необходимой точностью. Бинарные протоколы, как правило, используются там, где скорость передачи информации критична, что обычно характерно для передач по радиоканалам с относительно низкой надежностью. В таких случаях, с точки зрения передачи информации, следует стремиться к формированию максимально короткого текста сообщения, повышая тем самым скорость передачи информации и увеличивая помехоустойчивость и надежность передачи.
Для экономии места в бинарных протоколах довольно часто передаваемый параметр представляют в форме натурального числа с младшим разрядом (условной единицей), равным допустимой погрешности. Максимальное значение этого числа, а значит, и число выделяемых под него бит определяется диапазоном изменения параметра в условных единицах. Объединенные в набор байтов поля передаваемых параметров и формируют структуру текста сообщения. Процедуры формирования и расформирования текста сообщения достаточно трудоемки, поэтому разработчики и программисты стараются разместить поля в пакете наиболее удобным для себя способом с минимальным дроблением байтов, что порой приводит к неоправданному расширению текста сообщения в ущерб надежности и скорости передачи информации. При этом любое дополнение или изменение протокола приводит к существенным программным доработкам. Между тем, если взять за основу сплошное расположение полей в пакете, а упаковку параметров проводить по единым правилам, процессы формирования и расформирования текстов сообщений можно полностью автоматизировать. В этом случае при изменениях в протоколе основные процедуры останутся неизменными, а от разработчиков даже не потребуется знание в явном виде структуры текста сообщения.
Из известных способов формирования текста сообщения наиболее близким (прототипом) является способ формирования навигационных сообщений, транслируемых спутниками системы ГЛОНАСС (Глобальная спутниковая система ГЛОНАСС/Под ред. В.Н. Харисова, А.И. Перова, В.А. Болдина - М.:ИПРЖР, 1998.). Можно заметить, что в строках каждого навигационного кадра (Структура навигационного кадра, стр. 147, 148) параметры передаются как натуральные числа в условных единицах, равных величине младшего разряда (допустимой точности), длина полей большей части параметров определяется минимальным числом бит, позволяющим разместить диапазон изменения параметра в условных единицах, а сами поля в большинстве случаев располагают без пробелов. Но эти правила формирования сообщений не являются обязательными. Например, в выбранном прототипе число разрядов под спутниковые ускорения избыточно, а в строках навигационного кадра имеются пробелы. Отсутствие единых, унифицированных правил при формировании сообщений не позволяет добиться автоматизации процедур их формирования и расформирования.
Целью изобретения является упрощение и ускорение разработки, формирования и расформирования предельно коротких текстов сообщений бинарных протоколов прикладного уровня путем формирования оптимальной унифицированной структуры текста сообщения на основе данных по диапазону изменений и допустимой точности передаваемых параметров с использованием универсальных машинно-ориентированных алгоритмов.
Для достижения цели предложен универсальный, машинно-ориентированный способ формирования и расформирования текста сообщения, основанный на использовании диапазона изменений передаваемых параметров и их допустимой точности, заключающийся в том, что длину поля под каждый параметр определяют натуральным числом, характеризующим величину изменения этого параметра в условных единицах, представляющих собой допустимую точность параметра, поля под параметры в тексте сообщения располагают последовательно, значение каждого параметра передается его смещением по отношению к минимальному значению в условных единицах, а формирование и расформирование любого текста сообщения осуществляют по унифицированным алгоритмам.
i
i
i
i
i
i
i
a
a
Для реализации предлагаемого способа необходимо на основе имеющейся информации о числе передаваемых параметров (k), границах изменений (L P) каждого i-го параметра  (, ∈ [L, P]) и его допустимой точности d автоматизировать процессы:
- формирования передающей стороной текста сообщения с информацией о текущих значениях параметров,
- расформирования приемной стороной теста сообщения с восстановлением текущих параметров с необходимой точностью в привычном виде.
Перед описанием алгоритмов необходимо найти несколько предварительных соотношений.
a
a
i
i
i
i
i
i
Так как для каждого параметра  известна область его изменения:  ∈ [L, P], то приняв за условную единицу (цену младшего разряда) задаваемую точность d, можно найти подлежащее передачи натуральное число n, выражающее смещение параметра в условных единицах относительно левой границы (задаваемая точность и границы задаем в тех же единицах, что и параметр). С учетом округления до целого числа (round), искомое натуральное число определится по формуле:
a
i
i
i
i
i
х
Максимальное значение число и, принимает при параметре, равном верхней границе (=P). Число бит  необходимое для его размещения, можно найти, решив показательное уравнение 2-1=(P-L)/d и округлив результат до целого значения (ceil) в большую сторону:
Общее расчетное количество байт N, необходимое для формирования текста сообщения с числом параметров к, при сплошном последовательном заполнении битовых полей находим по формуле:
Дадим теперь краткое описание легко формализуемых алгоритмов по формированию и расформированию текста сообщения.
j
N
i
k
a
Формирование передающей стороной текста сообщения (массива {b}) осуществляют последовательной обработкой каждого i-го из общего числа k параметров {} в следующем порядке:
1. По формуле (3) определяют отведенное под текущий i-й параметр число байт
i
2. По формуле (1) определяют подлежащее передаче натуральное число n.
3. Для первого параметра (i=1) номер первого из задействованных байтов и начало расположения параметра в этом байте (смещение) принимают равными нулю, для всех остальных параметров (i>1) номер первого из задействованных байтов и начало расположения параметра в нем определяют с учетом предыдущего цикла (п.4 для (i-1)-го параметра).
4. Для очередного параметра определяют границы его расположения: номера байтов, где он располагается, и число используемых бит в каждом задействованном байте.
5. По каждому из задействованных байтов:
- определяют под текущий параметр его маску (байт, в котором всем задействованным битам присваивают значение «1»),
j
i
- с учетом значения последнего задействованного байта предыдущего цикла (для i>1) находят значения текущих задействованных байтов b, используя побитовый сдвиг n и битовую логическую операцию «и» с соответствующей маской.
6. Если параметр не последний (i<k), переходят к п. 1.
j
N
7. Если параметр последний (i=k), считают процесс формирования массива текста сообщения {b} законченным.
i
i
i
j
N
Сформированный текст сообщения присоединяют к контейнерной части сообщения, кодируют и транслируют нужному адресату или нескольким адресатам. На приемной стороне декодируют сообщение, определяют по типу пакета число передаваемых параметров (k), границы их изменений (L P) и допустимую точность d и приступают к расформирования массива {b}. Целью расформирования является восстановление исходных параметров с заданной точностью, для чего должно выполняться условие:
j
N
Расформирование принимающей стороной текста сообщения {b} осуществляют последовательной обработкой атрибутов каждого i-го из общего числа k параметров в следующем порядке (при получении структуры используют те же соотношения, что и при процессе формирования):
1. По формуле (3) определяют отведенное под текущий i-й параметр число байт
2. Для первого параметра (i=1) номер первого из задействованных байтов и начало расположения параметра в этом байте принимают равными нулю, для всех остальных параметров (i>1) номер первого из задействованных байтов и начало расположения параметра в нем определяют с учетом предыдущего цикла (п.3 для (i-1)-zo параметра).
3. Для очередного параметра определяют границы его расположения: номера байтов, где он располагается, и число используемых бит в последнем задействованном байте.
4. По каждому из задействованных байтов под текущий параметр:
- определяют его маску,
- определяют компонент натурального числа и„ используя битовую логическую операцию «и» с соответствующей маской и побитный сдвиг,
i
- суммируя очередной компонент, последовательно формируют натуральное число, получая после обработки последнего из задействованных байтов искомое значение n.
5. Преобразованиями, обратными формуле (1), восстанавливают с заданной точностью исходный параметр:
6. Если параметр не последний (i<k), переходят к п. 1.
7. Если параметр последний (i=k), считают процесс расформирования массива текста сообщения и восстановления с заданной точностью параметров  законченным.
Как следует из алгоритмов формирования и расформирования, структура текста сообщения полностью определяется исходной информацией по диапазону изменений и допустимой точностью передаваемых параметров, и знание ее в явном виде представляет интерес только как справочный материал. Следует так же отметить, что при разработке сложных систем номенклатура передаваемых сообщений может быть очень большой и расчетное число байт N (см. формулу (4)) может меняться в широких пределах. Для удобства кодирования и передачи по каналу связи реальную длину текста сообщения часто унифицируют либо для всех сообщений, либо для определенного класса близких по длине сообщений. В этом случае расчетное число байт N служит ориентиром для разбивки по классам и выбора оптимальных длин сообщений. Все неиспользуемые биты заполняются нулями, процедуры же формирования и расформирования текстов сообщения остаются неизменными.
Пример.
Система мониторинга служебного транспорта состоит из диспетчерского пункта (ДП) и взаимодействующими с ним по радиоканалам УКВ транспортных средств (ТС). В штатном режиме ДП последовательно ведет опрос ТС и принимает от них навигационные сообщения. Очевидно, что для помехоустойчивости и уменьшения цикла опроса при составлении протокола следует стремиться к разработке максимально коротких сообщений.
Согласно техническому заданию система должна обслуживать до 500 ТС. Подконтрольная зона (часть Псковской области) ограничена координатами (в системе координат Гаусса-Крюгера):
- по оси X: 6356 км - 6424 км
- по оси Y: 5564 км - 5604 км
Возможная скорость движения ТС до 160 км/час.
В состав основного и наиболее нагруженного навигационного сообщения должны входить: адрес ТС, состояние ТС (до 16 значений), его плановые координаты с точностью 4 м, скорость с точностью 3 км/час, курс с точностью 5°.
Как передающая, так и приемная сторона располагают характеристиками параметров, соответствующими типу навигационного сообщения: Параметры (k=6):
a
1
1
1
1
-адрес (): d=1, L=0, P=499;
а
2
2
2
2
- состояние (): d=1, L=0, P=15;
а
3
3
3
3
- координата Х((км)): d=0.004, L=6356, P=6424;
а
4
4
4
4
- координата Y ((км)): d=0.004, L=5564, P=5604;
а
5
5
5
5
- скорость ((км/час)): d=3, L=0, P=160;
а
6
6
6
6
- курс ((градус)): d=5, L=0, P=355;
Как при формировании, так и при расформировании текста сообщения последовательно определяют длины полей под параметры (см. формулу (3)) и общую структуру пакета:
Маски под каждый из параметров принимают значения:
- для 1-го параметра (задействованы байты 1, 2): 255, 1;
- для 2-го параметра (задействован 2-ой байт): 30;
- для 3-го параметра (задействованы байты 2, 3, 4): 224, 255, 15;
- для 4-го параметра (задействованы байты 4, 5, 6): 240, 255, 3;
- для 5-го параметра (задействован 6-ой байт): 252;
- для 6-го параметра (задействован 7-ой байт): 127.
Предполагаем, что предназначенные к передаче параметры имеют следующие значения:
a
а
а
а
а
а
1
2
3
4
5
6
=356; =7; =6404.336; =5581.222; =87.6; =46.5;
После обработки на передающей стороне получим:
а) натуральные формы параметров (1):
1
2
3
4
5
6
n=356; n=7; n=12084; n=4305; n=29; n=9;
б) байты текста сообщения:
1
2
3
4
b=100; b=143; b=230; b=21;
5
6
7
b=13; b=117; b=9.
После расформирования на принимающей стороне и использования формулы (5) получим:
Полученные значения в пределах допускаемой точности совпадают с исходными параметрами.
Достигаемым техническим результатом предлагаемого способа формирования и расформирования текста сообщения является упрощение и ускорение разработки, формирования и расформирования предельно коротких текстов сообщений в бинарных протоколах прикладного уровня путем формирования оптимальной унифицированной структуры текста сообщения на основе данных по диапазону изменений и допустимой точности передаваемых параметров с использованием универсальных машинно-ориентированных алгоритмов.