REGUL RX00
Методическое пособие
×

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_IF
     
    IF Load THEN //Устанавливается в функции Start перед запуском приложения
    RecipeManCommands.LoadAndWriteRecipe('Setpoints', 'SaveValue'); //Загрузка рецепта из стандартного файла рецептов и затем запись рецепта в переменные ПЛК
    RecipeManCommands.ReloadRecipes('Setpoints'); //Перезагрузка списка рецептов из файловой системы
    Load:=FALSE;
    END_IF
     
    IF 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".