Состояние канала

Типовые задачи  Предыдущий  Следующий

Общие сведения

Наименование: CHANNEL_STATE.

Тип выхода: логический.

Количество входов: 2.

Примечание по входам

порядок входов: «Канал», «Маска состояния»;

«Канал» — ссылка на вход или выход;

признак инверсии первого входа («Канал») игнорируется;

«Маска состояния» — определяет перечень отслеживаемых состояний; данный вход задается как сумма следую­щих чисел (см. табл. ниже)

Таблица. Коды состояний каналов в зависимости от их вида

Состояние

DI

AI

DO

AO

Отключен

32

32

32

32

Не инициализирован

16

16

16

16

Недостоверное значение (нет связи с модулем)

2

2

2

2

Недостоверное значение/состояние

2

2

8

2

Разрыв цепи (для NAMUR),
выход за пределы шкалы вниз (для аналоговых)

8

8

8

Короткое замыкание (для NAMUR),
выход за пределы шкалы вверх (для аналоговых)

4

4

4

Нет ошибок

1

1

1

1

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

Функционирование

значение выхода равно логической единице, если у канала, указанного в первом входе («Канал»), зафиксировано одно из состояний, зако­ди­рованных значением второго входа («Маска состояния»);

значение выхода равно логическому нулю, если у канала, указанного в первом входе («Канал»), не зафиксировано ни одно из состояний, зако­ди­рованных значением второго входа («Маска состояния»);

выход имеет неинициализированное состояние, если второй вход («Маска состояния») имеет неинициализированное состояние;

значение выхода недостоверно, если второй вход («Маска состояния») имеет:

недостоверное значение;

округленное целое значение за пределами отрезка от 1 до 63.

См. также

Приложение Д: Состояния каналов.

Примеры использования

BLOCK1 = CHANNEL_STATE(AI1.1; 12)

// BLOCK1 = 1, если вход AI1.1 вышел за пределы шкалы (вверх или вниз).

BLOCK2 = CHANNEL_STATE(DI1.1; B2)

// Использование в аргументе значения другого алгоблока.

// =======================================

// Замещение значения

B1 = CHANNEL_STATE(AI1.1; 62)

B2 = IF(B1; 0; AI1.1)

B3 = RESULT(AO1.1; B2)

// Если состояние канала AI1.1 в норме, то его значение

// записывается в канал AO1.1, иначе — ноль.