133
Usa1,Utra,Uka,Usb1,Utrb,Ukb,
Lr,Ls,Pra,Prb,Pid: extended{real};
N_str: string;
BEGIN ClrScr;
j:=1;
while x0<=xk do begin
Runge(x0);
for i:=1 to n do yz[i]:=y[i];
h:=h/2;
Runge(x0);
for i:=1 to n do y0[i]:=y[i]; x0:=x0+h;
Runge(x0);
l := 0;
for i:=1 to n do begin
if abs(yz[i]-y[i]) < eps*abs(y[i]) then l:=l + 1;
end;
if L = n then { Точность достигнута }
if abs(x0+h-Xp) < abs(Xp)*0.0000001 then begin
xx0 := x0 + h;
gotoXY(1,1);
Writeln('t=',xx0:8:5,' W1=',y[5]:7:2,' 1/с');
writeln('M=',M:12:2,' Lk=',Lkab:5:2);
{ Формирование очередных значений производных потокосцеплений }
DFsa[3]:=F[1]; DFsb[3]:=F[2];
{ Формирование начальных значений производных потокосцеплений }
if j<=3 then begin
DFsa[j]:=F[1];
DFsb[j]:=F[2];
j:=j+1;
end
else begin
{ Вычисление значений потокосцеплений статора }
Fsa[1]:=Fsa[0]+DLXp*(9*DFsa[0]+19*DFsa[1]-5*DFsa[2]+DFsa[3])/24;
Fsb[1]:=Fsb[0]+DLXp*(9*DFsb[0]+19*DFsb[1]-5*DFsb[2]+DFsb[3])/24;
{ Переопределение начальных значений потокосцеплений и их производных }
Fsa[0]:=Fsa[1]; Fsb[0]:=Fsb[1];
DFsa[0]:=DFsa[1]; DFsa[1]:=DFsa[2]; DFsa[2]:=DFsa[3];
DFsb[0]:=DFsb[1]; DFsb[1]:=DFsb[2]; DFsb[2]:=DFsb[3];
end;
{ Электромагнитный момент как функция потокосцепления и тока статора }
Mp:=3*p*(Fsa[1]*Isb-Fsb[1]*Isa)/2;
Lr:=L1+Lm; Ls:=L2+Lm;
{
Вычисление потокосцепления ротора.
Здесь есть маленькая неточность. Определите какая?
}
Pra:=Lm*Isa+Lr/Lm*(Fsa[1]-Ls*Isa);
Prb:=Lm*Isb+Lr/Lm*(Fsb[1]-Ls*Isb);
Pr2:=sqr(Pra)+sqr(Prb);