Добрый день!
Заказчик попросил сделать сохранение параметров для процесса. Можно назвать рецептами.
Много тем на форуме как сделать это. Но ...
Можно сделать структуру
и объявить в RETAIN переменные, например, для каждого узла:Код:TYPE DISPENSER :
STRUCT
параметр1 : INT;
параметр2 : REAL;
...
параметрN : INT;
END_STRUCT
END_TYPE
Это работает все классно.Код:VAR_GLOBAL RETAIN
CZDispenser:DISPENSER:= (Mixing:= 10, Hours:= 2, Minutes:= 10, Liters:= 1.0, WorkCycle:= FALSE);
MZDispenser:DISPENSER:= (Mixing:= 10, Hours:= 2, Minutes:= 10, Liters:= 1.0, WorkCycle:= FALSE);
END_VAR
В справке естьПришла идея для каждого рецепта выделить общие части и на каждую из них сделать свою структуру, а сами рецепты запихнуть в массив.Цитата:
...Вложенные структуры допускаются. Единственное ограничение заключается в запрете размещения элементов структуры по прямым адресам (AT объявления недопустимы!)...
И как бы получается массив структур структур (не буду описывать все структуры, думаю будет понятно, что мы их объявим в соответствующей области по всем правилам руководства):
А затем в RETAIN объявляем массив:Код:TYPE FORMULATION :
STRUCT
WorkTimeHour :USINT;
WorkTimeMinute :USINT;
Formation :USINT;
CZDispenser :DISPENSER;
BZDispenser :DISPENSER;
FZMixer :WORKMODEL;
FZTemp :WORKMODEL;
MZMixer :WORKMODEL;
END_STRUCT
END_TYPE
Можно добавлять рецепты, можно добавлять узлы при проведении ПРН.Код:GroupRecipes : ARRAY[0..3] OF FORMULATION;
Но вот инициализация при такой структуре выдает ошибку №3760 Неверное начальное значение. При этом 1ые 3 параметра компиляцию проходят, но как только доходит до структуры - ошибка.
С учетом того, что синтаксис CoDeSys 2.3 отличается от CoDeSys 3.5, то совет из одной из тем о использовании квадратных скобок не подошел.
По разному пытался описать(создавал переменные такого же подтипа, через точку и т.д.), но ошибка при компиляции.
Не нашел ни в руководстве , ни на форуме как правильно это делать.
Если кто-то сталкивался с такой проблемой направьте.
Версия CoDeSys 2.3 v 2.3.9.68 Oct 19 2021
Жду вопросов и предложений.