This is topic Bool не работает, только REAL in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
PROGRAM VAR_INPUT a : BOOL; END_VAR VAR_OUTPUT b : REAL; END_VAR
if a == 1 then b = 1; end_if;
END_PROGRAM
Конструкция не работает. Выдает "Неверный аргумент операции". если переменной "А" задать тип "REAL", то все работает. А нужен "BOOL". Подскажите пожалуйста в чем дело?
Posted by Вяткин Н В (Участник № / Member № 1853) on :
согласно синтаксису языка между if и then должно стоять булевское выражение и если оно истины то выполняется то, что после then. В Вашем случае а уже булевское, поэтому конструкция должна быть такая:
PROGRAM VAR_INPUT a : BOOL; END_VAR VAR_OUTPUT b : REAL; END_VAR if ( NOT a ) then b = 1; end_if;
END_PROGRAM
NOT появилось из за того, что по условию, если а ложь, то выполнять то, что после then p.s. БУЛЕВСКИЕ ВЫРАЖЕНИЯ(ПЕРЕМЕННЫЕ) МОГУТ РАЗДЕЛЯТЬСЯ AND или OR, и им могут предшествовать NOT