Добрый день!
Заказчик попросил сделать сохранение параметров для процесса. Можно назвать рецептами.
Много тем на форуме как сделать это. Но ...
Можно сделать структуру
Код:
TYPE DISPENSER :
STRUCT
   параметр1 : INT;
   параметр2 : REAL;
   ...
   параметрN : INT;   
END_STRUCT
END_TYPE
и объявить в RETAIN переменные, например, для каждого узла:
Код:
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 объявления недопустимы!)...
Пришла идея для каждого рецепта выделить общие части и на каждую из них сделать свою структуру, а сами рецепты запихнуть в массив.
И как бы получается массив структур структур (не буду описывать все структуры, думаю будет понятно, что мы их объявим в соответствующей области по всем правилам руководства):
Код:
TYPE FORMULATION :
STRUCT
	WorkTimeHour		:USINT;
	WorkTimeMinute	:USINT;
	Formation			:USINT;
	CZDispenser		:DISPENSER;
	BZDispenser		:DISPENSER;
	FZMixer			:WORKMODEL;
	FZTemp			:WORKMODEL;
	MZMixer			:WORKMODEL;
END_STRUCT
END_TYPE
А затем в RETAIN объявляем массив:
Код:
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
Жду вопросов и предложений.