Автоматизация холодильного оборудования
Приложение
Исходный текст программы modul
program modul;
uses crt, graph;
const max=5000; {число точек}
h=0.04; {шаг интегрирования}
type work=object
t, tv: array [0 max] of real; {t‑температура, tv – скорость
роста температуры}
t1:real; {постоянная времени}
t2:real; {постоянная времени}
tur:real; {установившаяся температура при ее росте}
tus:real; {установившаяся температура при ее снижении}
maximum, minimum:real; {фактический диапазон регулирования}
period:real; {период колебаний}
File_name:string; {Имя файла данных}
constructor Init; {инициализация параметров}
procedure save; {запись данных в файл}
procedure count; {расчет переходного процесса методом Рунге-Кутта}
procedure setka_par;
procedure show; {показ графика}
procedure obrob; {обработка результатов расчета}
function f (y, ys, tvar:real):real;
end;
constructor work.init;
var i:integer;
begin
for i:=0 to max do
begin
tv[i]:=0;
t[i]:=0;
end;
clrscr;
write ('Введите постоянную времени Т1=');
readln(t1);
write ('Введите постоянную времени Т2=');
readln(t2);
write ('Введите начальную температуру в камере t0=');
readln (t[0]);
write ('Ввести установившеюся температуру при ее росте ');
readln(tur);
write ('Ввести установившеюся температуру при ее снижении ');
readln(tus);
write ('Имя файла данных ');
readln (File_name)
end;
procedure work.save;
var file1:text;
i:integer;
begin
assign (file1, File_name);
rewrite (file1);
writeln (file1,'Исследование двухпозиционной системы регулирования');
writeln (file1,'температуры в холодильной камере');
writeln (file1,'Исходные данные');
writeln (file1,'постоянные времени Т1=', t1,' T2= ', t2);
writeln (file1,'заданный диапазон 0.5–1 градус цельсия');
writeln (file1,'полученный диапазон ', minimum:6:3,'-', maximum:6:3, 'градус цельсия');
writeln (file1,'период колебаний ', period:4:2,' часа');
for i:= 0 to max do
if (i mod 50)=0 then {сохраняется
каждое 50‑е значение}
begin write (file1, (i*h):6:4);
write (file1, tv[i]:10:5);
writeln (file1, t[i]:10:5);
end;
close(file1);
end;
procedure work.count;
var
k1, k2, k3, k4:real;
i: integer;
tvar1:real;
rost:boolean; {флаг состояния работы компрессоров (при rost=false)
компрессоры работают и наоборот}
begin
if t[0] < 0.5 then begin
tvar1:= tur;
rost:= true;
end;
if t[0]>1 then begin
tvar1:=tus; {установка флагов}
rost:=false;
end;
for i:=0 to max‑1 do
{длительность переходного процесса max * h = 5000*0.04 =200 часов}
begin
k1:=h*f (t[i], tv[i], tvar1);
k2:=h*f (t[i]+(h/2)*tv[i]+(h/8)*k1, tv[i]+k1/2, tvar1);
k3:=h*f (t[i]+(h/2)*tv[i]+(h/8)*k1, tv[i]+k2/2, tvar1);
k4:=h*f (t[i]+h*tv[i]+(h/2)*k3, tv[i]+k3, tvar1);
t [i+1]:=t[i]+h*(tv[i]+(1/6)*(k1+k2+k3));
tv [i+1]:=tv[i]+(1/6)*(k1+2*k2+2*k3+k4);
if (t [i+1]<=0.5) and (rost=false) then
begin
tvar1:=tur;
rost:=true;
end;
if (t [i+1]>=1) and (rost=true) then
begin
tvar1:=tus;
rost:=false;
end;
end;
end;
function work.f (y, ys, tvar:real):real;
begin
f:=(tvar-y – (t1+t2)*ys)/(t1*t2);
end;
procedure StartGraph;
var
Driver, Mode: Integer;
begin
Driver:= Detect;
InitGraph (Driver, Mode, «);
Setbkcolor(white);
End;
procedure Setka;
var
i:integer;
begin
ClearViewPort;
setcolor(8);
for i:=0 to 10 do
begin
line (round(GetMaxX*i/10), 0, round (GetMaxX*i/10), GetMaxY);
line (0, round (GetMaxY*i/10), GetMaxX, round (GetMaxY*i/10));
end;
End;
Procedure Work. Setka_par;
Var
I, J: Integer;
St: String;
Jt:real;
dop: integer;
Begin
if t[0]>1 then dop:=0;
if t[0] <0.5 then dop:=-3;
settextstyle (0,1,2);
outtextxy (round(0.05*GetMaxX), round (0.15*GetMaxY), 'ТЕМПЕРАТУРА, C');
settextstyle (0,0,1);
for i:=0 to 9 do Begin
jt:=h*max*i/10;
str (jt:3:0, st);
outtextxy (round(GetMaxX*i/10+8), round (GetMaxY/2+8), st)
End;
settextstyle (0,0,2);
outtextxy (round(0.6*GetMaxX), round (0.8*GetMaxY)+5,'Время, час');
settextstyle (0,0,1);
j:=5+dop;
FOR i:= 0 to 5 do begin
str (j, st);
outtextxy (5, round (GetMaxY*i/5+4), st);
j:=j‑1
end;
end;
procedure Work. Show;
Var i:integer;
msx, msy:real;
dop: integer;
begin
if t[0] >1 then dop:=0;
if t[0] <0.5 then dop:=3;
msx:=GetMaxX/max;
Msy:=GetMaxY/5;
for I:=1 to max do
line (round (msx*(i‑1)),
round (GetMaxY-msy*(t [i‑1]+dop)),
round (msx*i),
round (GetMaxY-msy*(t[i]+dop)))
end;
procedure work.obrob;
var
i:integer;
begin i:=0;
if t[0] >1 then begin
while tv[i]<=0 do
begin
minimum:=t[i]; {минимум функции}
i:=i+1
end;
period:=i;
while tv[i]>=0 do
begin
maximum:=t[i];
i:=i+1
end;
while tv[i]<=0 do i:=i+1;
period:=h+(i-period);
end;
if t[0] <0.5 then begin
while tv[i] >=0 do
begin
maximum:=t[i];
i:=i+1;
end;
period:=i;
while tv[i]<= 0 do
begin
minimum:=t[i];
i:=i+1;
end;
while tv[i]>=0 do i:=i+1;
period:=h*(i-period)
end; end;
var a:work;
begin
with a do
begin
init;
count;
obrob;
save;
startgraph;
setka;
setka_par;
show;
repeat until keypressed;
end
end.
Протоколы работы:
Вариант №1
Исследование двухпозиционной системы регулирования
температуры в холодильной камере
Исходные данные
постоянные времени Т1= 1.0000000000E+02 T2= 1.0000000000E+01
заданный диапазон 0.5–1 градус цельсия
полученный диапазон 0.448 – 1.249 градус цельсия
период колебаний 54.64 часа
0.0000 0.00000 5.00000
2.0000 -0.01435 4.98512
4.0000 -0.02582 4.94451
6.0000 -0.03493 4.88341
8.0000 -0.04211 4.80608
10.0000 -0.04773 4.71600
12.0000 -0.05206 4.61601
14.0000 -0.05536 4.50843
16.0000 -0.05780 4.39515
18.0000 -0.05955 4.27769
20.0000 -0.06075 4.15731
22.0000 -0.06149 4.03501
24.0000 -0.06186 3.91161
26.0000 -0.06194 3.78777
28.0000 -0.06178 3.66402
30.0000 -0.06142 3.54080
32.0000 -0.06092 3.41843
34.0000 -0.06030 3.29718
36.0000 -0.05959 3.17728
38.0000 -0.05880 3.05888
40.0000 -0.05796 2.94212
42.0000 -0.05707 2.82709
44.0000 -0.05616 2.71385
46.0000 -0.05522 2.60248
48.0000 -0.05427 2.49298
50.0000 -0.05331 2.38539
52.0000 -0.05236 2.27972
54.0000 -0.05140 2.17597
56.0000 -0.05045 2.07413
58.0000 -0.04950 1.97418
60.0000 -0.04856 1.87612
62.0000 -0.04764 1.77992
64.0000 -0.04672 1.68557
66.0000 -0.04582 1.59302
Другие рефераты на тему «Производство и технологии»:
Поиск рефератов
Последние рефераты раздела
- Технологическая революция в современном мире и социальные последствия
- Поверочная установка. Проблемы при разработке и эксплуатации
- Пружинные стали
- Процесс создания IDEFO-модели
- Получение биметаллических заготовок центробежным способом
- Получение и исследование биоактивных композиций на основе полиэтилена высокой плотности и крахмала
- Получение титана из руды