Автор работы: Пользователь скрыл имя, 02 Апреля 2014 в 22:05, контрольная работа
Далее выведем формулу характеризующую значение температуры Т в определенный промежуток времени.
Для этого введем новую переменную: h-шаг замеров, с. На которой мы будем принимать значение изменения температуры слитка Т’ постоянной. Естественно это ведет к погрешности, но если мы возьмем шаг h достаточно малым, то мы сведем погрешности к минимуму.
Изменение температуры слитка в нагревательной печи описывается дифференциальным уравнением:
(1)
Где Т- текущая температура слитка, град;
k-постоянный коэффициент, град/кал;
Qн- тепловая мощность нагрева(управление), кал/с;
Qп- мощность теплопотери, кал/с, причем мощность теплопотери пропорциональна квадрату текущей температуры слитка ;
А- постоянный коэффициент, кал/(град²с).
Управление Qн постоянно по времени
В начальный момент времени, t0=0, температура Т0-мала, пойдет энергичный нагрев.
Рассмотреть возможности как аналитического, так и численного решения задачи.
Разработать: алгоритмы расчета фазовой траектории управляемого процесса (изменения температуры слитка при нагреве)
Для решения данной задачи нам необходимо выразить зависимость температуры слитка от времени, что бы впоследствии по полеченным формулам построить графики и наглядно показать как меняется температура.
Воспользуемся методом численного решения задачи.
Рассмотрим систему уравнений (1). Подставим второе уравнение этой системы в первое:
(2)
Из уравнения (2) становится видно, что изменение температуры зависит от самой температуры, а именно чем выше температура по модулю, тем меньше её изменение.
Далее выведем формулу характеризующую значение температуры Т в определенный промежуток времени.
Для этого введем новую переменную: h-шаг замеров, с. На которой мы будем принимать значение изменения температуры слитка Т’ постоянной. Естественно это ведет к погрешности, но если мы возьмем шаг h достаточно малым, то мы сведем погрешности к минимуму.
Так как Т’ изменение температуры слитка то можно вывести что текущая температура это составляющая из предыдущей температуры и её изменения то мы можем составить уравнения:
i=0 t=0*h нач
i=1 t=h
i=2 t=2*h
…
i=n t=n*h
число замеров
Из предыдущих уравнений построим зависимость, которая позволит найти температуру в любой момент времени, зная количество замеров на интервале времени, шаг замеров и начальную температуру с её изменениями:
(3)
Сделаем проверку по размерностям:
Т’
град/с=град/кал*(кал/с-кал/( град²с)* град²)
Т
град=град+с*град/с
Теперь воспользуемся аналитическим методом решения задачи
Так как Т’ это изменение температуры то:
(4)
Подставим формулу (4) в формулу (2)
Помножим левую и правую часть на dt и поделим на в итоге получим:
Проинтегрируем правую и левую часть:
(5)
Выведем из формулы (5) величину Т:
(6)
Тогда следует совершенно справедливый вопрос, до каких пор будет идти нагрев?
Из формул (2), (3) и (6) видно, что величина Т- изменяемая во времени, тогда когда Qн постоянна по условию следовательно величина Qп будет догонять и обгонять величину Qн тогда значение Т’ будет либо равным 0 либо отрицательным.
Рассмотрим случай когда Т’ равно 0 тогда:
(7)
Обозначим полученную температуру как Tкр. При этой температуре изменение Т’ равно 0 следовательно температура слитка никогда не поднимется выше Tкр.
По полученным формулам простроим графики.
Примем:
Т0=1 град
h=0,5 с
n=40
A=0.1 кал/(град²с).
k=0.1 град/кал
Qн=100 кал/с
Рис.1. График изменения температуры слитка со временем.
Из полученного графика видно, что вначале температура изменялась быстро, но далее все медленнее и медленнее что подтверждает, что когда Т увеличивается Т’ уменьшается.
Так же мы видим что Т не переходит уровень в 31,6278. Что говорит о подтверждении выдвинутой нами гипотезы о том что Т влияет на Т’ и что нагрев не пойдет выше Ткр.
Рассмотрим задачу нахождения соотношения коэффициентов A и k необходимых для реализации требуемого уровня нагрева Тз.
Воспользуемся формулой (7)
Отсюда
(8)
Так как это критический уровень нагрева (как писалось, ранее температура нашего слитка не может быть выше неё) то необходимый нам уровень нагрева Тз должен отвечать условию:
Подставив в это условие формулу (7)
Подставим формулу (8)
Приняв Ткр=Тз
Следовательно требуемый уровень нагрева Tз может быть реализован при любом значении коэффициента k и значении коэффициента .
Составим блок схему моделируемой программы:
Главное окно программы представлено на рис.3. тест разработанной программы представлен в приложении 1:
Рис.3. Главное окно программы Delphi.
Созданная программа выдает нам значения в определенных точках и строит график фазовой траектории управляемого процесса
Рис.4. Окно ввода данных и выбора задачи
Т,°С
30
5 10 15 20 t
Рис.5. График фазовой траектории управляемого процесса
Рис.6. Окно вывода значений
На рис.6. видно, что в начальный период времени [0, 2,5] идет энергичный нагрев это объясняется тем что в начальный момент времени температура мала и как следствие коэффициент Qп который негативно сказывается на нагрев тоже мал. Однако мы можем заметить, что наши замеры идут до определенного уровня и не пересекают его, то есть наш процесс доходит до своей критической отметки Ткр так же видно, что она достигается за достаточно быстрый период времени [0, 7]. Следовательно, в этот период времени идет энергичный нагрев чего нельзя сказать о дальнейшем т.к. при Ткр изменение температуры становится равным 0 и естественно чем ближе температура приближается к Ткр тем меньше изменение температуры что и видно из рис.5. что подтверждает наши гипотезы.
Рис.7. Диалоговое окно.
На рис.7. мы видим решение 2-ой задачи здесь можно заметить, что коэффициент k не влияет на уровень нагрева т.к. при выводе формулы (7) мы четко можем видеть, что коэффициент k сокращается, следовательно, на нагрев влияют только 2 коэффициента:
A и Qн чем и обусловлена данное решение.
Код программы
Данная программа спроектирована на языке Delphi с помощью программы Borland Delphi 7
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm) //ввод объектов находящихся в рабочей области программы
Edit1: TEdit; //поле ввода времени нагрева для задачи 1
Edit2: TEdit;
Edit3: TEdit; //поле ввода коэф. k для задачи 1
Edit4: TEdit; //поле ввода коэф. A для задачи 1
Edit5: TEdit; //поле ввода Tнач для задачи 1
Button1: TButton; //кнопка расчета задачи 1
Label1: TLabel; //поясняющий текст
Label2: TLabel;
Edit6: TEdit; //поле ввода Qн для задачи 1
Edit7: TEdit; //поле ввода Tз для задачи 2
Button2: TButton; // кнопка расчета задачи 2
ListBox1: TListBox; //поле вывода информации
Edit8: TEdit; // поле ввода Qн для задачи 2
PaintBox1: TPaintBox; //графическое поле для построения графиков
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
procedure Edit1Click(Sender: TObject); //ввод событий после которых выполняется та
procedure Edit2Click(Sender: TObject); //или иная операция
procedure Edit3Click(Sender: TObject); //Click- событие понажанию на тот или иной
procedure Edit4Click(Sender: TObject); // объект
procedure Edit5Click(Sender: TObject);
procedure Edit6Click(Sender: TObject);
procedure Edit7Click(Sender: TObject);
procedure Edit8Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
tn, x, Tz, h, k,a,Qn, T, dT, tt: real; //итендитификация переменных
i: integer;
s: string;
implementation
{$R *.dfm}
procedure TForm1.Edit1Click(Sender: TObject); //программы выполняемые по событию
begin
Edit1.Clear
end;
procedure TForm1.Edit2Click(Sender: TObject);
begin
Edit2.Clear
end;
procedure TForm1.Edit3Click(Sender: TObject);
begin
Edit3.Clear
end;
procedure TForm1.Edit4Click(Sender: TObject);
begin
Edit4.Clear
end;
procedure TForm1.Edit5Click(Sender: TObject);
begin
Edit5.Clear
end;
procedure TForm1.Edit6Click(Sender: TObject);
begin
Edit6.Clear
end;
procedure TForm1.Edit7Click(Sender: TObject);
begin
Edit7.Clear
end;
procedure TForm1.Edit8Click(Sender: TObject);
begin
Edit8.Clear
end;
procedure TForm1.Button1Click(Sender: TObject); //событие кнопки расчета 1-й задачи
begin
ListBox1.Clear;
tn:=0;
h:=0;
k:=0;
a:=0;
x:=0;
Qn:=0;
T:=0;
tt:=0;
i:=0;
Tz:=0;
dT:=0;
tn:=StrToFloat(Edit1.Text);
h:=StrToFloat(Edit2.Text);
k:=StrToFloat(Edit3.Text);
a:=StrToFloat(Edit4.Text);
x:=StrToFloat(Edit5.Text);
Qn:=StrToFloat(Edit6.Text);
T:=x;
tt:=0;
i:=1;
while tn>tt do //цикл с логическим условием Т нагрева>t текущего
begin
s:='точка №'+inttostr(i)+' в момент времени t=' +FloatToStr(tt)+ ' температура T='+FloatToStr(T)+'.';
ListBox1.Items.Add(s); //заполнение поля ListBox1, вывод данных
dT:=k*(Qn-a*T*T);
T:=T+dT*h;
tt:=tt+h;
PaintBox1.Canvas.Pixels[Round(
i:=i+1; // путем закрашивания пикселей в области PaintBox1
end; //где 10 цена деления шкалы
end;
procedure TForm1.Button2Click(Sender: TObject); //событие кнопки расчета 2-й задачи
begin
tn:=0;
h:=0;
k:=0;
a:=0;
x:=0;
Qn:=0;
T:=0;
tt:=0;
i:=0;
Tz:=0;
dT:=0;
Tz:=StrToFloat(Edit7.Text);
Qn:=StrToFloat(Edit8.Text);
a:=Qn/(Tz*Tz);
s:='требуемый уровень нагрева Tзад='+FloatToStr(Tz)+ ' может быть достигнут при a=<'+FloatToStr(a)+' при любом k';
ShowMessage(s); //вывод сообщения, в котором содержится ответ на данный вопрос
end;
end.