Добрый день, форумчане.

Обнаружил, что CodeSys не позволяет присваивать значения локальным переменным функционального блока (т.е. тем переменным, которые объявлены между ключевыми словами var ... end_var).

Так как привык к такой возможности программируя на Step7, решил заменить ФБ связкой "функция + тип".

Продемонстрирую это на простом примере.
Так выглядит реализация (упрощенная) в ФБ:
FUNCTION_BLOCK Motor

VAR_INPUT
Command : INT;
END_VAR

VAR
State : INT;
Mode : INT;
END_VAR

А так выглядит связка "функция + тип":
TYPE MotorType :
STRUCT
Command : INT;
State : INT;
Mode : INT;
END_STRUCT
END_TYPE

FUNCTION ServMotor : BOOL
VAR_IN_OUT
Mtr : MotorType;
END_VAR

Ввиду малого опыта программирования на CoDeSys не могу оценить все плюсы и минусы одного и другого подхода.
Буду благодарен за мнения.

Конкретно хотелось бы получить ответы на следующие вопросы:
1. Почему CoDeSys не позволяет присваивать значения локальным переменным вне ФБ?
При этом между прочим работа через OPC-сервер CoDeSys позволяет менять значения локальных переменных.

2. Какой вариант будет выполняться быстрее?