Автор работы: Пользователь скрыл имя, 25 Декабря 2012 в 21:03, курсовая работа
Целью данного курсового проекта является получение законов изменения электрических величин во времени, расчет машин в режиме двигателя и генератора, а так же асинхронных двигателей. Для этого необходимо изучить методику расчета электрических цепей и расчетов двигателей. Решение должно быть получено в результате выполнения соответствующей программы для ЭВМ, составленной самим студентом.
ВВЕДЕНИЕ 4
1. ПОСТАНОВКА ЗАДАЧИ 5
2. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ 6
3. ВЫБОР АЛГОРИТМА И МЕТОДОВ РЕШЕНИЯ ЗАДАЧ ПРОЕКТИРОВАНИЯ 7
3.1 МЕТОД РАСЧЕТА ИНТЕГРАЛА ДЮАМЕЛЯ 7
3.2 ЭЛЕКТРИЧЕСКИЕ МАШИНЫ ПОСТОЯННОГО ТОКА 11
3.3 ТРЕХФАЗНЫЕ АСИНХРОННЫЕ ДВИГАТЕЛИ 15
4. ПРОГРАМНАЯ РЕАЛИЗАЦИЯ 19
4.1 C++BUILDER 6 19
4.2ОПИСАНИЕФУНКЦИЙ 22
4.3 КОД ПРОГРАММЫ. 23
4.4 БЛОК – СХЕМА ВЫВОДА ГРАФИКОВ 51
ЗАКЛЮЧЕНИЕ 52
ЛИТЕРАТУРА. 53
{
//Бегущая строка;
static String InitialCaption = GradientLabel1->Caption;
GradientLabel1->Caption = GradientLabel1->Caption.
if(!Caption.Length())
GradientLabel1->Caption = InitialCaption;
}
//----------------------------
void
__fastcall TForm1::ColorButton1Click(
{
double n1,I1nom,Snom,Nnom=0.795,
double P1nom,Mnom;
//Частота вращения магнитного поля;
float f=Edit1->Text.ToDouble();
int p=Edit2->Text.ToInt();
float n2nom=Edit8->Text.ToDouble();
float Pnom=Edit9->Text.ToDouble();
float U1nom=Edit10->Text.ToDouble();
n1=60*f/p;
Form1->Edit3->Text=FloatToStr(
//Скольжение в номинальном режиме;
Snom=1-n2nom/n1;
Form1->Edit7->Text=
//Номинальный момент двигателя;
Mnom=Pnom*9.55/n2nom;
Form1->Edit4->Text=
//Активная мощность подведенная к двигателю;
P1nom=Pnom/Nnom;//Nnom-КПД;
Form1->Edit5->Text=
//Номинальный ток двигателя;
I1nom=P1nom/(sqrt(3)*U1nom*
Form1->Edit6->Text=
//Построение графиков;
Form1->Chart1->Series[0]->
Form1->Chart1->Series[1]->
Form2->Chart1->Series[0]->
Form2->Chart2->Series[0]->
int g=0;
// for(int i = 1; i<StringGrid1->RowCount; i++)
for(int j = 1; j<StringGrid1->ColCount; j++)
{
//StringGrid1->Cells[i][j]=
x[g]=StrToFloat(StringGrid1->
y[g]=StrToFloat(StringGrid1->
z[g]=StrToFloat(StringGrid1->
Form1->Chart1->Series[0]->
Form1->Chart1->Series[1]->
P1nom=Pnom/y[g];//Nnom-КПД;
Form2->Chart1->Series[0]->
I1nom=P1nom/(sqrt(3)*U1nom*z[
Form2->Chart2->Series[0]->
g++;
}
for(int i=0; i<g; i++)
{
Memo1->Lines->Add(FloatToStrF(
Memo1->Lines->Add(FloatToStrF(
Memo1->Lines->Add(FloatToStrF(
Memo1->Lines->Add("\n");
}
}
//----------------------------
void
__fastcall TForm1::ColorButton2Click(
{
if (MessageBox(0,"вы действительно хотите поменять параметры?","внимание!!!", MB_YESNO) == mrYes)
{
Edit1->Text="50";
Edit2->Text="2";
Edit8->Text="1475";
Edit9->Text="4500";
Edit10->Text="380";
}
}
//----------------------------
void
__fastcall TForm1::ColorButton3Click(
{
if (MessageBox(0,"вы действительно хотите посмотреть графики?","внимание!!!", MB_YESNO) == mrYes)
{
Form2->Visible=true;
}
}
//----------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
char WinDirChar[255];
GetWindowsDirectory(
String IniFile = (String)WinDirChar +"\\INIin1.ini";
TIniFile *Ini = new TIniFile(IniFile);
// Запись в ini файл;
//Асинхронные двигатели;
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
//МПТ в режиме генератора;
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
//МПТ в режиме двигателя;
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
//Для четырехполюсников;
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
Ini->WriteString("Edits","
//Для самой формы;
Form1->Left = Ini->ReadInteger("Position","
Form1->Top = Ini->ReadInteger("Position","
Form1->Height = Ini->ReadInteger("Size","
Form1->Width = Ini->ReadInteger("Size","
}
//----------------------------
void
__fastcall TForm1::BitmapButton6Click(
{
//Загрузка параметров;
// загрузка (-------)
Form1->AdvProgressBar1->Max=
Form1->AdvProgressBar1->
for(char g=0;g<=100;g++)
{
Form1->AdvProgressBar1->
Sleep(10);//Делаем задержку;
}
//МПТ в режиме генератра;
float Pnom=Edit11->Text.ToDouble();
float Unom=Edit12->Text.ToDouble();
float nnom=Edit13->Text.ToDouble();
float Ria=Edit14->Text.ToDouble();
float Rv=Edit15->Text.ToDouble();
float Inom,Iv,Iianom,Eia,Pem,w,n,Pm,
//3.1 Номинальный ток генератора;
Inom=Pnom/Unom;
Form1->Edit16->Text= FloatToStrF(Inom,ffFixed,8,3)+
//3.2 Ток возбуждения;
Iv=Unom/Rv;
//3.3 Ток якоря в номинальном режиме;
Iianom=Inom+Iv;
//3.4 ЭДС якоря;
Eia=Unom+(Iianom*Ria);
Form1->Edit17->Text= FloatToStrF(Eia,ffFixed,8,3)+" В";
//3.5 Электромагнитная мощность;
Pem=Eia*Iianom;
//3.5 Электромагнитный момент;
const float pi=3.14;
w=(pi*nnom)/30;
n=Pem/w;
Form1->Edit19->Text= FloatToStrF(n,ffFixed,8,3)+" Нм";
//3.7 Мощность механических,магнитных и добавочных потерь;
Pm=0.06*Pnom;
//3.8 Мощность электрических потерь в цепи якоря;
Pne=Ria*pow(Iianom,2);
//3.9 Мощность электрических потерь в цепи возбуждения;
Pnv=pow(Iv,2)*Rv;
//3.10 Мощность потерь в генераторе;
Pob=Pm+Pne+Pnv;
//3.11 Мощность первичного двигателя;
P1=Pnom+Pob;
Form1->Edit20->Text= FloatToStrF(P1,ffFixed,8,3)+" Вт";
//3.12 КПД генератора;
kpd=(P1-Pob)/P1;
Form1->Edit18->Text= FloatToStrF(kpd,ffFixed,8,3)+"
ShowMessage("Загрузка параметров завершена!!!");
}
//----------------------------
void
__fastcall TForm1::ColorButton4Click(
{
if (MessageBox(0,"вы действительно хотите поменять параметры?","внимание!!!", MB_YESNO) == mrYes)
{
Edit11->Text=10000;
Edit12->Text=230;
Edit13->Text=1450;
Edit14->Text=0.3;
Edit15->Text=150;
Form1->AdvProgressBar1->Max=
Form1->AdvProgressBar1->
for(char g=0;g<=100;g++)
{
Form1->AdvProgressBar1->
Sleep(10);//Делаем задержку;
}
ShowMessage("Загрузка параметров завершена!!!");
}
}
//----------------------------
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (MessageBox(0,"вы действительно хотите выйти из программы?","внимание!!!", MB_YESNO) == mrYes)
CanClose=true;
else CanClose=false;
}
//----------------------------
void
__fastcall TForm1::BitmapButton5Click(
{
//Загрузка параметров;
// загрузка (-------)
Form1->AdvProgressBar2->Max=
Form1->AdvProgressBar2->
for(char g=0;g<=100;g++)
{
Form1->AdvProgressBar2->
Sleep(10);//Делаем задержку;
}
//МПТ в режиме двигателя;
float Pnom1=Edit21->Text.ToDouble();
float Unom1=Edit22->Text.ToDouble();
float nnom1=Edit23->Text.ToDouble();
float Ria1=Edit24->Text.ToDouble();
float kpd2=Edit25->Text.ToDouble();
float P1nom,Inom1,Iianom1,Ip,Iiap,
float Mo,Ioia,Io,w2,no;
//1.Потребляемая из сети мощность в номинальном режиме;
P1nom=Pnom1/kpd2;
//2.Номинальный ток двигателя;
Inom1=P1nom/Unom1;
Form1->Edit26->Text= FloatToStrF(Inom1,ffFixed,8,3)
//3.Номинальный ток якоря;
const float Iv1=3.44;
Iianom1=Inom1-Iv1;
//4.Начальный пусковой момент при заданной начальной пусковой кратности;
Ip=Inom1*2;
//5.Начальный пусковой ток
Iiap=Ip-Iv1;
//6.Начальное сопротивление
Rp=Unom1/Iiap;
//7.Пусковое сопротивление;
Rv=Rp-Ria1;
Form1->Edit27->Text= FloatToStrF(Rv,ffFixed,8,3)+" Ом";
//8.Номинальная угловая скорость врщения;
const float pi=3.14;
w1=(pi*nnom1)/30;
//9.ЭДС якоря при номинальной нагрузке;
Eia1=Unom1-Iianom1*Ria1;
//10.Постоянная машина при
CoF=Eia1/w1;
//11.Электромагнитный
// Mp=CoF*Iiap;
//12.Электромагнитный момент
Mnom=CoF*Iianom1;
//13.Полезный вращающий
Mpol=Pnom1/w1;
//14.Момент холостого хода;
Mo=Mnom-Mpol;
Form1->Edit29->Text= FloatToStrF(Mo,ffFixed,8,3)+" Нм";
//15.Ток якоря в режиме холостого хода;
Ioia=Mo/CoF;
//16.Ток холостого двигателя;
Io=Ioia+Iv1;
Form1->Edit30->Text= FloatToStrF(Io,ffFixed,8,3)+" A";
//17.Частота вращения в режиме холостого хода;
w2=(Unom1-(Ioia*Ria1))/CoF;
no=30*w2/pi;
Form1->Edit28->Text= FloatToStrF(no,ffFixed,8,3)+" об/мин";
ShowMessage("Загрузка параметров завершена!!!");
}
//----------------------------
void
__fastcall TForm1::ColorButton5Click(
{
if (MessageBox(0,"вы действительно хотите поменять параметры?","внимание!!!", MB_YESNO) == mrYes)
{
Edit21->Text=4200;
Edit22->Text=220;
Edit23->Text=1450;
Edit24->Text=0.15;
Edit25->Text=0.78;
Form1->AdvProgressBar2->Max=
Form1->AdvProgressBar2->
for(char g=0;g<=100;g++)
{
Form1->AdvProgressBar2->
Sleep(10);//Делаем задержку;
}
ShowMessage("Загрузка параметров завершена!!!");
}
}
//----------------------------
void
__fastcall TForm1::ColorButton6Click(
{
if (MessageBox(0,"вы действительно хотите поменять параметры?","внимание!!!", MB_YESNO) == mrYes)
{
Edit31->Text=15;
Edit32->Text=1.2;
Edit33->Text=22000;
Edit34->Text=0.000125;
Form1->AdvProgressBar3->Max=
Form1->AdvProgressBar3->
for(char g=0;g<=100;g++)
{
Form1->AdvProgressBar3->
Sleep(10);//Делаем задержку;
}
ShowMessage("Загрузка параметров завершена!!!");
}
}
//----------------------------
void
__fastcall TForm1::BitmapButton7Click(
{
//Загрузка параметров;
// загрузка (-------)
Form1->AdvProgressBar3->Max=
Form1->AdvProgressBar3->
for(char g=0;g<=100;g++)
{
Form1->AdvProgressBar3->
Sleep(10);//Делаем задержку;
}
//Очистка графиков;
Form3->Chart1->Series[0]->
Form3->Chart2->Series[0]->
Form3->Chart1->Series[1]->
Form3->Chart2->Series[1]->
double X=Edit33->Text.ToDouble();
double Y=Edit34->Text.ToDouble();
function r;
r.Set( X, Y);
r.Run();
//M(p)=0;
// float p1=-2.75/2;
// float p2=p1;
//Решение квадратного уравнения;
double x1,x2,x3,x4;
double A=pow(X,2)*pow(Y,2);
double R11=22000;double C11=0.000125;
double A1=pow(R11,2)*pow(C11,2);
double B=4*X*Y;
double B1=4*R11*C11;
double C=4;
double C1=4;
double D;
double D1;
const double t=1e-8;
double Np1=1;
double Np2=1;
double Mp1,Mp2;
double Mp3,Mp4;
int q=0;
if (abs(A1)<t && abs(B1)<t && abs(C1)<t )
{
ShowMessage("Уравнение выраждено!!");
}
else
{
D1=pow(B1,2)-4*A1*C1;
}
if(D1>-t)
{
if(abs(D1)<t)
{
D1=0;
x3=(-B1)/(2*A1);
x4=x3;
Mp3=2.0*7.56*x3+11.0;
Mp4=2.0*7.56*x4+11.0;
ShowMessage("2 одинаковых корня!!");
q=1;
}
else
{
x3=(-B1+sqrt(D1))/(2*A1);
x4=(-B1-sqrt(D1))/(2*A1);
Mp3=2.0*7.56*x3+11.0;
Mp4=2.0*7.56*x4+11.0;
ShowMessage(" 2 разных корня!");
q=1;
}
}
else
{
ShowMessage("Действительных корней нет!!!");
}
double Mp33=Np1/Mp3;
double Mp44=Np2/Mp4;
Form1->Edit35->Text= FloatToStrF(x3,ffFixed,6,4);
Form1->Edit36->Text= FloatToStrF(x4,ffFixed,6,4);
//----------------------------
int z=0;
if (abs(A)>t && abs(B)>t )
{
D=pow(B,2)-4*A*C;
}
else
{
ShowMessage("Уравнение выраждено!!!");
z=1;
}
if(z!=1)
{
if(D>-t)
{
if(abs(D)<t)
{
D=0;
x1=(-B)/(2*A);
x2=x1;
Mp1=(2.0*7.56*x1+11.0);
Mp2=2.0*7.56*x2+11.0;
ShowMessage("2 одинаковых корня");
z=0;
q=1;
}
else
{
x1=(-B+sqrt(D))/(2*A);
x2=(-B-sqrt(D))/(2*A);
Mp1=(2.0*7.56*x1+11.0);
Mp2=(2.0*7.56*x2+11.0);
q=1;
z=0;
ShowMessage("2 разных корня");
}
}
else
{
ShowMessage("Действительных корней нет!!!");
z=1;
};
};
double Mp11=Np1/Mp1;
double Mp22=Np2/Mp2;
if(z!=1)
{
Form1->Edit37->Text= FloatToStrF(x1,ffFixed,6,4);
Form1->Edit38->Text= FloatToStrF(x2,ffFixed,6,4);
};
//----------------------------
float Uvix1,Uvix2;
for(float l=0;l<=5;l+=0.2)
{
if(q==1)
{
if (z!=1)
{
Uvix1=(Np1*exp(x1*l)/Mp1)+(
Form3->Chart3->Series[0]->
}
Uvix2=(Np1*exp(x3*l)/Mp3)+(
Form3->Chart3->Series[1]->
}
else
{
if(z!=1)
{
Uvix1=(Np1*exp(x1*l)/Mp1)+(
Form3->Chart3->Series[0]->
}
Информация о работе Современные методы программирования и теоретические основы электротехники