Расчет коэффициента мощности выпрямителя в зависимости от реактивного сопротивления и эффективного значения электродвижующей силы

 

СОДЕРЖАНИЕ


СОДЕРЖАНИЕ

РЕФЕРАТ

ВВЕДЕНИЕ

АЛГОРИТМИЗАЦИЯ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ

МАТЕМАТИЧЕСКОЕ РЕШЕНИЕ ЗАДАЧИ

РАСКРЫТИЕ ТЕМЫ КУРСОВОЙ РАБОТЫ

Разработка интерфейса пользователя

Создание программного кода

СОЗДАНИЕ АНИМАЦИИ

РАЗРАБОТКА СПРАВОЧНОЙ СИСТЕМЫ

РАСЧЁТ КОНТРОЛЬНОГО ПРИМЕРА

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ИНФОРМАЦИИ

ПРИЛОЖЕНИЯ

Приложение 1

Приложение 2


РЕФЕРАТ


Для решения поставленной задачи будет использоваться среда разработки приложений Delphi 7. При помощи Delphi 7 будет создана программа коэффициента мощности выпрямителя в зависимости от реактивного сопротивления и эффективного значения электродвижущей силы

Для отображения алгоритма решения, создаём блок-схему.


ВВЕДЕНИЕ


Целью данной работы является расчет коэффициента мощности выпрямителя (Вт) в зависимости от реактивного сопротивления ? (Ом) и эффективного значения электродвижующей силы Е (В).

Для этой цели составлена программа на языке программирования Delphi. С помощью данной программы произведены необходимые вычисления и получены результаты, как в виде таблицы, так и в виде графиков зависимостей. Так же для улучшения визуального восприятия и облегчения работы с программой составлены дополнительные модули Анимация и О программе. Кроме этого в выше указанных модулях будет содержаться дополнительная информация о разработчике программы.

Целью данной курсовой работы является закрепление и применение на практике полученных навыков программирования во время изучения дисциплины «Информатика».

Разработанная мною программа имеет примитивный интерфейс. Данной программой может пользоваться не только подготовленный пользователь, но и пользователь, который слабо знает данную сторону вопроса и методы её реализации.


АЛГОРИТМИЗАЦИЯ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ


Ниже приведена блок-схема, описывающая алгоритм, по которому будет выполняться программа.


Рисунок 1 - Блок-схема алгоритма решения математической модели

МАТЕМАТИЧЕСКОЕ РЕШЕНИЕ ЗАДАЧИ


Рассчитать коэффициент мощности выпрямителя (Вт) в зависимости от реактивного сопротивления ? (Ом) и эффективного значения электродвижующей силы Е (В).

Коэффициент мощности выпрямителя (Вт) в зависимости от реактивного сопротивления ?(Ом) и эффективного значения электродвижующей силы Е (В) рассчитывается по формуле:


,


где k - отношение эффективного тока вторичной обмотки трансформатора к среднему значению выпрямленному току;

? - коэффициент, учитывающий влияние омического падения напряжения в цепи переменного тока на среднее выпрямленное напряжение;

- величина выпрямленного тока (А);

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

На рисунке 1 представлена схема трёхфазного выпрямителя и осциллограммы напряжения в различных точках выпрямителя

Рисунок 2 - схема трёхфазного выпрямителя и осциллограммы напряжения в различных точках выпрямителя


На рисунке обозначено:

- напряжения на вторичных обмотках трехфазного трансформатора.

напряжение на нагрузке получаемое с соответствующего вентиля.

- Суммарное напряжение на нагрузке.

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

Если рассмотреть осциллограммы напряжения на нагрузке при отключенном конденсаторе для каждой из трех фаз, то можно заметить, что напряжение на нагрузке имеет такой же уровень пульсаций как и в схеме однополупериодного выпрямления. Сдвиг фаз(т.е. сдвиг по времени) напряжений выпрямителей между собой в результате даст в 3 раза меньший уровень пульсаций, чем в однофазной однополупериодной схеме выпрямления. Трёхфазные мощные выпрямители используются в электровозах, городском электротранспорте.

РАСКРЫТИЕ ТЕМЫ КУРСОВОЙ РАБОТЫ


Я начал разработку программы с разработки интерфейса.

Разработка интерфейса пользователя

При запуске программы появляется главное окно, представленное на рисунке 2.


Рисунок 3 - Стартовое окно программы


Исходные данные для удобства ввода разбиты на три логических блока: Реактивное сопротивление ,Эффективное значение электродвижущей силы и Другие параметры. Для проведения расчетов необходимо нажать кнопку Расчет.

Если требуется выполнить дополнительные вычисления, то можно воспользоваться калькулятором, который вызывается нажатием кнопки Калькулятор.

Для удобства работы программа содержит главное (рисунок 2) и контекстное меню (рисунок 4).

Рисунок 4 - Падающее меню программы


Рисунок 5 - Контекстное меню программы


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

При нажатии Помощь - О программе загружается новая форма (рисунок 4), на которой представлена информация о программе и анимация.

Рисунок 6 - Окно представления информации о программе


Для облегчения понимания работы с программой содержится статусная строка, в которую выводится справочная информация о любом объекте программы, к которому подводится курсор.

После выполнения расчетов результаты отображаются на новой форме в виде таблицы (рисунок 6).

Рисунок 7 - Результаты расчета


На данной форме имеются ряд кнопок, позволяющих провести постобработку полученных результатов. Можно сохранить результаты в MS Excel, MS Word. Есть возможность построить графические зависимости, вывести результирующую таблицу на печатающее устройство, вызвать справочную информацию и вернуться назад к вводу исходных данных.

При нажатии на кнопку Графики загружается новая форма (рисунок 7), на которой представлены графические зависимости коэффициента мощности выпрямителя от реактивного сопротивления и эффективного значения электродвижущей силы. Также предусмотрена возможность построения трехмерного графика.

Рисунок 8 - Окно представления графических зависимостей


Для всех графиков имеется компонент TeeCommander (рисунок 7), имеющий следующие элементы для работы с графиками:

Normal, Rotate, Move, Zoom, Depth, 3D, Edit, Print, Copy, Save.


Рисунок 9 - Компонент TeeCommander


Строка состояния создаётся на основе компонента TStatusBar , расположенного на вкладке Win32. Данный компонент отображает «горячие» подсказки и выводит дополнительную информацию. Строка состояния обычно делится на несколько панелей.

В самом простом варианте строка состояния работает, как одна большая панель. При этом свойство SimplePanel получают значение True, а выводимый текст записывается в свойство SimpleText.

Для отображения подсказок существует два способа:

1.В инспекторе объектов для свойства AutoHint присвоить значение True;

2.В разделе описания процедур добавляем:ShowHint(Sender: TObject);

После этого вручную прописываем две процедуры(см. Приложение1 ).

Строка состояния значительно облегчает работу с программой и её освоение.


СОЗДАНИЕ ПРОГРАММНОГО КОДА


Далее рассмотрим написание текста программы, необходимого для расчёта.

Первоначально в программу необходимо ввести данные, для этого воспользуемся расположенными на форме компонентами LabeledEdit.

В тексте программы (на кнопке РАСЧЁТ) присваиваем переменным значения из компонентов LabeledEdit, но первоначально описываем каждую переменную глобально в разделе var:

var: TFMain;, MvSteps: Integer;, Xmin, Xmax, dX, Emin, Emax, dE, _k, _Id, _Em: Real;:= StrToFloat(LabeledEdit1.Text);:= LabeledEdit2;:= StrToFloat(LabeledEdit2.Text);:= LabeledEdit4;:= StrToFloat(LabeledEdit4.Text);:= LabeledEdit5;:= StrToFloat(LabeledEdit5.Text);:= LabeledEdit7;

_k := StrToFloat(LabeledEdit7.Text);:= LabeledEdit8;

_Em := StrToFloat(LabeledEdit8.Text);:= LabeledEdit9;

_Id := StrToFloat(LabeledEdit9.Text);:= LabeledEdit10;:= StrToFloat(LabeledEdit10.Text);:= LabeledEdit3;:= StrToInt(LabeledEdit3.Text);:= (Xmax - Xmin) / (MsSteps - 1);:= LabeledEdit6;:= StrToInt(LabeledEdit6.Text); := (Emax - Emin) / (MvSteps - 1);

где

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

if (Xmin < 0.3) or (Xmax < 0.3) then

MessageDlg('Значение реактивного сопротивления должно быть не менее 0,3 Ом',

mtWarning, [mbOK], 0);:= False;;

Такой программный код необходимо записать для каждой переменной, задавая соответствующие условия.

Так как все пользовательские подпрограммы нужно оформлять как динамически подключаемые библиотеки, сперва создаем динамическую библиотеку. Для этого необходимо в программе Delphi 7 в падающем меню File(файл) выбрать пункт New(новый), затем Others(другие) и в появившемся окне выбрать элемент DLL Wizard. В открывшемся окне редактора кода создаём два новых типа: mass1 и mass2(одномерный и двумерный массивы соответственно), эти же типы создаём и в самой программе, а затем создаём новую процедуру raschet1, указывая в скобках переменные, которые передаются в процедуру, а в разделе var те переменные, которые необходимо вывести из процедуры. В разделе var процедуры raschet1 указываем переменные, которые будут использоваться только внутри процедуры, после этого записываем текст программы, который соответствует блок-схеме:

function Formula(k0,X,E,k,Id,Em: Real): Real; stdcall;:= ((2*sqrt(2))/(3.14*k))-((2*Em*Id*X*k0)/(3.14*E*k))

end;

//k - отношение эффективного тока вторичной обмотки трансформатора к среднему выпрямленному току

//Em - коэффициент, учитывающий влияние омического падения напряжения в цепи переменного тока на среднее выпрямленное напряжение

//Id - величина выпрямленного тока

//X - реактивное сопротивление

//k0 - отношение коэффициента трансформации на данной ступени регулирования к наименьшему коэффициенту трансформации, при котором получается номинальная электродвижущая сила хода вторичной обмотки трансформатора

//E - эффективное значение электродвижущей силыFormula index 1;

Для того, чтобы было возможно обратиться к данной процедуре в её конце записана строка exports Formula index 1 . После написания процедуры нужно скомпилировать проект(Ctrl+F9), а затем сохранить в отдельную папку.

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

function Formula(k0, X, E, _k, i, _Em: Real): Real; stdcall;'Dll\FormulaDLL.dll' index 1

Причём необходимо указывать полный путь к dll библиотеке.

После подключения библиотеки можем использовать её в программе: на кнопке расчёт, после введения данных, обращаемся к данной библиотеке.

Для вызова калькулятора на кнопке КАЛЬКУЛЯТОР вводим следующий элемент программного кода:

winexec('calc.exe',sw_restore);

Поскольку программа должна запоминать последние введённые данные, на кнопке ВЫХОД вводим следующий элемент программного кода, который будет отвечать за то, чтобы все значения из компонентов LabeledEdit были сохранены в текстовом файле, однако перед этим для каждой переменной нужно ввести программный код для проверки правильности введённых данных(так же как и на кнопке РАСЧЁТ):

AssignFile(TempFile, FileName);(TempFile);(TempFile, LabeledEdit1.Text);(TempFile, LabeledEdit2.Text);(TempFile, LabeledEdit3.Text);(TempFile, LabeledEdit4.Text);(TempFile, LabeledEdit5.Text);(TempFile, LabeledEdit6.Text);(TempFile, LabeledEdit7.Text);(TempFile, LabeledEdit8.Text);(TempFile, LabeledEdit9.Text);(TempFile, LabeledEdit10.Text);(TempFile);

СОЗДАНИЕ АНИМАЦИИ


Данная анимация расположена в окне «О программе».


Рисунок 10 - Окно представления информации о программе


Для создания анимации было использовано два основных компонента это TImage (вкладка Additional) и TTimer (вкладка System), которые в основном применяются для создания каких-либо графических изображений в Delphi.

Компонент TImage активно используется во многих программах, причём не только для отображения статических картинок, но и для создания анимационных эффектов.

Компонент TTimer применяется в основном для создания темпа смены кадров. Следует учесть, что интервал свойства Interval задаётся в миллисекундах.

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

Для создания анимации были использованы некоторые свойства и методы класса TCanvas. Ниже приведены некоторые методы класса TCanvas и их предназначение:

procedure Draw - вывод графического изображения в заданной точке холста;Polygon - рисуется сложная фигура, состоящая из отрезков, последовательно соединяющих точки, представленные ввиде динамического массива элементов TPoint. Последняя точка соединяется с первой. Внутренняя часть фигуры заполняется в соответствии со значением свойства Brush;

procedure Rectangle - рисуется прямоугольник. Его внутренняя область заполняется в соответствии со значением свойства Brush;

procedure Ellipse - рисуется эллипс.

Текст анимации смотри в Приложении1 Unit4.


РАЗРАБОТКА СПРАВОЧНОЙ СИСТЕМЫ

программа выпрямитель мощность графический

Создание справки производилось при помощи приложения Help & Manual 6. Поэтому необходимо, чтобы на компьютере было предварительно установлено приложение Help & Manual 6.

Рисунок 11 - Help & Manual 6


Следует привести порядок действий, которые необходимо выполнить для создания справки.

При помощи приложения Help & Manual 6 создаём файл справки .chm.В открывшемся окне программы создаём новый проект, при этом указываем место его сохранения. В появившемся проекте в Обозревателе проекта создаём нужные нам разделы:

.Введение;

.Описание интерфейса;

.1Форма Расчёт реактивной проводимости трансформатора:

.1.1. Описание формы Расчёт реактивной проводимости трансформатора;

.1.2. Ввод данных;

.1.3. Вызов калькулятора;

.1.4. Восстановление данных по умолчанию;

.2. Форма Результат расчёта:

.2.1. Описание формы Результат расчёта;

.2.2. Сохранение результатов расчёта;

.3. Форма Графики:

.3.1. Описание формы Графики;

.3.2. Сохранение графиков;

.3.3. Печать графиков;

.4. Форма О программе:

2.4.1.Описание формы О программе;


Рисунок 12 - Внешний вид окна справки


Для каждого раздела на вкладке Опции раздела указываем в строке Контекст справки номер данного раздела.

Для того, что бы скомпилировать проект справки, нужно нажать Ctrl+F9, затем в открывшемся окне выбрать вкладку WinHelp, указать путь сохранения (желательно папку с программой) и нажать OK.

В самой программе для того, чтобы открыть справку, нужно сделать следующее: щёлкнув один раз по форме, в Object Incpectorе в строке HelpFile записать имя скомпилированного проекта, а в строке HelpContext указать номер раздела справки, который необходимо открыть. Теперь в ходе работы программы при нажатии на кнопку F1 будет открыт необходимый раздел справки.

Для того чтобы в ходе работы программы при нажатии на кнопку Справка появлялся нужный раздел справки, надо на кнопку записать следующий фрагмент программного кода (цифра обозначает номер раздела справки): ShellExecute(handle, nil, PChar(ExtractFilePath(ParamStr(0))+ 'spravka.chm'), nil, nil, SW_SHOW); // Вызов справки

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


РАСЧЁТ КОНТРОЛЬНОГО ПРИМЕРА


При помощи программы рассчитаем коэффициент мощности выпрямителя. По графикам определим как влияет каждый из параметров на коэффициент мощности выпрямителя.

X1=0.6 Ом - минимальное значение реактивного сопротивления;

X2=1.5 A - максимальное значение реактивного сопротивления;

n=15 - число расчетных точек;

E1=0.15 В - минимальное значение электродвижущей силы;

E2=2.6 В - максимальное значение электродвижущей силы

m=14 - число расчетных точек;

k=0.2 - отношение эффективного тока к среднему выпрямленному току.

E=0.24 - коэффициент, учитывающий влияние омического падения напряжения в цепи переменного тока на среднее выпрямленное напряжение;

Id =0.75 - величина выпрямленного тока

k0=0.33 - отношение коэффициента трансформации на данной ступени регулирования к наименьшему коэффициенту трансформации, при котором получается номинальная электродвижующая сила холостого хода вторичной обмотки трансформатора.


Рисунок 13 - Вид главной формы


На рисунке 12 показан результат расчёта.

Рисунок 14 - Результат расчёта


Рисунок 15 - Зависимость от реактивного сопротивления

Рисунок 16 - Зависимость от эффективного значения электродвижущей силы


Рисунок 17 - Трёхмерная зависимость

ЗАКЛЮЧЕНИЕ


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

При помощи этой программы можно анализировать от каких параметров, и в какой степени зависит искомая величина. При помощи программы произведён расчёт контрольного примера, в котором использованы конкретные данные трансформатора.

ПРИЛОЖЕНИЯ


Приложение 1


Таблица П.1-Сводные данные по расчётным параметрам

ПеременнаяОбозначение в формулеДиапазон измененияПримечанияРеактивное сопротивлениеX0,6…1,5Варьируемая величинаЭффективное значение ЭДСЕ0,15…2,6Варьируемая величинаотношение эффективного тока вторичной обмотки трансформатора к среднему значению выпрямленному току k 0,2 Постоянная величинакоэффициент, учитывающий влияние омического падения напряжения в цепи переменного тока на среднее выпрямленное напряжение ? 0,24 Постоянная величинавеличина выпрямленного тока0,75Постоянная величинаотношение коэффициента трансформации на данной ступени регулирования к наименьшему коэффициенту трансформации, при котором получается номинальная электродвижующая сила холостого хода вторичной обмотки трансформатора. 0,33 Постоянная величинаПриложение 2


Приложение 2 содержит полный текст программы.

ФОРМА 1Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Menus, ExtCtrls, ComCtrls, XPMan, StdCtrls, Buttons, Unit2,shellapi ;= class(TForm): TStatusBar;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TXPManifest;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TGroupBox;: TGroupBox;: TGroupBox;: TGroupBox;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TUpDown;: TUpDown;: TOpenDialog;: TSaveDialog;: TLabeledEdit;: TLabeledEdit;FormCreate(Sender: TObject);ShowHint(Sender: TObject);Exit(Sender: TObject);ExecCalc(Sender: TObject);Calculate(Sender: TObject);leFloatKeyPress(Sender: TObject; var Key: Char);leIntKeyPress(Sender: TObject; var Key: Char);leIntKeyUp(Sender: TObject; var Key: Word;: TShiftState);ShowAboutProgram(Sender: TObject);N4Click(Sender: TObject);N5Click(Sender: TObject);FormCloseQuery(Sender: TObject; var CanClose: Boolean);LoadDataFile(FileName: TFileName);SaveDataFile(FileName: TFileName);bbHelpClick(Sender: TObject);N10Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TFMain;, MvSteps: Integer;, Xmin, Xmax, dX, Emin, Emax, dE, _k, _Id, _Em: Real;Unit3, Unit4;Formula(k0, X, E, _k, i, _Em: Real): Real; stdcall;'Dll\FormulaDLL.dll' index 1

{$R *.dfm}TFMain.LoadDataFile(FileName: TFileName);: string;: TextFile;FileExists(FileName) then(TempFile, FileName);(TempFile);(TempFile, TempStr);.Text := TempStr;(TempFile, TempStr);.Text := TempStr;(TempFile, TempStr);.Position := StrToInt(TempStr);(TempFile, TempStr);.Text := TempStr;(TempFile, TempStr);.Text := TempStr;(TempFile, TempStr);.Position := StrToInt(TempStr);(TempFile, TempStr);.Text := TempStr;(TempFile, TempStr);.Text := TempStr;(TempFile, TempStr);.Text := TempStr;(TempFile, TempStr);.Text := TempStr;(TempFile);;;;TFMain.SaveDataFile(FileName: TFileName);: TextFile;(TempFile, FileName);(TempFile);(TempFile, LabeledEdit1.Text);(TempFile, LabeledEdit2.Text);(TempFile, LabeledEdit3.Text);(TempFile, LabeledEdit4.Text);(TempFile, LabeledEdit5.Text);(TempFile, LabeledEdit6.Text);(TempFile, LabeledEdit7.Text);(TempFile, LabeledEdit8.Text);(TempFile, LabeledEdit9.Text);(TempFile, LabeledEdit10.Text);(TempFile);;;TFMain.ShowHint(Sender: TObject);.SimpleText := Application.Hint;TFMain.Exit(Sender: TObject);('Data.txt');;TFMain.ExecCalc(Sender: TObject);('Calc.exe', SW_NORMAL);GetData: Boolean;: TLabeledEdit;FMain do:= True;:= LabeledEdit1;:= StrToFloat(LabeledEdit1.Text);:= LabeledEdit2;:= StrToFloat(LabeledEdit2.Text);:= LabeledEdit4;:= StrToFloat(LabeledEdit4.Text);:= LabeledEdit5;:= StrToFloat(LabeledEdit5.Text);:= LabeledEdit7;

_k := StrToFloat(LabeledEdit7.Text);:= LabeledEdit8;

_Em := StrToFloat(LabeledEdit8.Text);:= LabeledEdit9;

_Id := StrToFloat(LabeledEdit9.Text);:= LabeledEdit10;:= StrToFloat(LabeledEdit10.Text);:= LabeledEdit3;:= StrToInt(LabeledEdit3.Text);:= (Xmax - Xmin) / (MsSteps - 1);:= LabeledEdit6;:= StrToInt(LabeledEdit6.Text);:= (Emax - Emin) / (MvSteps - 1);(Xmin < 0.3) or (Xmax < 0.3) then('Значение реактивного сопротивления должно быть не менее 0,3 Ом',

mtWarning, [mbOK], 0);:= False;;(Xmax > 2) or (Xmin > 2) then('Значение реактивного сопротивления должно быть не более 2 Ом',

mtWarning, [mbOK], 0);:= False;;(Emin < 0.1) or (Emax < 0.1) then('Эффективное значение электродвижущей силы должно быть не менее 0,1 В',

mtWarning, [mbOK], 0);:= False;;(Emax > 3) or (Emin > 3) then('Эффективное значение электродвижущей силы должно быть не более 3 В',

mtWarning, [mbOK], 0);:= False;;(_k > 0.5) or (_k < 0.1) then('Значение отношения эффективного тока вторичной обмотки'+

' к среднему выпрямленному току должно находиться в ' +

'пределах от 0,1 до 0,5 ', mtWarning, [mbOK], 0);

Result := False;;(_Em < 0.1) or (_Em > 0.5) then

MessageDlg('Значение коэффициента, учитывающего влияние омического'+

' падения напряжения в цепи переменного тока на среднее выпрямленное напряжение ' +

'должно находиться в пределах от 0,1 до 0,5', mtWarning, [mbOK], 0);

end;(_Id < 0.5) or (_Id > 1) then

MessageDlg('Величина выпрямленного тока должна находиться'+

' в пределах от 0,5 до 1 А', mtWarning, [mbOK], 0);

Result := False;;(k0 < 0.1) or (k0 > 0.5) then

MessageDlg('Отношение коэффициента трансформации на данной ступени'+

' регулирования к наименьшему коэффициенту трансформации должен находиться'+

' в пределах от 0,1 до 0,5', mtWarning, [mbOK], 0);

Result := False;;(Xmin >= Xmax) or (Xmin >= Xmax) then

MessageDlg('Минимальное значение должно быть меньше максимального',

mtWarning, [mbOK], 0);:= False;;EConvertError do('Некорректно введены данные!', mtWarning, [mbOK], 0);.SetFocus;:= False;;EZeroDivide do('Количество шагов должно быть > 1!', mtWarning, [mbOK], 0);.SetFocus;:= False;;;;;TFMain.Calculate(Sender: TObject);, j: Integer;GetData then.sgRes.ColCount := MsSteps + 1;.sgRes.RowCount := MvSteps + 1;.Series1.Clear;.Series2.Clear;.Series3.Clear;.Series4.Clear;.LineSeries1.Clear;.LineSeries2.Clear;.LineSeries3.Clear;i := 0 to MsSteps - 1 doj := 0 to MvSteps - 1 do.sgRes.Cells[i + 1, j + 1] := Format('%0.2f',

[Formula(k0, Xmin + dX * i, Emin + dE * j, _k, _Id, _Em)]);i := 1 to MsSteps doj := 1 to MvSteps do.Series4.AddXYZ(j, StrToFloat(FCalc.sgRes.Cells[i, j]), i);

//xi := 1 to MsSteps do.sgRes.Cells[i, 0] := Format('%.0f Ом', [Xmin + dX * (i - 1)]);.AutoSizeGridColumn(FCalc.sgRes, i);;

//xi := 1 to MvSteps do.sgRes.Cells[0, i] := Format('%.0f В', [Emin + dE * (i - 1)]);.AutoSizeGridColumn(FCalc.sgRes, 0);i := 0 to MsSteps - 1 do.Series1.AddXY((Xmin + dX * i) / 1000,(k0, Xmin + dX * i, Emin, _k, _Id, _Em) / 1000);.Series2.AddXY((Xmin + dX * i) / 1000,(k0, Xmin + dX * i, (Emin + Emax) / 2, _k, _Id, _Em) /

);.Series3.AddXY((Xmin + dX * i) / 1000,(k0, Xmin + dX * i, Emax, _k, _Id, _Em) / 1000);;i := 0 to MvSteps - 1 do.LineSeries1.AddXY((Emin + dE * i) / 1000,(k0, Xmin, Emin + dE * i, _k, _Id, _Em) / 1000);.LineSeries2.AddXY((Emin + dE * i) / 1000,(k0, (Xmin + Xmax) / 2, Emin + dE * i, _k, _Id, _Em) /

);.LineSeries3.AddXY((Emin + dE * i) / 1000,(k0, Xmax, Emin + dE * i, _k, _Id, _Em) / 1000);;.ShowModal;;;TFMain.FormCreate(Sender: TObject);('Data.txt');.OnHint := ShowHint;TFMain.leFloatKeyPress(Sender: TObject; var Key: Char);Key of

'0'..'9', #8:;

'.', ',': Key := DecimalSeparator:= #0;;;TFMain.leIntKeyPress(Sender: TObject; var Key: Char);Key of

'0'..'9', #8:;:= #0;;;TFMain.leIntKeyUp(Sender: TObject; var Key: Word;: TShiftState);(TLabeledEdit(Sender).Text = '') or

(StrToInt(TLabeledEdit(Sender).Text) <= 1) then(Sender).Text := '2';;TFMain.ShowAboutProgram(Sender: TObject);.ShowModal;;TFMain.N4Click(Sender: TObject);.InitialDir := ExtractFilePath(Application.ExeName);OpenDlg.Execute then(OpenDlg.FileName);;TFMain.N5Click(Sender: TObject);.InitialDir := ExtractFilePath(Application.ExeName);SaveDlg.Execute thenPos('.txt', SaveDlg.FileName) = 0 then.FileName := SaveDlg.FileName + '.txt';(SaveDlg.FileName);;;TFMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

case MessageDlg('Вы действительно хотите выйти из программы?', mtConfirmation,

mbOKCancel, 0) of: CanClose :=True;: CanClose := False;;;TFMain.bbHelpClick(Sender: TObject);(handle, nil, PChar(ExtractFilePath(ParamStr(0))+ 'spravka.chm'), nil, nil, SW_SHOW); // Вызов справки;TFMain.N10Click(Sender: TObject);(handle, nil, PChar(ExtractFilePath(ParamStr(0))+ 'spravka.chm'), nil, nil, SW_SHOW); // Вызов справки;.

ФОРМА 2Unit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, StdCtrls, Buttons, ComCtrls, ComObj, Printers,shellapi;= class(TForm): TLabel;: TStringGrid;: TGroupBox;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TStatusBar;: TSaveDialog;: TPrintDialog;FormCreate(Sender: TObject);bbExitClick(Sender: TObject);bbChartClick(Sender: TObject);bbHTMLClick(Sender: TObject);bbWordClick(Sender: TObject);bbExcelClick(Sender: TObject);bbPrintClick(Sender: TObject);AutoSizeGridColumn(Grid: TStringGrid; Column: Integer);bbHelpClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TFCalc;Unit3;

{$R *.dfm}TFCalc.AutoSizeGridColumn(Grid: TStringGrid; Column: Integer);, Temp, Max: Integer;:= 0;i := 0 to Grid.RowCount do:= Grid.Canvas.TextWidth(Grid.Cells[Column, i]);Temp > Max then:= Temp;;.ColWidths[Column] := Max + 3 + Grid.GridLineWidth;;TFCalc.FormCreate(Sender: TObject);.Caption := 'Сохранить в'#13'MS Excel';.Caption := 'Сохранить в'#13'MS Word';.Caption := 'Сохранить'#13'в HTML';.Caption := 'Распечатать'#13'таблицу';.Caption := 'Графики';.Caption := 'Справка';.Caption := 'Закрыть'#13'окно';TFCalc.bbExitClick(Sender: TObject);;TFCalc.bbChartClick(Sender: TObject);.ShowModal;;TFCalc.bbHTMLClick(Sender: TObject);: TextFile;, j: Integer;.DefaultExt := 'html';.Filter := 'HTML-файл (*.html)|*.html';.FileName := 'Результаты расчетов';SaveDlg.Execute then(HTMLFile, SaveDlg.FileName);(HTMLFile);(HTMLFile, '<html>');(HTMLFile, '<head>');(HTMLFile, '<meta http-equiv="Content-Type" content="text/html; ' +

'charset=windows-1251">');(HTMLFile, '<title>Результаты расчетов</title>');(HTMLFile, '</head>');(HTMLFile, '<body>');(HTMLFile, ' <center><font size="6"><b>' + Label1.Caption +

'</b></font></center>');(HTMLFile, ' <table border=1 cellspacing=0 cellspading=0>');i := 0 to sgRes.RowCount do(HTMLFile, ' <tr>');j := 0 to sgRes.ColCount do(j = 0) or (i = 0) then(HTMLFile, ' <td><b><i>' +.Cells[j, i] + '</i></b>')(HTMLFile, ' <td>' + sgRes.Cells[j, i]);;(HTMLFile, ' </table>');(HTMLFile, '</body>');(HTMLFile, '</html>');(HTMLFile);;;TFCalc.bbWordClick(Sender: TObject);, NewDoc, WordTable: OLEVariant;, iCols, iGridRows, jGridCols: Integer;.DefaultExt := 'doc';.Filter := 'Документ MS Word (*.doc)|*.doc';.FileName := 'Результаты расчетов';not SaveDlg.Execute then;:= CreateOleObject('Word.Application');;:= WordApp.Documents.Add;:= sgRes.ColCount;:= sgRes.RowCount;:= NewDoc.Tables.Add(WordApp.Selection.Range, iRows, iCols);.Range.Font.Size := 8;iGridRows := 1 to iRows dojGridCols := 1 to iCols do.Cell(iGridRows, jGridCols).Range.Text :=.Cells[jGridCols - 1, iGridRows - 1];.ActiveDocument.SaveAs(SaveDlg.FileName);.Quit;:= Unassigned;:= Unassigned;:= Unassigned;;TFCalc.bbExcelClick(Sender: TObject);, Sheet, Column: Variant;, j, m, n: Integer;.DefaultExt := 'xls';.Filter := 'Документ MS Excel (*.xls)|*.xls';.FileName := 'Результаты расчетов';not SaveDlg.Execute then;:= CreateOleObject('Excel.Application');;.WorkBooks.Add(-4167);.WorkBooks[1].WorkSheets[1].Name := 'Результаты расчетов';:= XLApp.WorkBooks[1].WorkSheets['Результаты расчетов'].Columns;:= sgRes.ColCount;:= sgRes.RowCount;i := 1 to m + 1 do:= XLApp.WorkBooks[1].WorkSheets['Результаты расчетов'].Rows;.Columns[1].Font.Bold := True;.Rows[1].Font.Bold := True;.Rows[1].Font.Italic := True;.Rows[2].Font.Bold := True;:= XLApp.WorkBooks[1].WorkSheets['Результаты расчетов'];.Enabled := False;i := 0 to n doj := 0 to m do.Cells[j + 2, i + 1] := '''' + sgRes.Cells[i, j];.Enabled := True;.Cells[1, 2] := Label1.Caption;.ActiveWorkBook.SaveAs(SaveDlg.FileName);.Quit;TFCalc.bbPrintClick(Sender: TObject);, X2: Integer;, Y2: Integer;: Integer;: Integer;: TRect;: TPrinterOrientation;:= Printer.Orientation;.Orientation := poLandScape;PrintDialog1.Execute then.Title := Label1.Caption;.BeginDoc;.Canvas.Pen.Color := 0;.Canvas.Font.Name := 'Times New Roman';.Canvas.Font.Size := 12;.Canvas.Font.Style := [fsBold, fsUnderline];.Canvas.TextOut(0, 100, Printer.Title);F := 1 to sgRes.ColCount - 1 do:= 0;TmpI := 1 to (F - 1) do:= X1 + 5 * (sgRes.ColWidths[TmpI]);:= 300;:= 0;TmpI := 1 to F do:= X2 + 5 * (sgRes.ColWidths[TmpI]);:= 450;:= Rect(X1, Y1, X2 - 30, Y2);.Canvas.Font.Style := [fsBold];.Canvas.Font.Size := 7;.Canvas.TextRect(TR, X1 + 50, 350, sgRes.Cells[F, 0]);.Canvas.Font.Style := [];TmpI := 1 to sgRes.RowCount - 1 do:= 150 * TmpI + 300;:= 150 * (TmpI + 1) + 300;:= Rect(X1, Y1, X2 - 30, Y2);.Canvas.TextRect(TR, X1 + 50, Y1 + 50, sgRes.Cells[F, TmpI]);;;.EndDoc;;.Orientation := OldOrientation;;TFCalc.bbHelpClick(Sender: TObject);(handle, nil, PChar(ExtractFilePath(ParamStr(0))+ 'spravka.chm'), nil, nil, SW_SHOW); // Вызов справки;.

ФОРМА 3Unit3;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart,, Printers;= class(TForm): TPageControl;: TTabSheet;: TTabSheet;: TTabSheet;: TChart;: TLineSeries;: TLineSeries;: TLineSeries;: TChart;: TLineSeries;: TLineSeries;: TLineSeries;: TChart;: TSurfaceSeries;: TButton;: TButton;: TButton;: TPrintDialog;Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TFCharts;Unit2, Unit1,shellapi;

{$R *.dfm}TFCharts.Button1Click(Sender: TObject);;TFCharts.Button2Click(Sender: TObject);(handle, nil, PChar(ExtractFilePath(ParamStr(0))+ 'spravka.chm'), nil, nil, SW_SHOW); // Вызов справки;TFCharts.Button3Click(Sender: TObject);, pWidth: Longint;: TPrinterOrientation;: TChart;PrintDlg.Execute thenPageControl1.TabIndex of

: TempChart := Chart1;

: TempChart := Chart2;

: TempChart := Chart3;;.Cursor := crHourGlass;:= Printer.Orientation;.Orientation := poLandScape;.BeginDoc;:= Printer.PageHeight;:= Printer.PageWidth;.PrintPartial(Rect(pWidth div 15, pHeight div 10,- (pWidth div 20), pHeight - (pHeight div 20)));.EndDoc;Exception do.Abort;.EndDoc;;;.Orientation := OldOrientation;.Cursor := crDefault;;.

ФОРМА 4Unit4;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, Buttons,Shellapi;= class(TForm): TGroupBox;: TGroupBox;: TLabel;: TGroupBox;: TBitBtn;: TBitBtn;: TTimer;: TImage;tAnimationTimer(Sender: TObject);FormDestroy(Sender: TObject);FormShow(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TFAbout;:integer;

{$R *.dfm}TFAbout.tAnimationTimer(Sender: TObject);: integer;.Canvas.Pen.Color := clWhite;.Canvas.Rectangle(0,0,Image1. Width,Image1.Height);.Canvas.Pen.Color := clBlack;.Canvas.MoveTo(0, trunc(30*sin(y))+40);x := 0 to Image1.ClientWidth do // От левого края до конца формы.Canvas.LineTo(x, trunc(30*sin(x/10+y))+40); // Собственно, рисуем график;:=y+1;;TFAbout.FormDestroy(Sender: TObject);.Enabled := False;;TFAbout.FormShow(Sender: TObject);.Enabled := True;;TFAbout.BitBtn2Click(Sender: TObject);(handle, nil, PChar(ExtractFilePath(ParamStr(0))+ 'spravka.chm'), nil, nil, SW_SHOW); // Вызов справки;TFAbout.BitBtn3Click(Sender: TObject);: integer;.Canvas.Pen.Color := clBlack; // Рисуем голубым цветом1.Canvas.MoveTo(0, 100); // Устанавливаем точку начала рисования

for x := 0 to Image1.ClientWidth do // От левого края до конца формы

begin

Image1.Canvas.LineTo(x, trunc(30*sin(x/10))+40); // Собственно, рисуем график

end;;.FormulaDLL;

{$R *.res}Formula(k0,X,E,k,Id,Em: Real): Real; stdcall;:= ((2*sqrt(2))/(3.14*k))-((2*Em*Id*X*k0)/(3.14*E*k))

end;

//k - отношение эффективного тока вторичной обмотки трансформатора к среднему выпрямленному току

//Em - коэффициент, учитывающий влияние омического падения напряжения в цепи переменного тока на среднее выпрямленное напряжение

//Id - величина выпрямленного тока

//X - (завис) реактивное сопротивление

//k0 -отношение коэффициента трансформации на данной ступени регулирования к наименьшему коэффициенту трансформации, при котором получается номинальная электродвижущая сила хода вторичной обмотки трансформатора

//E - (завис) эффективное значение электродвижущей силы

exports Formula index 1;.


СОДЕРЖАНИЕ СОДЕРЖАНИЕ РЕФЕРАТ ВВЕДЕНИЕ АЛГОРИТМИЗАЦИЯ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ МАТЕМАТИЧЕСКОЕ РЕШЕНИЕ ЗАДАЧИ РАСКРЫТИЕ ТЕМЫ КУРСОВОЙ РАБОТ

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

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

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

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

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