Разработка алгоритма и программы расчета электрической цепи (напряжение цепи - 640 В, частота - 111 Гц), страница 7

Блок 4

Вывод графиков действующих значений Ud=F(Q) и Id=F(Q)

 


2.5 Распечатка головного модуля программы, подпрограммы вычисления интеграла INTEGRAL и подпрограммы построения графиков GRAFIK

!    ================================================

!    |Курсовой проект по дисциплине "ИНФОРМАТИКА"               |

!    |Программу для расчета электрической цепи                               |

!    |составил студент группы 106117 Минюк А.Г.                             |

!    |Руководитель проекта: к.т.н., доцент Булат В.А.                         |

!    ================================================

!    описание переменных и массивов

complex z1,zbc,z2,z3,zcd,zp,z,z4,z5

integer l,k,b

real r2,r3,r4,r5,l1,l3,c1,c2,c4,umad,f,q1,q2,w

real xl1,xc1,xc2,xl3,xc4

real z1d,z1m,zbcd,zbcm,z2d,z2m,z3d,z3m,zcdd,zcdm,

*zpd,zpm,zd,zm,z4d,z4m,z5d,z5m

real zz1,zzbc,zz2,zz3,zzcd,zzp,zz,zz4,zz5

real im1,imbc,im2,im3,imcd,imad,uml3,umc2

real id1,idbc,id2,id3,idcd,idad,udad,udc2,udl3

real fiad,fi1,fi2,fibc,fi3,ficd

real mi1,mibc,mi2,mi3,micd,miad,muad,muc2,mul3                                                          

real iidl3,iidc2,uudc2,uudl3,iidad

dimension mi1(200),mibc(200),mi2(200),mi3(200),micd(200),

*miad(200),muad(200),muc2(200),mul3(200),uudad(200),uumad(200)

dimension iidc2(200),iidl3(200),uudc2(200),uudl3(200),iid2(200)

!    считывание исходных данных из файла proekt.in

open(unit=1,file='proekt.in',status='old')

read(1,*)r2,r3,r4,r5,l1,l3,c1,c2,c4,umad,f,q1,q2

close(unit=1)

k=0

data b,pi/0,3.14159/

1     w=2.*pi*f

t=1./f

!    расчет сопротивлений реактивных элементов цепи

xl1=w*l1*1.e-3

xl3=w*l3*1.e-3

xc1=1./(w*c1*1.e-6)

xc2=1./(w*c2*1.e-6)

xc4=1./(w*c4*1.e-6)

!    поочередное нахождение полного сопротивления цепи

z1=cmplx(r2,xl1)

zbc=cmplx(r3,-xc1)

z2=cmplx(r4,-xc2)

z3=cmplx(r5,0.)

z4=cmplx(0.,xl3)

z5=cmplx(0.,-xc4)

zcd=z4+z5

zp=(z1*zbc*z2*z3)/(zbc*z2*z3+z1*z2*z3+z1*zbc*z3+z1*zbc*z2)

z=zp+zcd

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

z1d=real(z1)

z1m=aimag(z1)

zbcd=real(zbc)

zbcm=aimag(zbc)

z2d=real(z2)

z2m=aimag(z2)

z3d=real(z3)

z3m=aimag(z3)

z4d=real(z4)

z4m=aimag(z4)

z5d=real(z5)

z5m=aimag(z5)

zcdd=real(zcd)

zcdm=aimag(zcd)

zpd=real(zp)

zpm=aimag(zp)

zd=real(z)

zm=aimag(z)

!          рассчитаем сдвиг фаз между током и напряжением

fiad=atan(zm/zd)

fi1=atan(z1m/z1d)

fibc=atan(zbcm/zbcd)

fi2=atan(z2m/z2d)

fi3=0

ficd=atan(zcdm/zcdd)

!    сопротивление отдельных участков цепи

zz1=sqrt(z1d**2+z1m**2)

zzbc=sqrt(zbcd**2+zbcm**2)

zz2=sqrt(z2d**2+z2m**2)

zz3=sqrt(z3d**2+z3m**2)

zz4=sqrt(z4d**2+z4m**2)

zz5=sqrt(z5d**2+z5m**2)

zzcd=sqrt(zcdd**2+zcdm**2)

zzp=sqrt(zpd**2+zpm**2)

zz=sqrt(zd**2+zm**2)

!    расчет и вывод амплитудных и действующих значений токов

!    в ветвях схемы

imad=umad/zz

imcd=imad

umcd=imcd*zzcd

ump=imad*zzp

im1=ump/zz1

imbc=ump/zzbc

im2=ump/zz2

im3=ump/zz3

uml3=imad*zz4

umc2=im2*zz5

data tt,dt/0,0/

do 2 l=1,60

t=1./f

dt=t/60.

tt=tt+dt

miad(l)=imad*sin(w*tt+fiad)

mi1(l)=im1*sin(w*tt+fi1)

mibc(l)=imbc*sin(w*tt+fibc)

mi2(l)=im2*sin(w*tt+fi2)

mi3(l)=im3*sin(w*tt+fi3)

2          micd(l)=imcd*sin(w*tt+ficd)

call integral(miad,t,60,td)

idad=td

call integral(mi1,t,60,td)

id1=td

call integral(mibc,t,60,td)

idbc=td

call integral(mi2,t,60,td)

id2=td

call integral(mi3,t,60,td)

id3=td

call integral(micd,t,60,td)

idcd=td

if(k.ne.0)go to 12           

open(unit=1,file='sas1.res')

write(1,3)

3         format(///,'  программу составил студент группы 106117  минюк а.г.

*. ',////,' вывод исходных данных             ' )

write(1,4)

4         format(//,2x,71('*'))

write(1,*)' i  r2  i  r3 i r4 i r5 i   c1 i  c2 i  c4  i l1 i  l3 i uad

*i  f i q1 i  q2 i'  

write(1,5)

5        format(2x,71('*'))

write(1,*)' i  îì  i  îì i îì i îì  i  ìêô i ìêô i  ìêô i ìãí i ìãí i  b 

*i ãö i b i  b i'

write(1,6)

6        format(2x,71('*'))

write(1,*)' i 15   i 500 i 85 i 500 i 8000 i 400 i 530  i  7  i 17 

*i 111 i 640 i 990 i'

write(1,7)

7        format(2x,71('*'))