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

## Общие сведения Наименование: PHY_DSC. Тип выхода: логический. Количество входов: от 1 до 3. ## Примечания по входам •порядок входов: «Выход», «Значение», «Подменяемое значение»; •«Выход» — дискретный выходной канал (или ссылка на него); •признак инверсии первого входа («Выход») игнорируется; •«Значение» — устанавливаемое значение для выхода, указанного на первом входе («Выход»); можно не указывать — по умолчанию равно значению алгоблока RESULT канала, указанного в первом входе («Выход»); •«Подменяемое значение» — устанавливаемое значение для выхода, указанного на первом входе («Выход»), когда второй вход («Значение») имеет недостоверное значение или неинициализированное состояние. ## Функционирование •значение выхода равно логическому значению второго входа («Значение»), и это же логическое значение присваивается физическому выходному каналу, указанному в первом входе («Выход»); •значение выхода равно логическому значению третьего входа («Подменяемое значение»), и это же логическое значение присваивается физическому выходному каналу, указанному в первом входе («Выход»), если: •значение второго входа («Значение») недостоверно; •состояние второго входа («Значение») не инициализировано; •значение выхода недостоверно, если выход, указанный на первом входе («Выход»), отключен или данной логической группе выходов не поставлен в соответствие физический модуль.
Внимание: 1. Недопустимо для одного выходного канала одновременное использование флага «Выводить на физический выход» и алгоблока PHY_DSC. 2. Для дискретных выходных каналов алгоблок PHY_DSC рекомендуется использовать только после задания алгоблока RESULT. (Иначе физическое состояние канала будет задано, а логическое — нет.)
## Примеры использования BLOCK1 = PHY_DSC(DO1.1; 1) // Значение алгоблока BLOCK1 и физического канала DO1.1 равно 1. B5 = PHY_DSC(DO1.1; DI1.1; 1) // Значение дискретного выхода DO1.1 равно логическому значению // дискретного входа DI1.1, если он достоверен, // иначе - логической единице. BLOCK1 = GT(AO1.1; 50) BLOCK2 = RESULT(DO1.1; BLOCK1) BLOCK3 = PHY_DSC(DO1.1) // Использование в аргументах констант, каналов и алгоблоков. // ======================================= // Реализация внешней звуковой сигнализации B1 = ASK_LIM(60; AI1.1) // Определение сработанных уставок канала AI1.1 B2 = ASK_LIM(60; AI1.2) // Определение сработанных уставок канала AI1.2 B3 = OR(B1; B2) // Формула срабатывания B4 = DELAY(B3; 30; 1) // Задержка включения 3 с B5 = DELAY(B4; 20; 0) // Задержка отключения 2 с B6 = FORCE_OFF(B5; 6000) // Принудительное отключение через 10 мин B7 = RESULT(DO1.1; B6) // Установка логического значения в DO1.1 B8 = FRN(B7; 1) // Старт прерываний в момент срабатывания B9 = FRQ(100; 100; 1; B8) // Задание прерывания B10 = CLR_ACK(B1; B2) // Возобновление сигнализации B11 = ACK(1; И9; B3; DI1.4; B10) // Задание сигнализации (звуковой). B12 = PHY_DSC(DO1.1; B11) // Установка физического значения DO1.1. Файл для импорта: ack.help // ======================================= // Реализация проверки внешнего светового табло // DI1.1 - кнопка проверки табло // - после нажатия и удержания 5 с - переход в режим проверки - // "мигание" (1 с горит, 1 с не горит) выхода DO1.1 // - первое нажатие - игнорируется // - второе нажатие - "постоянное горение" выхода DO1.1 // - третье нажатие - выход из режима проверки B10 = DELAY(DI1.1; 50; 1) // Задержка включения режима проверки B100 = TRG(B10; B300; 0) // B100 = 1, когда включен режим проверки B200 = FRN(DI1.1; 1) // определяет момент нажатия кнопки DI1.1 B300 = AND(B200; B320) // B300 = 1 после третьего нажатия в режиме проверки B310 = AND(B200; B420) B320 = TRG(B310; ~B100; 0) // B320 = 1 после второго нажатия в режиме проверки B410 = AND(B100; B200) B420 = TRG(B410; ~B100; 0) // B420 = 1 после первого нажатия в режиме проверки B500 = SUB(B100; B320) // Определяем интервал мигания // (значение 1 там, где надо "мигать") B505 = FRN(B100; 1) // Определяем момент начала мигания B510 = FRQ(10; 10; 1; B505) // Настройка прерывания светового сигнала // (1 с горит 1 с не горит) B520 = MUL(B500; B510) // Строим "мигание" на определенном интервале B530 = OR(B520; B320) // Логически суммируем "мигание" и "постоянное горение" B600 = PHY_DSC(DO1.1; B530) // Установка физического значения DO1.1. Файл для импорта: lightboard.help // ======================================= // Реализация блокировки с памятью B10 = OR(DI1.1; DI1.2; DI1.3; DI1.4) // Формула блокировки B20 = OR(DI11.1; DI12.1) // Формула снятия блокировки B30 = DELAY(B10; 10; 1) // Задержка включения блокировки на 1 с B40 = MEMORY(B30; 0; B20) // Запись в энергонезависимую ячейку // состояния блокировки B50 = RESULT(DO1.1; B40) B60 = PHY_DSC(DO1.1) // Установка состояния // (логического и физического) дискретного выходного канала. Файл для импорта: block_mem.help // ======================================= // Дискретное регулирование от 100 до 900 B1 = DOWN_HYSTER(AI1.1; 100) B3 = UP_HYSTER(AI1.1; 900) B5 = TRG(B1; B3) B6 = RESULT(DO1.1; B5) B7 = PHY_DSC(DO1.1) // Дискретное регулирование по значению // аналогового входного канала AI1.1 // от 100 до 900 посредством // дискретного выходного канала DO1.1. Файл для импорта: do100to900.help // ======================================= // Реализация блокировки, если сработали три параметра из пяти B10 = ASK_LIM(8; AI1.1) B20 = ASK_LIM(8; AI1.2) B30 = ASK_LIM(8; AI1.3) B40 = ASK_LIM(8; AI1.4) B50 = ASK_LIM(8; AI1.5) // Определение срабатывания уставки Н у каналов AI1.1-AI1.5 B60 = NOFM(B10; B20; B30; B40; B50; 3) B70 = RESULT(DO1.1; B60) B80 = PHY_DSC(DO1.1) // Вывод сигнала блокировки на дискретный выходной канал DO1.1. Файл для импорта: block3of5.help // ======================================= // Квитирование прерывания звуковой сигнализации // на физическом выходе (перевод в 0) // DO1.1 - сигнальный звуковой канал // B001 - логика срабатывания DO1.1 B001 = OR(DI1.1; DI2.1; DI3.1) B005 = RESULT(DO1.1; B001) // DI1.2 - кнопка квитирования // прерывание физ. сигнала (вкл/откл): 1 с / 1 с B010 = OR(DO1.1; DI1.2) B020 = TRG(DI1.2; ~B010) B030 = FRN(DO1.1; 1) B040 = FRQ(10; 10; 1; B030) B050 = AND(~B020; DO1.1; B040) B060 = PHY_DSC(DO1.1; B050) Файл для импорта: confirm_alarm.help