-
неявные переменные в Sfc
Всем день добрый!
Вопрос: как прописать в SFC правильно неявную переменную типа "ИмяШага.t"?
после шага пишу условие перехода ИмяШага.t>t#5s,
но при компиляции указываются ошибки 4001 и 4120,
подскажите в чем проблема ...
4120: needs structure variable
"Слева от точки должен быть идентификатор структуры, экземпляра, функционального блока или имя
функции либо программы"
4001: "Variable '<Name>' not declared"
Объявите переменную локально или глобально.
-
По-моему надо писать имя_SFC_программы.ИмяШага.t
-
... справился, но вопросы остались...
оказалось (и где бы про это почитать?), что в упрощенном SFC (т.е. без "взведенной" опции "Extras"/"Use IEC-Steps") не удается прописать условие перехода в виде _timeStep.t>t#XXs, результат ошибка 4120...
но и при "взведенной" опции "Extras"/"Use IEC-Steps" все равно не удастся прописать условие перехода в "стиле SFC МЭК" Step.t>t#XXs по отношении к шагу, созданному в упрощенном SFC (т.е.без "взведенной" опции "Extras"/"Use IEC-Steps"), результат тот же ...
а получилось прописать условие перехода, только по отношению к шагу, созданному в SFC МЭК (т.е. при "взведенной" опции "Extras"/"Use IEC-Steps"), и при этом прогой были предложены варианты, как Step.t>t#XXs, так и Step._t>t#XXs .
-
Это все есть в мануале! Подробнее:
Упрощенному SFC хватает примитивного исполнителя. На каждый шаг уходит всего 2 байта. Таймеров никаких тянуть не нужно. Есть признак активности с именем шага и все. Контрольная структура шага отсутствует (отсюда ругательства компилятора, при попытке в нее залезть).
Включаем поддержку МЭК шагов и создаем новый POU на SFC. Вот теперь CoDeSys соображает, что на каждый шаг нужно заводить большую структуру признаков всевозможных действий, включая задержанные по времени и т.п. + нужно включать неявные блоки, контролирующие время активности. Теперь можно и .t и пр.
Никто не смешивает упрощенный и полный SFC. Это глобальный выбор. Если человек освоил стандартный SFC, то упрощенный он применять уже не станет.