Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Excel_new.doc
Скачиваний:
98
Добавлен:
22.02.2015
Размер:
5.05 Mб
Скачать
      1. Решение систем дифференциальных уравнений

Электроэнергетическая система - это система динамического типа. В каждый момент в ЭЭС происходят те или иные возмущения, приводящие к изменению режима. При этом новое состояние может быть устойчивым (в ответ на случайные изменения режима система управления возвращает ЭЭС в исходное состояние) или неустойчивым. Переходные процессы в ЭЭС описываются системами дифференциальных уравнений (ДУ). Представляет интерес решение систем ДУ в среде электронных таблиц.

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

где Tj (c.)-постоянная момента инерции генератора; PT (о.е.)- момент турбины; РС (о.е.) - максимальная синхронная мощность генератора; РD (о.е.) - демпфирующий момент; s (о.е.) - скольжение и  (рад.) - угол ЭДС генератора.

Рассматриваются три режима, связанные единством переходного процесса: доаварийный, на интервале времени (0,Тк), аварийный (Тк, Тот) и послеаварийный (Тот, Тmax.). Каждому из указанных режимов соответствуют определенные значения РС, РD .

Решение системы выполняется численным методом Рунге-Кутты четвертого порядка, суть которого при решении одного дифференциального уравнения заключается в следующем. На шагеk расчетного процесса определяются четыре оценки производной - в начале интервала (xk, xk +h) дискретности , две в его середине,и одна в конце интервала. Определяется усредненная оценка производной, причем С1 и С2 дается двойной вес:С=(С1+2С2+2С3+С4)/6 искомый параметр x(t+h)= x(t+h)+ Ch.

При решении системы дифференциальных уравнений

методом Рунге-Кутты представленная структура решения остается такой же, за исключением того, что простые переменная x(t) и функция f(x,t) заменяются на векторы соответственно (t) и(). Применительно к рассматриваемой системе ДУ рекуррентные соотношения имеют вид

где

Ниже приведена VB - программа, реализующая поставленную задачу. Следует обратить внимание на организацию ввода исходных данных, в частности на формирование столбца названий переменных. Первоначально с помощью оператора Array() формируется одномерный массив - строка ID из идентификаторов вводимых данных. Далее этот массив переписывается в двумерный (с одним столбцом) массив ID1. Окончательно через свойство FormulaArray = ID1 данный массив передается блоку ячеек Excel-таблицы.

Предполагается, что числовые значения исходных данных расположены справа от идентификаторов данных. Отсюда передача данных программе организована путем непосредственного присвоения (Range("…").Value).

Если массив исходных данных фиксирован относительно ячейки А1, то расположение результирующего массива организовано по принципу "куда хотите?" Для этого предусмотрен диалог InputBox(). В результате программой будет получен идентификатор (строка) верхней левой ячейки результирующего блока. В основной программе вывод результатов адаптирован к данной ячейке и осуществляется на каждом шаге цикла по времени.

Программа " Электромеханический переходный процесс"

Option Base 1

Rem Глобальные переменные, видимые из всех модулей

Private PC, PD, D, s 'синхронный и демпфирующий моменты, угол, скольжение

'для доаварийного, аварийного и послеаварийного интервалов времени:

Private Tj, PT, PCda, PCab, PCpa, PDda, PDab, PDpa, _

Tk, Tot, Tmax, h, r As Range

Rem Электромеханический переходный процесс

Public Sub trans_proccess()

Rez_title = Array("Время", "Угол", "Скольжение")

Dim time(15, 2), ID, ID1(15, 1), NRB As String

vvod_data NRB ' Ввод исходных данных из таблицы Excel

Rem ' Результирующий титул

Set r = Range(Range(NRB).Offset(0, 0), Range(NRB).Offset(0, 2))

r.FormulaArray = Rez_title

PC = PCda: PD = PDda: D = Application.Asin(PT / PCda): s = 0: i = 0

'Расчетный процесс

For t = 0 To Tmax Step h ' Цикл по времени

i = i + 1 'Счетчик для записи в таблицу

Range(NRB).Offset(i, 0).Value = t ' Вывод результатов расчета

Range(NRB).Offset(i, 1).Value = D * 180 / 3.14159

Range(NRB).Offset(i, 2).Value = s

If (t > Tk) Then PC = PCab: PD = Pdab ' Идентификация режима

If (t > Tot) Then PC = PCpa: PD = Pdpa

' Оценка производных

cdu D, s, r1, b1

cdu D + h * r1 / 2, s + h * b1 / 2, r2, b2

cdu D + h * r2 / 2, s + h * b2 / 2, r3, b3

cdu D + h * r3, s * h + b3, r4, b4

D = D + h * (r1 + 2 * r2 + 2 * r3 + r4) / 6: ' Коррекция параметров

s = s + h * (b1 + 2 * b2 + 2 * b3 + b4) / 6

Next t

End Sub

' Модуль "Оценка производных"

Public Sub cdu(D, s, c1, c2)

c2 = (PT - PC * Sin(D) - PD * s) / Tj

c1 = 314 * s

End Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]