Обмен данными и вопросы кодирования
9.3. Протоколы обмена
Ранее уже говорилось, что при взаимодействии с формальными механизмами обе стороны общения обязаны соблюдать некоторый протокол (договоренность) обмена данными. Так, для случая, когда имеются один источник данных (передатчик) и несколько приемников, часто используется протокол ARINC 429 (ГОСТ 18977-79). Он использует в качестве единицы передачи слово, содержащее 32 разряда.
32 | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | |
к/р | Сп.Код | Поле данных | Ид.Ист. | Метка (код команды) | ||||||||||||||||||||||||||||
к/р | Количество слов сообщения | STX | ||||||||||||||||||||||||||||||
к/р | Символ 3 | Символ 2 | Символ 1 | TXT | ||||||||||||||||||||||||||||
к/р |
Обычно контрольный разряд (к/р) ARINC-слова выбирается так, чтобы сумма единиц в слове была нечетной. При этом, как и в большинстве систем передачи данных, контроль целостности принятого слова выполняется на аппаратном уровне. За программой остается только проверка контрольной суммы и интерпретация принятого сообщения.
Младшие разряды слова отводятся под двоично-восьмеричный код метки слова. Слова с различными метками имеют различную интерпретацию в протоколе и различный формат. Сама метка записывается по традиции справа налево. Так, код метки с восьмеричным номером 012 (прямое представление 0 001 010) будет в разрядах 1-8 выглядеть так: 0101000.
Такое представление сохранилось с тех пор, когда слово передавалось по последовательному каналу, принималось и обрабатывалось в сдвиговом регистре. При этом метка поступала на обработку первой. А по завершении приема слова можно было сформировать и проверить контрольный разряд. В настоящее время чаще слово передается побайтово, но традиции кодирования справа налево сохранились.
Поле "Ид.Ист." позволяет закодировать источник данных (сообщения). Понятно, что их не может быть более четырех. В ряде случаев это поле служит для указания адресата - приемника данных.
Поле "Сп.Код" применяется для кодирования специальной информации - расширения поля данных. Например, в нем может указываться знак числа, направление ветра (юг, восток, север, запад) и т.п.
В тех случаях, когда передается пакет текстовых данных, в теле сообщения используются слова с TXT-метками, содержательная часть которых включает три символа (7-разрядных). В поле "Сп.Код" указываются признаки "первый/последний". В тех случаях, когда длина сообщения не кратна трем, по соглашению полагается заполнять поля неиспользуемых символов нулями.
Кроме упомянутых в разделе 9.1 меток STX, ETX, RTS, ACK, NAK, ориентированных на передачу пакетов данных, протокол ГОСТ 18977-79 предусматривает и такие слова, которые полностью самодостаточны. Их поля данных могут интерпретироваться как текущая высота, скорость, сила ветра, состояние устройства (биты признаков) и т.п.
Как правило, протокол подобного обмена включает периодическую посылку "пустого" слова (Zero Label). Его появление на шине обмена говорит о том, что источник данных "жив" и нормально функционирует. Отсутствие подобного слова в течение двойного периода посылки означает для приемника либо обрыв линии передачи, либо отказ источника данных.
Другой протокол (ГОСТ 27765.52-87) предназначен для организации связи нескольких устройств по магистральной (обычно последовательной) шине данных. При этом используются 20-битовые слова, содержащие в начале 3 специальных синхронизирующих бита (sss). По ним аппаратура связи может настроиться на прием слова.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
s | s | s | Адрес ОУ | Длина сообщения | |||||||||||||||
s | s | s | Данные | ||||||||||||||||
s | s | s | Адрес ОУ | Ош | Ос | Зн | н/и | к/р |
При приеме слова аппаратура обслуживания линии связи использует первые три разряда для настройки на прием передаваемых данных. Последним принимается контрольный разряд, который, как правило, проверяется на аппаратном уровне. Бит четности (к/р) формируется так, чтобы количество единиц у 17-и информационных разрядов было нечетно.
В содержательной части (оставшиеся 16 бит) содержится код (адрес оконечного устройства) приемника (адресата), длина сообщения и различная управляющая информация. В ее состав, так же как и в ARINC-протоколе, может включаться дополнительно код источника данных. В ответном слове (10-й разряд Ос = 1) принимающая сторона может установить код ошибки (9-й разряд), признак "Абонент занят" (16-й разряд), "Абонент неисправен" (17-й разряд) и т.п. Традиционно посылка пакета начинается по инициативе передатчика (источника) данных и заканчивается ответным словом приемника.
Как правило, код оконечного устройства 11111 предназначен для одновременной передачи команды нескольким приемникам сразу. При этом не предусматривается прием ответного слова. Их может быть больше одного и разных по содержанию (кто-то принял, а кто-то не принял). Такие "широковещательные" команды могут обеспечить повышение скорости передачи данных, но, безусловно, снижают надежность доставки.
Поскольку вероятность появления отказа в линии связи тем больше, чем длиннее передаваемое сообщение, косвенным способом повышения надежности передачи может служить сжатие данных перед отправкой. Конечно, при этом увеличиваются временные затраты на подготовку (сжатие, кодирование) пакета перед отправкой и его восстановление (декодирование) в пункте приема. Однако в ряде случаев это с лихвой окупается за счет увеличения надежности и уменьшения времени передачи.