'Определение массивов, констант, переменных
Private Const pi As Double = 3.1415926
Private Const mu0 As Double = 4 * 3.1415926 * 10 ^ -7
Private Const gz As Double = 9.81
Dim D As Double, z As Double, hk As Double, bk As Double, w As Double
Dim dpr As Double, t As Double, p As Double, a As Double
Dim m As Double, H As Double, V0 As Double, x0 As Double
Dim C As Double, UC0 As Double, R1 As Double, xon As Double
Dim Da As Double, hp As Double, Sa As Double, Rk As Double
Dim G1 As Double, G0 As Double, Ga As Double, Gm As Double
Dim xoff As Double, Switch As Double, times As Double
Dim UC(1000000) As Double, PSI(1000000) As Double
Dim V(1000000) As Double, X(1000000) As Double, Tx(1000000) As Double
Dim tper As Double, i As Double, xz As Double, xtm As Double, Step As Double
Private Enum Value
UC_i = 1: PSI_i = 2: X_i = 3: V_i = 4
End Enum
'Процедура вычислений
Private Sub Calc(all As Long)
InitGrid
DoEvents
'Считывание данных
D = Val(Text1.Text): z = Val(Text2.Text) * 0.001
hk = Val(Text3.Text) * 0.01: bk = Val(Text4.Text) * 0.01
w = Val(Text5.Text): dpr = Val(Text6.Text) * 0.001
t = Val(Text7.Text): p = Val(Text8.Text) * 10 ^ -8
a = Val(Text9.Text) * 0.001: m = Val(Text10.Text)
H = Val(Text11.Text) * 0.001: V0 = Val(Text12.Text)
x0 = Val(Text13.Text) * 0.001: C = Val(Text14.Text) * 10 ^ -6
UC0 = Val(Text15.Text): R1 = Val(Text16.Text): xon = Val(Text17.Text) * 0.001
'"Основные соотношения"
Da = D - 2 * z: hp = D / 4: Sa = pi * Da * Da / 4
Rk = (4 * p * w * (D + bk) / dpr / dpr)
Rk = Rk * (1 + a * (t - 20))
G1 = mu0 * pi * bk * (2 * D + bk) / 6 / hk
G0 = G1 + mu0 * D * (0.815 + 2 / (1 + hk / hp))
Ga = mu0 * pi * (Da + z) * hp / 2 / z
Gm = G1 + Ga: xoff = H + x0: Em = Abs(m * gz)
'Начальные условия
Switch = 0: i = 0: Step = 0.000001 * all: times = 0
UC(0) = UC0: PSI(0) = 0: V(0) = V0: X(0) = x0
'Точка старта расчета
0
'Блок выбора дальнейшего алгоритма расчета
If Switch = 1 Then GoTo 10
If Switch = 2 Then GoTo 20
If Switch = 3 Then GoTo 30
If Switch = 4 Then GoTo 40
If Switch = 5 Then GoTo 50
If Switch = 6 Then GoTo 60
If Switch = 7 Then GoTo 70
While (Switch = 0)
DoEvents
'груз падает, ключи закрыты, условие выхода - или груз упал, или груз прошел точку включения
k1 = gz: k2 = 1: K1V = k1: K1X = k2 * V(i): K2V = k1: K2X = k2 * (V(i) + 0.5 * Step * K1X)
K3V = k1: K3X = k2 * (V(i) + 0.5 * Step * K2X): K4V = k1: K4X = k2 * (V(i) + Step * K3X)
i = i + 1: times = times + Step: Tx(i) = times: UC(i) = UC(i - 1): PSI(i) = PSI(i - 1)
V(i) = V(i - 1) + Step * (K1V + 2 * K2V + 2 * K3V + K4V) / 6
X(i) = X(i - 1) + Step * (K1X + 2 * K2X + 2 * K3X + K4X) / 6
'если груз прошел точку включения
If X(i) - xon > 0 Then
If UC(i) > 0 And PSI(i) = 0 Then
pk = tCorr(xon, X_i)
Correction pk
t1 = pk
Switch = 1 'открыть тиристор
End If
End If
If X(i) - xoff > 0 Then
Switch = 4: If xz = 0 Then xz = i
pk = tCorr(xoff, X_i)
Correction pk
t2 = pk
If F(i) > Em Then
V(i) = -V(i - 1) / 1000000
Switch = 0 ' считать исчо :)
Else
V(i) = 0
End If
End If
If t1 > 0 And t2 > 0 Then
If t1 > t2 Then Switch = 1
If t2 >= t1 Then
If F(i) > Em Then Switch = 0 Else Switch = 4
End If
End If
t1 = 0: t2 = 0
Wend
GoTo 0
10 While (Switch = 1)
DoEvents
k1 = -1 / (C * w * w): k2 = 1: k3 = -Rk / (w * w): k4 = gz: k5 = 1 / (2 * m * w * w): k6 = 1
K1C = k1 * PSI(i) / G(i): K1L = k2 * UC(i) + k3 * PSI(i) / G(i)
K1V = k4 + k5 * PSI(i) * PSI(i) * dGdx(i) / G(i) / G(i)
K1X = k6 * V(i): K2C = k1 * (PSI(i) / G(i) + 0.5 * Step * K1C)
K2L = k2 * (UC(i) + 0.5 * Step * K1L) + k3 * (PSI(i) / G(i) + 0.5 * Step * K1L)
K2V = k4 + k5 * ((PSI(i) ^ 2) / (G(i) ^ 2) * dGdx(i) + 0.5 * Step * K1V)
K2X = k6 * (V(i) + 0.5 * Step * K1X): K3C = k1 * (PSI(i) / G(i) + 0.5 * Step * K2C)
K3L = k2 * (UC(i) + 0.5 * Step * K2L) + k3 * (PSI(i) / G(i) + 0.5 * Step * K2L)
K3V = k4 + k5 * ((PSI(i) ^ 2) / (G(i) ^ 2) * dGdx(i) + 0.5 * Step * K2V)
K3X = k6 * (V(i) + 0.5 * Step * K2X): K4C = k1 * (PSI(i) / G(i) + 0.5 * Step * K3C)
K4L = k2 * (UC(i) + Step * K3L) + k3 * (PSI(i) / G(i) + Step * K3L)
K4V = k4 + k5 * ((PSI(i) ^ 2) / (G(i) ^ 2) * dGdx(i) + Step * K3V)
K4X = k6 * (V(i) + Step * K3X): i = i + 1: times = times + Step: Tx(i) = times
UC(i) = UC(i - 1) + Step * (K1C + 2 * K2C + 2 * K3C + K4C) / 6
PSI(i) = PSI(i - 1) + Step * (K1L + 2 * K2L + 2 * K3L + K4L) / 6
V(i) = V(i - 1) + Step * (K1V + 2 * K2V + 2 * K3V + K4V) / 6
X(i) = X(i - 1) + Step * (K1X + 2 * K2X + 2 * K3X + K4X) / 6
'груз может упасть, диод может открытся
If X(i) - xoff > 0 Then
Switch = 5: If xz = 0 Then xz = i
pk = tCorr(xoff, X_i)
Correction pk
t1 = pk
If F(i) > Em Then
V(i) = -V(i - 1) / 1000000
Switch = 1 'Считать исчо
Else
V(i) = 0
End If
End If
If UC(i) < 0 Then
pk = tCorr(0, UC_i)
Correction pk
t2 = pk
Switch = 3 'открыть диод
End If
If t1 > 0 And t2 > 0 Then
If t2 > t1 Then Switch = 3
If t1 >= t2 Then
If F(i) > Em Then Switch = 1 Else Switch = 5
End If
End If
t1 = 0: t2 = 0
Wend
GoTo 0
20 While (Switch = 2)
DoEvents
k2 = -R1 / (w * w): k3 = gz: k4 = 1 / (2 * m * w * w): k5 = 1
K1L = k2 * PSI(i) / G(i): K1V = k3 + k4 * (PSI(i) ^ 2 * dGdx(i) / G(i) ^ 2): K1X = k5 * V(i)
K2L = k2 * (PSI(i) / G(i) + 0.5 * Step * K1L)
K2V = k3 + k4 * ((PSI(i) / G(i)) ^ 2 * dGdx(i) + 0.5 * Step * K1V)
K2X = k5 * (V(i) + 0.5 * Step * K1X): K3L = k2 * (PSI(i) / G(i) + 0.5 * Step * K2L)
K3V = k3 + k4 * ((PSI(i) / G(i)) ^ 2 * dGdx(X(i)) + 0.5 * Step * K2V)
K3X = k5 * (V(i) + 0.5 * Step * K2X): K4L = k2 * (PSI(i) / G(i) + Step * K2L)
K4V = k3 + k4 * ((PSI(i) / G(i)) ^ 2 * dGdx(i) + Step * K3V)
K4X = k5 * (V(i) + Step * K3X): i = i + 1: times = i * Step: Tx(i) = times: UC(i) = UC(i - 1)
PSI(i) = PSI(i - 1) + Step * (K1L + 2 * K2L + 2 * K3L + K4L) / 6
V(i) = V(i - 1) + Step * (K1V + 2 * K2V + 2 * K3V + K4V) / 6
X(i) = X(i - 1) + Step * (K1X + 2 * K2X + 2 * K3X + K4X) / 6
'груз может упасть, ток может кончится
If X(i) - xoff > 0 Then
Switch = 6: If xz = 0 Then xz = i
pk = tCorr(xoff, X_i)
Correction pk
If F(i) > Em Then
V(i) = -V(i - 1) / 1000000
Switch = 2
Else
V(i) = 0
End If
End If
If tok(i) < 0.01 Then
If Switch = 6 Then Switch = 4
End If
Wend
GoTo 0
30 While (Switch = 3)
DoEvents
k1 = -1 / (C * w * w): k2 = -1 / (C * R1): k3 = 1: k4 = -Rk / (w * w): k5 = gz: k6 = 1 / (2 * m * w * w): k7 = 1
K1C = k1 * PSI(i) / G(i) + k2 * UC(i): K1L = k3 * UC(i) + k4 * PSI(i) / G(i)
K1V = k5 + k6 * PSI(i) * PSI(i) * dGdx(i) / G(i) / G(i): K1X = k7 * V(i)
K2C = k1 * (PSI(i) / G(i) + 0.5 * Step * K1C) + k2 * (UC(i) + 0.5 * Step * K1C)
K2L = k3 * (UC(i) + 0.5 * Step * K1L) + k4 * (PSI(i) / G(i) + 0.5 * Step * K1L)
K2V = k5 + k6 * (PSI(i) * PSI(i) / G(i) / G(i) * dGdx(i) + 0.5 * Step * K1V)
K2X = k7 * (V(i) + 0.5 * Step * K1X)
K3C = k1 * (PSI(i) / G(i) + 0.5 * Step * K2C) + k2 * (UC(i) + 0.5 * Step * K2C)
K3L = k3 * (UC(i) + 0.5 * Step * K2L) + k4 * (PSI(i) / G(i) + 0.5 * Step * K2L)
K3V = k5 + k6 * (PSI(i) * PSI(i) / G(i) / G(i) * dGdx(i) + 0.5 * Step * K2V)
K3X = k7 * (V(i) + 0.5 * Step * K2X)
K4C = k1 * (PSI(i) / G(i) + Step * K3C) + k2 * (UC(i) + Step * K3C)
K4L = k3 * (UC(i) + Step * K3L) + k4 * (PSI(i) / G(i) + Step * K3L)
K4V = k5 + k6 * (PSI(i) * PSI(i) / G(i) / G(i) * dGdx(i) + Step * K3V)
K4X = k7 * (V(i) + Step * K3X): i = i + 1: times = i * Step: Tx(i) = times
UC(i) = UC(i - 1) + Step * (K1C + 2 * K2C + 2 * K3C + K4C) / 6
PSI(i) = PSI(i - 1) + Step * (K1L + 2 * K2L + 2 * K3L + K4L) / 6
V(i) = V(i - 1) + Step * (K1V + 2 * K2V + 2 * K3V + K4V) / 6
X(i) = X(i - 1) + Step * (K1X + 2 * K2X + 2 * K3X + K4X) / 6
'груз может упасть, тиристор может закрытся, диод может закрытся
If X(i) - xoff > 0 Then
Switch = 7: If xz = 0 Then xz = i
pk = tCorr(xoff, X_i)
Correction pk
If F(i) > Em Then
V(i) = -V(i - 1) / 1000000
Switch = 3 'Считать исчо
Else
V(i) = 0
End If
End If
p = tok(i): p1 = Abs(UC(i) / R1) ' ток в катушке и ток в резисторе .. разность - ток в конденсаторе
If 2 * p1 > p Then
Switch = 2 'закрыть тиристор
End If
If p < 0.01 Then
If Switch = 2 Then Switch = 4 Else Switch = 1
End If
Wend
GoTo 0
40 For i = i To FindMaxFrom(i) - 10
UC(i) = UC(i - 1): PSI(i) = PSI(i - 1): X(i) = X(i - 1): V(i) = V(i - 1)
Next i
GoTo 100
50 While (Switch = 5)
DoEvents
k1 = -1 / (C * w * w): k2 = 1: k3 = -Rk / (w * w): k4 = 0: k5 = 0
K1C = k1 * PSI(i) / G(i): K1L = k2 + k3 * PSI(i) / G(i)
K2C = k1 * (PSI(i) / G(i) + 0.5 * Step * K1C): K2L = k2 + k3 * (PSI(i) / G(i) + 0.5 * Step * K1L)
K3C = k1 * (PSI(i) / G(i) + 0.5 * Step * K2C): K3L = k2 + k3 * (PSI(i) / G(i) + 0.5 * Step * K2L)
K4C = k1 * (PSI(i) / G(i) + Step * K3C): K4L = k2 + k3 * (PSI(i) / G(i) + Step * K3L)
i = i + 1: times = times + Step: Tx(i) = times: V(i) = V(i - 1): X(i) = X(i - 1)
UC(i) = UC(i - 1) + Step * (K1C + 2 * K2C + 2 * K3C + K4C) / 6
PSI(i) = PSI(i - 1) + Step * (K1L + 2 * K2L + 2 * K3L + K4L) / 6
'диод может открытся
If UC(i) < 0 Then
pk = tCorr(0, UC_i)
Correction pk
Switch = 6 'открыть диод
End If
Wend
GoTo 0
60 While (Switch = 6)
DoEvents
k2 = -R1 / (w * w): K1L = k2 * PSI(i) / G(X(i)): K2L = k2 * (PSI(i) / G(X(i)) + 0.5 * Step * K1L)
K3L = k2 * (PSI(i) / G(X(i)) + 0.5 * Step * K2L): K4L = k2 * (PSI(i) / G(X(i)) + Step * K2L)
i = i + 1: times = i * Step: Tx(i) = times: UC(i) = UC(i - 1): V(i) = V(i - 1): X(i) = X(i - 1)
PSI(i) = PSI(i - 1) + Step * (K1L + 2 * K2L + 2 * K3L + K4L) / 6
If tok(i) < 0.1 Then Switch = 4
Wend
GoTo 0
70 While (Switch = 7)
DoEvents
k1 = -1 / (C * w * w): k2 = -1 / (R1 * C): k3 = 1: k4 = -Rk / (w * w)
K1C = k1 * PSI(i) / G(X(i)) + k2 * UC(i): K1L = k3 * UC(i) + k4 * PSI(i) / G(X(i))
K2C = k1 * (PSI(i) / G(X(i)) + 0.5 * Step * K1C) + k2 * (UC(i) + 0.5 * Step * K1C)
K2L = k3 * (UC(i) + 0.5 * Step * K1L) + k4 * (PSI(i) / G(X(i)) + 0.5 * Step * K1L)
K3C = k1 * (PSI(i) / G(X(i)) + 0.5 * Step * K2C) + k2 * (UC(i) + 0.5 * Step * K2C)
K3L = k3 * (UC(i) + 0.5 * Step * K2L) + k4 * (PSI(i) / G(X(i)) + 0.5 * Step * K2L)
K4C = k1 * (PSI(i) / G(X(i)) + Step * K3C) + k2 * (UC(i) + Step * K3C)
K4L = k3 * (UC(i) + Step * K3L) + k4 * (PSI(i) / G(X(i)) + Step * K3L)
i = i + 1: times = times + Step: Tx(i) = times: V(i) = V(i - 1): X(i) = X(i - 1)
UC(i) = UC(i - 1) + Step * (K1C + 2 * K2C + 2 * K3C + K4C) / 6
PSI(i) = PSI(i - 1) + Step * (K1L + 2 * K2L + 2 * K3L + K4L) / 6
p = tok(X(i)): p1 = Abs(UC(i) / R1)
If 2 * p1 > p Then Switch = 6
If tok(i) < 0.1 Then Switch = 4
Wend
GoTo 0
'Рисование графиков
100
mx = 3420 / FindMaxFrom(i): Y = 1860 / 2
For i = 1 To i Step all
DoEvents
Picture1.PSet (mx * i, Y + 0 - 310 / 0.5 * V(i)) ' 0.5 м\с \ дел
Picture2.PSet (mx * i, Y + 620 - 310 / 0.01 * ((H + x0) - X(i))) ' 10 мм \ дел
Picture3.PSet (mx * i, Y + 620 - 310 / 150 * UC(i)) ' 150 В \ дел
Picture4.PSet (mx * i, Y + 620 - 310 / 2.5 * PSI(i)) ' 2.5 А*в \ дел
Picture5.PSet (mx * i, Y + 620 - 310 / 3 * tok(i)) ' 3 А \ дел
Picture6.PSet (mx * i, Y + 620 - 310 / 0.25 * Ba(i)) ' 0.25 Тл \ дел
Next i
i = i - 1: xtm = i / 10000000 * all
Timer1.Enabled = False
Form1.Caption = "-=ММАиРЭС=- -=Курсовая работа=- -=Автор: Богданов Антон=- -=Тольятти, 2006=-"
MsgBox "Цена деления шкалы X равна " + Str$(xtm) + " с." + vbCrLf + _
"Посадочная скорость равна " + Str$(round(V(xz - 1))) + " м/с." + vbCrLf + _
"Время падения равно " + Str$(Tx(xz - 1)) + " c." + vbCrLf + _
"Поосадочная скорость без демпфирования равна " + Str$(round(Sqr(2 * H * gz))) + " м/с."
End Sub
Private Sub Correction(ByVal tmr As Double)
UC(i) = (tmr * (UC(i) - UC(i - 1)) - UC(i) * Tx(i - 1) + UC(i - 1) * Tx(i)) / (Tx(i) - Tx(i - 1))
PSI(i) = (tmr * (PSI(i) - PSI(i - 1)) - PSI(i) * Tx(i - 1) + PSI(i - 1) * Tx(i)) / (Tx(i) - Tx(i - 1))
X(i) = (tmr * (X(i) - X(i - 1)) - X(i) * Tx(i - 1) + X(i - 1) * Tx(i)) / (Tx(i) - Tx(i - 1))
V(i) = (tmr * (V(i) - V(i - 1)) - V(i) * Tx(i - 1) + V(i - 1) * Tx(i)) / (Tx(i) - Tx(i - 1))
Tx(i) = tmr
End Sub
Private Function tCorr(ByVal ValOfParam As Double, k As Value) As Double
X1 = Tx(i - 1): X2 = Tx(i)
If k = PSI_i Then Y1 = PSI(i - 1): Y2 = PSI(i)
If k = UC_i Then Y1 = UC(i - 1): Y2 = UC(i)
If k = V_i Then Y1 = V(i - 1): Y2 = V(i)
If k = X_i Then Y1 = X(i - 1): Y2 = X(i)
tCorr = (ValOfParam * (X2 - X1) - X2 * Y1 + X1 * Y2) / (Y2 - Y1)
End Function
'Функция для построения ГОСТовского графика (ось Х)
Private Function FindMaxFrom(tre As Double) As Double
Dim k As Double, zon As Integer
k = 5: zon = 1
1 While (k < tre)
k = k * 10
Wend
FindMaxFrom = k
If ((k / tre) < 1.01 Or (k / tre) > 5) And zon <> 1 Then k = 1: GoTo 1
End Function
Private Function F(k As Double) As Double
F = Abs((tok(k) * w * w * tok(k) / 2) * dGdx(k))
End Function
Private Function Ba(k As Double) As Double
Ba = w * (G(k) - G1) * tok(k) / Sa
End Function
Private Function G(k As Double) As Double
Dim gamma As Double
Dim a_a As Double
gamma = (Gm - G0) / G0
a_a = ((Gm + G0 - 2 * G1) ^ 2) / (mu0 * Sa * (Gm - G0))
G = G0 * gamma / (1 + Exp(a_a * X(i))) + G0
End Function
Private Function dGdx(k As Double) As Double
Dim gamma As Double, a_a As Double
gamma = ((Gm - G0) / G0)
a_a = ((Gm + G0 - 2 * G1) ^ 2) / (mu0 * Sa * (Gm - G0))
dGdx = -G0 * gamma * a_a * Exp(a_a * X(i)) / ((1 + Exp(a_a * X(i))) ^ 2)
End Function
Private Function tok(k As Double) As Double
tok = PSI(k) / (w * w * G(k))
End Function
Private Sub Command1_Click()
Erase UC(): Erase X(): Erase V(): Erase PSI(): Erase Tx()
Form1.Caption = " ": Timer1.Enabled = True: xz = 0
DoEvents
If Check1.Value = 0 Then Calc 1 Else Calc 10
End Sub
Private Sub InitGrid()
'Рисование сеток
Picture1.Cls: Picture2.Cls: Picture3.Cls: Picture4.Cls: Picture5.Cls: Picture6.Cls
sy = 1860: sx = 3420
Picture1.Line (1, 1)-(1, sy), RGB(128, 128, 128): Picture6.Line (sx, 1)-(sx, sy), RGB(128, 128, 128)
Picture1.Line (1, 1)-(sx, 1), RGB(128, 128, 128): Picture1.Line (1, sy)-(sx, sy), RGB(128, 128, 128)
Picture1.Line (sx, 1)-(sx, sy), RGB(128, 128, 128): Picture2.Line (1, 1)-(1, sy), RGB(128, 128, 128)
Picture2.Line (1, 1)-(sx, 1), RGB(128, 128, 128): Picture2.Line (1, sy)-(sx, sy), RGB(128, 128, 128)
Picture2.Line (sx, 1)-(sx, sy), RGB(128, 128, 128): Picture3.Line (1, 1)-(1, sy), RGB(128, 128, 128)
Picture3.Line (1, 1)-(sx, 1), RGB(128, 128, 128): Picture3.Line (1, sy)-(sx, sy), RGB(128, 128, 128)
Picture3.Line (sx, 1)-(sx, sy), RGB(128, 128, 128): Picture4.Line (1, 1)-(1, sy), RGB(128, 128, 128)
Picture4.Line (1, 1)-(sx, 1), RGB(128, 128, 128): Picture4.Line (1, sy)-(sx, sy), RGB(128, 128, 128)
Picture4.Line (sx, 1)-(sx, sy), RGB(128, 128, 128): Picture5.Line (1, 1)-(1, sy), RGB(128, 128, 128)
Picture5.Line (1, 1)-(sx, 1), RGB(128, 128, 128): Picture5.Line (1, sy)-(sx, sy), RGB(128, 128, 128)
Picture5.Line (sx, 1)-(sx, sy), RGB(128, 128, 128): Picture6.Line (1, 1)-(1, sy), RGB(128, 128, 128)
Picture6.Line (1, 1)-(sx, 1), RGB(128, 128, 128): Picture6.Line (1, sy)-(sx, sy), RGB(128, 128, 128)
For i = 1 To sx Step 342
Picture1.Line (i, 1)-(i, sy), RGB(128, 128, 128): Picture2.Line (i, 1)-(i, sy), RGB(128, 128, 128)
Picture3.Line (i, 1)-(i, sy), RGB(128, 128, 128): Picture4.Line (i, 1)-(i, sy), RGB(128, 128, 128)
Picture5.Line (i, 1)-(i, sy), RGB(128, 128, 128): Picture6.Line (i, 1)-(i, sy), RGB(128, 128, 128)
Next i
For i = 1 To sy Step 310
Picture1.Line (1, i)-(sx, i), RGB(128, 128, 128): Picture2.Line (1, i)-(sx, i), RGB(128, 128, 128)
Picture3.Line (1, i)-(sx, i), RGB(128, 128, 128): Picture4.Line (1, i)-(sx, i), RGB(128, 128, 128)
Picture5.Line (1, i)-(sx, i), RGB(128, 128, 128): Picture6.Line (1, i)-(sx, i), RGB(128, 128, 128)
Next i
End Sub
Private Sub Command2_Click()
Clipboard.Clear: Clipboard.SetData Picture1.Image
po.SetFocus
SendKeys ("V[t]"): SendKeys ("^v"): SendKeys ("0.5 m\s" + Chr$(13))
DoEvents
Clipboard.Clear: Clipboard.SetData Picture2.Image
po.SetFocus
SendKeys ("H[t]"): SendKeys ("^v"): SendKeys ("10 mm" + Chr$(13))
DoEvents
Clipboard.Clear: Clipboard.SetData Picture3.Image
po.SetFocus
SendKeys ("UC[t]"): SendKeys ("^v"): SendKeys ("150 V" + Chr$(13))
DoEvents
Clipboard.Clear: Clipboard.SetData Picture4.Image
po.SetFocus
SendKeys ("PSI[t]"): SendKeys ("^v"): SendKeys ("2.5 A*n" + Chr$(13))
DoEvents
Clipboard.Clear: Clipboard.SetData Picture5.Image
po.SetFocus
SendKeys ("I[t]"): SendKeys ("^v"): SendKeys ("3 A" + Chr$(13))
DoEvents
Clipboard.Clear: Clipboard.SetData Picture6.Image
po.SetFocus
SendKeys ("B[t]"): SendKeys ("^v"): SendKeys ("0.25 Tl" + Chr$(13))
SendKeys ("Axis X - " + Str$(xtm) + " sec." + Chr$(13))
SendKeys ("Vol. end speed - " + Str$(round(V(xz - 1))) + " m/sec." + Chr$(13))
SendKeys ("Time fall - " + Str$(Tx(xz - 1)) + " sec." + Chr$(13))
SendKeys ("Vol. end speed without dempfing - " + Str$(round(Sqr(2 * H * gz))) + " m/sec." + Chr$(13))
SendKeys ("Energy of kick: " + Str$((round3(V(xz - 1) / Sqr(2 * H * gz)) ^ 2 * 100)) + " [max 6.25] percents.")
DoEvents
po.SaveFile "Grafiks.doc": po.SetFocus
SendKeys ("^a"): SendKeys (Chr$(8))
Timer1.Enabled = True
'Сохранение массивов значений в текстовый файл
Open "out.txt" For Output As #1
Print #1, "Шаг", "Время", "UC", "PSI", "V", "X", "I", "B"
For i = 1 To i
DoEvents
Print #1, Str$(i), round2(Tx(i)), round2(UC(i)), round2(PSI(i)), round2(V(i)), round2(X(i)), round2(tok(i)), round2(Ba(i))
Next i
Close
Timer1.Enabled = False
Form1.Caption = "-=ММАиРЭС=- -=Курсовая работа=- -=Автор: Богданов Антон=- -=Тольятти, 2006=-"
End Sub
Private Sub Form_Load()
InitGrid
End Sub
Private Function round(inp As Double) As Double
round = Int(inp * 10 ^ 9 + 0.5) / 10 ^ 9
End Function
Private Function round2(inp As Double) As Double
round2 = Int(inp * 10 ^ 6 + 0.5) / 10 ^ 6
End Function
Private Function round3(inp As Double) As Double
round3 = Int(inp * 10 ^ 4 + 0.5) / 10 ^ 4
End Function
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub Timer1_Timer()
Form1.Caption = Form1.Caption + " ."
If Len(Form1.Caption) > 50 Then Form1.Caption = ""
End Sub