Unit1 (Много неразобранного материала)
Описание файла
Файл "Unit1" внутри архива находится в следующих папках: Много неразобранного материала, mmto_soft_dz. Текстовый-файл из архива "Много неразобранного материала", который расположен в категории "". Всё это находится в предмете "математическое моделирование технических объектов (ммто)" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "математическое моделирование технических объектов (ммто)" в общих файлах.
Просмотр текстового-файла онлайн
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Edit6: TEdit;
Label11: TLabel;
Label12: TLabel;
Image1: TImage;
Edit7: TEdit;
Label13: TLabel;
Label14: TLabel;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Label16: TLabel;
Label15: TLabel;
Label17: TLabel;
Label18: TLabel;
Bevel1: TBevel;
Bevel2: TBevel;
Bevel3: TBevel;
Bevel5: TBevel;
Bevel6: TBevel;
Bevel4: TBevel;
Label19: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
n=200;
var
Form1: TForm1;
E,C1,L3,R1,R2,R3:real;//значения ЭДС, емкости, индуктивности и рзеисторов
delta:extended; //шаг дискретизации
a,b,c,d,R0:extended; //коэффициенты уравнения
ResCurrentL: array [1..n] of extended; //массив значений тока на индуктивности
ResVoltageL: array [1..n] of extended; //массив значений напряжения на индуктивности
ResCurrentC: array [1..n] of extended; //массив значений тока на емкости
ResVoltageC: array [1..n] of extended; //массив значений напряжения на емкости
implementation
{$R *.dfm}
function CurrentL(I1:extended;I2:extended):extend ed; //вычисление тока на индуктивности
begin
result:=((2*a+b-delta*c)*I2-a*I1-delta*d )/(a+b);
end;
function VoltageL(I1:extended;I2:extended):extend ed; //вычисление напряжения на индуктивности
begin
result:=L3*(I2-I1)/delta;
end;
function VoltageC(I1:extended;I2:extended):extend ed; //вычисление тока на емкости
begin
result:=E-L3*(I2-I1)/delta;
end;
function CurrentC(V1:extended;V2:extended):extend ed; //вычисление напряжения на емкости
begin
result:=C1*(V2-V1)/delta;
end;
procedure GrafikImage2; //график зависимотси тока на индуктивности от времени
var
ymin,ymax,y,my,mx:extended;
i,x0,y0:integer;
begin
i:=1;
ymin:=ResCurrentL[i+2];
ymax:=ResCurrentL[i+2];
repeat
y:=ResCurrentL[i];
if y<ymin then ymin:=y;
if y>ymax then ymax:=y;
inc(i);
until i=n;
my:=105/abs(ymax-ymin);
mx:=705/n;
x0:=0;
y0:=105-abs(Round(ymin*my));
i:=1;
with Form1.Image2.Canvas do
begin
MoveTo(x0,y0);
repeat
y:=ResCurrentL[i+2];
LineTo(x0+Round(i*mx),y0-Round(y*my));
inc(i);
until i+2=n;
end;
end;
procedure GrafikImage3; //график зависимости наряжения на индуктивности от времени
var
ymin,ymax,y,my,mx:extended;
i,x0,y0:integer;
begin
i:=1;
ymin:=ResVoltageL[i+2];
ymax:=ResVoltageL[i+2];
repeat
y:=ResVoltageL[i];
if y<ymin then ymin:=y;
if y>ymax then ymax:=y;
inc(i);
until i=n;
my:=105/abs(ymax-ymin);
mx:=705/n;
x0:=0;
y0:=105-abs(Round(ymin*my));
i:=1;
with Form1.Image3.Canvas do
begin
MoveTo(x0,y0);
repeat
y:=ResVoltageL[i+2];
LineTo(x0+Round(i*mx),y0-Round(y*my));
inc(i);
until i+2=n;
end;
end;
procedure GrafikImage4; //график зависимости тока на емкости от времени
var
ymin,ymax,y,my,mx:extended;
i,x0,y0:integer;
begin
i:=1;
ymin:=ResCurrentC[i+2];
ymax:=ResCurrentC[i+2];
repeat
y:=ResCurrentC[i];
if y<ymin then ymin:=y;
if y>ymax then ymax:=y;
inc(i);
until i=n;
my:=105/abs(ymax-ymin);
mx:=705/n;
x0:=0;
y0:=105-abs(Round(ymin*my));
i:=1;
with Form1.Image4.Canvas do
begin
MoveTo(x0,y0);
repeat
y:=ResCurrentC[i+2];
LineTo(x0+Round(i*mx),y0-Round(y*my));
inc(i);
until i+2=n;
end;
end;
procedure GrafikImage5; //график зависимости напряжения на емкости от времени
var
ymin,ymax,y,my,mx:extended;
i,x0,y0:integer;
begin
i:=1;
ymin:=ResVoltageC[i+2];
ymax:=ResVoltageC[i+2];
repeat
y:=ResVoltageC[i];
if y<ymin then ymin:=y;
if y>ymax then ymax:=y;
inc(i);
until i=n;
my:=105/abs(ymax-ymin);
mx:=705/n;
x0:=0;
y0:=105-abs(Round(ymin*my));
i:=1;
with Form1.Image5.Canvas do
begin
MoveTo(x0,y0);
repeat
y:=ResVoltageC[i+2];
LineTo(x0+Round(i*mx),y0-Round(y*my));
inc(i);
until i+2=n;
end;
end;
procedure TForm1.Button1Click(Sender: TObject); //кнопка "Расчет"
var
i,j:integer;
begin
E:=StrToFloat(Edit6.Text); //получение значений из полей Edit
C1:=StrToFloat(Edit5.Text)/1000000000; //
L3:=StrToFloat(Edit2.Text)/1000000; //
R1:=StrToFloat(Edit1.Text)*1000; //
R2:=StrToFloat(Edit3.Text)*1000; //
R3:=StrToFloat(Edit4.Text)*1000; //
delta:=StrToFloat(Edit7.Text)/1000000; //шаг дискретизации
R0:=R1+R2; // вычисление коэффициентов
a:=C1*L3; //
b:=L3*(R0+R3)/(R0*R3); //
c:=1; //
d:=-E/R0;
Form1.Image2.Canvas.FillRect(Rect(0,0,75 0,105)); //стирание графиков
Form1.Image3.Canvas.FillRect(Rect(0,0,75 0,105)); //
Form1.Image4.Canvas.FillRect(Rect(0,0,75 0,105)); //
Form1.Image5.Canvas.FillRect(Rect(0,0,75 0,105)); //
for i:=1 to n do ResCurrentL[i]:= 0; i:=2;j:=3;//расчет тока на индуктивности
repeat
ResCurrentL[i+1]:=CurrentL(ResCurrentL[i -1],ResCurrentL[i]);
inc(i);
until i=n ;
repeat //вывод значений в таблицу
StringGrid1.Cells[0,j-2]:=FloatToStrF(Re sCurrentL[j],ffGeneral,5,5);
inc(j);
until j=n;
for i:=1 to n do ResVoltageL[i]:= 0; i:=2;j:=3;//расчет наряжения на индуктивности
repeat
ResVoltageL[i+1]:=VoltageL(ResCurrentL[i -1],ResCurrentL[i]);
inc(i);
until i=n ;
repeat //вывод значений в таблицу
StringGrid1.Cells[1,j-2]:=FloatToStrF(Re sVoltageL[j],ffGeneral,5,5);
inc(j);
until j=n;
for i:=1 to n do ResVoltageC[i]:= 0; i:=2;j:=3;//расчет тока на емкости
repeat
ResVoltageC[i+1]:=VoltageC(ResCurrentL[i -1],ResCurrentL[i]);
inc(i);
until i=n ;
repeat //вывод значений в таблицу
StringGrid1.Cells[3,j-2]:=FloatToStrF(Re sVoltageC[j],ffGeneral,5,5);
inc(j);
until j=n;
for i:=1 to n do ResCurrentC[i]:= 0; i:=2;j:=3; //расчет наряжения на индуктивности