Моделирование управляемого выпрямителя на ЭВМ. Принципиальная схема двухполупериодного управляемого выпрямителя, страница 7

-  среднее и действующее значения токов и выходного напряжения;

-  коэффициент пульсации выпрямленного напряжения;

-  коэффициент мощности и т.д.


ПРИЛОЖЕНИЕ 1

PROGRAM primer

INTEGER iwork(5)

parameter n=2

REAL l(n,n),r(n,n),rv(n),lv(n),lob(n,n),e(n),lo,la,ro,ra

real alfa(2),tok(2),a(n,n),b(n),work(6*n+3)

COMMON /matrix/a,b

external fun

pi=3.141592654

c

c  вводятся, если нужно, необходимые значения и параметры

write(6,1)

1     format(' введите значения Едвиг, Угла упр.(град) и шага интегрир.')

read(5,*)edwig,ugol,dt

c

c  присваиваются и вычисляются требуемые величины и векторы

t=0.

tk=0.08

tper=0.-dt

lo=0.001

ro=0.1

ra=1.

la=0.02

to=t

re=1.e-6

ae=0.

iflag=1

do 2 i=1,2

rv(i)=10000.

2          lv(i)=100.

c

c   формирование вектора alfa, задание начальных токов

alfa(1)=ugol

alfa(2)=ugol+180.

do 10 i=1,2

if(alfa(I).ge.360.)alfa(i)=alfa(i)-360.

10               tok(i)=0.

c определение переменной, необходимой для численного дифференцирования

tokst=tok(1)+tok(2)

c

c        подготовка к выводу информации на график

c ------------------------------------------------------write(6,101)

101      format(' каков шаг печати (целое число)?')

read(5,*)nipp

nip=nipp

call graf_init

c   окно для вывода напряжения на двигателе

call init(1,10.,5.,700.,110.,0.,0.08,-100.,100.)

c   окно для вывода тока, протекающего через двигатель

call init(2,10.,125.,700.,110.,0.,0.08,-100.,100.)

c   окно для вывода тока, протекающего через тиристор VD2

call init(3,10.,245.,700.,110.,0.,0.08,-100.,100.)

c   окно для вывода тока, протекающего через тиристор VD1

call init(4,10.,365.,700.,110.,0.,0.08,-100.,100.)

c

c     цикл пошагового моделирования работы управляемого выпрямителя

c   ---------------------------------------------------------------30    continue

c

c  вычисление относительного времени периода

tper=tper+dt

if(tper.gt.0.02)tper=tper-0.02

c

c  блок логики, реализующий функцию запирания и отпирания тиристоров

do 20 i=1,2

if(tok(i).ge.0)go to 15

c                      оператор, корректирующий вычислительную ошибку

if(tok(i).lt.-1.e-4)tok(i)=-1.e-4

rv(i)=10000.

lv(i)=100.

15    if(abs(tper-alfa(i)/18000).gt.dt/2)go to 20

rv(i)=0.001

lv(i)=0.00001

20    continue

c

c Определение реальных значений матриц Параметров  L u R

l(1,1)=lo+lv(1)+la

l(1,2)=la

l(2,1)=la

l(2,2)=lo+lv(2)+la

r(1,1)=ro+rv(1)+ra

r(1,2)=ra

r(2,1)=ra

r(2,2)=ro+rv(2)+ra

c

c  вычисление матриц L**(-1),  A=-L**(-1)*R u  B=L**(-1)*E

call obra(l,lob,n,ifl)

if(ifl.eq.0)go to 35

print*,'  ищите ошибку, матрица особенная'

stop

35    e2=100*sin(100*pi*t)

e(1)=e2-edwig

e(2)=-e2-edwig

do 40 i=1,2

b(i)=0

do 40 j=1,2

a(i,j)=0

b(i)=b(i)+lob(i,j)*e(j)

do 40 k=1,2

40                               a(i,j)=a(i,j)-lob(i,k)*r(k,j)

c

c   моделирование выпрямителя на 1 шаг (dt)

75    CALL RKF45(fun,n,tok,t,to,re,ae,iflag,work,iwork)

go to(88,82,83,84,85,86,87,88),iflag

83    iflag=2

re=re*10

go to 75

84        iflag=2

go to 75

85            iflag=2

ae=1.e-6

go to 75

86                iflag=2

re=re*10

go to 75

87                    iflag=2

go to 75

88                          stop111

c интегрирование на один шаг закончилось успешно

82    t=to

to=to+dt

re=1.e-6

ae=0.

c  вывод результатов моделирования

tokdwg=tok(1)+tok(2)

udwig=ra*tokdwg+la*(tokdwg-tokst)/dt+edwig

tokst=tokdwg

nip=nip+1

if(nip.lt.nipp)go to 30

nip=0

call QUT(1,t,udwig)

call QUT(2,t,tokdwg)

call QUT(3,t,tok(2))

call QUT(4,t,tok(1))

if(t.lt.tk) go to 30

end

subroutine fun(t,x,xp)

c подпрограмма вычисления правых частей системы дифференциальных уравнений с

real x(2),xp(2)

common /matrix/a(2,2),b(2)

do 10 i=1,2

xp(i)=b(i)

do 10 j=1,2

c  оператор, необходимый для корректирования вычислительной погрешности

if(x(j).lt.-2.e-4)x(j)=-2.e-4

xp(i)=xp(i)+a(i,j)*x(j)

10      continue

return

end