AstraRegul
Руководство системного интегратора
×

16.16. САМОСТОЯТЕЛЬНОЕ ПРАКТИЧЕСКОЕ ЗАДАНИЕ 16.1

Задание. Изучить работу и взаимодействие базы данных c контроллером Regul R500.
 
Порядок выполнения.
  • Скачайте архив проекта "DataBase.projectarchive" по ссылке.
  • Запустите среду разработки Astra.IDE.
  • Распакуйте архив проекта.
     
  • Добавьте в состав приложения "Application" компонент "Db_Structs". В серое поле компонента «Db_Structs» перенесите структуру «t_sensor». Выставьте флаг в поле колонки «SQL». Нажмите кнопку «Обновить код».
  • Откройте функциональный блок «Db_Structs (FB)». В группу параметров VAR_OUTPUT добавьте следующие строковые переменные:
    DBName: STRING:='MyDB';
    SQL_UseDB :STRING := 'USE `MyDB`;';
  • В "Менеджер библиотек" проекта добавьте библиотеки:
    PsMySQL.
    SysTime.
    SysTypes2 Interfaces.
    Standard.
    Util.
  • Установите флаг "Использовать строки Unicode" для отображения кириллических символов в визуализации (детально работа с встроенной визуализацией ПЛК будет рассмотрена в разделе "17. ВИЗУАЛИЗАЦИЯ").
     
  • Сохраните и скомпилируйте проект.
  • В главном окне контроллера активируйте "Запуск сервера SQL" и "Предоставление сетевого доступа" к БД MySQL. Сохраните настройки и перезапустите контроллер.
    Перезапуск виртуального контроллера (командой «reboot») при изменении системных параметров не нужен, достаточно сохранить конфигурацию.
    При перезагрузке виртуального ПЛК изменения не сохраняются.
     
     
  • В программу "DB_PRG" добавьте следующие экземпляры функциональных блоков и код. Код добавьте перед закомментированной строкой "// запись данных в БД"
     
  • Выполните логин к виртуальному ПЛК и загрузите в него приложение. Запустите приложение кнопкой "Старт" панели инструментов.
  • В программе "DB_PRG" задайте подготовленные значения переменным name и measure. Запишите их в ПЛК комбинацией клавиш "CTRL+F7".
     
  • Откройте массив "READ_DATA" и наблюдайте за записью в него вычитанных данных из базы данных. Временной интервал между наборами данных составляет 10 секунд. Поскольку виртуальная машина не может обеспечить жесткого реального времени, то течение системное время ПЛК не соответствует течению реального времени.
     
  • В программе "DB_PRG" задайте подготовленные значения TRUE переменным Init, dbused и tablecreated. Запишите их в ПЛК комбинацией клавиш "CTRL+F7". Убедитесь, что первоначально выполняется обнуление данных в массиве "READ_DATA" и затем новые данные вычитываются из базы данных и сохраняются в массив, начиная с первого его элемента.
     
  • Закомментируйте строку кода get_data:=R1.Q; для исключения её выполнения. Задайте переменной "str_request_custom" подготовленное значение "SELECT Sensor_Name, Sensor_Value, Sensor_Measure, Sensor_DATE_TIME FROM t_sensor Where Sensor_Value>80", являющееся условием выборки. Запишите в ПЛК комбинацией клавиш "CTRL+F7".
    Переменной "get_data_query" задайте подготовленные значения TRUE и запишите его в ПЛК комбинацией клавиш "CTRL+F7". Оцените, что в массив "READ_DATA" вычитаны только данные, удовлетворяющие условиям выборки.
     
  • Откройте экран визуализации "DataBase" и нажмите кнопку "Запросить всю таблицу". Оцените, что в таблицу были выгружены все данные из базы данных.
     
  • Задайте в текстовом поле условие выборки данных и нажмите кнопку "Запросить всю таблицу". Оцените, что в таблицу были выгружены только данные, удовлетворяющие условиям выборки.
     
  • Скачайте утилиту "HeidiSQL" по ссылке https://www.heidisql.com/download.php и запустите файл приложения.
  •  Выполните подключение утилиты "HeidiSQL" к виртуальному ПЛК.
  • Выполните запрос SET NAMES cp1251 на отображение кириллических символов.
  • Выполните следующий запрос:
SELECT * FROM t_sensor
WHERE Sensor_Value < 20
ORDER BY Sensor_Value DESC
В результате из базы данных будут вычитаны данные, удовлетворяющие условиям выборки, и расположенные в колонке "Sensor_Value" таблицы по убыванию значений.