Цитата Сообщение от kondor3000 Посмотреть сообщение
У вас ошибка в макросе ищите сами где, у меня в симуляции тоже 2 выдаёт, хотя вы пишите, что в симуляции всё работает.

Зачем вам вообще строка newMode := cMode * 65536 + w;
и SHR на выходе
если вы можете прямо выход задать 1 или 0. Сами себя запутали.
Макрос можно до 1 строки сократить. Без IF.. THEN вообще.

Например так:

Код:
  
function newMode: bool;
    var_input
        prevMode : uDint; 
        Manual,
        Auto: bool;
    end_var
    
    newMode:= not Auto and manual;
end_function
А на выходе поставить преобразование в UDINT 1 Макрос Тест.jpg
Кондор,
покажи как у тебя выдаёт 2 в симуляции на моей программе.
иначе - ты врёшь.