Организация вызова SQL-запросов из узла проекта

I T-6-T-RU БАЗОВЫЙ КУРС РАЗРАБОТКИ АСУТП В TRACE MODE 6

Занятие пятое

 

 

Москва, 2010

AdAstra Research Group, Ltd.



ЗАНЯТИЕ ПЯТОЕ

Учебный проект. Создание SQL-запроса для работы с внешней реляционной базой данных

Постановка задачи

Будем разрабатывать SQL -запросы для записи во внешнюю СУБД MS Access реальных значений каналов AI _ om _ WinPAC и AO _ om _ WinPAC в таблицу Tab 1, а также каналов Ain #1… Ain #8 в таблицу Tab 2. Причем, в целях оптимизации количества транзакций запись в Tab 1 БД будет осуществляться по существенным изменениям реальных значений каналов, в свою очередь в Tab 2 – в фоновом режиме в каждом цикле пересчета базы каналов.

Исходным материалом для проектирования служит проект, созданный на предыдущих занятиях и сохраненный с именем regul . prj.

 

Создание SQL-запросов

Разработку начнем с запуска интегрированной среды разработки TRACE MODE 6. Для создания запроса к СУБД выделим ЛК слой Шаблоны_связей_с_СУБД и по щелчку ПК создадим новый компонент – База_данных#1:

 

 

Щелчком ПК на вновь созданном компоненте вызовем его свойства и, перейдя к вкладке Аргументы, приступим к созданию аргументов и их привязке к атрибутам каналов.

 

Создание аргументов

При создании аргументов будем учитывать то, что тип аргументов для записи в СУБД должен быть определен как IN, а для автоматического формирования имен аргументов по именам соответствующих каналов при осуществлении привязки во вкладке Редактор аргументов настроек ИС установим флажок в пункте Переименовывать аргументы при привязке.

В Навигаторе проекта откроем слой Система, в ней - узел RTM_2 и выделим ЛК группу компонентов Ai_ om_ WinPAC. Удерживая ЛК нажатой, перетащим канал Ai_ om_ WinPAC в окно табличного редактора аргументов, отпустим ЛК. Те же операции проделаем с каналом AO_ om_ WinPAC, что расположен в группе AO_ om_ WinPAC. В результате выполненных действий будем иметь:

Далее, в Навигаторе проекта выделим группу компонентов I7017#1 и также перетащим ее в окно табличного редактора аргументов шаблона База_данных#1. Получим:

 

Создадим с помощью иконки  еще один аргумент для передачи в СУБД временной отметки, изменим его имя на Time_Mark и определим тип данных как DATE_AND_TIME:

Привязку для данного аргумента выполним позднее. Закроем окно табличного редактора аргументов.

 

Создание файла базы данных и пользовательского DSN

Двойным щелчком ЛК откроем на редактирование шаблон База_данных#1. В бланке Подключение редактора шаблона

выберем ЛК экранную кнопку Администратор ODBC. В бланке User DSN открывшегося окна Администратора источников данных ODBC

нажмем экранную кнопку Add… для создания нового источника данных. В нем выберем драйвер Microsoft Access Driver (*.mdb):

и нажмем экранную кнопку Готово. В окне Установка драйвера ODBC для Microsoft Access укажем имя источника данных – regul и в разделе База данных нажмем экранную кнопку Создать…

В диалоге задания имени и расположения создаваемого файла укажем regul. mdb и корневую директорию диска С.

Нажмем ОК. В результате выполненного действия файл будет создан:

В списке пользовательских DSN будет добавлен новый источник данных:

Нажмем OK и вернемся в редактор шаблона База_данных#1. В строке DSN/Строка подключения из выпадающего списка укажем regul. Оставив остальные строки бланка заданными по умолчанию, произведем проверку подключения к вновь созданному источнику, нажав экранную кнопку Проверка…. Результат будем наблюдать в окне Отчет бланка:

 

 

Создание таблиц

Создадим в файле regul. mdb две таблицы для записи реальных значений каналов и метки времени. Для этого откроем бланк Запрос редактора шаблона и с помощью иконки  создадим новый запрос типа CREATE TABLE, текст запроса введем непосредственно в поле редактора:

 

Выполним запрос с помощью иконки  панели инструментов.

Создадим второй запрос, используя возможности редактирования – копирования и вставки:

и также выполним его из интегрированной среды разработки.

Далее закроем шаблон запроса и откроем вновь, поскольку необходимо выполнить переподключение к БД. В бланке Схема редактора проверим результат выполненных действий:

 

Таким образом, подготовительные работы выполнены и переходим к созданию запросов, помещающих реальные значения каналов в соответствующие поля таблиц базы данных. Разработку запросов будем производить с помощью Мастера запросов.

 

SQL-запрос для заполнения таблицы Tab1

Откроем бланк Мастер и выберем из списка операторов SQL INSERT:

и нажмем клавишу Next. В следующем диалоговом окне необходимо указать таблицу БД, в которую будут помещаться данные, в данном случае Tab1:

при этом в нижнем окне Запрос SQL будет выводиться создаваемый запрос. После нажатия клавиши Next происходит переход к следующему шагу – привязке полей таблицы БД к аргументам шаблона.

Выделяя ЛК столбец БД по нажатию клавиши Привязать открывается окно табличного редактора аргументов в котором также ЛК указывается привязываемый аргумент.

После нажатия клавиши Готово переходим к следующему столбцу БД и т.д. В результате получим:

Завершим создание запроса нажатием клавиши Finish. Перейдя в бланк Запрос редактора шаблона, наблюдаем, что создан запрос с номером 3:

 

 

SQL-запрос для заполнения таблицы Tab2

Аналогичным образом, используя Мастер, создадим следующий запрос:

 

 

Организация вызова SQL-запросов из узла проекта

Закроем редактор шаблона запроса к СУБД. Выделим ЛК шаблон База_данных#1 и перетащим его в узел RTM_2.

Для выполнения запроса необходимо в атрибут Входное значение канала класса Вызов База_данных#1 подавать номер запроса. Для заполнения таблицы БД Tab1 – 3, для Tab2 – 4. Исходя из постановки задачи, определим в качестве существенного изменения для реального значения канала AI_ om_ WinPAC величину в 5% полной шкалы, а для AO_ om_ WinPAC – 15%. Реализуем алгоритм путем разработки программы. Создадим новый компонент – программу, переименовав ее в Record:

Откроем компонент Record на редактирование и перейдем к строке Аргументы в структуре программы. Перетащим в окно табличного редактора аргументов каналы AI_ om_ WinPAC и AO_ om_ WinPAC, в результате будут созданы два аргумента программы, привязанные к атрибутам каналов:

 

 

С помощью иконки  создадим новый аргумент, изменим его Тип на OUT, Тип данных на INT. Выделим ЛК строку, содержащую данный аргумент и перетащим на нее канал класса Вызов База_данных#1. Таким образом, список аргументов программы будет:

Разработку программы выполним на языке Техно FBD. Вид программы будет следующим:

Апертура для каналов AI_ om_ WinPAC и AO_ om_ WinPAC реализуется в программе с помощью функциональных блоков APERT, изменение значений больше установленного порога фиксируется блоками DIFF, а далее с помощью блоков <>0 и блока логического сложения X|| Y производится выбор номера запроса в блоке SEL. Таким образом, если изменения значения каналов AI_ om_ WinPAC и AO_ om_ WinPAC не превышают установленных для них порогов, в каждом цикле пересчета базы каналов выполняется запрос 4, если же значение хоть одного из каналов или обоих одновременно существенно меняются – выполняется запрос 3.

И, наконец, откроем вкладку Аргументы канала класса CALL База_данных#1 и выполним привязку аргумента Time_ Mark к атрибуту Время изменения самого же канала База_данных#1? Полагая тем самым, что в СУБД метка времени будет привязана к моменту исполнения канала класса CALL, вызывающему SQL-запрос.

 

Сохраним внесенные изменения в проект с помощью иконки  и затем выполним процедуру подготовки проекта к запуску в реальном времени – .


 

 


Контрольные вопросы

Выберите и отметьте правильный вариант ответа:

Вопрос 1. Пользовательский DSN для файла БД создается:

а. с помощью панели управления Windows;                                                        £

б. в редакторе запроса к СУБД;                                                                          £

в. возможны оба варианта.                                                                                  £

 

Вопрос 2. Тип аргумента для записи в БД:

а. IN;                                                                                                                £

б. OUT;                                                                                                                 £

в. IN/OUT.                                                                                                             £

 

Вопрос 3. Выполнение запроса в МРВ происходит:

а. при посылке во Входное значение канала, вызывающего шаблон запроса 0;    £

б. - 1;                                                                                                                                                           £

в. - номера запроса.                                                                                                                         £

 




 

 

AdAstra Research Group, Ltd

Россия, Москва, 107076, а/я 38

Тел. (495) 771-71-74

Факс (495) 518-98-46

E-mail: adastra@adastra.ru

http://www.adastra.ru 

 


Дата добавления: 2019-11-16; просмотров: 741; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!