- •С п и ш э
- •Дипломный проект Пояснительная записка
- •Содержание
- •1.1.1. Электронные лампы
- •1.1.1.1. Принцип работы электронных ламп
- •1.1.1.2. Виды электронных ламп
- •1.1.1.3. Конструкции радиоламп
- •1.1.2. Расчетные формулы
- •1.2. Анализ методов решения
- •1.4.1. Общие сведения.
- •1.4.2. Элементы языка Visual Basic. Т и п ы д а н н ы х .
- •Объявление переменных и констант.
- •М а с с и в ы .
- •Операторы управления.
- •1.4.3. Графические методы и функции.
- •Val(String as String) as Double
- •1.4.4. Окно кода.
- •1.4.5. Отладка программы.
- •2.1.1. Основание для разработки.
- •2.1.2. Назначение программы.
- •2.1.3. Технико-математическое описание задачи.
- •2.1.4. Требования к программе.
- •2.1.4.1. Требования к функциональным характеристикам.
- •2.1.4.2. Требования к надежности.
- •2.1.4.3. Требования к техническим средствам.
- •2.2. Описание схемы программы
- •2.2.1. Описание схемы основной программы (модуля).
- •2.2.2. Описание схемы модуля расчета термонапряжений в аноде мгп.
- •2.2.3. Описание схемы модуля построения графиков.
- •2.3. Текст программы Visual Basic 6.0
- •2.4. Описание программы
- •2.4.1 Общие сведения.
- •2.4.2.Функциональное назначение.
- •2.4.3. Описание логической структуры.
- •2.4.4. Вызов и загрузка.
- •2.5. Описание процесса отладки программы
- •2.6. Пример результатов работы программы
- •3.1. Описание задачи разрабатываемой программы
- •3.2. Экономические расчеты
- •3.2.1. Исходные данные
- •3.2.2. Стоимостная оценка затрат по проекту
- •3.2.3. Стоимостная оценка результата от вложения средств
- •3.2.4. Расчет экономического эффекта за расчетный период
- •3.3. Описание технического и социального эффекта
- •3.4. Выводы
- •4. Мероприятия по обеспечению безопасности жизнедеятельности
- •4.1. Воздействие электрического тока на организм человека.
- •Заключение
- •Список литературы:
2.3. Текст программы Visual Basic 6.0
*** Описание структуры меню главной формы ***
Begin VB.Menu Menu
Caption = “Меню”
Begin VB.Menu Default
Caption = “Defaults”
Shortcut = ^D
End
Begin VB.Menu Exit
Caption = “Выход”
Shortcut = {F4}
End
End
Begin VB.Menu Help
Caption = “Справка”
Begin VB.Menu About
Caption = «О программе»
End
Begin VB.Menu ObAnode
Caption = «кр. Описание»
End
End
Attribute VB_Name = “MainForm”
*** Текст основного модуля программы (MainForm.frm) ***
'обработка команд меню.
Private Sub About_Click()
frmAbout.Visible = True
End Sub
Private Sub ObAnode_Click()
Anode.Visible = True
End Sub
Private Sub Exit_Click()
Unload Me
End Sub
'Установка значений по умолчанию.
Private Sub Default_Click()
Text1.Text = “3”: Text2.Text = “3.5”: Text3.Text = “3.77”
Text4.Text = “1.1”: Text5.Text = “11.7”: Text6.Text = “170”
Text7.Text = “0.3”: Text8.Text = “100”: Text11.Text = “10”
Text9.Text = “300”: Text10.Text = “15”
End Sub
'ВЫБОР: медь или другой материал.
Private Sub Option1_Click()
If Option1.Value = True Then
Text3.Enabled = False: Text4.Enabled = False
Text5.Enabled = False: Text6.Enabled = False
Text7.Enabled = False
End If
Text3.Text = “3.77”: Text4.Text = “1.1”: Text5.Text = “11.7”
Text6.Text = “170”: Text7.Text = “0.3”
End Sub
Private Sub Option2_Click()
If Option2.Value = True Then
Text3.Enabled = True: Text4.Enabled = True
Text5.Enabled = True: Text6.Enabled = True
Text7.Enabled = True
End If
End Sub
'ОБРАБОТКА ОШИБОК ВВОДА РАДИУСОВ.
Private Sub Text1_Change()
If Val(Text1.Text) >= Val(Text2.Text) Then
MsgBox «Внутренний радиус должен быть меньше наружного.», , «Ошибка!»
ElseIf (Text1.Text = “”) Or Val(Text1.Text) = 0 Then
MsgBox «Внутрений радиус д.б. строго больше нуля!», , «Ошибка!»
End If
End Sub
Private Sub Text2_Change()
If Val(Text1.Text) >= Val(Text2.Text) Then
MsgBox «Наружный радиус должен быть больше внутреннего.», , «Ошибка!»
ElseIf (Text2.Text = “”) Or Val(Text2.Text) = 0 Then
MsgBox «Наружный радиус необходимо ввести!», , «Ошибка!»
End If
End Sub
'Нажатия на кнопки MainForm.
Private Sub Command1_Click()
Tempety.Visible = True
End Sub
Private Sub Command2_Click()
Graph1.Visible = True
End Sub
'кнопка выходa из программы.
Private Sub Command3_Click()
Unload Me
End Sub
*** Текст модуля расчета и вывода таблицы (Tables.frm) ***
'Вывод таблицы температур и термонапряжений.
Private Sub Calculate_Click()
'Массив(разбиения_радиус,обр_шаг_время).
Dim Mas(31, 500001) As Double
Dim Temp, Vrema As Double
Const Sigma = 0.00000000000567
Label9.Caption = “Идет расчёт...”
List1.Clear: List2.Clear
List3.Clear: List4.Clear: List5.Clear
'получение значений переменных из Главной формы.
Rvn = Val(MainForm.Text1.Text)
Rnar = Val(MainForm.Text2.Text)
Lamda = Val(MainForm.Text3.Text)
Alpha = Val(MainForm.Text4.Text)
Uprug = Val(MainForm.Text5.Text)
KLR = Val(MainForm.Text6.Text)
Eps = Val(MainForm.Text7.Text)
Power = Val(MainForm.Text8.Text)
Tzero = Val(MainForm.Text9.Text)
Discr = Val(MainForm.Text10.Text)
Vrema = Val(MainForm.Text11.Text)
'вычисление шага по R и по времени.
Step = (Rnar – Rvn) / Discr ‘-dR
Step_t = (Step * Step) / 6 ‘-dT
Uprug = Uprug * 1000000 ‘x 10v6y
KLR = KLR * 0.00000001 ‘x 10v-7y
'Установка начальной температуры.
For i = 0 To Discr
Mas(i, 0) = Tzero
Next i
VremaX = 0
'цикл по заданному времени работы.
For j = 0 To (Vrema / Step_t)
Ri = Rvn
Mas(0, j) = Mas(1, j) + (Power * Step / Lamda) ‘1-e граничное условие.
For i = 1 To Discr
Ri = Ri + Step 'наращивание переменной радиуса на один шаг.
Temp = (Mas(i – 1, j) – 2 * Mas(i, j) + Mas(i + 1, j)) / (Step * Step)
Temp = Temp + (Mas(i + 1, j) – Mas(i – 1, j)) / (2 * Ri * Step)
Mas(i, j + 1) = Mas(i, j) + Step_t * Alpha * Temp
Next i 'цикл по числу разбиений радиуса анода закончился.
Temp = Mas(Discr, j) * Mas(Discr, j) * Mas(Discr, j) * Mas(Discr, j)
Temp = Temp – Tzero * Tzero * Tzero * Tzero ‘2-e граничное условие.
Mas(Discr, j + 1) = Mas(Discr – 1, j + 1) - Temp * (Eps * Sigma * Step) / Lamda
VremaX = VremaX + Step_t
Ri = Rvn
'вывод значений в таблицу и расчет термонапряжений.
If j Mod Val(Text1.Text) = 0 Then 'вывод строк через заданное число.
S1 = 0: S2 = 0
For i = 2 To Discr Step 2 ‘цикл расчета “Tsr” Методом Симпсона.
S1 = S1 + Mas(i, j)
S2 = S2 + Mas(i – 1, j)
Next i
Integ = (Step/3)*(Mas(0,j)+ 2*S1+ 4*(S2+Mas(Discr-1,j))+Mas(Discr,j))
Tsr = Integ / (Rnar – Rvn) 'средняя температура в сечении анода.
Temp_val = Format(VremaX, “00.0000”)
List1.AddItem (Temp_val) ‘Temp_val – временное значение.
Temp_val = Format(Mas(1, j) – 273.15, “#.000”)
List2.AddItem (Temp_val) ‘Температура R-внутр.
Temp_val = Format(Mas(Discr, j) – 273.15, “#.000”)
List3.AddItem (Temp_val) ‘Температура R-наружн.
Temp_val = Format(KLR * Uprug * (Mas(0, j) – Tsr), “#.000”)
List4.AddItem (Temp_val) 'Вывод термонапряжений в столбцы 4 и 5.
Temp_val = Format(KLR * Uprug * (Tsr – Mas(Discr, j)), “#.000”)
List5.AddItem (Temp_val) 'вывод значений с форматом закончен.
End If
Next j 'повторение цикла по времени работы.
Label9.Caption = “Status: Сделано.”
End Sub
'организация общей прокрутки всех столбцов (ListIndex-номер строки).
Private Sub List1_Click()
List2.ListIndex = List1.ListIndex: List3.ListIndex = List1.ListIndex
List4.ListIndex = List1.ListIndex: List5.ListIndex = List1.ListIndex
End Sub
Private Sub List2_Click()
List1.ListIndex = List2.ListIndex: List3.ListIndex = List2.ListIndex
List4.ListIndex = List2.ListIndex: List5.ListIndex = List2.ListIndex
End Sub
Private Sub List3_Click()
List1.ListIndex = List3.ListIndex: List2.ListIndex = List3.ListIndex
List4.ListIndex = List3.ListIndex: List5.ListIndex = List3.ListIndex
End Sub
Private Sub List4_Click()
List1.ListIndex = List4.ListIndex: List2.ListIndex = List4.ListIndex
List3.ListIndex = List4.ListIndex: List5.ListIndex = List4.ListIndex
End Sub
Private Sub List5_Click()
List1.ListIndex = List5.ListIndex: List2.ListIndex = List5.ListIndex
List3.ListIndex = List5.ListIndex: List4.ListIndex = List5.ListIndex
End Sub
*** Текст модуля построения графиков (Graph1.frm) ***
'расчет и построение графиков температуры.
Private Sub Calculate_Click()
'Массив(разбиения_радиус,обр_шаг_время).
Label5.Caption = “Status: Считаю...”
Dim Mas(31, 500001) As Double
Dim Temp As Double ‘общая переменная.
Const Sigma = 0.00000000000567
'получение значений переменных из Главной формы.
Rvn = Val(MainForm.Text1.Text)
Rnar = Val(MainForm.Text2.Text)
Lamda = Val(MainForm.Text3.Text)
Alpha = Val(MainForm.Text4.Text)
Uprug = Val(MainForm.Text5.Text)
KLR = Val(MainForm.Text6.Text)
Eps = Val(MainForm.Text7.Text)
Power = Val(MainForm.Text8.Text)
Tzero = Val(MainForm.Text9.Text)
Discr = Val(MainForm.Text10.Text)
Vrema = Val(MainForm.Text11.Text)
'вычисление шага по R и по времени.
Step = (Rnar – Rvn) / Discr ‘-dR
Step_t = (Step * Step) / 6 ‘-dT
Uprug = Uprug * 1000000 ‘x 10v6y
KLR = KLR * 0.00000001 ‘x 10v-7y
'Установка начальной температуры.
For i = 0 To Discr
Mas(i, 0) = Tzero
Next i
'масштабирование графика термонапряжений.
Pic2.Scale (0, 1200)-(Vrema / Step_t, 0)
'цикл по заданному времени работы лампы.
For j = 0 To (Vrema / Step_t)
Ri = Rvn
Mas(0, j) = Mas(1, j) + (Power * Step / Lamda) ‘1-e граничное условие.
For i = 1 To Discr
Ri = Ri + Step 'наращивание переменной радиуса на один шаг.
Temp = (Mas(i – 1, j) – 2 * Mas(i, j) + Mas(i + 1, j)) / (Step * Step)
Temp = Temp + (Mas(i + 1, j) – Mas(i – 1, j)) / (2 * Ri * Step)
Mas(i, j + 1) = Mas(i, j) + Step_t * Alpha * Temp
Next i 'цикл по числу разбиений радиуса анода закончился.
Temp = Mas(Discr, j) * Mas(Discr, j) * Mas(Discr, j) * Mas(Discr, j)
Temp = Temp – Tzero * Tzero * Tzero * Tzero ‘2-e граничное условие.
Mas(Discr, j + 1) = Mas(Discr – 1, j + 1) - Temp * (Eps*Sigma*Step)/Lamda
VremaX = VremaX + Step_t
If Max_Temp < Mas(0, j) Then Max_Temp = Mas(0, j) ‘нахождение максимума.
'расчет термонапряжений и построение их графика.
If j Mod 10 = 1 Then 'вывод через каждые десять значений времени.
S1 = 0: S2 = 0
For i = 2 To Discr Step 2 'Вычисление интеграла методом Симпсона.
S1 = S1 + Mas(i, j)
S2 = S2 + Mas(i – 1, j)
Next i
Integ = (Step/3)*(Mas(0,j)+ 2*S1 + 4*(S2+Mas(Discr-1,j)) + Mas(Discr,j))
Tsr = Integ / (Rnar – Rvn) 'средняя температура в сечении.
'рисование линий графика термонапряжений (нижнего).
Pic2.Line (j, KLR * Uprug * (Mas(0, j) – Tsr) + 600)-(j + 10, KLR * Uprug * (Mas(0, j) – Tsr) + 600), vbRed
Pic2.Line (j, KLR * Uprug * (Tsr – Mas(Discr, j)) + 600)-(j + 10, KLR * Uprug * (Tsr – Mas(Discr, j)) + 600), vbBlue
End If
Next j
'заполнение значениями надписей на форме.
Max_Temp = Round(Max_Temp – 273.15)
Label9.Caption = Max_Temp
Label8.Caption = Max_Temp * 3 / 4
Label7.Caption = Max_Temp / 2
Label6.Caption = Max_Temp / 4
Label_t.Caption = Vrema
Label_t2.Caption = Vrema / 2
Label_t34.Caption = Vrema * 3 / 4
Label_t14.Caption = Vrema / 4
Label5.Caption = “Status: Выполнено.”
'Масштабирование первого рисунка (график температуры).
Pic1.Scale (0, Max_Temp)-(Vrema / Step_t, 0)
For j = 0 To Vrema / Step_t 'рисование внутр. Графика.
Pic1.Line (j, Mas(0, j) – 273)-(j + 1, Mas(0, j) – 273), vbRed
'рисование наруж. Графика.
Pic1.Line (j, Mas(Discr, j) – 273)-(j + 1, Mas(Discr, j) – 273), vbBlue
Next j
End Sub
'закрытие и выгрузка формы.
Private Sub Close_Click()
Unload Me
End Sub
*** Программный код формы frmAbout.frm ***
'форма вывода информации о программе.
Private Sub Form_Load()
Me.Caption = «О программе « & App.Title
lblVersion.Caption = “Версия“&App.Major&”.”&App.Minor&”.”&App.Revision&”(b)”
End Sub
'выгрузка по кнопке «OK».
Private Sub cmdOK_Click()
Unload Me
End Sub