Описание транзитного протокола
Версия 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-порядок) ---