Вывод на физический дискретный выход

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

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

Наименование: 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.

alarm_fbd

Файл для импорта: 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_fbd

Файл для импорта: 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_fbd

Файл для импорта: 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_fbd

Файл для импорта: 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_fbd

Файл для импорта: 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_fbd.bcf100

Файл для импорта: confirm_alarm.help