3 Расчет токов при помощи Micro-Cap 7.0.
При помощи ППП для моделирования аналоговых схем ( Micro-Cap 7.0 ) была построена схема 1.
Далее был проведен анализ схемы.
Программа Micro-Cap 7.0 сама произвела расчеты токов ветвей и выдала результаты:
i1 = 13.666mA
i2 = 3.086mA
i3 = 3.763mA
i4 = 9.904mA
i5 = 0.676mA = 676mkA
i6 = 12.989mA
Схема 2.
4 Оценка погрешности
Абсолютная погрешность ∆ = Iрас - Iмод
Относительная погрешность S = ∆ / Iмод * 100%
Заключение
Целью расчетно-графической работы является расчет токов ветвей методом контурных токов.
В процессе работы проводилось построение схемы, аналитическое решение, последующее написание и отладка программы для расчета токов ветвей методом контурных токов, проверка решения с помощью ППП для моделирования аналоговых схем (Micro-Cap 7.0).
Список использованных источников
-
Основы теории электрических цепей и электроники / В.П. Бакалов, А.Н.Игнатов, Б.И. Крук – Москва: Изд-во Радио и связь, 1989. – 528 с.
-
Электротехника и электроника: конспект лекций / А.В. Никонов. – Омск: Изд-во ОмГТУ, 2005. – 84 с.
-
С++ : учебные курс / Т.А. Павловская. – СПБ: Питер, 2005. – 461 с.
Приложение А
Листинг программы
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float dellR, delI1, delI2, delI3, R1, R2, R3, R4, R5, R6, V1, V2;
if ( ((Edit1->Text).Length() == 0) || ((Edit2->Text).Length() == 0) ||
((Edit3->Text).Length() == 0) || ((Edit4->Text).Length() == 0) ||
((Edit5->Text).Length() == 0) || ((Edit6->Text).Length() == 0) ||
((Edit7->Text).Length() == 0) || ((Edit8->Text).Length() == 0))
{
ShowMessage("Введены не все значения");
return;
};
R1 = StrToFloat(Edit1->Text);
R2 = StrToFloat(Edit2->Text);
R3 = StrToFloat(Edit3->Text);
R4 = StrToFloat(Edit4->Text);
R5 = StrToFloat(Edit5->Text);
R6 = StrToFloat(Edit6->Text);
V1 = StrToFloat(Edit7->Text);
V2 = StrToFloat(Edit8->Text);
dellR = (R3+R5+R1)*(R2+R3+R4)*(R6+R5+R2)+(-R3)*(-R2)*(-R5)+(-R3)*(-R2)*(-R5)-
((-R5)*(R2+R3+R4)*(-R5)+(-R2)*(-R2)*(R3+R5+R1)+(-R3)*(-R3)*(R6+R5+R2));
delI1 = V1*(R2+R3+R4)*(R6+R5+R2)+(-V2)*(-R2)*(-R5)+(-R3)*(-R2)*V2-
((-R5)*(R2+R3+R4)*V2+(-R2)*(-R2)*V1+(-V2)*(-R3)*(R6+R5+R2));
delI2 = (R3+R5+R1)*(-V2)*(R6+R5+R2)+V1*(-R2)*(-R5)+(-R3)*V2*(-R5)-
((-R5)*(-V2)*(-R5)+(-R2)*V2*(R3+R5+R1)+(-R3)*V1*(R6+R5+R2));
delI3 = (R3+R5+R1)*(R2+R3+R4)*V2+(-R3)*(-R2)*V1+(-R3)*(-V2)*(-R5)-
(V1*(R2+R3+R4)*(-R5)+(-V2)*(-R2)*(R3+R5+R1)+(-R3)*(-R3)*V2);
Edit9->Text = FloatToStr(delI1/dellR); //I1
Edit12->Text = FloatToStr(delI2/dellR); //I4
Edit14->Text = FloatToStr(delI3/dellR); //I6
Edit10->Text = FloatToStr(delI2/dellR-delI3/dellR); //I2
Edit11->Text = FloatToStr(delI1/dellR-delI2/dellR); //I3
Edit13->Text = FloatToStr(delI1/dellR-delI3/dellR); //I5
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
ShowMessage("Расчет токов ветвей методом контурных токов. Сопротивление указывается в Ом'ах. Источники питания в Вольтах.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if ( ( Key >= '0') && ( Key <= '9' ) )
return;
if ( Key == DecimalSeparator)
{
if ( (Edit1->Text).Pos(DecimalSeparator) != 0 )
Key = 0;
return;
}
if (Key == VK_BACK)
return;
if ( Key == VK_RETURN)
{
Edit2->SetFocus();
return;
};
Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{
if ( ( Key >= '0') && ( Key <= '9' ) )
return;
if ( Key == DecimalSeparator)
{
if ( (Edit1->Text).Pos(DecimalSeparator) != 0 )
Key = 0;
return;
}
if (Key == VK_BACK)
return;
if ( Key == VK_RETURN)
{
Edit2->SetFocus();
return;
};
Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
{
if ( ( Key >= '0') && ( Key <= '9' ) )
return;
if ( Key == DecimalSeparator)
{
if ( (Edit1->Text).Pos(DecimalSeparator) != 0 )
Key = 0;
return;
}
if (Key == VK_BACK)
return;
if ( Key == VK_RETURN)
{
Edit2->SetFocus();
return;
};
Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit4KeyPress(TObject *Sender, char &Key)
{
if ( ( Key >= '0') && ( Key <= '9' ) )
return;
if ( Key == DecimalSeparator)
{
if ( (Edit1->Text).Pos(DecimalSeparator) != 0 )
Key = 0;
return;
}
if (Key == VK_BACK)
return;
if ( Key == VK_RETURN)
{
Edit2->SetFocus();
return;
};
Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit5KeyPress(TObject *Sender, char &Key)
{
if ( ( Key >= '0') && ( Key <= '9' ) )
return;
if ( Key == DecimalSeparator)
{
if ( (Edit1->Text).Pos(DecimalSeparator) != 0 )
Key = 0;
return;
}
if (Key == VK_BACK)
return;
if ( Key == VK_RETURN)
{
Edit2->SetFocus();
return;
};
Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit6KeyPress(TObject *Sender, char &Key)
{
if ( ( Key >= '0') && ( Key <= '9' ) )
return;
if ( Key == DecimalSeparator)
{
if ( (Edit1->Text).Pos(DecimalSeparator) != 0 )
Key = 0;
return;
}
if (Key == VK_BACK)
return;
if ( Key == VK_RETURN)
{
Edit2->SetFocus();
return;
};
Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit7KeyPress(TObject *Sender, char &Key)
{
if ( ( Key >= '0') && ( Key <= '9' ) )
return;
if ( Key == DecimalSeparator)
{
if ( (Edit1->Text).Pos(DecimalSeparator) != 0 )
Key = 0;
return;
}
if (Key == VK_BACK)
return;
if ( Key == VK_RETURN)
{
Edit2->SetFocus();
return;
};
Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit8KeyPress(TObject *Sender, char &Key)
{
if ( ( Key >= '0') && ( Key <= '9' ) )
return;
if ( Key == DecimalSeparator)
{
if ( (Edit1->Text).Pos(DecimalSeparator) != 0 )
Key = 0;
return;
}
if (Key == VK_BACK)
return;
if ( Key == VK_RETURN)
{
Edit2->SetFocus();
return;
};
Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
ShowMessage ("Программа к расчетно-графической работе по ЭТиЭ. Выполнил Игнатов Н.С. ИВТ-264.");
}
//---------------------------------------------------------------------------