Отчет по лабораторной работе Моделирование гидравлической системы в нестационарном режиме.

Российский химико-технологический университет

имени Д. И. Менделеева



Кафедра информатики и компьютерного моделирования























Отчет по лабораторной работе № 2



Моделирование гидравлической системы в нестационарном режиме.



Вариант № 14

















                                                                                Выполнил: студент гр. П-45                                                                                                             

                                                                                                         Золотарев Д. С.      



                                                                                       Проверил: Тамбовцев И. И.























Москва 2010





Схема гидравлической системы:












































Основные допущения, накладываемые на модель:

1) Система работает в нестационарном режиме;

2) Рассматривается только гидравлика процесса;

3) Сопротивление трения потоку пренебрежимо мало;

4) Жидкость несжимаема и имеет постоянную плотность;

5) Газ - идеальный pV=nRT;

6) Режим - изотермический T=const.







Система уравнений математического описания:



A) Уравнения расходов жидкости через клапаны:

1. v1 = k1 (p1 - p7)1/2

2. v2 = k2 (p2 – p8) 1/2

3. v3 = k3 (p7- p3) 1/2

4. v4 = k4 (p8 - p4) 1/2

5. v5 = k5 (p8 - p5) 1/2

6. v6 = k6 (p8 - p6) 1/2

7. v7 = k7 (p8 – p7) 1/2

B) Определение давлений жидкости и газа в емкостях:

8. p7 = p9 + ρ g h1

9. p9 = Pн H1 / (H1 - h1)

10. p8 = p10 + ρ g h2

11. p10 = Pн H2 / (H2 - h2)

C) Дифференциальные уравнения заполнения емкостей:

12. dh1/dt = (v1 -  v3  – v7) / s1

13. dh2/dt = (v2 – v4 – v5 – v6 + v 7) / s2

D) Начальные условия:

14. h1(t=0) = h10

15. h2(t=0) = h20















Информационная матрица системы уравнений:





N п/п

v1

v2

v3

v4

v5

v6

v7

p7

p8

p9

p10

h1

h01

h2

h02



1

































2

































3

































4

































5

































6

































7

































8

































9

































10

































11

































12

































13

































14

































15
















































































































Программа



Option Explicit

Option Base 1



Public culc As Integer

Const m As Byte = 2 ' Количество решаемых ОДУ

Const np% = 10, nk% = 7, nv% = 7, g! = 9.8

Public del! ' шаг

Private k!

Private y0!(m), x0! ' Начальное значение

Private n% ' Число шагов

Private kv% ' Кратность вывода

Private x1!, y1!(m), i%

Private ki!, ki1!, ki2!, vm!(nk), v!(nk), ak!(nk), p!(np)

Private hg!(m), h!(m), s!(m), pr!(m), ro!, pn!, x!, ipr%, ipr1%



Sub dydx(x As Single, y() As Single, pr!())

' расчет производных для текущих(pr) x,y

Dim j%

For j = 1 To m: h(j) = y(j): Next j

p(9) = pn * hg(1) / (hg(1) - h(1)): p(10) = pn * hg(2) / (hg(2) - h(2))

p(7) = p(9) + ro * g * h(1) * 0.000001: p(8) = p(10) + ro * g * h(2) * 0.000001

v(1) = ak(1) * Sgn(p(1) - p(7)) * Sqr(Abs(p(1) - p(7)))

v(2) = ak(2) * Sgn(p(2) - p(8)) * Sqr(Abs(p(2) - p(8)))

v(3) = ak(3) * Sgn(p(7) - p(3)) * Sqr(Abs(p(7) - p(3)))

v(4) = ak(4) * Sgn(p(8) - p(4)) * Sqr(Abs(p(8) - p(4)))

v(5) = ak(5) * Sgn(p(8) - p(5)) * Sqr(Abs(p(8) - p(5)))

v(6) = ak(6) * Sgn(p(8) - p(6)) * Sqr(Abs(p(8) - p(6)))

v(7) = ak(7) * Sgn(p(8) - p(7)) * Sqr(Abs(p(8) - p(7)))

pr(1) = (v(1) - v(3) + v(7)) / s(1): pr(2) = (-v(4) - v(5) - v(6) + v(2) - v(7)) / s(2)

For j = 1 To nk:   vm(j) = v(j) * ro:  Next j

With Worksheets("TMP")

    ' TMP out

    '.Cells(ipr, 1) = i: .Cells(ipr, 2) = "p(5-7)": .Cells(ipr, 6) = "vm"

    '.Cells(ipr, 3) = p(5): .Cells(ipr, 4) = p(6):    .Cells(ipr, 5) = p(7)

    '.Cells(ipr, 7) = vm(1): .Cells(ipr, 8) = vm(2):  .Cells(ipr, 9) = vm(3)

    '.Cells(ipr, 10) = vm(4): .Cells(ipr, 11) = vm(5): ipr = ipr + 1

    '.Cells(ipr, 2) = "x": .Cells(ipr, 4) = "y(1-2)": .Cells(ipr, 7) = "pr(1-2)"

    '.Cells(ipr, 3) = x: .Cells(ipr, 5) = y(1): .Cells(ipr, 6) = y(2)

    '.Cells(ipr, 8) = pr(1): .Cells(ipr, 9) = pr(2)

    ipr = ipr + 1

    If ipr = 180 Then ipr = 1

End With

End Sub



Sub step(x As Single, y() As Single, del As Single, x1 As Single, y1() As Single)

' шаг интегрирования по X и Y расчет X1 и Y1

Dim y12!(m), j%

Call dydx(x, y, pr)

For j = 1 To m:  y12(j) = y(j) + del * pr(j) / 2: Next j

Call dydx(x + del / 2, y12, pr): x1 = x + del

For j = 1 To m:  y1(j) = y(j) + del * pr(j):  Next j

End Sub



Public Sub gidra()

Dim j%, contr As String

Dim ii%



Static x0s!, y0s!(2)

ipr = 1: ipr1 = 3

With Worksheets("TASK")

    hg(1) = .Cells(4, 5): hg(2) = .Cells(5, 5): s(1) = 3.1415 * (.Cells(4, 9) ^ 2): s(2) = 3.1415 * (.Cells(5, 9) ^ 2)

    ro = .Cells(6, 5): pn = .Cells(6, 9)

    ' Давление (1-6) МПа

    For i = 1 To 6:   p(i) = .Cells(8, i + 4):   Next i

    ' Коэф. пpопускной способности (1-7)

    For i = 1 To nk:  ak(i) = .Cells(9, i + 4): Next i

    ' Начальные условия x0,y0(1),y0(2)

    x0 = .Cells(10, 5): y0(1) = .Cells(10, 6): y0(2) = .Cells(10, 7)

    If culc = 4 Then x0 = x0s: y0(1) = y0s(1): y0(2) = y0s(2)

    ' Число шагов, шаг, кратность вывода

    n = .Cells(11, 5): del = .Cells(11, 6): kv = .Cells(11, 7)

    ' Относительная локальная погpешность ( % ) и Кpатность шагов на вывод

    ki1 = .Cells(12, 5): ki2 = .Cells(13, 5)

    

End With

'For ii = 1 To nv: vm(ii) = 0: Next ii

'For ii = 7 To 10: p(ii) = 0: Next ii

Worksheets("TMP").Activate

Cells.Select

Selection.Clear

Range("a1").Select

Worksheets("RESULTS").Activate

Cells.Select

Selection.Clear

Range("a1").Select

With Worksheets("RESULTS")

.Cells(1, 1) = "x0": .Cells(1, 2) = "y0(1)": .Cells(1, 3) = "y0(2)": .Cells(1, 4) = "p(7)": .Cells(1, 5) = "p(8)": .Cells(1, 6) = "p(9)": .Cells(1, 7) = "p(10)": For ii = 1 To 7: .Cells(1, ii + 7) = "vm(" + Str(ii) + ")": Next ii

    .Cells(2, 1) = x0

    .Cells(2, 2) = y0(1)

    .Cells(2, 3) = y0(2)

For i = 1 To n

    ki = ki1

    Call step(x0, y0, del, x1, y1)

    x0 = x1: x0s = x0

    For j = 1 To m: y0(j) = y1(j): y0s(j) = y0(j): Next j

    If (i \ kv) = (i / kv) Then

        ' out

        .Cells(ipr1, 1) = x0

        .Cells(ipr1, 2) = y0(1)

        .Cells(ipr1, 3) = y0(2)

        For ii = 1 To 4: .Cells(ipr1, ii + 3) = p(ii + 6): Next ii

        For ii = 1 To 7: .Cells(ipr1, ii + 7) = vm(ii): Next ii

        ipr1 = ipr1 + 1

        Call dydx(x0, y0, pr)

    End If

Next i

End With

End Sub







Результаты моделирования:













































Графики



Режим заполнения:

h1(0)=h2(0)=0







































Режим аварийного слива:



h1(0)=h1(max)

h2(0)=h2(max)

K1=K2=0



























































Переходный режим:



h1(0)=h1(max)

h2(0)=h2(max)

P1=3         P1=2



















































Выводы:





В ходе работы составлен алгоритм для моделирования простой гидравлической системы в виде блок-схемы и программы для VBA.

Изучена работа данной системы в динамическом режиме.

Получены данные с достаточной достоверностью.

Построены необходимые графики.