Во-первых, не понятно что такое за "recipe11", "recipe12" и прочие. Все переменные нужно называть понятно и ясно так, чтобы по их названию можно было понять их назначение.
Во-вторых, не ясно, каким образом переменные редактируются-то. Тема создана в разделе "CodeSys v2", где напрямую нет никаких экранов, SCADA и прочих средств редактирования и ввода. И где это всё отображается?
В-третьих, чтобы удобно сохранять несколько логически связанных штуковин (рецепт из нескольких настроек), используй структуру STRUCT (почитай справку по CodeSys про это). Ну что-то типа:
Тогда описывать твои рецепты можно уже или как массив рецептов:Код:TYPE RecpValues : STRUCT Param1 :WORD; (* Дать нормальные имена по назначению *) Param2 :WORD; Param3 :WORD; Param4 :WORD; END_STRUCT END_TYPE
А получать доступ по номеру рецепта к этому массивуКод:VAR RETAIN (* Для примера - сохранение в памяти ПЛК - RETAIN-переменные *) RecpSettings: ARRAY [1..10] OF RecpValues; END_VAR
Ну и надо будет тогда написать некую штуковину вида "Показать на экране рецепт", которая получает ссылку на структуру рецепта (RecpValues) и отображает её поля, и хреновину вида "Отредактировать на экране рецепт", которая записывает данные с экрана (настройки) в структуру рецепта (RecpValues).Код:VAR SelectedRecp : INT; (* Номер текущего выбранного рецепта в массиве *) END_VAR ... ... RecpSettings[SelectedRecp].Param1 (* Обращение к переменным текущего рецепта *) RecpSettings[SelectedRecp].Param2
И им передавать эту самую ссылку на текущий рецепт RecpSettings[SelectedRecp].




Ответить с цитированием