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

## Общие сведения Наименование: IF. Тип выхода: вещественный или логический. Количество входов: от 2 до 3. ## Примечания по входам •порядок входов: «Условие», «Истинно», «Ложно»; •типы входов: «Условие» — логический, «Истинно» и «Ложно» — вещественный; •значение третьего входа («Ложно») можно не указывать — по умолчанию равно нулю. ## Функционирование •значение выхода равно значению второго входа («Истинно»), если значение первого входа равно логической единице, и значению третьего входа («Ложно») — в противном случае; •значение выхода неинициализировано, если: •первый вход имеет неинициализированное состояние; •второй вход имеет неинициализированное состояние, и первый вход имеет значение логической единицы; •третий вход имеет неинициализированное состояние, и первый вход имеет значение логического нуля; •значение выхода недостоверно, если: •первый вход имеет недостоверное значение; •второй вход имеет недостоверное значение, и первый вход имеет значение логической единицы; •третий вход имеет недостоверное значение, и первый вход имеет значение логического нуля. ## Особенности работы с вызываемыми подпрограммами в выражениях Обратите внимание, что в выражениях вида: B10 = IF(DO1.1; [CALL(MY_PROG1)]; [CALL(MY_PROG2)]) обе подпрограммы MY_PROG1 и MY_PROG2 будут выполнены (до работы оператора IF). ## Примеры использования BLOCK1 = IF(DI1.1; 2; 4) // BLOCK1 = 2, если DI1.1 = 1 или BLOCK1 = 4, в противном случае. BLOCK2 = IF(BLOCK12; 2; BLOCK11) // Использование в аргументах констант и других алгоблоков. BLOCK3 = IF([AI1.1 > 70 && AI1.1 < 120]; 10; 20) // Использование выражений. // ======================================= // Реализация периодической функции "Пила" // (приращение - 0,001; период - 2пи; // область значений - от 0 до 2пи) // и построение от нее функции "синус" // (область значений - от 20 до 70) B1 = DIV(AO1.1; 6,2815) B2 = TRC(B1) B3 = MUL(B2; 6,283) B4 = ADD(AO1.1; 0,001) B5 = SUB(B4; B3) B6 = RESULT(AO1.1; B5; 0) // Реализация рекурентной формулы // AO1.1 := AO1.1 + 0,001 - 6,283 * TRC( AO1.1 / 6.2815 ) B7 = SIN(AO1.1) B8 = MUL(B7; 25) B9 = ADD(45; B8) B10 = RESULT(AO1.2; B9) // Реализация формулы AO1.2 := 45 + 25 * SIN( AO1.1 ). Файл для импорта: saw_sin.help // ======================================= // Замещение значения B1 = CHANNEL_STATE(AI1.1; 62) B2 = IF(B1; 0; AI1.1) B3 = RESULT(AO1.1; B2) // Если состояние канала AI1.1 в норме, то его значение // записывается в канал AO1.1, иначе — ноль. ## См. Также Преобразоавние типов Выражения