for k:=1 to 5 do
begin
f3[k]:=f[k];
x[k]:=h[k]+f3[k]*dt;
end;
Right_Part;
for k:=1 to 5 do
begin
f4[k]:=f[k];
x[k]:=h[k]+(f1[k]+2*f2[k]+2*f3[k]+f4[k])/6*dt;
end;
end;
{ Инициализация графики }
procedure Init_Graph;
var GraphDriver,GraphMode:integer;
i:integer;
color:word;
begin
GraphDriver:=0;
DetectGraph(GraphDriver,GraphMode);
if GraphMode>1 then GraphMode:=1;
InitGraph(GraphDriver,GraphMode,'e:\tp\bgi');
color:=GetMaxColor;
TextMode(1);
Writeln;
Writeln(' Graph Initialisate And
',GraphErrorMsg(GraphResult));
Writeln;
Writeln(' Use: GraphMode - ',GetModeName(GraphMode));
Writeln(' GraphDriver - ',GetDriverName);
Writeln;
Writeln(' The Number Of Using Colors :',GetMaxColor);
for i:=1 to 4 do Writeln;
Writeln(' Параметры АД:');
Writeln;
Writeln(' As =',A1:6,' Ar =',A2:6);
Writeln(' Ks =',K1:6,' Kr =',K2:6);
Writeln(' Ls`=',L11:6,' Lr`=',L21:6);
for i:=1 to 7 do Writeln;
Writeln(' Press Any Key To Continue');
pausa;
SetGraphMode(GraphMode);
end;
{ Процедура подготовки к цифровому моделированию
по паспортным данным двигателя }
procedure Prepeare;
var HelpVariable:integer;
begin
W1:=2*Pi*Fs;W0:=W1/p;
L0:=1.5*X0t/W1;L1:=X1t/W1;L2:=X2t/W1;
L1:=L1+L0;L2:=L2+L0;
K2:=L0/L2;K1:=L0/L1;
L11:=L1-sqr(L0)/L2;L21:=L2-sqr(L0)/L1;
A1:=R1t/L11;A2:=R2t/L21;
for HelpVariable:=1 to 5 do
begin
f[HelpVariable]:=0;
x[HelpVariable]:=0;
end;
end;
{ Процедура расчета угов векторов }
procedure AngleDefinition;
begin
UssAbsoluteAngle:=AbsoluteAngle(U1a,U1b);
PsisRAngle:=AbsoluteAngle(x[1],x[2])-UssAbsoluteAngle;
if PsisRAngle<0 then PsisRAngle:=360+PsisRAngle;
PsirRAngle:=AbsoluteAngle(x[3],x[4])-UssAbsoluteAngle;
if PsirRAngle<0 then PsirRAngle:=360+PsirRAngle;
IsRAngle:=AbsoluteAngle(I1a,I1b)-UssAbsoluteAngle;
if IsRAngle<0 then IsRAngle:=360+IsRAngle;
IrsRAngle:=AbsoluteAngle(I21a,I21b)-UssAbsoluteAngle;
if IrsRAngle<0 then IrsRAngle:=360+IrsRAngle;
PsioRAngle:=AbsoluteAngle(I0a,I0b)-UssAbsoluteAngle;
if PsioRAngle<0 then PsioRAngle:=360+PsioRAngle;
end;
procedure OutStringSum;
begin
VectorString:=VectorString+VectorString0+'¦';
end;
{ Функция, выдающая строку таблицы out - данных }
function GetVectorString(Number:StringSwitche):string;
begin
Case Number of
ST11 :GetVectorString:='+-------------------------------
---------------------------------------------+';
ST12 :GetVectorString:='¦ ¦ ¦ ¦ ¦
¦ ¦ Uss ¦ Psis ¦';
ST13 :GetVectorString:='¦ ¦ ¦ ¦ ¦
¦ +--------------------+-------------¦';
ST14 :GetVectorString:='¦ Fs ¦ Ms ¦ Wv ¦ S ¦
Effi-¦cos(F)¦ ¦ Angle ¦ ¦ ¦';
ST15 :GetVectorString:='¦ ¦ ¦ ¦
¦ciency¦ ¦Module+-------------¦Module¦RAngle¦';
ST16 :GetVectorString:='¦ ¦ ¦ ¦ ¦
¦ ¦ ¦absol.¦relat.¦ ¦ ¦';
ST17 :GetVectorString:='+------+------+------+------+---
---+------+------+------+------+------+------¦';
DATA1:begin
VectorString:='¦';Str(Fs:6,VectorString0);OutStringSum;
Str(Ms:6,VectorString0);OutStringSum;
Str(x[5]/p:6:2,VectorString0);OutStringSum;
Str(s:6:3,VectorString0);OutStringSum;
Str(KPD:6:3,VectorString0);OutStringSum;
Str(CosF:6:3,VectorString0);OutStringSum;
Str(Uss:6,VectorString0);OutStringSum;
Str(UssAbsoluteAngle:6,VectorString0);OutStringSum;
VectorString0:=' 0 ';OutStringSum;
Psi1:=sqrt(sqr(x[1])+sqr(x[2]));
Str(Psi1:6:4,VectorString0);OutStringSum;
Str(PsisRAngle:6,VectorString0);OutStringSum;
GetVectorString:=VectorString;
end;
ENDT1:GetVectorString:='+-------------------------------
---------------------------------------------+';
ST21 :GetVectorString:='+-------------------------------
---------------------------------------------+';
ST22 :GetVectorString:='¦ Psir ¦ Is ¦
Irs ¦ Psio ¦ Power ¦ ¦';
ST23 :GetVectorString:='+-------------+-------------+---
----------+-------------+-------------¦ M ¦';
ST24
:GetVectorString:='¦Module¦RAngle¦Module¦RAngle¦Module¦RAngle¦Module¦RAngle¦
Full ¦Utilit¦ ¦';
ST25 :GetVectorString:='+------+------+------+------+---
---+------+------+------+------+------+------¦';
DATA2:begin
Psi2:=sqrt(sqr(x[3])+sqr(x[4]));Psi0:=I0*L0;
Str(Psi2:6:4,VectorString0);VectorString:='¦';OutStringSum;
Str(PsirRAngle:6,VectorString0);OutStringSum;
Str(I1:6:2,VectorString0);OutStringSum;
Str(IsRAngle:6,VectorString0);OutStringSum;
Str(I21:6:2,VectorString0);OutStringSum;
Str(IrsRAngle:6,VectorString0);OutStringSum;
Str(Psi0:6:4,VectorString0);OutStringSum;
Str(PsioRAngle:6,VectorString0);OutStringSum;
Str(0.003*Uss/sqrt(2)*I1:6:2,VectorString0);OutStringSum;
Str(0.003*Uss/sqrt(2)*I1*CosF:6:2,VectorString0);OutStringSum;
Str(M:6:2,VectorString0);OutStringSum;
GetVectorString:=VectorString;
end;
ENDT2:GetVectorString:='+-------------------------------
---------------------------------------------+'
end
end;
{ Процедура, рисующая векторную диаграмму }
procedure DrawVectorDiagram;
var CenterX,CenterY,Max,Kx:real;
Xk,Yk:word;
begin
GetAspectRatio(Xk,Yk);Kx:=Yk/Xk;
CenterY:=GetMaxY/2;Max:=(GetMaxY-
150)/2;CenterX:=2/3*GetMaxX-10;
PutVector(CenterX,CenterY,Max,90,GetMaxColor,'Uss');
PutVector(CenterX,CenterY,Max,90+IsRAngle,GetMaxColor*0.9,'Is');
PutVector(CenterX,CenterY,Max*I21/I1,90+IrsRAngle,GetMaxColor*0.88,'Irs');
PutVector(CenterX,CenterY,Max,90+PsisRAngle,GetMaxColor*0.8,'Psis');
PutVector(CenterX,CenterY,Max*Psi2/Psi1,90+PsirRAngle,GetMaxColor*0.75,'Psir
');
PutVector(CenterX,CenterY,Max*Psi0/Psi1,90+PsioRAngle,GetMaxColor*0.65,'Psio
');
end;
procedure SolveDiagram;Forward;
{ Процедура выхода из программы }
procedure quit;
begin
Write(Result,GetVectorString(ENDT1));Writeln(Result,GetVectorString(ENDT2));
Close(Result);GraphDefaults;CloseGraph;Halt;
end;
{ Процедура анализа скэн - кода }
procedure PressKeyAnalysis;
var p:char;
begin
p:=chr(0);
if KeyPressed=True then
Case ReadKey of
'V','v':SolveDiagram;
'M','m':begin
Ms:=NumberInput('Момент');
SolveDiagram;
end;
'U','u':begin
Uss:=round(NumberInput('Напряжение')*sqrt(2));
SolveDiagram;
end;
'W','w':begin
Write(Result,GetVectorString(DATA1));
Writeln(Result,GetVectorString(DATA2));
SolveDiagram;
end;
'P','p':begin
SetActivePage(1);SetVisualPage(0);
SetViewPort(0,100,300,204,True);ClearViewPort;
SetViewPort(0,0,GetMaxX,GetMaxY,True);
TextOut(80,148,0.9,'Печать:');
TextOut(0,164,0.75,'1 -
печать графика скорости');
TextOut(0,180,0.87,'2 -
печать векторной диаграммы');
SetVisualPage(1);
Repeat p:=ReadKey;
Until (p='1') or (p='2');
Case p of
'1':begin
SetActivePage(0);SetVisualPage(0);
CopyToPRN;
end;
'2':begin
SetActivePage(1);SetVisualPage(1);
CopyToPRN;
end
end;
SolveDiagram;
end;
'Q','q':quit
else
SetColor(GetMaxColor);
SetVisualPage(0);
end
end;
{ Процедура расчета векторной диаграммы }
procedure SolveDiagram;
begin
SetVisualPage(0);SetActivePage(1);
SetViewPort(0,0,GetMaxX,GetMaxY,True);SetBkColor(Black);ClearViewPort;SetCol
or(GetMaxColor);
AngleDefinition;
{формирование}
OutTextXY(0,0,GetVectorString(ST11));OutTextXY(0,8,GetVectorString(ST12));
{ заголовка }
OutTextXY(0,16,GetVectorString(ST13));OutTextXY(0,24,GetVectorString(ST14));
{ первой }
OutTextXY(0,32,GetVectorString(ST15));OutTextXY(0,40,GetVectorString(ST16));
{ таблицы } OutTextXY(0,48,GetVectorString(ST17));
{вывод данных} OutTextXY(0,56,GetVectorString(DATA1));
{конец табл.1} OutTextXY(0,64,GetVectorString(ENDT1));
{конец табл.2} OutTextXY(0,GetMaxY-8,GetVectorString(ENDT2));
{вывод данных} OutTextXY(0,GetMaxY-16,GetVectorString(DATA2));
{формирование} OutTextXY(0,GetMaxY-
24,GetVectorString(ST25));OutTextXY(0,GetMaxY-32,GetVectorString(ST24));
{ заголовка } OutTextXY(0,GetMaxY-
40,GetVectorString(ST23));OutTextXY(0,GetMaxY-48,GetVectorString(ST22));
{ таблицы2 } OutTextXY(0,GetMaxY-56,GetVectorString(ST21));
DrawVectorDiagram;
TextOut(56,100,0.9,'КЛАВИАТУРА:');TextOut(0,116,0.75,'V -
векторная диаграмма');
TextOut(0,132,0.87,'W - запись результатов в
файл');TextOut(0,148,0.65,'M - изменить момент на валу');
TextOut(0,164,0.6,'U - изменить
напряжение');TextOut(0,180,0.4,'P - печать результатов моделирования');
TextOut(0,196,0.8,'Q - выход в систему');
SetVisualPage(1);SetActivePage(0);
end;
{Процедура моделирования пуска асинхронного двигателя}
procedure Model;
begin
RepeatNumber:=round(EndT/(dt*640));
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
|