Протокол FDST

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Телемеханика и связь в энергетике / Модемы и протоколы ТМ / Протокол FDST

Страницы: 1  ответить новая тема

Автор Сообщение


Группа: Участники
Сообщений: 1
Добавлено: 06-08-2008 16:07
Всем привет!

Народ, кто знает где качнуть описание протокола FDST (как я понял в этом протоколе РДУ данные ТМ ловит).

Или хотя-бы скажите что это за абревиатура такая?


Группа: Участники
Сообщений: 3
Добавлено: 09-02-2012 16:58
Протокол для обмена информацией между ОИКами, с РДУ логичнее в 104

аксакал
Группа: Участники
Сообщений: 568
Добавлено: 10-02-2012 08:28
Описание протокола FDST

В этой главе приводятся материалы по спецификации протокола межмашинного обмена ( ММО) с ОИК ЦДУ ЕЭС России по передаче телемеханической информации. Передача производится по цифровому каналу связи с использованием в качестве транспорта протокола ТСР/IP.
Документ подготовлен на основе материалов, предоставленных зам.начальника службы вычислительной техники ЦДУ ЕЭС России Купцовым А.Н.
телефон: (095) 220-61-42
факс : (095) 220-65-42
E-mail : kan@cdu.elektra.ru

Протокол FDST

Передача данных производится пакетами. Структура пакета имеет следующий вид: "Заголовок" + "Хвост1" + "Хвост2".

Заголовок
Заголовок определяется следующей структурой, размер полей которой определяется размерами типов данных языка С. Формат следования байт в словах заголовка, такой как в процессорах MOTOROLA, RISC и т.д. (Старший разряд в младшем адресе. Противоположно INTEL):

struct FDST {

unsigned short int state; // состояние обмена и код возврата
unsigned short int whom; // номер ЭВМ - адресата
unsigned short int owner; // номер ЭВМ - отправителя
unsigned ch ar code; // код приказа
unsigned ch ar ident; // частный идентификатор диалога
unsigned short int lng_req; // длина пользовательского запроса "Хвост1"
unsigned short int lng; // длина пользовательского буфера данных "Хвост2"
};

Предлагаемый формат определяется тем, что протокол передачи телемеханической информации является подмножеством протоколов семейства FDST, который используется для широкого спектра сервисов (как информационных, так и управляющих), используемых в системах SCADA, а также функционирует с различными средами передач данных и транспортными протоколами.



Поле STATE – комбинация битовых масок приведенных ниже:

#define ACT_FDST 0x8000 // FDST активен
#define ERR_FDST 0x4000 // Обмен закончен с ошибкой
#define WRN_FDST 0x2000 // Обмен закончен с предупреждением
#define LNG_FDST 0x1000 // Сохранить запрос
#define BST_FDST 0x0800 // Формат адресации в слове в хвостах Не INTEL
#define OWN_FDST 0x0400 // Признак внутреннего обращения
#define RET_FDST 0x0200 // Признак Абортирования / рестарта FDST
#define CONT_FDST 0x0100 // Признак не закрытия FDST
#define SEN_FDST 0x0080 // Передача
#define REC_FDST 0x0040 // Прием
#define PARTNER_FDST 0x0020 // FDST к партнеру
#define NOCOPY_FDST 0x0010 // Запрет распространения FDST
#define PRIORITY_MASK 0x000F // Маска для приоритета

Поле CODE – комбинация битовых масок приведенных ниже:

/ * возможные дизъюнктивные состояния поля code - код пpиказа: */

#define FDS_WRITE 0x40 // запись
#define FDS_DAT 0x80 // данные

Если (HEAD.code&FDS_DAT)!=0, остальные позиции HEAD.code таковы:

#define FDS_NTR 0x20 // запрет перекодировки
#define FDS_LO 0x10 // необходимость линейки ответов
#define TB_TF 0x08 // задание времени в формате: TB,TF,STEP(18 байт)
#define FDS_DTM4 0x04 // задание времени в формате: T (6 байт)
#define FDS_DTM0 0x00 // компонента набора содержит LNM (2 байта)
#define FDS_DTM1 0x01 // комп. набора содержит LNM,OFSET,LONG (6 байт)
#define FDS_DTM2 0x02 // комп. набора содержит LNM,LNE (4 байта)
#define FDS_DTM3 0x03 // комп. наб. содержит LNM,LNE,OFF,LENGTH (8 байт)

Если (HEAD.code&FDS_DAT)==0, остальные позиции HEAD.code таковы:

#define FDS_WRITE 0x40 // запись
#define FDS_NTR 0x20 // запрет перекодировки
#define FDS_VM 0x10 // Запрос от calVM
#define FDS_NB 0x11 // Запрос от calNAB



#define FDS_CHANAL 0x0F // Запрос к Pr052
#define FDS_KIO_SERVER 0x1F // Запрос к KIO-servery
#define FDS_SYND 0x0E // Cинхро - демон

#define FDS_SCADA 0x30 // Связь со SCADA в протоколе 1
#define FDS_SCADA_URAL 0x31 // Связь со SCADA в протоколе URAL
#define FDS_SCADA_TM 0x33 // Связь со SCADA в протоколе ТМ
#define FDS_FILE 0x1E // Запуск FILE
#define FDS_CDU 0x02 // Код Пок Шифр Об

Реализация протокола ТМ на базе FDST на стороне передатчика

Передача ТИ и ТС осуществляется посредством протокола FDST, используя сервис (код приказа - поле CODE) FDS_SCADA_TM.

Таким образом, поле CODE имеет вид FDS_SCADA_TM|FDS_WRITE.

Для поля STATE актуальными являются следующие маски:

 ACT_FDST – обязательно,
 SEN_FDST - обязательно,
 REC_FDST – если требуется квитанция о результате передачи и разбора. Также используется для синхронизации приемника и передатчика (чтобы передатчик не валил все в кучу),
 BST_FDST – определяет формат данных длиной больше 1 байта,
 CONT_FDST - признак оптимизации соединения на транспортном уровне, если протокол умеет поддерживать это.


Поле IDENT в данном случае используется как индикатор ТИ или ТС:

 Для ТИ – IDENT = 2,
 Для ТС – IDENT = 9,
 Для набора - IDENT = 142.

#define VAR_TS 0x09 / *передача изменившихся ТС*/
#define VAR_TI 0x02 / *передача изменившихся ТИ*/
#define VAR_TS_TI 0x0B / *передача изменившихся ТС и ТИ*/
#define NABOR_BLOCK_WRITE 142 / * Передача макета ( набора ) */

Поле WHOM по умолчанию = 1.

Поле OWNER по умолчанию = 0.

Формат "Хвост1"

"Хвост1" идентифицирует передаваемые данные в двоичном формате. Структура такова:



Время (6 байт) + Байт качества передаваемого Параметра 0 (unsigned ch ar) + Идентификатор передаваемого Параметра 0 (unsigned short) + Байт качества передаваемого Параметра 1 + Идентификатор передаваемого Параметра 1 +…………………………………...……………………………………………………….+ Байт качества передаваемого Параметра L + Идентификатор передаваемого Параметра L.

Сервис FDST для передачи ТИ:
- запрос - 3 байта на элемент: байт качества и номер элемента,
- информация - 2 или 4 байта на элемент, для ТС - значение в байте качества.

Структура байта качества передаваемого параметра приведена ниже.

 Тип (Длина) элемента данных
#define SC_BIT_MASK 0x06
#define SC_WORD_MASK 0x01
#define SC_INT_MASK 0x02
#define SC_LONG_MASK 0x03
#define SC_FLOAT_MASK 0x04
#define SC_BYTE_MASK 0x05

 Тип набора
#define SC_type 0x1c

 Характеристики качества
#define NDTM_MASK 0x80 / *недостоверность*/
#define SUBST_MASK 0x40 / *ручной*/
#define VOSST_MASK 0x20 / *восстановленный*/
#define SC_BIT_VAL 0x20 / *значение ТС*/

Формат "Хвост2"

"Хвост2" содержит передаваемые данные в двоичном формате. Количество и длина каждого параметра определяется описанием параметра, содержащимся в "Хвосте 1".

Передача макетированной информации

Любая информация, не являющая телеметрией, передается в виде плотного блока данных, состав которых известен с обеих сторон (то есть, отправитель и получатель договариваются о составе блока данных и порядке следования данных). Данный блок называется набором.
Для передачи нескольких наборов вводится понятие идентификатора набора, который определяется верхним уровнем Диспетчерского управления. Текущая реализация поддерживает передачу только одного набора в сеансе (блоке FDST).


При этом в поле ident указывается значение 142 (признак макета).

"Хвост1" имеет следующий формат:

"Хвост1" = 6 байт времени + 2 байта идентификатора набора.

Порядок байт в словах определяется признаком формата BST_FDST (сейчас поддерживается только он). Соответственно длина равна 8 байтам (FDST.LNG_REC=8).

"Хвост2" содержит плотно упакованное содержимое этого набора. Порядок байт в словах определяется признаком формата BST_FDST (сейчас поддерживается только он). Длина Хвоста2 равна длине блока передаваемого набора FDST.LNG=длина набора. Остальные поля такие же, как и при передачи телеметрии.


• Передача по TCP/IP

Прием/передача пакетов осуществляется по соединению, использующему следующие атрибуты:

 Тип сокета - AF_INET,
 протокол ТСP ( SOCK_STREAM ),
 Порт коммуникаций 5005.

При установлении связи посылается контрольный маркер, состоящий из 4 байт следующего вида:
0x05070123,
если передача происходит в комплекс "Диспетчер" версии 5.0 и старше (в ЦДУ ЕЭС работает версия 5.0). Если приемная сторона использует более ранние версии системы "Диспетчер", то маркер не передается и используется порт коммуникаций 5000.

редкий гость
Группа: Участники
Сообщений: 15
Добавлено: 26-10-2012 08:32
Подскажите пожалуйста как вычисляется номер набора для межмашинного обмена в ОИК-2003.

Страницы: 1  ответить новая тема
Раздел: 
Телемеханика и связь в энергетике / Модемы и протоколы ТМ / Протокол FDST

KXK.RU