Связь параметров модели с элементами интерфейса

Федеральное бюджетное государственное общеобразовательное учреждение высшего образовательно

 

Уфимский государственный нефтяной технический университет

 

Кафедра автоматизации технологических процессов и производств

 

 

Учебно-методическое пособие

по лабораторной работе № 6

« Разработка имитационной модели

Технологического объекта »

 

Уфа 2017

Лабораторная работа № 6. Разработка имитационной модели

Технологического объекта

 

    Цель работы: Освоение принципов разработки имитационных моделей технологических объектов и их программной реализации.

    В ходе работы требуется создать приложение, имеющее графический интерфейс с мнемосхемой, трендами и вспомогательными окнами и реализующее имитационную модель технологического объекта.

    Программная реализация имитационной модели может включать несколько этапов:

1) проектирование главной формы программы (разработка мнемосхемы, элементов меню, размещение основных элементов интерфейса и т.д.);

2) реализация математической модели;

3) связь параметров модели с элементами интерфейса;

4) программирование трендов;

5) реализация процедур работы с файлами и проч.

 

Проектирование главной формы программы

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

    Главное меню содержит пункты: «Файл» (с подпунктами «Сохранить» и «Выйти»), «Расчет» (с пунктами «Пуск» и «Стоп») и «Справка» (подпункт «О программе»).

    Для расположения мнемосхемы на форме используется объект типа «Image» (см. группу объектов «Additional») на панели инструментов Delphi. После размещения объекта на нужном месте в него загружается заранее сохраненная в виде графического файла картинка с мнемосхемой (свойство «Picture»). На главной форме также можно расположить еще один объект «Image» для отображении трендов (например, ниже). В результате главная форма примет вид, аналогичный изображенному на рисунке 1. В качестве примера взята мнемосхема резервуара с гудроном (резервуар Р-1), подогреваемым теплоносителем. Регулируемым параметром является температура в Р-1 (выводится в поле TRCA5100). Управляющее воздействие подается на клапан TV5100.

    На мнемосхеме серым прямоугольником обозначено поле для вывода текущего значения температуры в резервуаре Р-1 (TRCA5100). Вывод осуществляется с помощью объекта типа «Label», который следует разместить в этом прямоугольнике (сразу можно дать ему какое-либо начальное значение, например, нулевое, подкорректировать расположение, цвет и размер шрифта).

    Внимание! Не забывайте сохранять проект!


Рисунок 1 - Вид главной формы

 

Реализация математической модели

    Разрабатываемая имитационная модель включает в себя математические модели объекта управления (ОУ) и регулятора (Р), соединенные по схеме АСР по отклонению (см. рисунок 2).

 

 

 


Рисунок 2

    На рисунке обозначены: х - заданное значение регулируемого параметра (температуры Т5100), у - его текущее значение, е - ошибка регулирования, равная отклонению у от х (вычисляется в сумматоре как е = х ‑ у), u - управляющее воздействие на клапан TV5100, f - возмущающее воздействие со стороны окружающей среды.

    Допустим, математическая модель ОУ задана в виде передаточной функции вида

,

где К = 0,72 - коэффициент усиления;

b0 = 1, b1 = 3,2 - коэффициенты числителя;

a0 = 1, a1 = 9,3, a2 = 25,3 - коэффициенты знаменателя.

    Тогда взаимосвязь параметров у и u описывается операторным уравнением

Y(s) = WОУ(s)*U(s),

где U(s) и Y(s) - изображения соответственно у и u.

    Для реализации этих соотношений в программе удобнее представить их в виде разностного уравнения. Для этого запишем по операторному уравнению дифференциальное:

.

    Если учесть, что программа будет рассчитывать математическую модель дискретно через равные интервалы времени ΔТ, то от дифференциалов можно перейти к разностям:

,

,

где yi, yi-1, yi-2 - значения у на текущем (i-ом) шаге функционирования модели, на предыдущем (i-1)-ом и (i-2)-ом. Для параметра u аналогично.

    Тогда, если подставить выражения в дифференциальное уравнение, можно получить выражение для yi:

или, если подставить числовые значения (интервал времени можно взять равным ΔТ = 1 сек), можно упростить до выражения

yi = K3.yi-2 + K4. yi-1 + K5. ui + K6. ui-1,

где K3 … K6 - коэффициенты модели ОУ, вычисляемые по формулам

.

    В качестве регулятора используется ПИД-регулятор с передаточной функцией вида

,

где К0 …К2 - настоечные коэффициенты регулятора.

    Операторное уравнение

U(s) = Wp(s).E(s).

    Дифференциальное уравнение:

.

    Уравнение в приращениях:

.

    Отсюда

или

ui = ui-1 + K7 ei + K8 ei-1 + K9 ei-2,

где K7…K9 - коэффициенты модели регулятора, вычисляемые по формулам

    .                 (*)

    Для реализации данных моделей в программе создается процедура, которая должна постоянно просчитываться с заданным интервалом ΔТ. Чтобы создать такую процедуру используется объект типа «Timer» (см. группу объектов «System» на панели инструментов), в котором создается обработчик события «onTimer»:

 

procedure TForm1.Timer1Timer(Sender: TObject);

Begin

e:=x-y; {вычисление ошибки}

u:=u1+k7*e+k8*e1+k9*e2; {модель регулятора}

y:=k3*y2+k4*y1+k5*u+k6*u1; {модель ОУ}

u1:=u; e2:=e1; e1:=e; y2:=y1; y1:=y; {сдвиг значений на 1 такт по времени}

end;

 

    Здесь приняты обозначения переменных: y2 = yi-2, y1 = yi-1 и т.д.

    Все переменные должны быть объявлены как глобальные.

    Переменным также необходимо присвоить начальные значения. Это можно сделать непосредственно при создании главной формы (в процедуре-обработчике события «onCreate» главной формы).

    Предусмотрим два режима работы регулятора: ручной и автоматический. Для этого заведем глобальную переменную avt (типа boolean), которая будет служить программным переключателем режимов (avt = true - автоматический режим, avt = false - ручной). Процедура таймера с учетом режима работы будет выглядеть следующим образом:

 

procedure TForm1.Timer1Timer(Sender: TObject);

Begin

if avt then

Begin

e:=x-y; {вычисление ошибки}

u:=u1+k7*e+k8*e1+k9*e2; {модель регулятора}

end;

y:=k3*y2+k4*y1+k5*u+k6*u1; {модель ОУ}

u1:=u; e2:=e1; e1:=e; y2:=y1; y1:=y; {сдвиг значений

    на 1 такт по времени}

end;

 

    То есть управляющее воздействие u и ошибка е будут вычисляться только в автоматическом режиме. В ручном режиме u задается оператором.

 

Связь параметров модели с элементами интерфейса

    Значение переменной у выводится в поле вывода на главной форме.

    Для ввода таких параметров, как настройки регулятора К0, К1 и К2, значения u (в ручном режиме), задания х (в автоматическом), переключения режимов можно создать отдельное окно (см. рисунок 3), которое вызывается при щелчке по полю ввода TRCA5100.

 

Рисунок 3 - Окно параметров регулятора

 

        

    Если регулятор работает в автоматическом режиме, то управляющее воздействие u должно вычисляться по модели регулятора (см. процедуру Timer1Timer). Если режим не автоматический (т.е. ручной), то управляющее воздействие должно быть постоянным и равным указанному на этой форме.

    Чтобы окно параметров всегда оставалось на виду поверх всех окон установите параметр окна FormStyle на fsStayOnTop.

    При нажатии на кнопку «Применить» окна значения К7, К8 и К9 должны пересчитываться по формулам (*), исходя из заданных оператором значений К0, К1 и К2. При нажатии на кнопку «Закрыть» - только закрытие данного окна (параметр окна visible:=false).

 

procedure TForm2.BitBtn1Click(Sender: TObject);

Begin

k0:=strtofloat(Edit1.Text);

k1:=strtofloat(Edit2.Text);

k2:=strtofloat(Edit3.Text);

x:=strtofloat(Edit4.Text);

if CheckBox1.Checked then avt:=true else avt:=false;

if not avt then u:=strtofloat(Edit5.Text);

{Пересчет коэффициентов для модели:}

k7:=k1+k0*dt+k2/dt;

k8:=-k1-2*k2/dt;

k9:=k2/dt;

end;

 

procedure TForm2.BitBtn2Click(Sender: TObject);

Begin

visible:=false

end;

 

    Чтобы в модуле unit2, где содержится описание формы параметров регулятора, можно было изменять параметры, описанные в unit1, добавьие после служебного слова «implementation» указание

uses unit1;

    Теперь можно запустить программу на исполнение и проверить ее работу (предварительно сохранив все).

 

Программирование трендов

    Для вывода графиков изменения контролируемых параметров удобно воспользоваться готовыми компонентами, подключаемыми к программе как модули. Примером является модуль wd3.

    Для подключения модуля к проекту его имя «WD3» нужно указать в разделе uses (сам модуль wd3.dcu должен быть загружен в папку Delphi в имеющуюся папку библиотек Lib).

    Для формирования графиков в разделе var объявляется объект типа TMGraph, например:

 

Var

MGraph : TMGraph;

 

    Инициализация графиков происходит при создании главной формы:

 

MGraph.InitAsDynamic(Image2.Canvas,true,1,3,50,1);

MGraph.SetCaptions(‘’, ‘Время’,’Параметры’,' ');

MGraph.DrawGrid;

 

    В первой строке происходит инициализация графика MGraph как динамически обновляемого тренда и задание его начальных параметров:

Image2.Canvas - указывается где рисовать график,

true - если кривые на графике нужно выводить разными цветами,

1  - количество осей по Y,

3  - количество кривых на графике (для х, у и u),

50 - количество интервалов по оси времени,

1  - шаг по времени (1 сек.).

    Во второй строке задаются заголовки осей.

    Команда в третьей строке рисует сетку для графиков.

 

Рисунок 4 - Результат работы программы

 

    Для вывода графиков значения точек должны быть помещены на график командами AddPoint(y), где у - очередная точка графика. Если выводятся одновременно три кривые (как в данном случае), следует дать последовательно три команды (это можно сделать в процедуре таймера):

 

MGraph.AddPoint(y); {точка для у}

MGraph.AddPoint(u); {точка для u}

MGraph.AddPoint(x); {точка для х}

 

    Результат работы программы с графиками-трендами изображен на рисунке 4.

 

    Индивидуальные задания

    Общее задание: разработать и скомпилировать программу (получить готовый exe-файл), реализующую имитационную модель заданного технологического объекта.

    Адекватность модели проверить в пакете имитационного моделирования VisSim, ТАУ2 или любом другом. Графики, полученные в программе и в пакете моделирования, должны быть одинаковы.

    В программе предусмотреть пункты меню:

- «Пуск/Стоп» - для запуска/останова модели;

- «Сохранить» - для сохранения результатов расчета в виде текстового файла (таблица значений х, у и u), при этом программа должна запрашивать имя файла;

- «Результаты» - для отображения таблицы результатов в отдельном окне;

- «О программе» - для вывода по центру экрана модального окна с информацией об авторе и учебной группе.

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

    В окне параметров регулятора предусмотреть:

- при выборе автоматического режима поле для ввода u должно становиться недоступно (используется свойство Enabled), так как u будет расчетным,

- при выборе ручного режима должны становится недоступны поля для ввода К0, К1, К2 и х.

    Окна с трендами должны иметь возможность масштабирования во весь экран.

    Вариант задания выбирается по указанию преподавателя или по списку группы. Исходные данные и имена файлов с мнемосхемами указаны в таблице. Мнемосхемы представлены на рисунках 5 – 10.

    Параметры а0 = b0 = 1.

 

Таблица - Исходные данные

Вар. Мнемосхема Параметры модели Расположение трендов
1 1.bmp - резервуар К = 1,6; b1 = 0,48; а2 = 4,16; а1 = 3,64 рядом с мнемосхемой
2 2.bmp - давление PRC6225 в емкости Е-1 К = 1,2; b1 = -0,16; а2 = 0,36; а1 = 1,04 в отдельном окне
3 4.bmp - температура TIRC6142 в емкости ЕПП-4 К = 0,86; b1 = 0,42; а2 = 4,02; а1 = 3,8 каждый в своем окне
4 5.bmp - давление PIRC6268 К = 1,2; b1 = 0,56; а2 = 5,26; а1 = 4,2 рядом с мнемосхемой
5 1.bmp - резервуар К = 1,0; b1 = -0,30; а2 = 4,2; а1 = 3,7 в отдельном окне
6 3.bmp - давление PRC6224 в емкости Е-1 К = 1,8; b1 = 0,8; а2 = 8,1; а1 = 3,4 рядом с мнемосхемой
7 4.bmp - температура TIRC6142 в емкости ЕПП-4 К = 1,4; b1 = 1,5; а2 = 9,1; а1 = 2,6 в отдельном окне
8 6.bmp - давление PIRC4104 в емкости ЕПП-3 К = 2,5; b1 = 0,4; а2 = 7,2; а1 = 3,6 каждый в своем окне
9 1.bmp - резервуар К = 0,6; b1 = -0,2; а2 = 10,5; а1 = 2,2 каждый в своем окне
10 2.bmp - температура ТRC6155 К = 1,8; b1 = 5,4; а2 = 4,5; а1 = 4,8 рядом с мнемосхемой
11 4.bmp - температура TIRC6142 в емкости ЕПП-4 К = 1,6; b1 = 0,4; а2 = 2,1; а1 = 4,2 у – рядом с мнемосхемой, х и u – в отдельном
12 5.bmp - давление PIRC6268 К = 0,6; b1 = 0,5; а2 = 4,7; а1 = 2,9 каждый в своем окне
13 6.bmp - давление PIRC4104 в емкости ЕПП-3 К = 1,8; b1 = 0,2; а2 = 8,1; а1 = 3,6 в отдельном окне
14 3.bmp - температура PRC6154 в емкости Е-1 К = 3,6; b1 = -0,5; а2 = 7,5; а1 = 3,7 в отдельном окне
15 4.bmp - температура TIRC6142 в емкости ЕПП-4 К = 1,5; b1 = 0,9; а2 = 1,2; а1 = 10,5 рядом с мнемосхемой
16 5.bmp - давление PIRC6268 К = 3,6; b1 = -0,5; а2 = 1,6; а1 = 1,4 каждый в своем окне
17 6.bmp - давление PIRC4104 в емкости ЕПП-3 К = 1,2; b1 = 8,4; а2 = 4,5; а1 = 3,5 у – рядом с мнемосхемой, х и u – в отдельном
18 1.bmp - резервуар К = 1,8; b1 = 0,4; а2 = 4,6; а1 = 3,6 у – рядом с мнемосхемой, х и u – в отдельном
19 5.bmp - давление PIRC6268 К = 4,6; b1 = 0,8; а2 = 12,1; а1 = 4,7 у – рядом с мнемосхемой, х и u – в отдельном
20 6.bmp - давление PIRC4104 в емкости ЕПП-3 К = 2,5; b1 = -0,5; а2 = 4,4; а1 = 3,9 рядом с мнемосхемой
21 1.bmp - резервуар К = 1,2; b1 = 0,4; а2 = 10,5; а1 = 2,2 в отдельном окне
22 2.bmp - температура ТRC6155 К = 2,8; b1 = 5,4; а2 = 4,5; а1 = 4,8 каждый в своем окне
23 4.bmp - температура TIRC6142 в емкости ЕПП-4 К = 4,6; b1 = 0,5; а2 = 1; а1 = 4,2 рядом с мнемосхемой
24 5.bmp - давление PIRC6268 К = 2,6; b1 = 1,5; а2 = 6,7; а1 = 1,7 в отдельном окне

 

Рисунок 5 – Резервуар (1.bmp)

 

Рисунок 6 – Емкость Е-1, теплообменник Т-1, фильтры Ф-1 и Ф-2 (2.bmp)

 

Рисунок 7 – Емкость Е-1, теплообменник Т-1, фильтры Ф-1 и Ф-2 (3.bmp)

 

 

Рисунок 8 – Емкость ЕПП-4 (4.bmp)

 

Рисунок 9 – Емкость Е-6 (5.bmp)

 

 

Рисунок 10 – Емкость ЕПП-3 (6.bmp)

   

 

        


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

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




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