Описание транзитного протокола

Версия COM_TM_PKT

 

Транзитный протокол предназначен для обмена СЕРВЕРА системы с синхронным адаптером через порт RS-232.

Связь осуществляется в асинхронном режиме (8 бит данных, 1 стоповый бит, без контроля на четность) на скоростях от 1200 до 38400 бод.

Общий вид пакетов

02h xx xx xx xx xx xx xx xx xx xx xx xx 03h
ФЛАГ

СТАРТ

Адрес порта

адаптера

0-254

Тип пакета ДАННЫЕ

до 120 байт

Циклический код

защиты CRC-16

ФЛАГ

СТОП

1 2 3 4             n-3 n-2 n-1 n

Внутри пакета (между флагами) перед всеми байтами имеющие значения 02h 03h 09h принудительно вставляется один байт со значением 09h(байт-стаффинг).

Циклический код защиты охватывает все байты пакета от 2 до n-3 (байт-стаффинги не включаются в CRC).

 

Процедура конфигурации (загрузки адаптера)

В процессе конфигурации сначала может быть передан абстрактный файл указанный в конфигурации сервера (до 8 кб) (для адаптеров СИНКОМ это программный код реализующий конкретные функции адаптера), затем конфигурационная строка (как правило символьная строка содержащая конкретные параметры для программы адаптера)

При передаче - файл разбивается на блоки по 512 байт, последний блок >0 и <= 512.

Если на сервере не указан файл, то передается сразу конфигурационная строка, которая в вырожденном виде может быть нулевой длины.

Для каждого порта адаптера может быть проведена самостоятельная процедура конфигурации.

Процедура конфигурации начинается с запроса со стороны адаптера (следует отметить что адаптер Синком выдает запрос на разных скоростях поочередно для автоопределения скорости обмена)

АДАПТЕР Тип Пакета Направление обмена СЕРВЕР
Запрос Конфигурации a0h >>>  
  80h <<< Первый блок файла
Квитанция 80h >>>  
  81h <<< Второй блок файла
Квитанция 81h >>>  
    ...  
  8xh <<< Последний блок файла
Квитанция 8xh >>>  
  90h <<< Конфигурационная строка
Квитанция 90h >>> Для некоторых версий адаптеров отсутствует!

Описание пакетов:

Запрос со стороны адаптера на конфигурацию

02h ffh a0h 0xff xx xx 03h
ФЛАГ

СТАРТ

Адрес порта

адаптера

Тип пакета   Циклический код

защиты CRC-16

ФЛАГ

СТОП

1 4 5 6 7 8 9

 

пакет с блоком конфигурационного файла

02h ххh 8хh xx xx xx xx xx xx xx xx xx xx 03h
ФЛАГ

СТАРТ

Адрес порта Тип пакета 0х80+номер блока (с 0) блок файла

до 512 байт

Циклический код

защиты CRC-16

ФЛАГ

СТОП

1 4 5 6             n-3 n-2 n-1 n

пакет с конфигурационной строкой

02h ххh 90h xx xx xx xx xx xx xx xx xx xx 03h
ФЛАГ

СТАРТ

Адрес порта Тип пакета Конфигурация

до 120 байт

Циклический код

защиты CRC-16

ФЛАГ

СТОП

1 4 5 6             n-3 n-2 n-1 n

Квитанция

02h ххh ххh xx xx 03h
ФЛАГ

СТАРТ

Адрес порта

адаптера

Тип принятого пакета Циклический код

защиты CRC-16

ФЛАГ

СТОП

1 4 5 6 7 8

 

Информационный обмен телемеханическими пакетами.

Информационный пакет:

02h xx xx xx xx xx xx xx xx xx xx xx 03h
ФЛАГ

СТАРТ

Адрес

канала

Код

прото-

кола

Телемеханический

пакет

Циклический код

защиты CRC-16

ФЛАГ

СТОП

1 5 6             n-3 n-2 n-1 n

Коды протоколов:

0 - PROT_TERM // Системный терминал ISIO, не используется

1 - PROT_TM512 // ТМ-512

2 - PROT_GRNT // КП Гранита (прослушивающий режим)

3 - PROT_RPT // РПТ-80 КП-ДП (АИСТ)

4 - PROT_TM120 // КП ТМ-120

5 - PROT_COMPAS // КП Компас

6 - PROT_ASNGR_F // Дельта-ОИК со стороны ПУ

7 - PROT_ASNGR_T // Дельта-ОИК со стороны ОИК

8 - PROT_GRNTASK // КП Гранита

9 - PROT_ASTRAN // Транзитный протокол, не используется

10 - PROT_ARPTL // РПТ-80 нижний уровень

11 - PROT_ARPTU // РПТ-80 верхний

12 - PROT_ALINK // Протокол модемной связки между ISIO, не используется

13 - PROT_ASEQ // -------------- "" -----------

14 - PROT_MST // КП MST

15 - PROT_MSTMUX // Мультиплексор MST

16 - PROT_RPT_DCI // РПТ-80 КП-ДП (АИСТ) БЦИ

17 - PROT_TRANZ // Протокол для транзита

18 - PROT_MSTOMSK // КП MST (модификация ОМСК)

19 - PROT_ BIT_ASYNC// в настоящее время не используется

20 - PROT_UNI // Протокол UNI (протоколо-независимая передача ТС и ТИТ) применяется при приеме МКТ и ТМ800

21 - PROT_UNI_KP // Протокол UNI с номерами КП

22 - PROT_AMK // Адаптер магистрального канала (Компас)

0x1E - PROT_MAPA // ОТОБРАЖЕНИЕ НА ЩИТ SINCOM-EX

0xFD - PROT_DIAGS // Диагностика по каналу

0xFE - PROT_NOTHING // Нет конфигурации по каналу (не используется)

0xFA - PROT_ERROR // Пакет принятый по каналу с ошибкой

Квитанция

02h ххh ххh xx xx 03h
ФЛАГ

СТАРТ

Адрес порта

адаптера

Тип принятого пакета Циклический код

защиты CRC-16

ФЛАГ

СТОП

1 4 5 6 7 8

Адаптер раз в пять секунд посылает пакет с диагностикой канала связи

02h xx fdh 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx 03h
ФЛАГ

СТАРТ

Адрес

канала

Код

прото-

кола

Авария

=ffh

Число приня-

тых пакетов

Число пере-

данных пакетов

Число ошибок приема Число некви-

танций

Циклический код

защиты CRC-16

ФЛАГ

СТОП

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

//-------------- Алгоритм расчёта CRC-16 ------------------------------
WORD CrcTable[16]=
	{
	0x0000,0x1081,0x2102,0x3183,0x4204,0x5285,0x6306,0x7387,
	0x8408,0x9489,0xa50a,0xb58b,0xc60c,0xd68d,0xe70e,0xf78f
	};
WORD GenerateCRC(DWORD Length, BYTE *ptr)
	{
	BYTE c;
	WORD CRC=0;
	while(Length)
		{
		c=*ptr;
		ptr++;
		Length--;
		CRC= ((CRC>>4)&0xfff)^CrcTable[(CRC^(WORD)c) & 0xf];
		c>>=4;
		CRC= ((CRC>>4)&0xfff)^CrcTable[(CRC^(WORD)c) & 0xf];
		}
	return CRC;
	}
//-------- Младший байт CRC заносится в пакет первым (Intel-порядок) ---