Обозначение
Описание
Блок IECBufOut используется совместно с блоками IEC101uni,
IEC104uni и IEC104Server как выходной буфер.
Назначение входов и выходов
Входы:
-
tid – тип ASDU (Type ID). Определяется протоколом. Допустимые значения на входе описаны на странице: Описание
adr – общий адрес ASDU (Common Address of ASDU).
itg – группа опроса (в т.ч. опроса счетчиков). Определяется протоколом. Допустимые значения на входе:
- бит 0 – посылать данные при общем запросе;
- бит 1 – посылать данные при запросе группы 1;
- бит 2 – посылать данные при запросе группы 2;
- …
- бит 16 – посылать данные при запросе группы 16;
dcl – класс данных (только для IEC101uni). Определяется протоколом. Допустимые значения на входе: CLASS1, CLASS2.
trt – определяет в каком случае передавать данные. Определяется протоколом. Допустимые значения на входе:
- бит 0 – передавать данные спонтанно (при изменении) (причина передачи <3>). Для типов ASDU M_ME_xx_1 посредством входа flgi есть возможность задать дополнительные условия передачи (см. далее);
- бит 1 – циклические (причина передачи <1>) данные с периодом, указанным на входе cpp блока IEC104uni;
- бит 2 – фоновые (причина передачи <2>) данные с периодом, указанным на входе bpp блока IEC104uni;
- бит 3 – команда (причины передачи <6>, <8>, <10>);
- бит 4 – отправить при активации бита 1 на входе ctl (причина передачи определяется битом 6 на входе flgi);
- бит 5 – включить буферизацию для этих событий. Буферизация д.б. включена у сервера: вход evbufsz блока IEC104Server.
ioai – адрес объекта информации.
tpi – тип данных на входах*. Определяется средой Polygon. Допустимые значения на входе:
- DI (char), uDI (unsigned char)
- II (short), uII (unsigned short)
- LI (long), uLI (unsigned long), LX (int32_t), uLX (uint32_t)
- AI (float)
flgi – флаги.
Для типов ASDU M_ME_xx_1 задаёт условия передачи спонтанных сообщений. Определяется протоколом. Значение определяется маской:- бит 0 – передавать данные в случае, если текущее значение на входе ini блока отличается от предыдущего более чем на величину определяемую входом tshi (Threshold) блока;
- бит 1 – не используется в данной реализации;
- бит 2 – передавать данные в случае, если значение на входе меньше величины, определяемой входом llmi (Low Limit);
- бит 3 – передавать данные в случае, если значение на входе больше величины, определяемой входом hlmi (High Limit);
Для команд
- бит 4 – посылать команду при изменении значения на входе;
- бит 5 – использовать предварительный выбор;
Для всех, кроме команд
- бит 6 – причина передачи в принудительном режиме (0 - <1> циклические, 1 - <2> фоновое сканирование);
ini – вход данных.
qlfi – вход имеет различные функции, в зависимости от типа объекта информации:
1 – для типов M_* (кроме M_IT_*) - как вход значения квалификатора, определяется протоколом:
- бит 0 – OV (переполнение) (для типов M_ME_xx_1).
- бит 4 – BL (блокировка) (для типов M_xx_xx_1).
- бит 5 – SB (проведено замещение) (для типов M_xx_xx_1).
- бит 6 – NT (неактуальное значение) (для типов M_xx_xx_1).
- бит 7 – IV (недействительное значение) (для типов M_xx_xx_1).
2 – для типов M_IT_* - как вход вспомогательных полей данных**, определяется протоколом:
- бит 0 - бит 4 – SQ (номер последовательности).
- бит 5 – CY (блокировка).
- бит 6 – CA (счетчик установлен).
- бит 7 – IV (недействительно).
tshi – вход данных Threshold. Имеет значение только для типов ASDU M_ME_xx_1.
smti – (не используется).
llmi – вход данных Low Limit. Имеет значение только для типов ASDU M_ME_xx_1.
hlmi – вход данных High Limit. Имеет значение только для типов ASDU M_ME_xx_1.
ctli – управление:
- бит 0 – выполнить команду (бит 3 на входе trt).
- бит 1 – отправить принудительно (бит 4 на входе trt).
Выходы:
-
bo – выход для подключения к IEC104uni.
stsi – статус (не используется).
Замечания
Все значения на входах блоков, за исключением входов данных и управления, фиксируются при компиляции проекта.
Это
означает,
что изменение значений на этих входах в режиме отладки не будут иметь эффекта.
В случае, если нужно установить на входе данных константу, необходимо явно определить её тип, согласно типу на входе tpi (тип данных на входе\выходе). Это делается в окне набора константы в среде Polygon.
*Для типов ASDU M_EP_* необходимо использовать базовый тип uLX на входе tpi, т.к. входные данные для данного ASDU структурированны. Для формирования структуры используется блок IECIntFromEP.
Необходимо следить за тем, что бы тип данных на входе tpi соответствовал типу данных, передаваемых протоколом. Например: для типов ASDU C_BO_*_1, M_BO_*_1, следует установить тип входа uLX (uint32_t), т.к. для инкапсуляции передаваемых данных в протоколе используется структура данных типа uint32_t, для типов ASDU M_ME_NB_1, M_ME_TB_1, M_ME_TE_1, следует установить тип входа II (short), т.к. для инкапсуляции используется структура данных типа int16_t. При несоответствии типов данных произойдет явное преобразование входного типа к тому, которое использует протокол.
**Для шифровки вспомогательных полей данных типов M_IT_* используется блок IECSQITOut.
В случае, если нужно установить на входе данных константу, необходимо явно определить её тип, согласно типу на входе tpi (тип данных на входе\выходе). Это делается в окне набора константы в среде Polygon.
*Для типов ASDU M_EP_* необходимо использовать базовый тип uLX на входе tpi, т.к. входные данные для данного ASDU структурированны. Для формирования структуры используется блок IECIntFromEP.
Необходимо следить за тем, что бы тип данных на входе tpi соответствовал типу данных, передаваемых протоколом. Например: для типов ASDU C_BO_*_1, M_BO_*_1, следует установить тип входа uLX (uint32_t), т.к. для инкапсуляции передаваемых данных в протоколе используется структура данных типа uint32_t, для типов ASDU M_ME_NB_1, M_ME_TB_1, M_ME_TE_1, следует установить тип входа II (short), т.к. для инкапсуляции используется структура данных типа int16_t. При несоответствии типов данных произойдет явное преобразование входного типа к тому, которое использует протокол.
**Для шифровки вспомогательных полей данных типов M_IT_* используется блок IECSQITOut.