Цитата Сообщение от sot Посмотреть сообщение
Кондор,
покажи как у тебя выдаёт 2 в симуляции на моей программе.
иначе - ты врёшь.
Итак. Код у Вас специфический т.к. NOT - побитовая операция, а автоприведение типов в данном случае не работает.
Рассмотрим поведение кода:

В случае IF NOT MANUAL THEN
Ни присваивания, ни приведения типов нет, т.е. идёт сравнение результата NOT MANUAL с нулём.
Результат NOT MANUAL - число UDINT.
Если MANUAL=0 - результат равен 0xFFFFFFFF
Если MANUAL=1 - результат равен 0xFFFFFFFE
если использовать (NOT MANUAL) в IF - всегда будет TRUE, т.к. FALSE =0, а TRUE - это любое значение, что не FALSE.

Вот и происходит такое поведение.

Что делать?
IF (NOT MANUAL=false) then

Ну Вы это и сами нашли.

Нам тоже есть что поправить чтобы среда предупреждала или сама приводила типы.