19.11. САМОСТОЯТЕЛЬНОЕ ПРАКТИЧЕСКОЕ ЗАДАНИЕ 19.1
Задание. Сохранение уставок аналоговых датчиков в контроллере с использованием рецептов.
Порядок выполнения.
-
В среде разработки Astra.IDE создайте новый проект, используя "Мастер конфигурации Regul".

-
В состав приложения "Application" проекта добавьте "Менеджер рецептов".

-
В состав приложения "Application" проекта добавьте структуру с именем "Sens_STRUCT". Вставьте в структуру следующие компоненты:SH:REAL; //Верхний предел шкалыSL:REAL; //Нижний предел шкалыHH:REAL; //Уставка верхнего аварийного пределаH:REAL; //Уставка верхнего предупредительного пределаL:REAL; //Уставка нижнего предупредительного пределаLL:REAL; //Уставка нижнего аварийного предела

-
Создайте список глобальных переменных GVL. Вставьте в него следующие переменные:InitF:BOOL; //Переменная инициализации уставок аналоговых датчиковSave:BOOL; //Переменная сохранения уставок аналоговых датчиков в рецептеLoad:BOOL; //Переменная загрузки уставок аналоговых датчиков из рецептаAnalog_Sensors:ARRAY[1..2] OF Sens_STRUCT; //Уставки аналоговых датчиков

-
Добавьте группу рецептов Setpoints в состав менеджера рецептов. Заполните группу рецептов переменными массива Analog_Sensors из списка глобальных переменных GVL. Добавьте два рецепта InitValue и SaveValue и заполните их значениями, представленными на картинке ниже.

-
Переименуйте программу PLC_PRG в Setpoints.

-
В таблицу локальных переменных программы Setpoints вставьте следующий экземпляр функционального блока:RecipeManCommands:RecipeManCommands; //Экземпляр функционального блока RecipeManCommands библиотеки RecipeManagement
-
В раздел кода программы Setpoints вставьте следующий код:IF InitF THEN //Устанавливается кнопкой на визуализацииRecipeManCommands.LoadAndWriteRecipe('Setpoints', 'InitValue'); //Загрузка рецепта из стандартного файла рецептов и затем запись рецепта в переменные ПЛКInitF:=FALSE;RecipeManCommands.ReloadRecipes('Setpoints'); //Перезагрузка списка рецептов из файловой системыEND_IFIF Load THEN //Устанавливается в функции Start перед запуском приложенияRecipeManCommands.LoadAndWriteRecipe('Setpoints', 'SaveValue'); //Загрузка рецепта из стандартного файла рецептов и затем запись рецепта в переменные ПЛКRecipeManCommands.ReloadRecipes('Setpoints'); //Перезагрузка списка рецептов из файловой системыLoad:=FALSE;END_IFIF Save THEN //Устанавливается в функции POU_Save каждые в 10 секунд.RecipeManCommands.ReadAndSaveRecipe('Setpoints', 'SaveValue'); //Считывание текущих значений из ПЛК в рецепт и затем сохранение рецепта в стандартном файле рецептовSave:=FALSE;END_IF

-
Задайте интервал вызова задачи TASK_PLC_PRG 2000 мс.

-
В состав компонента "Конфигурация задач" добавьте новую задачу с именем "Task_10s", задайте ей интервал вызова 10000 мс и приоритет 3.

-
Создайте программу "POU_Save" и напишите в ней код, представленный ниже. Поместите программу "POU_Save" в задачу "Task_10s".

-
В редакторе "Конфигурация задач" добавьте обработчик событий "PrepareStart" с вызываемой программой "Start". В программе "Start" напишите код, представленный на картинке ниже.

-
Сохраните, скомпилируйте проект и выполните его загрузку в виртуальный ПЛК. Запустите выполнение приложения на контроллере.
-
Убедитесь, что в контроллере были созданы файлы рецептов.

-
Убедитесь, что данные рецепта SaveValue были записаны в переменные массива Analog_Sensors списка глобальных переменных GVL.

-
Эти же данные наблюдайте в колонке "Текущее значение" группы рецептов "Setpoints".

-
Задайте новые подготовленные значения переменных массива Analog_Sensors и запишите их в контроллер комбинацией клавиш на клавиатуре "Crtl + F7".

-
Убедитесь, что текущие значения в группе рецептов изменились.

-
Выгрузите файл рецепта "SaveValue.Setpoints" из контроллера на компьютер и откройте. Убедитесь, что значения компонентов соответствуют текущим значениям переменных массива Analog_Sensors.

-
Откройте программу "Setpoints", задайте переменной InitF подготовленное значение TRUE и запишите его в контроллер комбинацией клавиш на клавиатуре "Crtl + F7".

-
Убедитесь, что текущие значения переменных в группе рецептов "Setpoints" записались из рецепта "InitValue".
