Разработка алгоритма, составление и отладка программы на ПЭВМ для расчётов режима и потерь электроэнергии в распределительной электрической сети 6-20 кВ

 

Содержание


Введение

. Основные аналитические соотношения

. Блок схемы и алгоритм решения задачи

. Проверка работоспособности алгоритма вручную

. Таблица идентификации переменных

. Формы входной и выходной печати

. Разработка и отладка программы

. Результаты расчёта и их анализ

. Печать графического представления результатов расчёт

. Инструкция для работы с программой

Список использованных источников

Введение


Интенсивное развитие технологических процессов тесно связано с применением электронной техники, преимущественно цифровых вычислительных машин. Поэтому при обучении инженеров-энергетиков особое внимание должно уделяться их компьютерной подготовке. Инженер должен уметь ²общаться² с ЭВМ, работать на ней, знать основы программирования на алгоритмических языках электротехнических задач, уметь использовать ЭВМ в своей будущей профессиональной деятельности.

В учебном процессе знания вычислительной техники и программирования также необходимы, поскольку ряд специальных дисциплин, учебных, курсовых и дипломных проектов, учебно-исследовательских работ выполняются с применением ЭВМ или полностью на них.

Цель курсовой работы: закрепление практических навыков программирования на алгоритмических языках высокого уровня (FORTRAN, PASCAL, C/С++,JAVA или др.) на примере составления и отладки программы для решения электротехнической задачи, ознакомление со специальной терминологией, приобретение навыков написания и оформления программ. Это дает дополнительные возможности успешно применять средства вычислительной техники в процессе обучения в институте и в дальнейшем на практике.

Задание предусматривает разработку алгоритма, проверку его работоспособности, разработку блок-схемы, написание и отладку программы для определения суммарных потерь электроэнергии DWc в схеме разомкнутой электрической сети по известным аналитическим соотношениям. Программа может быть написана на одном из алгоритмических языков - FORTRAN, PASCAL, C/С++,JAVA или любом другом алгоритмическом языке высокого уровня.

1. Основные АНАЛИТИЧЕСКИЕ СООТНОШЕНИЯ


Разомкнутая электрическая сеть представляет собой схему типа дерева (см. рис. 1). В такой схеме отрезки линий, заключенные между двумя номерами, называются участками или линейными ветвями схемы. На рисунке 1 участками линий являются ветви 1-2, 2-3, 2-4, 4-5, 4-6, 6-7, 6-8, 8-9, 8-10, 10-11 (всего 10 ветвей).

Пересекающимися окружностями обозначены понижающие трансформаторы. Они также являются участками (ветвями) схемы, но трансформаторными. Над трансформаторами указаны их номинальные мощности в кВА (25, 40, 63, 100 и 630). На схеме рис. 1 пять трансформаторов. Это участки 3-101, 7-102, 11-103, 5-104 и 9-105. Нумерация участков схемы произвольная, за исключением номера начала схемы, этот номер всегда 1.















Рис. 1 - Схема разомкнутой электрической сети 10 кВ подстанции Северная

Электрические сети предназначены для питания потребителей электрической энергией. Часть электроэнергии при ее передаче по сетям теряется на нагрев проводов линий ?Wл, обмоток ?Wт и сердечников ?Wхх трансформаторов.

В схеме простейшей разомкнутой электрической сети суммарные потери электроэнергии DW складываются из трех составляющих и вычисляются по формуле:


,(1)


где

DWл - суммарные нагрузочные потери электроэнергии на линейных участках схемы, кВт×ч;

DWт - суммарные нагрузочные потери электроэнергии в трансформаторах схемы, кВт×ч;

DWхх - потери электроэнергии в стали трансформаторов, кВт×ч.

Потери электроэнергии на линейных участках определяются по формуле:


,(2)


гдеi - поток активной энергии на i-м линейном участке схемы, кВт×ч;j i - коэффициент реактивной мощности, о.е.;ном - номинальное напряжение сети, кВ;

Т - расчетный период (месяц, квартал, год), ч;ф i - коэффициент формы графика нагрузки, о.е.;- активное сопротивление i-о участка линии, Ом.

Величина tgj i равна отношению WQi к WPi:


,(3)


где- поток реактивной электроэнергии на i-м линейном участке схемы, кВАр;Рi - поток активной электроэнергии на участке, кВт.

Значения WQ i, WPi и tgj i определяются в процессе расчета потокораспределения в схеме.

Квадрат коэффициента формы kф i вычисляется по формуле:


,(4)


гдез i - коэффициент заполнения графика, равный относительному числу часов использования максимальной активной нагрузки Тма i:


.(5)


Значение Тма i определяется по выражениям (6) или (7):


,(6)


- общее число участков сети, подключенных к узлу i;- активная мощность участка подключенного к узлу i;

Тма k - число часов использования максимальной активной нагрузки участка k;


.(7)


Активное сопротивление участка ri равно:


,(8)

i - удельное активное сопротивление участка, Ом/км (берется из справочных данных);

- длина участка в километрах (указана на схеме сети).

Нагрузочные потери электроэнергии на трансформаторных участках схемы DWт определяются аналогичным образом:


(9)

- число трансформаторных участков в схеме;- активное сопротивление трансформатора j, Ом:


,(10)


DРкз j - потери мощности короткого замыкания трансформатора j, кВт (справочные данные);ном j - номинальное напряжение высшей обмотки трансформатора j, кВ (принимается равным номинальному напряжению сети Uном);ном j - номинальная мощность трансформатора j, кВА (указана на схеме).

Постоянные потери электроэнергии в стали трансформаторов DWхх равны:


,(11)

;(12)


DРхх j - потери холостого хода трансформатора j, кВт (справочные данные).

Все искомые величины DW, DWл, DWт, DWхх и сумма (DWл + DWт) должны быть рассчитаны в именованных единицах (кВт) и в процентах по отношению к потоку электроэнергии на головном участке линии Wгу:


,(13)

.(14)


Кроме потерь электрической энергии, в работе необходимо определить потери активной мощности DР:


,(15)

,(16)

,(17)

,(18)

в кВт и(19)


в процентах по отношению к потоку активной мощности на головном участке схемы Ргу:


,,

,,

.


Поток мощности на головном участке линии равен сумме нагрузок всех узлов ?Pј и суммарных потерь активной мощности ?P в схеме.


.(20)


Аналогичным образом определяются потери реактивной мощности DQ:


,(21)

,(22)

,(23)

,(24)


где Ixx j - ток холостого хода трансформатора j, % (справочные данные),


в кВАр и(25)


в процентах:


,,

,,

,.


Значение потока мощности Qгу на головном участке линии равен сумме нагрузок всех узлов ?Qј и суммарных потерь реактивной мощности ?Q в схеме.

В формулах (22), (23):



,(26)

- реактивное сопротивление i-о линейного участка схемы, Ом;i - удельное реактивное сопротивление, Ом/км (берется из справочных данных), а

,(27)

- реактивное сопротивление трансформатора j, Ом;- модуль полного сопротивления трансформатора j, Ом:


;(28)

кз % - напряжение короткого замыкания трансформатора j, % (берется из справочных данных).


Для каждого участка схемы (линейного и трансформаторного) требуется определить потери напряжения DU, кВ:


,(29)


где P, Q, r, и x - это потоки мощности (P, Q) и сопротивления (r, x) как для линейных (Pi, Qi, ri, xi), так и для трансформаторных (Pj, Qj, rj, xj) участков схемы.

Для каждого узла сети (кроме первого) необходимо вычислить напряжение Uj:


,(30)

ип - заданное напряжение источника питания (первый узел схемы).

DUипј - суммарные потери напряжения на пути от источника питания до узла j схемы.

Первый узел служит источником питания для всей схемы сети. Значение Uип принимать равным (1,03 ¸ 1,15)Uном.

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


,(31)

.


2. БлоК СХЕМЫ И АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ


В программе использовались следующие блок-схемы:













Рисунок 2 - Блок-схема программы













Рисунок 3 - Блок-схема чтения данных












Рисунок 4 - Блок-схема расчёта












Рисунок 5 - Блок-схема формирования графического представления результатов расчёта


Алгоритм программы (код программы)

import java.io.*;java.util.*;java.util.regex.*;java.lang.Math;javax.swing.JFrame;javax.swing.JButton;javax.swing.JPanel;java.awt.BorderLayout;java.awt.FlowLayout;javax.swing.*;javax.swing.border.BevelBorder;java.awt.Graphics2D;java.awt.Graphics;java.awt.geom.*;java.awt.event.ActionListener;java.awt.event.ActionEvent;java.text.DecimalFormat;javax.imageio.ImageIO;java.awt.image.BufferedImage;java.awt.Font;class GlavnProg extends JFrame{JPanel buttons;PanelRisov pic;JButton paint,calc;al;GlavnProg(){=new JPanel();.setSize(200,30);.setLayout(new FlowLayout());=new PanelRisov();.setSize(700,465);= new JButton("Risunok");=new JButton("Podschet");.addActionListener(new Risovanie(this));/*new ActionListener(){void actionPerformed(ActionEvent e){=readS();.calculate();.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));(pic,BorderLayout.CENTER);

}

});*/.setEnabled(false);.addActionListener(new ActionListener(){void actionPerformed(ActionEvent e){bi=(BufferedImage)pic.createImage(pic.getWidth(),pic.getHeight());D g2=bi.createGraphics();.paint(g2);.dispose();{.write(bi,"jpeg",new File("ResPict.jpeg"));

}catch(Exception exc){exc.printStackTrace();}

}

});.add(calc);.add(paint);(new BorderLayout());(buttons,BorderLayout.NORTH);.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));(pic,BorderLayout.CENTER);("Trans and Wires");(1000,700);(false);(EXIT_ON_CLOSE);(true);

}static void main(String[] args){l;dd[];rsd=new GlavnProg();

}LineMassive readS(){sc;<String> al=new ArrayList<String>();al1=new LineMassive();nn,nk,Tmatj,Snomj;L,Ksj,Cosfij;wire[]=new double[5],trans[]=new double[10];wireName="";wireQ=true;{raf=new RandomAccessFile("ishod.txt","r");s="",d;((s=raf.readLine())!=null){=new String(s.getBytes("ISO-8859-1"),"Cp1251");.setOut(new PrintStream(System.out, true, "cp866"));.add(d);

}.close();

}catch(Exception e){.printStackTrace();

}ii;temp,s;(int i=7;i<al.size()-1;i++){=0;nk=0;Snomj=0;Tmatj=0;=.0;Ksj=.0;Cosfij=.0;=null;=al.get(i);=new Scanner(s).useDelimiter(":");=sc.next();=temp.trim();=Integer.valueOf(temp);=sc.next();=temp.trim();=Integer.valueOf(temp);=sc.next();=temp.trim();(temp.lastIndexOf("-")!=0){=temp;=readWire(wireName);=true;

}=sc.next();=temp.trim();(temp.lastIndexOf("-")<0){=Double.valueOf(temp);

}=sc.next();=temp.trim();(temp.lastIndexOf("-")<0){=Integer.valueOf(temp);=readTrans(Integer.toString(Snomj));=false;

}=sc.next();=temp.trim();(temp.lastIndexOf("-")<0){=Double.valueOf(temp);

}=sc.next();=temp.trim();(temp.lastIndexOf("-")<0){=Integer.valueOf(temp);

}=sc.next();=temp.trim();(temp.lastIndexOf("-")<0){=Double.valueOf(temp);

}(wireQ){.add(new Line(nn,nk,L,Ksj,Tmatj,Cosfij,wireName).setWire(wire));

} else {.add(new Line(nn,nk,L,Ksj,Tmatj,Cosfij,wireName).setTrans(trans));

}

}al1;

}double[] readWire(String wire){[] date=new double[5];sc;dd;c=0;{raf=new RandomAccessFile("wires.txt","r");s="",d,temp;((s=raf.readLine())!=null){(s.endsWith("-----")||c<5) {c++; continue;}=new String(s.getBytes("ISO-8859-1"),"Cp1251");(d.indexOf(wire)>0){i=0;=new Scanner(d).useDelimiter(":");.next();(sc.hasNext())[i++]=Double.valueOf(sc.next().trim());[0]=date[0]*1000.0;

}

}.close();

}catch(Exception e){.printStackTrace();

}date;

}double[] readTrans(String snom){[] date=new double[10];sc;dd;{raf=new RandomAccessFile("trans.txt","r");s="",d;((s=raf.readLine())!=null){=new String(s.getBytes("ISO-8859-1"),"Cp1251");(d.indexOf(":"+snom)>0){i=0;=new Scanner(d).useDelimiter(":");.next();(sc.hasNext()){[i++]=Double.valueOf(sc.next().trim());(i==1) date[i-1]=date[i-1]*1000.0;if(i==5) date[i-1]=date[i-1]*1000.0;if(i==7) date[i-1]=date[i-1]*1000.0;if(i==10) date[i-1]=date[i-1]*1000.0;

};

}

}

}catch(Exception e){.printStackTrace();

}date;


}Risovanie implements ActionListener{rsd;(GlavnProg rsd){this.rsd=rsd;}void actionPerformed(ActionEvent e){=readS();.calculate();.setPic();D g2=(Graphics2D)pic.getGraphics();.mao=al.mao;.setEnabled(true);{df=new DecimalFormat("0.00"),df2=new DecimalFormat("0.000");wrRes=new RandomAccessFile("result.txt","rw");res= "---------------------------------------------------------------------\n"+

"HOMEP ПOTOK MOЩHOCTИ BETBИ: ПOTEPИ MOЩHOCTИ: ПOTEPИ: HAПPЯЖ.:\n"+

"--------------------------------:-----------------:::\n"+

"HAЧAЛA:KOHЦA:AKTИBHЫЙ:PEAKTИBH.: AKTИBH.: PEAKT.: HAПPЯЖ.: УЗЛOB:\n"+

":::--------:----------:--------:--------:--------:---------\n"+

":BETBИ:BETBИ: KBT: KBAP: KBT: KBAP: KB: KB:\n"+

"---------------------------------------------------------------------\n";

//res=new String(res.getBytes("ISO-8859-1"),"Cp1251");.writeChars(res);(int i=0;i<al.size();i++){=":"+formingString(""+al.get(i).nn,5)+":"+formingString(""+al.get(i).nk,5)+":"+(df.format(al.get(i).Pj/1000),8)+":"+formingString(df.format(al.get(i).Qj/1000),10)+":"+(df.format(al.get(i).retdPo()/1000),8)+":"+formingString(df.format(al.get(i).retdQo()/1000),8)+":"+(df2.format(al.get(i).dUj/1000),8)+":"+formingString(df2.format(al.get(i).Uuzl/1000),8)+":\n";.writeChars(res);

}.close();

}catch(Exception ex){ex.printStackTrace();}

}String formingString(String s,int n){len=s.length();(int i=0;i<n-len;i++)+=" ";s;

}

}PanelRisov extends JPanel{int d,dt,w,x,y;///w - width of the line,d-diameter of the dot,dt - trans[] mao;boolean pic=false;c1,scale=1,scl=1;df=new DecimalFormat("0.00");void paintComponent(Graphics g){(pic){ip=0,it,countT=0,countL=0,tmao[],lmao[];.paintComponent(g);D g2=(Graphics2D)g;.setFont(new Font("Serif",Font.PLAIN,10));(g2,x,y);.get(ip).x=x;.get(ip).y=y;(g2,0);

}

}void drawPic(Graphics2D g2, int ip){x1=al.get(ip).x,y1=al.get(ip).y,count=0,countL=0,countT=0,grad=30,dgrad,templ;<Integer> lines=new ArrayList<Integer>(),tr=new ArrayList<Integer>();(int i=1;i<mao.length;i++){(mao[i]==ip) {++;(al.get(i).wireQ) {countL++; lines.add(i); }(!al.get(i).wireQ){countT++; tr.add(i); }

}

}[] vert=new boolean[count];(countL<4&&countL!=0){{{=al.get(ip).x;=al.get(ip).y;(g2,x,y,countL,lines);-;.get(lines.get(countL)).x=this.x;.get(lines.get(countL)).y=this.y;.drawString(""+al.get(lines.get(countL)).nk,this.x+15,this.y-10);.drawString(df.format(al.get(lines.get(countL)).Pj/1000)+"+j"+df.format(al.get(lines.get(countL)).Qj/1000),this.x+15,this.y-w+30);=(int)lines.get(countL).floatValue();(g2,templ);

}catch(Exception e){e.printStackTrace();System.exit(0);}

}while(countL!=0);

//return;

}else if(countL>=4){=300/(countL-1);{=al.get(ip).x;=al.get(ip).y;(g2,x,y,grad,lines);+=dgrad;-;.get(lines.get(countL)).x=this.x;.get(lines.get(countL)).y=this.y;(g2,(int)lines.get(countL).floatValue());

}while(countL!=0);

}(countT!=0&&countT>2){nap=1,dg=0;=al.get(ip).x;=al.get(ip).y;(g2,x,y,countT,tr);(grad<180) nap=1;(grad==180) nap=3;(grad>180) nap=2;-;

}else if(countT<3&&countT!=0){=tr.size()-1;{{=al.get(ip).x;=al.get(ip).y;(g2,this.x,this.y,countT,tr);-;=(int)tr.get(countT).floatValue();

}catch(Exception e){e.printStackTrace();System.exit(0);}

}while(countT!=0);

};

}void setPic(){pic=true; repaint();}void paint(Graphics g){.setFont(new Font("Serif",Font.PLAIN,5));=8;dt=24;w=70;x=150;y=30;scale=0;scl=1;.paint(g);

}void drawT(Graphics2D g2,int x,int y){i=10;.drawLine(x,y,x+i,y);.drawLine(x+i/2,y,x+i/2,y+w);.fill(new Ellipse2D.Double(x,y+w,d,d));.drawString(""+al.get(0).nn,x+i+5,y-3);.drawString(df.format(al.get(0).Pj/1000)+"+j"+df.format(al.get(0).Qj/1000),x+i+5,y+w/2-3);.drawString(""+al.get(0).nk,x+i/2+5,y+w-3);.y+=w+d/2;.x+=i/2;

}void drawTrans(Graphics2D g2,int x,int y,int naprav,ArrayList<Integer> tr){i=30,di=20,c=0;(naprav==3){.drawLine(x,y,x,y+i);.draw(new Ellipse2D.Double(x-dt/2,y+i,dt,dt));.draw(new Ellipse2D.Double(x-dt/2,y+i+di,dt,dt));.drawLine(x,y+i+di+dt,x,y+di);.drawLine(x,y+i+2*di+dt-10,x,y+i+2*di+dt+20);.drawString(df.format(al.get(c).Pj/1000)+"+j"+df.format(al.get(c).Qj/1000),x+i+5,y+w/2-3);.drawString(""+al.get(c).nk,x+i/2+5,y+w-3);

}else if(naprav==2){.drawLine(x,y,x+i,y);.draw(new Ellipse2D.Double(x+i,y-dt/2,dt,dt));.draw(new Ellipse2D.Double(x+i+di,y-dt/2,dt,dt));.drawLine(x+i+di+dt,y,x+i+2*di+dt,y);.drawLine(x+i+2*di+dt,y-10,x+i+2*di+dt,y+10);.drawString(df.format(al.get(tr.get(c1)).Pj/1000)+"+j"+df.format(al.get(tr.get(c1)).Qj/1000),x+(i+2*di-30)/2,y-dt+5);.drawString(""+al.get(tr.get(c1)).nk,x+i+2*di+dt+5,y);--;;

}else if(naprav==1){.drawLine(x,y,x-i,y);.draw(new Ellipse2D.Double(x-i-dt,y-dt/2,dt,dt));.draw(new Ellipse2D.Double(x-i-di-dt,y-dt/2,dt,dt));.drawLine(x-(i+di+dt),y,x-(i+2*di+dt),y);.drawLine(x-(i+2*di+dt),y-10,x-(i+2*di+dt),y+10);.drawString(df.format(al.get(tr.get(c1)).Pj/1000)+"+j"+df.format(al.get(tr.get(c1)).Qj/1000),x-(i+2*di+dt+80)/2,y-dt+5);.drawString(""+al.get(tr.get(c1)).nk,x-(i+2*di+dt+25),y);--;;

} else{=tr.size()-1;xn,yn,nap1=naprav/2,chet=naprav%2,gr,nap2;=nap1+chet;=nap1%2;=nap1/2;=90/(nap1+1);{=(int)((double)(w-30)*Math.cos(gr));yn=(int)((double)(w-30)*Math.sin(gr));.drawLine(x,y,x-xn,y-yn);(g2,x-xn,y-yn,1,tr);.drawLine(x,y,x-xn,y+yn);(g2,x-xn,y+yn,1,tr);--;+=gr;

}while(nap1!=0);(chet!=0) drawTrans(g2,x,y,1,tr);=nap2%2;=nap2/2;=90/(nap2+1);{=(int)((double)(w-30)*Math.cos(gr));yn=(int)((double)(w-30)*Math.sin(gr));.drawLine(x,y,x+3*xn,y-yn);(g2,x+3*xn,y-yn,2,tr);.drawLine(x,y,x+3*xn,y+yn);(g2,x+3*xn,y+yn,2,tr);--;+=gr;

}while(nap2!=0);(chet!=0) drawTrans(g2,x,y,2,tr);

}

}void drawL(Graphics2D g2,int x,int y,int naprav,ArrayList<Integer> ln){(naprav==1){.drawLine(x,y,x,y+(int)1.7*w);.fill(new Ellipse2D.Double(x-d/2,y+(int)1.7*w,d,d));.y+=(int)1.7*w+d/2;

}else if(naprav==2){.drawLine(x,y,x,y+20);.drawLine(x,y+20,x+2*w+scale,y+20);.drawLine(x+2*w+scale,y+20,x+2*w+scale,y+w-20+20);.fill(new Ellipse2D.Double(x+2*w+scale-d/2,y+w-d/2-20+20,d,d));.x+=2*w+scale;//+d/2;.y+=w-20+20;+=50*scl;++;

}else if(naprav==3){.drawLine(x,y,x-w,y);.fill(new Ellipse2D.Double(x-w,y-d/2,d,d));.x-=w+d/2;

}else {xn,yn,nap1=naprav/2,chet=naprav%2,gr,nap2;=nap1+chet;=nap1%2;=nap1/2;=90/(nap1+1);{=(int)((double)(w-20)*Math.cos(gr));yn=(int)((double)(w-20)*Math.sin(gr));.drawLine(x,y,x-xn,y-yn);.drawLine(x,y,x-xn,y+yn);--;+=gr;

}while(nap1!=0);(chet!=0) g2.drawLine(x,y,x-w,y);=nap2%2;=nap2/2;=90/(nap2+1);{=(int)((double)(w-20)*Math.cos(gr));yn=(int)((double)(w-20)*Math.sin(gr));.drawLine(x,y,x+xn,y-yn);.drawLine(x,y,x+xn,y+yn);--;+=gr;

}while(nap2!=0);(chet!=0) g2.drawLine(x,y,x+w,y);;

}

}

}

}Line{int nn,nk,Tmatj,x,y;double L,Ksj,Snomj,Cosfij;double Unom,R0,X0,Idop,Ic;////wiredouble Unomt,NN,Uks,dPks,Ixx,dPxx,Rtr,Xtr,dQxx;/////transString wireName,transName;double Pj,Qj,dUj,Uuzl;double Sj,Wpj,Wqj,Tgfij,Kfj2,rj,xj;double dWlj,dWtj,dPlj,dPtj,dWxxj,dQlj,dQtj;boolean wireQ;(int n,int k,double l,double K,int T,double Cos,String wireName){.nn=n;this.nk=k;this.L=l;this.Ksj=K;this.Tmatj=T;.Cosfij=Cos;this.wireName=wireName;

}Line setWire(double[] wire){i=0;=wire[i];=wire[++i];=wire[++i];=wire[++i];=wire[++i];=true;this;

}Line setTrans(double[] trans){i=0;=trans[i];=trans[++i];=trans[++i];=trans[++i];=trans[++i];=trans[++i];=trans[++i];=trans[++i];=trans[++i];=trans[++i];=false;this;

}void PQTrans(){(!wireQ){=(Math.sqrt(1-Cosfij*Cosfij))/Cosfij;=Snomj*Ksj;=Sj*Cosfij;=Sj*(Math.sqrt(1-Cosfij*Cosfij));

}

}void calculate(){=(Math.sqrt(1-Cosfij*Cosfij))/Cosfij;=Tmatj*Pj;=Wpj*((Math.sqrt(1-Cosfij*Cosfij))/Cosfij);///!!!!!!!!!!!!!!tg

/////13-14=(0.16/Ksj+0.86)*(0.16/Ksj+0.86);(R0!=.0){=L*R0;=(Wpj*Wpj*(1+Tgfij*Tgfij)*Kfj2*rj)/(Unom*Unom*8760);

}else

////////16

{//if(dPks!=.0){=dPks*10000000/(Snomj*Snomj);=(Wpj*Wpj*(1+Tgfij*Tgfij)*Kfj2*rj)/(Unom*Unom*8760);

}

///////18(!wireQ)=dPxx*Tmatj;

///////////21(wireQ){=L*R0;=(Pj*Pj+Qj*Qj)*rj/10000000;

}else

{=dPks*10000000/(Snomj*Snomj);=(Pj*Pj+Qj*Qj)*rj/10000000;

}(wireQ){=X0*L;=(Pj*Pj+Qj*Qj)*xj/10000000;

}else{=Xtr;=(Pj*Pj+Qj*Qj)*xj/10000000;

}(wireQ){=L*R0;=X0*L;

}else{=dPks*10000000/(Snomj*Snomj);=Xtr*L;

}=(Pj*rj+Qj*xj)/10000;

}double retdPo(){(wireQ){dPlj;

}else {return dPtj;}

}double retdWo(){(wireQ){ return dWlj;}else {return dWtj;}

}double retdWxxj(){dWxxj;

}double retdPxx(){dPxx;

}double retdQxx(){return dQxx;}double retdQo(){(wireQ){return dQlj;} else{ return dQtj;}

}double retPj(){return Pj;}double retQj(){return Qj;}

}LineMassive{ArrayList<Line> al=null;double dWlo,dWto,dWxxo,dW,dPlo,dPto,dPxxo,dP,dPlto,Pgu,sPj,sQj,dQlo,dQto,dQxxo,dQ,dQlt,Qgu;double dPp,dPtop,dPltop,dPlop,dPxxop,dQp,dQtop,dQltp,dQlop,dQxxop;n1[],n2[],mao[];count;LineMassive(){=new ArrayList<Line>();

}int size(){al.size();

}Line get(int i){al.get(i);

}void add(Line l){.add(l);

}void calcPQ(){(int i=0;i<al.size();i++){.get(i).PQTrans();

}

}void calcdWo(){(int i=0;i<al.size();i++)(al.get(i).wireQ){ +=al.get(i).retdWo();}{ dWto+=al.get(i).retdWo();}

}void calcWxx(){(int i=0;i<al.size();i++)(!al.get(i).wireQ) dWxxo+=al.get(i).retdWxxj();

}void calcdPo(){(int i=0;i<al.size();i++)(al.get(i).wireQ){ +=al.get(i).retdPo();}{ dPto+=al.get(i).retdPo();}

}void calcPxx(){(int i=0;i<al.size();i++)(!al.get(i).wireQ) dPxxo+=al.get(i).retdPxx();

}void calcPgu(){(int i=0;i<al.size();i++){+=al.get(i).retPj();+=al.get(i).retQj();

}

}void calcdQo(){(int i=0;i<al.size();i++)(al.get(i).wireQ){ +=al.get(i).retdQo();}{ dQto+=al.get(i).retdQo();}

}void calcQxx(){(int i=0;i<al.size();i++)(!al.get(i).wireQ) dQxxo+=al.get(i).retdQxx();

}void calculate(){();();();(int i=0;i<al.size();i++).get(i).calculate();();();();=dWlo+dWto+dWxxo;();();=dPlo+dPto+dPxxo;=dPlo+dPto;=sPj+dP;=dP*100/Pgu;=dPto*100/Pgu;=dPlto*100/Pgu;=dPlo*100/Pgu;=dPxxo*100/Pgu;();();=dQlo+dQto+dQxxo;=dQlo+dQto;=sQj+dQ;=dQ*100/Qgu;=dQto*100/Qgu;=dQlt*100/Qgu;=dQlo*100/Qgu;=dQxxo*100/Qgu;

}void VAO(){=new int[al.size()];=new int[al.size()];=new int[al.size()];(int i=0;i<al.size();i++){[i]=al.get(i).nn;[i]=al.get(i).nk;

}[0]=0;(int i=0;i<al.size();i++)(n1[i]!=1)(int j=0;j<al.size();j++)(n1[i]==n2[j])[i]=j;

}void PTR(){j;p,q;(int i=0;i<al.size();i++){(al.get(i).wireQ);=i;=al.get(j).Pj;=al.get(j).Qj;{++;=mao[j];.get(j).Pj+=p;.get(j).Qj+=q;

}while(j!=0);

}

}void UUzl(){j;uOb=10500;(int i=0;i<al.size();i++){=mao[i];=al.get(j).dUj;.get(i).Uuzl=uOb;

}

}

}


3. Проверка работоспособности алгоритма вручную


Для проверки программы были выбраны участки 2-4 и 4-113. Для трансформатора 4-113 определяем полную нагрузку в кВА:

кВА - полная нагрузка трансформатора;

кВт - активная нагрузка трансформатора;

кВар - реактивная нагрузка трансформатора;

Вт - активные потери трансформатора;

кВар - реактивные потери трансформатора;

Р2-4=Р4-6+Р4-5+Р4-113=24,00+3,60+33,60=61,20 кВт - активный поток мощности через линию;-4=Q4-6+Q4-5+Q4-113=18,00+1,74+34,28=54,02 кВт - реактивный поток мощности через линию;

- потери активной энергии;

- потери реактивной энергии;

Подводя итог можно сказать, что параметры, рассчитанные вручную, совпадают с параметрами в файле результатов. Это позволяет судить о правильности алгоритма программы.

программа блок схема алгоритм

4. Таблица идентификации переменных


Обозначения переменных представлены в таблице:


ПеременнаяОписаниеbuttonsПеременная типа JPanel, поле для размещения кнопок picПеременная типа JPanel, поля для рисунка схемыpaint,calcПеременные типа JButton, кнопкиalПеременная типа LineArray, для хранения информации об участкахnn,nk,Tmatj,Snomj;Переменные типа int, для записи данных об участкеL,Ksj,Cosfij; wire[], trans[]Переменные типа double, для данных об участкеwireQПеременная типа boolean, если true, значит участок является проводом, в противном случае - трансформатором.rafПеременная типа RandomAccessFile, для чтения/записи файлаtemp,sПеременная типа String, для хранения прочитанных из файла строкdouble[] dateмассив для прочитанных из файла значенийScanner scэкземпляр класса Scanner для разбиения строки и выбора информации между ":"int c=0для подсчета и корректного форматирования прочитанных строкString s="",d,tempдля хранения прочитанных из файла строкint i=0для перебора массива date[]RSDate rsdссылка на экземпляр основного классаDecimalFormat df,df2экземпляры класса для форматирования чиселRandomAccessFile wrResДля чтения данных из файлаint lenхранится длина принимаемой строки sint d,dt,w,x,yдиаметр точки, диаметр окружности трансформатора, Длина рисуемой линии, координаты начала отрисовкиboolean pic=falseфлаг для разрешения отрисовки схемыint c1,scale=1,scl=1переменные для масштабирования длины линий при отрисовке(часть не используется)DecimalFormat dfдля форматирования чиселGraphics2D g2ссылка на графический контекст с помощью которого происходит отрисовкаint x1,y1,count=0,countL=0,countT=0 ,grad=30,dgrad,templх* и у* - координаты для отрисовки count* - кол-во линий\трансф, *grad - угол поворота при отрисовке наклонных линийArrayList<Integer> lines,trколлекции для хранения информации о линиях\тр-рахint nn,nk,Tmatj,Переменные для хранения информации об участкеint x,yПеременные для хранения координат конца участкаdouble L,Ksj,Snomj,Cosfij, Unom,R0,X0,Idop,Ic, Unomt,NN,Uks,dPks,Ixx,dPxx,Rtr, Xtr,dQxx, Pj,Qj,dUj,Uuzl, Sj,Wpj,Wqj,Tgfij,Kfj2,rj,xj, dWlj,dWtj,dPlj,dPtj, dWxxj,dQlj,dQtjПеременные для хранения данных об участке(как прочитанной из файла, так и рассчитанной)String wireName,transNameПеременная для хранения имени линии\трансаboolean wireQЕсли true- значит участок линия, если false - значит трансформаторArrayList<Line> alСсылка на объект для хранения экземпляров классов участков Linedouble dWlo,dWto,dWxxo,dW, dPlo,dPto,dPxxo,dP,dPlto,Pgu, sPj,sQj,dQlo,dQto,dQxxo, dQ,dQlt,Qgu, dPp,dPtop,dPltop, dPlop,dPxxop,dQp,dQtop, dQltp,dQlop,dQxxopПеременные для рассчитанных данныхint n1[],n2[],mao[]Массивы для хранения номеров узлов начала линии, конца линии, для хранения связей между участками

5. Формы входной и выходной печати


Исходные данные находятся в папке программы в файле dannye.txt:

-------------------------------------------------------------------------------------

:Nн:Nк:Марка провода:L:Sномj:Кзj:Тмаj:cosфиj:Тип нагрузки:

-------------------------------------------------------------------------------------

:-:-:-:км:кВА:о.е.:ч:о.е.:-:

-------------------------------------------------------------------------------------

:1:2:3:4:5:6:7:8:9:

-------------------------------------------------------------------------------------

:1:2:АС-50:0.6:-:-:-:-:-:

:2:4:АС-50:4.4:-:-:-:-:-:

:4:6:А-50:2.1:-:-:-:-:-:

:2:3:АС-50:0.4:-:-:-:-:-:

:4:5:АС-25:0.8:-:-:-:-:-:

:6:7:АС-35:0.2:-:-:-:-:-:

:3:175:-:-:160:0.25:2350:0.9:комун.-бытовая:

:5:112:-:-:25:0.2:1600:0.9:комун.-бытовая:

:4:113:-:-:160:0.3:2700:0.7:производственная:

:7:111:-:-:100:0.3:2800:0.8:смешанная:

Данные представлены в виде таблицы,

где Nн - номер начала участка;к - номер конца участка;- длинна участка;номj - номинальная мощность трансформатора;

Кзj - коэффициент заполнения графика;

Тмаj - число часов использования максимума нагрузки в год;фиj - коэффициент мощности в максимум нагрузки;

Тип нагрузки - характер нагрузки на участке.

Форма выходной печати представлена в пункте 8 пояснительной записки. В ней представлена информация о потоках активной и реактивной мощности, потерях активной и реактивной мощности, потерях напряжения на всех участках сети и напряжении на конце участка. Также программа рассчитывает множество других параметров, которые можно при необходимости внести в результирующую таблицу. Основное количество параметров взято из пункта 2 пояснительной записки «Основные аналитические соотношения».


6. Разработка и отладка программы


Выполнение курсовой работы проводилось в следующей последовательности:

Изучил задание на курсовую работу, разобрался со схемой разомкнутой электрической сети и перечертил ее.

Определил исходные данные, промежуточные и конечные результаты расчета.

Разобрался с основными аналитическими соотношениями, проверить работоспособность алгоритма вручную.

Разработал формы входной и выходной печати.

Написал блок ввода и печати исходной информации.

Разработал блок-схему всей программы. Наибольшее внимание уделил блокам расчета потокораспределения в схеме сети и определения напряжений в узлах схемы.

Написал текст программы.

Отладил текст программы, проверил ее работоспособность, получил распечатки текста программы, файлов исходных данных и результатов расчета.

Оформил расчетно-пояснительную записку.


7. Результаты расчёта и их анализ


Результаты расчёта представлены в файле result.txt:

--------------------------------------------------------------------ПOTOK MOЩHOCTИ BETBИ: ПOTEPИ MOЩHOCTИ: ПOTEPИ: HAПPЯЖ.:

-------------------------------:-----------------:::ЧAЛA:KOHЦA:AKTИBHЫЙ:PEAKTИBH.: AKTИBH.: PEAKT.: HAПPЯЖ.: УЗЛOB:

:::--------:----------:--------:--------:--------:---------

:BETBИ:BETBИ: KBT: KBAP: KBT: KBAP: KB: KB:

--------------------------------------------------------------------

:1:2:97,20:71,46:0,53:0,31:0,005:10,495:

:2:4:61,20:54,02:1,77:1,04:0,025:10,490:

:4:6:24,00:18,00:0,11:0,07:0,004:10,465:

:2:3:36,00:17,44:0,04:0,02:0,001:10,460:

:4:5:3,60:1,74:0,00:0,00:0,000:10,436:

:6:7:24,00:18,00:0,01:0,01:0,001:10,431:

:3:175:36,00:17,44:0,19:4,72:0,004:10,430:

:5:112:3,60:1,74:0,02:0,41:0,005:10,430:

:4:113:33,60:34,28:0,28:6,80:0,004:10,405:

:7:111:24,00:18,00:0,22:4,91:0,006:10,405:

Наибольшие потери мощности наблюдаются на участках 2-4 и 4-113. Для трансформатора это обусловлено большим числом использования максимальной мощности, а для линии, в свою очередь, потери объясняются протяжённостью линии. Для уменьшения потерь на линии можно применить кабель большего сечения.

8. печать графического представления результатов расчёта


Для печати графического представления результатов расчёта необходимо открыть файл Risunok.jpeg любым известным графическим редактором и отправить документ на печать. На схеме указаны номера узлов и потоки активной и реактивной мощности.


9. инструкция для работы с программой


Запустив файл start.bat открывается окно программы. Вверху окна расположены две кнопки: raschet(вычисления) и shoran_ris(рисование). Нажав левой кнопкой мыши по кнопке raschet программа производит необходимые вычисления, основываясь на файл исходных данных(dannye.txt) и сохраняет результаты в файле Result.txt, при этом программа чертит схему разомкнутой электрической сети. Нажав кнопку shoran_ris программа сохраняет полученную схему в файле Risunok.jpeg.

Список использованных источников


1.Фурсанов М.И. Методология и практика расчетов потерь электроэнергии в электрических сетях энергосистем. - Мн.: Тэхналогiя, 2000. - 247 с.

2.Фурсанов М.И. Алгоритмы и программы для оценки режимов, нормирования и снижения технологического расхода энергии в разомкнутых электрических сетях. Учебно-метод. пособие. Мн.: БГПА, 1995. - 178 с.

.Вычислительная техника в инженерных и экономических расчетах. / Под ред А.В. Петрова - М.: Высш. школа, 1984.

.Дембовский Л. М., Ковальков А. Т. Основы диалоговых режимов работы на малых ЭВМ: Учеб. Пособие, Мн.: БПИ, 1988.

.Брич З.С. и др. Фортран 77 для ПЭВМ ЕС: Справ. изд. / З.С. Брич, Д.В. Капилевич, Н.А. Клецкова - М.: Финансы и статистика, 1991. - 288 с.

.Соловьев П.В. Fortran для персонального компьютера. - М.: Арист, 1991 г. - 223 с.

.Вальвачев А.H., Крисевич В.С. Программирование на языке ПАСКАЛЬ для персональных ЭВМ ЕС; справочное пособие. - Мн.: Выш. шк., 1989.

.Офицеров Д.В., Старых В.А. Программирование в интегрированной среде Турбо-Паскаль: Справ. пособие. - Мн.: Беларусь, 1992. - 240 с.

.Офицеров Д.В., Долгий А.В., Старых В.А. Программирование на персональных ЭВМ. / Под. ред. Д.В. Офицерова, М.: Высш. школа, 1993. - 248 с.

.Климов Ю.С., Касаткин А.И., Мороз С.М. Программирование в среде Turbo Pascal 6.0: Справ. пособие. - Мн.: Выш. шк., 1992. - 158 с.

.Шилд Г. Программирование на Borland C++ для профессионалов / Перев. с англ. А.И. Панасюка, А.Н. Филимонова; Худож. обл. М. В. Драко. - Мн.: ООО «Попурри», 1998. - 800 с.

.Страуструп Б. Язык программирования С++, спец. изд. / Пер. с англ. - М.; СПб.: «Издательство БИНОМ» - «Невский Диалект», 2002 г. - 1099 с.

.Мейн М., Савитч У. Структуры данных и другие объекты в С++, 2-е изд.: Пер. с англ. - М.: Издательский дом «Вильямс», 2002. - 832 с.

.Блок В. М. Электрические системы и сети: Учеб. пособие для электроэнергет. спец. вузов. - М.: Высш. школа, 1986.

.Будзко И.А., Зуль Н.М. Электроснабжение сельского хозяйства. - М.: Агропромиздат, 1990.

.Справочник по математике для инженеров и учащихся втузов. Бронштейн И.Н., Семендяев К.А. - М.: Наука. Главная редакция физико-математической литературы, 1981. - 718 с.



Содержание Введение . Основные аналитические соотношения . Блок схемы и алгоритм решения задачи . Проверка работоспособности алгоритма вручную

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ