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

Отчет по практике - Компьютеры, программирование

Другие отчеты по практике по предмету Компьютеры, программирование

бытия 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 * 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

 

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

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

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

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