В блоге:

2018-11-08

Описание протокола передачи телеинформации ТМ800А (архивное)

В конце 2000-х делал один небольшой, но полезный проектик. Там использовался протокол неизвестного происхождения под условным названием ТМ800А (ТМ-800А), тогда сделал его черное описание. Выкладываю это описание в публичный доступ, может пригодится. Знаю точно, что этот протокол до сих пор местами используется.


Протокол передачи телеинформации ТМ800А

Назначение

Данный протокол ТМ800А служит для односторонней передачи телеинформации по интерфейсам RS232, RS485 и подобным. Создатель протокола неизвестен (ОАО "ЮГ-СИСТЕМА плюс"?). Название протокола образовано от названия системы телемеханики ТМ800, но сам протокол заметно отличается от протокола, использовавшегося в оригинальной аппаратуре ТМ800, хотя и имеет отдельные схожие характеристики.


Структура данных

Протокол служит для передачи двух видов информации:
  • телесигнал - бинарное значение, имеющее состояния "включено" и "выключено";
  • телеизмерение - дискретное значение в диапазоне ...
Все значения передаются полными циклами. Каждый цикл состоит из одинакового количества подциклов. Длина подцикла фиксированная. Количество телесигналов и телеизмерений, передаваемых в подцикле, зависит от их взаимного соотношения. В крайних случаях возможна передача в одном подцикле:
  • 64 телесигнала и 0 телеизмерений;
  • ...
  • 0 телесигналов и 8 телеизмерений.

Передача данных

При передаче данных используются девятибитные байты, которые не соответствуют байтам в понимании протоколов RS232 и подобным. Поэтому данные, передаваемые, например, по RS232 нужно рассматривать как поток битов, которые образуют девятибитные байты ТМ800А. Далее по тексту под словом байт понимается девятибитный байт, если не оговорено иное.

Структура цикла:
  • Стартовые биты (заголовок цикла) - 2 байта;
  • Заданное количество подциклов, каждый подцикл - 11 байт.
Заголовок цикла - это два байта, каждый из которых равен 101011010b.

Структура подцикла:
  • телеинформация - 8 байтов;
  • контрольный байт - 1 байт;
  • циклический код (CRC) - 2 байта.
Контрольный байт - значение 010101010b. Для расчета циклического избыточного кода (CRC) используется полином x16+x12+x5+1, значение контрольного байта включается в расчет этого кода.


Отличия от протокола оригинальной аппаратуры ТМ800

Описанный протокол ТМ800А хотя и использует некоторые схожие приемы, но заметно отличается от протокола оригинальной аппаратуры ТМ800, потому не является с ним совместимым.

Общим в обоих протоколах является структура цикла:
  • используются одинаковые двухбайтные заголовки цикла;
  • подцикл одинаковый по структуре - 8 байт телеинформации, 1 контрольный байт и 2 байта циклического кода

В оригинальном протоколе старший (знаковый) бит байтов телеинформации используется для типизации значений, передаваемых в этом байте. Цитата из оригинального описания: Для информации ТИ первым разрядом передается знак ТИ ("1" - минус), а для информации ТС передается "0". В описываемом протоколе такой типизации нет. (добавить про девятибитные телеизмерения)

Есть различия по контрольному байту, передаваемому после телеинформации. В оригинале: Принята следующая структура байта КП: первым разрядом постоянно передается логическая "1". При нормальной работе функциональных блоков аппаратуры КП, начиная со второго разряда, передается следующая кодовая комбинация: 10101010. Такая последовательность импульсов говорит о том, что в обмене между блоком централи КП и функциональными блокам не было сбоев и аппаратура КП исправна. Каждый разряд контрольной информации несет информацию о правильном обмене между централью КП и ФБ на соответствующем байте. В случае неправильного обмена в соответствующем разряде контрольной информации произойдет изменение информации на противоположную. В описываемом протоколе контрольный байт начинается не со значения 1, а с 0. Кроме того, не было обнаружено использования инверсии остальных битов как индикаторов об проблемах с соответствующим байтом телеинформации.

Отличаются способы расчета циклического кода для телеинформации подцикла. В оригинале использовался другой полином (x16+x12+x5 вместо x16+x12+x5+1), кроме того, расчет циклического кода велся только по 8 байтам телеинформации, не включая контрольный байт. Цитата: В каждом подцикле в линию связи передается 8 байтов известительной информации, что соответствует передаче 8ТИ или 64ТС....В конце каждого подцикла передается два байта контрольных разрядов циклической защиты (остаток от деления известительной информации на полином x16+x12+x5).

2 comments:

  1. Спасибо. Это как с родственной душой поговорить.

    ReplyDelete

Blog Archive