Если

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

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

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

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

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

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

B1 = CHANNEL_STATE(AI1.1; 62)

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

B3 = RESULT(AO1.1; B2)

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

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

См. Также

Преобразоавние типов

Выражения