Добрый день, форумчане.
Обнаружил, что 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. Какой вариант будет выполняться быстрее?