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