# Состояние канала | Типовые задачи Предыдущий Следующий

## Общие сведения Наименование: 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, иначе — ноль.