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

  • Вид работы:
    Отчет по практике
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    430,98 kb
  • Опубликовано:
    2011-10-10
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Министерство образования и науки Республики Казахстан

Карагандинский государственный технический университет

Кафедра автоматизации производственных процессов им. В.Ф. Бырьки









ОТЧЕТ

по вычислительной практике

Руководитель

Калинин А.А

Студент: АиУ 09-3(группа)

Колосков И. Г







2011г.

Цель работы: Настоящая работа ориентирована на индивидуальное изучение задачи расчета переходных процессов в электрических цепях фиксированной структуры в процессе самостоятельной разработки, отладки и использования комплекса диалоговых программ, работающих в среде современных информационных технологий на базе персональных компьютеров.

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

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

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

Разработать алгоритм, спроектировать диалоговую программу модульной структуры для расчета переходного процесса в заданной электрической цепи и написать исходные тексты программных модулей на изучаемом языке программирования;

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

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

Вариант 9

Исходные данные приведены на рисунке 1


Рисунок 1 - Исходные данные

Метод: Рунге-Кутта с переменным шагом

Краткое описание метода численного интегрирования Рунге-Кутта с переменным шагом:

Для запуска вычислительной схемы необходимы следующие исходные данные: начальное значение шага интегрирования h, интервал определения независимого переменного [to,tk], начальное значение искомой функции f(to)=yo, заданная точность вычисления искомой функции Е на каждом шаге интегрирования.

Вычислительная схема метода определяется следующими действиями:

. Отыскиваются:

.1. Приближенное решение W в точке ti+h с шагом h по формулам:

W=yi-1+(K1+2K2+2K3+K4)/6                                                            (1)1=hf(ti-1, yi-1)                                                                                (2)2=hf(ti-1+h/2, yi-1+K1/2)                                                                          (3)3=hf(ti-1+h/2, yi-1+K2/2)                                                                          (4)4=hf(ti-1+h, yi-1+K3)                                                                      (5)

.2 Приблеженное решение Х в точке ti-1+h/2 c шагом h/2 по формуле.

X=yi-1+(K1+2K2+2K3+K4)/6                                                             (10)

.3 Уточняется приближенное решение X1 в точке ti-1+h c шагом h/2 по значению решения X в точке ti-1+h/2.

X1=X + (K1+2K2+2K3+K4)/6,                                                          (11)

Параметры K1-K4 вычисляется в (10) и (11) по формулам (9), по с шагом h/2.

. Проверяется выполнение одного из неравенств:

|W - X1| ≤ E, при |W| ≤ 1

|W - X1| ≤ E|W|, при |W| > 1

Если не выполняются ни одно из неравенств, то исходный шаг делится пополам, т.е. h=h/2 и выполняется возврат к действию 1. В противном случае вычисляется уточненное решение в точке ti-1+h

Yi=X1 - (W - X1) / 15 (12)

3. Определяется шаг h, с которым будет вычисляться решение в следующей точке. Если 32 x |W - X1| > E, то шаг остается таким, каким он получен на предыдущей точке. Иначе шаг удваивается, т.е.h=2h.

. Проверяется условие ti>tk. Если оно выполняется, то искомая функция определена на заданном интервале независимого переменного [to,tk].

Процесс разработки приложения

Для приложения используем стиль приложения интерфейса MDI (multiple document interface) т.е. интерфейс с многими документами. Родительская форма содержит строку функционального меню приложения и на нем размещаются четыре дочерних формы (для ввода исходных данных, для интегрирования потокосцепления и расчета процессов, для вывода процессов в таблицу, для вывода трех графиков процессов).

Интерфейс MDI обеспечивает создание приложений, которые содержат несколько форм в одной Родительской форме-контейнере. Это позволяет пользователю приложения отображать несколько документов одновременно так, что каждый документ отображается в своей дочерней форме и соответствует реализации некоторой функциональной команды. Проектируемое приложение должно обладать функциональностью, которая может раскрываться через следующий набор функциональных команд: Ввод, Интегрирование, Таблица, Графики, Окно.

Для создания нашего MDI-приложения необходимо:

. В меню File запустить команду New Project.

. В меню Project запустить команду Add MDI Form. Теперь проект будет содержать форму-контейнер MDIForm1 и стандартную форму Form1.

. В меню Tools запустить команду Menu Editor (Редактор меню) и сконструировать в его среде Функциональное Меню, которое является удобным инструментом быстрого доступа к функциональности приложения и должно размещаться на родительской форме. Окно Menu Editor (Редактор меню) представлено на рисунке 2:

Рисунок 2 - Компоненты функционального меню в среде Редактора меню

На рисунке 3 представлена Родительская форма в загруженном состоянии с выведенной строкой меню:

Рисунок 3 - Родительская форма в загруженном состоянии с выведенной строкой меню

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

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

Таблица 1 - Характеристика элементов для формы Ввода

Объект

Свойство

Значение свойства

Form1

Caption

Ввод параметров нелинейной цепи

Label1

Caption

Введите R1, Ом

Text1

Text

Empty

Label2

Caption

Text2

Text

Empty

Label3

Caption

Введите Ik, А

Text3

Text

Empty

Label4

Caption

Время интегрирования, с

Text4

Text

Empty

Label5

Caption

Параметр индуктивности, А

Text5

Text

Empty

Label6

Caption

Параметр индуктивности, В

Text6

Text

Empty

Label7

Caption

Число точек

Text7

Text

Empty

Command1

Caption

OK

Picture1

Picture

(Bitmap)

Picture2

Picture

(Bitmap)


На рисунке 4 представлен экранный вид формы Ввода в режиме выполнения

численный интегрирование электрический цепь

Рисунок 4 - Форма Ввода в режиме выполнения

Вторая дочерняя Форма Form2 должна обеспечивать реализацию команды Интегрирование из функционального меню проектируемого приложения, включая процесс интегрирования потокосцепления и расчет переходных процессов изменения Тока через индуктивность и ЭДС самоиндукции в исходной электрической цепи. Для реализации такой функциональности на поверхности формы необходимо установить следующий набор элементов управления, который представлен в таблице 2:

Таблица 2 - Характеристика элементов для формы Интегрирования

Объект

Свойство

Значение свойства

Form2

Caption

Интегрирование

Form2

MDIChild

True

Label1

Caption

Заряд на конденсаторе

Label2

Caption

Ток и напряжение на конденсаторе

Label3

Caption

Начать интегрирование?

ProgressBar1

Caption


ProgressBar2

Caption

Caption

Да

Command2

Caption

Возврат в меню


На рисунке 5 представлен экранный вид Form 2 формы интегрирования в режиме выполнения:

Рисунок 5 - Form 2 форма Интегрирования в режиме выполнения

Третья дочерняя Форма Form3 должна обеспечивать реализацию команды Таблица из функционального меню проектируемого приложения, включая вывод в графы таблицы следующих числовых последовательностей, полученных на этапе интегрирования и расчета переходных процессов: T (i) - физическое время, P (i) - потокосцепление, IL (i) - ток через индуктивность, UL (i) - ЭДС самоиндукции. Для реализации такой функциональности на поверхности формы необходимо установить следующий набор элементов управления, приведенный в таблице 3:

Таблица 3 - Характеристика элементов для формы Таблица

Объект

Свойство

Значение свойства

Form3

Caption

Таблица переходных процессов в нелинейном конденсаторе

Form3

MDIChild

True

MSFlexGrid1

AllowBigSelection

True

Command1

Caption

Процессы

Command2

Caption

Возврат в меню


На рисунке 6 представлен экранный вид Form 3 в режиме выполнения:

Рисунок 6 - Form 3 форма Таблицы в режиме выполнения

Четвертая дочерняя Форма Form4 должна обеспечивать реализацию команды Графики из функционального меню проектируемого приложения, включая вывод на поверхность формы следующих табулированных функций времени, полученных на этапе интегрирования: P (t)- потокосцепление, IL (t)- Ток через индуктивность, UL (t) - ЭДС самоиндукции. Для реализации такой функциональности на поверхности формы необходимо установить следующий набор элементов управления, приведенный в таблице 4:

Таблица 4 - Характеристика элементов для формы Графики

Объект

Свойство

Значение свойства

Form4

Caption

Графики переходных процессов в нелинейном конденсаторе


MDIChild

True

Frame1

Caption

Графики переходных процессов

Option1

Caption

Q(t)

Option2

Caption

Uc(t)

Option3

Caption

Ic(t)

Command1

Caption

Возврат в меню


Рисунок 7 - Form 4 форма Графики в режиме выполнения

Ниже представлен код приложения. Описание кода выполнено в комментариях по тексту процедур. Формы в режиме выполнения представлены выше, в процессе описания разработки приложения.

Стандартный модуль проекта:

Public R1 As Double

Public R2 As DoubleE As DoubleA As DoubleB As DoubleTi As DoubleN As LongQ() As DoubleUс() As DoubleIс() As DoubleT() As Double

Модуль родительской формы:

Процедура загрузки родительской формы

Private Sub MDIForm_Load().Show

End Sub

Процедура запуска команды меню Ввод

Sub MnuVvod_Click()

Form1.ShowSub

Процедура запуска команды меню Интегрирование


Процедура запуска команды меню Таблица

Sub MnuTabl_Click()

Form3.ShowSub

Процедура запуска команды меню Графики

Sub MnuGraf_Click()

Form4.ShowSub

Процедура запуска команды меню Каскад

Sub MnuKskad_Click().Arrange vbCascadeSub

Процедура запуска команды меню Вертикаль

Sub MnuVert_Click()

MDIForm1.Arrange vbVerticalSub

Модуль формы для выполнения команды ввод:

Процедура обработки события Click на командной кнопке формы. Здесь выполняются преобразования текстовых значений исходных параметров

цепи, введенных через текстовые поля на Form1, в арифметические значения

глобальных переменных типа Double и LongSub Command1_Click()= CDbl(Text1.Text) 'Преобразование текстового значения в

арифметическое значение глобальной переменной типа Double

R2 = CDbl(Text2.Text)= CDbl(Text3.Text)= CDbl(Text5.Text)= CDbl(Text6.Text)

N = CLng(Text7.Text) 'Преобразование текстового значения в

арифметическое значение глобальной переменной типа Long

Ti = CDbl(Text4.Text)Me 'Выгрузить форму Form1

End Sub

Процедура инициализации формы Form1 и установка стартовых значений свойств

Private Sub Form_Initialize()= 8= True.Height = 15000.Width = 15000

End Sub

Процедура загрузки формы Form1 и инициализации ее текстовых полей

Private Sub Form1_Load().Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty.Text = Empty

End Sub

Модуль формы для выполнения команды интегрировать

Процедура обработки события Click на командной кнопке Command1 формы Form2. Здесь запускается процедура

Интегрировать потокосцепление методом

Рунге-Кутта с постоянным шагом

Private Sub Command1_Click()

Интегрировать

Sub

Процедура интегрирования нелинейного уравнения методом Рунге-Кутта с переменным шагом

Private Sub Интегрировать()K1 As Double, K2 As Double, K3 As Double, K4 As DoubleH As DoubleQ(1 To N) As Double, T(1 To N) As DoubleUс(1 To N) As Double, Iс(1 To N) As DoubleD As Double, J As Integer, Q1 As Double, Q2 As Double, Q3 As Double EW As Double = 0.001 'Точность интегрирования на каждом шаге задана значением константы

H = Ti / Nс(1) = E / 2(1) = (((A ^ 2 + 4 * Uс(1) * B) ^ 0.5) - A) / 2 / BI = 2 To N: For J = 1 To 2= H * F(Q(I - 1))= H * F(Q(I - 1) + K1 / 2)= H * F(Q(I - 1) + K2 / 2)= H * F(Q(I - 1) + K3)J = 1 Then= Q(I - 1) + (K1 + 2 * K2 + 2 * K3 + K4) / 6= H / 2: GoTo M1= Q(I - 1) + (K1 + 2 * K2 + 2 * K3 + K4) / 6= Q2 + (K1 + 2 * K2 + 2 * K3 + K4) / 6If: Next J= Abs(Q1 - Q2)Abs(Q1) < 1 And D <= 0.001 Or Abs(Q1) > 1 And D <= 0.001 * Abs(Q1) Then(I) = Q2 - (Q1 - Q2) / 15= 2 * H(I) = T(I - 1) + H= H / 2m2IfForm2.ProgressBar2= 0= N= True= IWithII = 1 To Nс(I) = A * Q(I) + B * Q(I) ^ 2с(I) = F(Q(I)) ProgressBar1 'Индикатор прогресса в цикле расчета

процессов тока и напряжения

Min = 0

Max = N= True= IWithISub

'Процедура-функция для расчета правой части интегрируемого уравнения

Private Function F(ByVal Z As Single) As SingleII As Single, A1 As Single, B1 As Single, Ik As Single= 10= Ik * (3 * R1 + R2) / (R1 + R2)= A= B= II - A1 * Z - B1 * Z ^ 2 Function

Процедура обработки события Click на командной 'кнопке Command2 формы Form2. Здесь выгружается форма

Sub Command2_Click()MeSub

Процедура обработки события Click на командной кнопке Command1 'формы Form3. Здесь запускается процедура вывода рассчитанных переходных процессов в колонки таблицы элемента управления MSFlexGrid1

Private Sub Command1_Click()I As Long, J As LongJ = 0 To 3.Col = JI = 1 To N - 1MSFlexGrid1= IJ = 0 Then= Format(T(I), "Scientific")J = 1 Then= Format(Q(I), "Scientific")J = 2 Then= Format(Uс(I), "Scientific")J = 3 Then= Format(Iс(I), "Scientific")IfWithIJSubSub Command2_Click()MeSub

Загрузка формы Form3 c установкой свойств таблицы MSFlexGrid1

Sub Form_Load()ЗаголовкиГр As Variant I As Double

ЗаголовкиГр = Array("Время, с", "Заряд, Кл", "Напряжение, В", _

"Ток, А")

Caption = "Таблица переходного процесса в нелинейной индуктивности"

With MSFlexGrid1= True= N= 4= 0(0) = 500I = 0 To 3= I(0, I) = ЗаголовкиГр(I)= 3II = 0 To 3(I) = 1500IWith Sub

Процедура обработки события Click на переключателе Option1 'формы Form4. Здесь выполняется вывод График Заряда

Sub Option1_Click()X As Long, Y As Long, Y0 As Long, X0 As Long, I As Long

CurrentX = 450: CurrentY = 150"График заряда на конденсаторе"

X0 = 400: Y0 = 3500(X0, Y0)-(2500, Y0)(X0, Y0)-(X0, 400)(400, 400)-(340, 470)(400, 400)-(460, 470)(2500, 3500)-(2440, 3430)(2500, 3500)-(2440, 3570)I = 1 To 10(X0 + 210 * I, 3500)-(X0 + 210 * I, 400)II = 1 To 10(X0, Y0 - 310 * I)-(2500, Y0 - 310 * I)I(X0 + T(1) * (2100 / T(N)), Y0 - Q(1) * (3100 / Q(N)))= 2I = 2 To N= X0 + T(I) * (2100 / T(N))= Y0 - Q(I) * 3100 / Q(N)-(X, Y)I= 1= 100: CurrentY = 450"Q(t)"= 2570: CurrentY = 3300"t"= 300: CurrentY = 3600"0"= X0 + 210 * 4: CurrentY = 3600Format((T(N) / 2), "Fixed")= X0 + 210 * 9: CurrentY = 3600Format(T(N), "Fixed")= X0 - 400: CurrentY = Y0 - (3100 / 10) * 4Format((Q(N) / 10) * 5, "Fixed")= X0 - 400: CurrentY = Y0 - (3100 / 10) * 8Format((Q(N) / 10) * 8, "Fixed")

End Sub

Процедура обработки события Click на переключателе Option2'формы Form4. Здесь выполняется вывод Графика Тока

Sub Option2_Click()X As Single, Y As Single, Y0 As Single, X0 As Single, I As Integer= 1000 + 2700: CurrentY = 150"График напряжения"= 400 + 2700: Y0 = 3500(X0, Y0)-(X0 + 2100, Y0)(X0, Y0)-(X0, 400)(X0, 400)-(X0 - 60, 470)(X0, 400)-(X0 + 60, 470)(X0 + 2100, Y0)-(X0 + 2040, Y0 - 70)(X0 + 2100, Y0)-(X0 + 2040, Y0 + 70)I = 1 To 10(X0 + 210 * I, 3500)-(X0 + 210 * I, 400)II = 1 To 10(X0, Y0 - 310 * I)-(X0 + 2100, Y0 - 310 * I)I(X0 + T(1) * (2100 / T(N)), Y0 - Uс(1) * 3100 / Uс(N))= 2I = 2 To N= X0 + T(I) * (2100 / T(N))= Y0 - Uс(I) * 3100 / Uс(N)-(X, Y)I= 1= X0 - 450: CurrentY = 450"Uc (t)"= X0 + 2200: CurrentY = Y0 - 150"t"= X0 - 100: CurrentY = Y0 + 100"0"= X0 + 210 * 4: CurrentY = Y0 + 100Format((T(N) / 2), "Fixed")= X0 + 210 * 9: CurrentY = Y0 + 100Format(T(N), "Fixed")= X0 - 500: CurrentY = Y0 - (3100 / 10) * 4Format((Uс(N) / 10) * 5, "Fixed")= X0 - 500: CurrentY = Y0 - (3100 / 10) * 8Format((Uс(N) / 10) * 8, "Fixed")

End Sub

Процедура обработки события Click на переключателе Option3 формы Form4. Здесь выполняется вывод Графика ЭДС Самоиндукции

Private Sub Option3_Click()

Dim X As Single, Y As Single, Y0 As Single, X0 As Single, I As Integer= 400 + 5400: Y0 = 3500= X0 + 50: CurrentY = 150"График тока"(X0, Y0)-(X0 + 2100, Y0)(X0, Y0)-(X0, 400)(X0, 400)-(X0 - 60, 470)(X0, 400)-(X0 + 60, 470)(X0 + 2100, Y0)-(X0 + 2040, Y0 - 70)(X0 + 2100, Y0)-(X0 + 2040, Y0 + 70)I = 1 To 10(X0 + 210 * I, 3500)-(X0 + 210 * I, 400)II = 1 To 10(X0, Y0 - 310 * I)-(X0 + 2100, Y0 - 310 * I)I(X0 + T(1) * (2100 / T(N)), Y0 - Iс(1) * (3100 / Iс(1)))= 2I = 2 To N= X0 + T(I) * (2100 / T(N))= Y0 - Iс(I) * (3100 / Iс(1))-(X, Y)I= 1= X0 - 450: CurrentY = 450"Ic (t)"= X0 + 2200: CurrentY = Y0 - 150"t"= X0 - 100: CurrentY = Y0 + 100"0"= X0 + 210 * 4: CurrentY = Y0 + 100Format((T(N) / 10) * 5, "Fixed")= X0 + 210 * 9: CurrentY = Y0 + 100Format(T(N), "Fixed")= X0 - 500: CurrentY = Y0 - (3100 / 10) * 4Format(Abs((Iс(N) - Iс(1)) / 10) * 5, "Fixed")= X0 - 500: CurrentY = Y0 - (3100 / 10) * 8Format(Abs((Iс(N) - Iс(1)) / 10) * 8, "Fixed")SubSub Command1_Click()

Unload MeSub

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

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

Спроектировал диалоговую программу модульной структуры для расчета переходного процесса в заданной электрической цепи и написал исходные тексты программных модулей на изучаемом языке программирования;

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

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!