PDA

Просмотр полной версии : Ветвление на FBD



Спорягин Кирилл
17.09.2017, 11:28
Добрый день, форумчане!

Подскажите, как можно организовать ветвление (оператор IF) на FBD?

Например, вот такая простая функция:

FUNCTION SimpleLogic : REAL
VAR_INPUT
bChoose : BOOL;
X : REAL;
Y : REAL;
END_VAR

IF bChoose THEN
SimpleLogic := X * Y;
ELSE
SimpleLogic := X + Y;
END_IF;

kolyan
17.09.2017, 11:37
Добрый день, форумчане!

Подскажите, как можно организовать ветвление (оператор IF) на FBD?

Например, вот такая простая функция:

FUNCTION SimpleLogic : REAL
VAR_INPUT
bChoose : BOOL;
X : REAL;
Y : REAL;
END_VAR

IF bChoose THEN
SimpleLogic := X * Y;
ELSE
SimpleLogic := X + Y;
END_IF;

Почитайте в справке про SEL.

Спорягин Кирилл
17.09.2017, 11:50
О! Подойдет. Спасибо!

Спорягин Кирилл
17.09.2017, 12:41
Валенок, не беспокойтесь, переходить на FBD я не собираюсь.
Просто появилась специфическая задача.

Осинский Алексей
18.09.2017, 13:12
Валенок, не беспокойтесь, переходить на FBD я не собираюсь.
Просто появилась специфическая задача.

Есть еще вариант: добавить блокам вход, разрешающий работу.
33178
33179

Когда на вход EN подается TRUE - блок работает и на выходах актуальные данные,
когда FALSE -
1) выходы ФБ находятся в последнем состоянии до подачи FALSE, тело ФБ не выполняется;
2) функции не вызываются;

Т.о. Ваша программа выглядела бы так:
33180

Спорягин Кирилл
18.09.2017, 14:35
Вижу. Спасибо.