Разработка программного комплекса для расчёта напряжения и потерь мощности на тяговой подстанции постоянного тока

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 05.03.2009
Размер файла 511,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

3

Министерство Транспорта Российской Федерации

Кафедра ”ЭЖТ”

Курсовой проект

по дисциплине “Программные комплексы для расчета систем электроснабжения”

«Разработка программного комплекса для расчёта напряжения и потерь мощности на тяговой подстанции постоянного тока»

Выполнил:

Студент гр.ЭНС-04-2

Энгиноев Р.Р.

Проверил:

Герасимов Л.Н.

Иркутск

2008

Содержание

Реферат

1.Разработка программы

2.Математическая формулировка задания

3.Описание языка программирования

4. Программный комплекс. Внешний вид. Описание

5.Пример расчета с использованием ЭВМ

6.Решение задачи без использования ЭВМ

Список литературы

Реферат

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

На основании исходных данных рассчитаны напряжение холостого хода подстанции и внутреннее сопротивление тяговой подстанции, напряжение на шинах подстанции, определена потеря мощности в трансформаторах подстанции.

1. Разработка программы

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

К этим этапам относят:

1. Постановка задачи.

2. Математическая формулировка и выбор метода решения.

3. Разработка Алгоритма решения.

4. Составление программы для ЭВМ.

5. Отладка и тестирование программы.

6. Решение задачи (счет) на ЭВМ.

Алгоритмом называется система формальных правил преобразования данных, однозначно приводящих к решению задачи.

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

Хороший алгоритм должен обладать следующими свойствами:

1. Дискретность.

2. Детерминированность.

3. Массовость.

4. Результативность.

В данном курсовом проекте применено структурное программирование . В нем наибольшее внимание уделяется этапу проектирования программы, при выполнении которого придерживаются следующих основных принципов( называемых принципами структурного программирования ): модульность, низходящая разработка программы, простая структура программы.

В частности, принцип простой структуры программы означает, что всякая программа должна содержать три основных элемента простой структуры:

· Следование ( когда все действия выполняются последовательно,

одно за другим);

· Ветвление (когда нужно выполнить одно из двух возможных действий или групп действий в зависимости от некоторого условия; при этом допускается, что одна ветвь может быть пустой., то есть не содержать каких-либо действий);

· Цикл (когда выполнение одного или нескольких действий может повторяться более одного раза).

Каждому элементу простой структуры соответствует блок-схема, то есть условное изображение элемента структуры в виде определенных геометрических фигур, соединенных стрелками:

Следование Ветвление Цикл

Рисунок№1

В каждой программе присутствует хотя бы один из этих элементов

(в курсовом проекте используется первый элемент ввиду простоты и линейности алгоритма расчёта). На основе блок-схем элементов простых структур строятся блок-схемы программ.

Любая блок схема должна содержать блоки “Начало” и “Конец”

Рисунок№2

Кроме того, в блок-схеме должны быть предусмотрены ввод данных и вывод результатов:

Рисунок№3

На следующем рисунке №4 приведена блок-схема программы

Рисунок№4

2.Математическая формулировка задания

На основании исходных данных производится расчет напряжения и потерь мощности на тяговой подстанции постоянного тока.

Методика расчёта:

1. Состав исходных данных:

1.1 Мощность понизительного трансформатора;

1.2 Мощность тягового трансформатора;

1.3 Выпрямленный ток;

1.4 Мощность кроткого замыкания;

2. Последовательность расчёта:

2.1 Напряжение холостого хода подстанции.

U0 = ;

UКТ UКП NT SНT SНТ NT

1 - А + +

100 100 NП SНП SКЗ

Где

А = 0,5 - коэффициент относительного наклона внешней характеристики преобразовательного агрегата для нулевой и мостовой схем выпрямления;

UН = 3,3 кВ - номинальное выпрямленное напряжение на шинах подстанции;

UКТ, UКП - напряжение короткого замыкания трансформаторов тягового и понизительного, %;

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

SНП SНT - номинальная мощность понизительного и тягового трансформатора, кВА;

SКЗ - мощность короткого замыкания на первичных шинах подстанции.

Рассчитать напряжение холостого хода своего варианта.

2.2.Внутреннее сопротивление тяговой подстанции

UКТ UКП 1

т = Хс + Хпт + Хтт =АU0 2 + + ,

100 Nт Sнп 100 Nп Sнп SКЗ

где Хс -сопротивление сети внешнего электроснабжения; Хп, Хт - сопротивление понизительного и тягового трансформатора. Сопротивления приведены к выпрямленному напряжению холостого хода.

2.3.Напряжение на шинах подстанции

Uш = Uо - Id т,

где Id - заданный выпрямленный ток подстанции.

3.Описание языка программирования

Программный комплекс написан в системе Delphi.

Delphi- это современная система программирования. Назначение Delphi- быстрая разработка приложений. С ее помощью можно быстро и качественно создавать любые программы: от простейшего калькулятора до многоуровневой системы управления предприятием. Для кого предназначена Delphi.

· Для новичков. По большому счету, можно ничего не знать о программировании для Windows и при этом создавать работоспособные и современные программы.

· Для приверженцев Паскаля вообще. Delphi построена на Object Pascal, который в свою очередь порожден из Паскаля. При этом существует 100% совместимость с прежними программами.

· Для программистов в базах данных. Они получают полномасштабное средство разработки для почти всех известных баз данных, совместимое со стандартами ODBC, IDAPI и к тому же компактные и легко переносимые исполнимые файлы. Программы на Delphi не тепличные цветы, распускающиеся лишь в специально созданной обстановке. Вы берете сгенерированный ЕХЕ-файл и запускаете там, где нужно. И все.

· Для прикладных программистов. Конечно, Delphi сама не выполнит за вас двумерного преобразования Фурье и не решит уравнений Навье-Стокса. Но она совместима со всем, что вы до сих пор написали на Паскале. Если вы работали на другом языке, подключение возможно путем создания специальных библиотек. Если вы увидели за вашей моделью некий объект, опишите его в виде совокупности свойств и реакций на внешние события. Получите новый компонент, который, может быть, будет полезен не только вам. Создать на закуску для вашей прикладной задачи отточенный интерфейс со всеми современными атрибутами -- дело буквально пяти минут

4. Программный комплекс. Внешний вид. Описание

Форма программного комплекса (рис№6) обладает рядом преимуществ по сравнению с ПК использующими файловый ввод исходной информации.

Рисунок№6

4.1 Описание функциональных кнопок на панели ПК

1. Кнопка Расчёт- запускает программу вычисления ;

2. Кнопка Сброс”-вызывает процедуру очистки окон ввода и вывода данных ;

3. Кнопка Копировать в буфер -помещает результаты расчета программы в “Буфер обмена” для дальнейшего использования их пользователем;

4. Кнопка Вывод отчета -создает документ Word и помещает результаты расчета программы;

5. Вкладка Выход в меню “файл”- выход из программного комплекса.

4.2 Текст программы (Исходный код)

Все пояснения к коду программы идут после знака” //”, поэтому излишние комментарии не требуются.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Mask, Spin, ComCtrls, Buttons, Menus,UnitParm,

DBCtrls,Word2000,OleServer, ComObj, jpeg;

type

TForm1 = class(TForm)

StaticText1: TStaticText;

ComboBoxEx1: TComboBoxEx;

ComboBoxEx2: TComboBoxEx;

StaticText2: TStaticText;

StaticText4: TStaticText;

ComboBoxEx4: TComboBoxEx;

StaticText5: TStaticText;

Edit1: TEdit;

StaticText6: TStaticText;

Edit2: TEdit;

Memo1: TMemo;

Calk: TButton;

Clear: TButton;

Button3: TButton;

Copy: TButton;

StaticText3: TStaticText;

Edit3: TEdit;

StaticText9: TStaticText;

Edit4: TEdit;

OpenIniFile: TOpenDialog;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

About1: TMenuItem;

Label1: TLabel;

N4: TMenuItem;

Image1: TImage;

Image2: TImage;

procedure CopyClick(Sender: TObject);

procedure ClearClick(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure CalkClick(Sender: TObject);

procedure Edit1Exit(Sender: TObject);

procedure Edit2Exit(Sender: TObject);

procedure Edit3Exit(Sender: TObject);

procedure Edit4Exit(Sender: TObject);

procedure ComboBoxEx1Select(Sender: TObject);

procedure ComboBoxEx2Select(Sender: TObject);

procedure ComboBoxEx4Select(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure About1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

IniParm : TIniParam ; // параметры настройки

function CoCon ( Value : string ; Ddef : double) : double ;

procedure ToControl;

procedure ToInif;

end;

var

Form1: TForm1;

PathAppl: string;

implementation

uses UnitAbout;

{$R *.dfm}

var

SComboBoxEx1: array[0..2] of integer = (16000, 25000, 40000) ;

SComboBoxEx2: array[0..2] of integer = (6000, 12500, 16000) ;

SComboBoxEx4: array[0..1] of integer = (4, 2) ;

sysDecimalSeparator : Char ; // сохранение системного параметра- разделитель

//дробной части

Sp, //мощьность понизиельного трансформатора

St, //мощьность тягового трансформатора

Q:integer; //схема выпрямления

Id, // выпрямленный ток

Skz, // мощьность кз

Un, // номинальное напряжение на шинах подстанции

U0, // напряжение ХХ

Ukz1, //напряжение короткого замыкания понизительного трансформатора

Ukz2, //напряжение короткого замыкания тягового трансформатора

Rv, // внутреннее сопротивление подстанции

Ush, // напряжение на шинах подстанции

I1,

Rtp,

Rtt,

P1:double;

IniFileName,

OpenIniFile: string;

function TForm1.CoCon ( Value : string ; Ddef : double ) : double ;

var Dat : double ;

begin

Result := Ddef ; // предварительно присвоим значение по умолчанию

Try

if Value = '' then Exit else // проверка - нет данных - выход

Result := StrToFloat(Value) ; // преобразование

Except

ShowMessage(Format('Ошибка ввода: %s ',[Value]));

end;

end;

procedure TForm1.ToControl;

begin

with IniParm.PwSt do begin

Edit1.Text:=FloatToStr(Id);

Edit2.Text:=FloatToStr(Skz);

Edit3.Text:=FloatToStr(Ukz1);

Edit4.Text:=FloatToStr(Ukz2);

end ;

end;

procedure TForm1.ToInif;

begin

with IniParm.PwSt do begin

Id:=StrToFloat(Edit1.Text);

Skz:=StrToFloat(Edit2.Text);

Ukz1:=StrToFloat(Edit3.Text);

Ukz2:=StrToFloat(Edit4.Text);

end ;

end;

procedure TForm1.ComboBoxEx1Select(Sender: TObject);

var Index : integer ;

begin

// - индекс в массиве

Index := ComboBoxEx1.ItemIndex ;

if Index >= 0 then Sp:= SComboBoxEx1[Index] ;

end;

procedure TForm1.ComboBoxEx2Select(Sender: TObject);

var Index : integer ;

begin

// - индекс в массиве

Index := ComboBoxEx2.ItemIndex ;

if Index >= 0 then St := SComboBoxEx2[Index] ;

end;

procedure TForm1.ComboBoxEx4Select(Sender: TObject);

var Index : integer ;

begin

// - индекс в массиве

Index := ComboBoxEx4.ItemIndex ;

if Index >= 0 then Q:= SComboBoxEx4[Index] ;

end;

procedure TForm1.Edit1Exit(Sender: TObject);

begin

// Ввод выпрямленного тока

Id:= CoCon(Edit1.text,0);

end;

procedure TForm1.Edit2Exit(Sender: TObject);

begin

// Ввод уст мощности 1 потр

Skz:= CoCon(Edit2.text,0);

end;

procedure TForm1.Edit3Exit(Sender: TObject);

begin

// Ввод выпрямленного тока

Ukz1:= CoCon(Edit3.text,0);

end;

procedure TForm1.Edit4Exit(Sender: TObject);

begin

Ukz2:= CoCon(Edit4.text,0);

end;

function Rashet ( aSp, aSt, aQ, aId, aSkz, aUkz1, aUkz2: double ;

var aU0, aRv, aUsh, aI1, aRtt, aRtp, aP1: double ) : boolean ;

begin

Rashet := true ;

Try

aU0:=3300/(1-0.5*( aUkz2/100+(aUkz1*aSt)/(100*aSp)+aSt/(aSkz*1000))); //напряжение ХХ

aRv:=(0.5*(aU0*aU0)*(aUkz1/100*aSp*+aUkz2/aSt+1/aSkz*1000))/1000000000; // внутренее сопротивление

aUsh:=aU0-aRv*aId; // напряжение на шинах подстанции

if aQ=4 then aI1:=(sqrt(2/3)* aId)/aQ else aI1:=aId/aQ*sqrt(6);

aRtt:=0.24*(aUkz2*aUkz2/aSt*aSt);

aRtp:=0.074*(aUkz1*aUkz1/aSp*aSp);

aP1:=aSp+aSt+((aI1*aI1)*(aRtt+aRtp));

Except

ShowMessage('Ошибка вычислений ');

Rashet := false ;

End ;

end ;

procedure TForm1.CalkClick(Sender: TObject);

begin

if Rashet (Sp, St, Q, Id, Skz, Ukz1, Ukz2, U0, Rv, Ush, I1, P1, Rtt, Rtp)

then // если нет ошибок

with Memo1.Lines do begin // то вывод в MemOut

Add('__________Задано_________') ; // Add - добавить строку

Add(' ');

Add(' Мощность понизительного тр-ра: '+FloatToStr(Sp)+' кВA') ;

Add(' Мощность тягового тр-ра: '+FloatToStr(St)+' кВА') ;

Add(' Выпрямленный ток: '+FloatToStr(Id)+' А') ;

Add(' Мощность кз: '+FloatToStr(Skz)+' МВАр' ) ;

Add(' ');

Add('__________Расчёт__________') ;

Add(' ');

Add(' Напряжение холостого хода: '+FloatToStr(U0)+' В') ;

Add(' Внутреннее сопротивление тяговой подстанции: '+FloatToStr(Rv)+' кОм') ;

Add(' Напряжение на шинах подстанции: '+FloatToStr(Ush)+' В') ;

Add(' Первичный ток обмотки: '+FloatToStr(I1)+' A') ;

Add(' Потери мощьности: '+FloatToStr(P1)+' кВт') ;

Add(' ');

Add(' ');

end;

end;

procedure TForm1.CopyClick(Sender: TObject);

begin

with Memo1 do begin

SelectAll; // Выделить всё

CopyToClipboard; // Копировать в буфер обмена

end;

end;

procedure TForm1.ClearClick(Sender: TObject);

begin

// очистим поле вывода и поля редакторов:

Memo1.Clear ;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

close

end;

procedure TForm1.About1Click(Sender: TObject);

begin

Form2.Show; // Show - показать форму

end;

procedure TForm1.N2Click(Sender: TObject);

var NewIniFile: string;

begin

PathAppl := ExtractFilePath(ParamStr(0)); // из строки параметра извлекаем

IniFileName := PathAppl+'tmp.ini';//полный путь к ини-файлу

if FileExists(IniFileName) then // файл существует?

IniParm := TIniParam.Create(IniFileName); //создаём объект и загружаем

if OpenIniFile.Execute then begin // если в диалоге был выбран файл

NewIniFile := OpenIniFile.FileName; // то берём его полный путь

if FileExists(NewIniFile) then begin // файл существует? тогда копируем

CopyFile(PChar(NewIniFile), PChar(IniFileName), false); // его в рабочий

if IniParm <> NIL then IniParm.Free; // удаляем прежний объект

IniParm := TIniParam.Create(IniFileName); // создаём объект и загружаем

ChDir(PathAppl);

end; end;

ToControl;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

ToInif;

IniParm.WriteIniData(IniFileName); // запись без контроля

end;

procedure TForm1.Button3Click(Sender: TObject);

const esrc= #10#13 ;

var fileName,fnProtocol: string;

Word:variant;

ix:integer;

begin

fileName:=ExtractFilePath(Application.ExeName)+ fnProtocol ;

Try

//Создаем объект интерфейса для доступа к серверу COM

Word := CreateOleObject('Word.Application');

Except

ShowMessage('ErrQuit') ;

End ;

Word.application.documents.add;

ix := 0 ;

With Memo1 do

while ix < Lines.Count do begin

Word.application.activedocument.Range.InsertAfter(Lines[ix]+esrc);

Inc(ix) ; end ;

Word.application.Visible:=true;

Try

Word.application.activedocument.SaveAs(fileName);

Except

ShowMessage('Файл отчёта не сохранен') ;

End ;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

sysDecimalSeparator:=DecimalSeparator;

DecimalSeparator:='.';

end;

procedure TForm1.FormDestroy(Sender: TObject);

begin

DecimalSeparator:=sysDecimalSeparator;

end;

end.

5. Пример расчета номинальной мощности трансформатора ЭВМ

5.1 После ввода исходной информации Окно программы имеет вид:

Рисунок№7

5.2. Вид окна после нажатия кнопки Расчёт

Рисунок№8

5.3 Вывод результатов расчета через “БУФЕР ОБМЕНА

__________Задано_________

Мощность понизительного тр-ра: 25000 кВA

Мощность тягового тр-ра: 12500 кВА

Выпрямленный ток: 3000 А

Мощность кз: 300 МВАр

__________Расчёт__________

Напряжение холостого хода: 3604.91579426491 В

Внутреннее сопротивление тяговой подстанции: 0.03189292138968 кОм

Напряжение на шинах подстанции: 3509.23703009587 В

Первичный ток обмотки: 612.372435695794 A

Потери мощьности: 13.5 кВт

6. Решение задачи без использования ЭВМ

Понизительный трансформатор: ТДТН-25000

Тяговый трансформатор: ТМРУ-12500

Схема выпрямления: мостовая

Id = 3000 A ; Sкз = 300 МВА

6.1.Расчет напряжения холостого хода тяговой подстанции

6.2. Расчет внутреннего сопротивления тяговой подстанции

6.3. Расчет напряжения на шинах тяговой подстанции и потери мощности. Напряжение на шинах подстанции определяется по следующей формуле:

6.4.Потери мощности:

Потери мощности:

Список литературы:

1. Бей Ю.М., Мамошин Р.Р., Пупынин В.Н., Шалимов М.Г. Тяговые подстанции/Учебник для вузов ж.-д.транспорта .-М.:

Транспорт, 1986-319с.

2. Егорушкин .И.О Информатика. Алгоритмические языки. Основы программирования на алгоритмическом языке Turbo Pascal: Учебное пособие/ Красноярский гос. Аграр.ун.-т.- Красноярск,2000.-121с.

3. Методические указания по выполнению лабораторных работ по дисциплине” Компьютерные технологии на Ж.Д. транспорте”.


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.