Макрос. Вывод токовой загрузки в ветвях.

Больше
04 сен 2022 08:06 #87 от roman
В данном примере показан вариант реализации макроса в RastrWin, который записывает информацию о перетоках мощности и токовой загрузки отдельных ветвей расчетной схемы в книгу Excel.
Данный макрос может применяться, когда необходимо оперативно проанализировать токовую загрузку (переток мощности) в отдельно взятых ветвях расчетной схемы.

'********************************** Код макроса '**********************************
save_exl=1
' 1- Разрешаем запись данных в Excel, 0-запрещаем

' Объявляем переменную, которая определяет ветви в расчетной схеме: Nнач., Nкон.
dim iUserBranch
iUserBranch = Array(_
"514333","291300", _
"291255","514337", _
"291252","513319")

' Объявляем переменную, в которой будет хранится информация о перетоке мощности и величины тока в расчетной схеме. Информация для Excel
dim iExcelBranchTabl (99)

'********************************** Тело программы
Set Tbranch = Rastr.Tables("vetv")

'Поиск необходимых ветвей и формирование матрицы iExcelBranchTabl
num=(UBound(iUserBranch)-1)/2
For k=0 to num
For j=0 to Tbranch.Count-1
if (Tbranch.Cols("ip").ZS(j)=iUserBranch(2*k) and Tbranch.Cols("iq").ZS(j)=iUserBranch(2*k+1)) then
iExcelBranchTabl (3*k) = Tbranch.Cols("ip").ZS(j) & " - " & Tbranch.Cols("iq").ZS(j)
if Tbranch.Cols("ql_ip").ZS(j)>0 then
iExcelBranchTabl(3*k+1) = Tbranch.Cols("pl_ip").ZS(j)& "+j*" & abs(Tbranch.Cols("ql_ip").ZS(j))
else
iExcelBranchTabl(3*k+1) = Tbranch.Cols("pl_ip").ZS(j)& "-j*" & abs(Tbranch.Cols("ql_ip").ZS(j))
end if
iExcelBranchTabl(3*k+2) = Tbranch.Cols("ib").ZS(j)
end if
next
next

'********************************** Вывод данных в Excel
'Создание в Excel главной строки (шапка таблицы)
if save_exl=1 then
Set Excel = CreateObject("Excel.Application")
Excel.SheetsInNewWorkbook = 1
Excel.Workbooks.Add
Set ExWs = Excel.worksheets(1)
ExWs.Cells(1,1)= "№ ветви"
ExWs.Cells(1,2)="Переток мощности в ветви, МВт"
ExWs.Cells(1,3)="Значение тока, А"
end if

'Выгрузка в Excel матрицы с напряжениями в узлах
For i=0 to num
if save_exl=1 then
ExWs.Cells(i+2,1)=iExcelBranchTabl (3*i)
ExWs.Cells(i+2,2)=iExcelBranchTabl(3*i+1)
ExWs.Cells(i+2,3)=iExcelBranchTabl(3*i+2)
end if
next
'Выводим на экран Excel с записанными в нее данными
if save_exl=1 then
Excel.Visible = 1
end if
'********************************** Конец '**********************************

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
04 сен 2022 08:06 #88 от roman
Рассмотрим небольшую модификацию программы.
Инструкция <Set Tbranch = Rastr.Tables("vetv")> переписывает в переменную Tbranch полную информацию о ветвях расчетной схемы. Данная информация храниться в строгой иерархии (последовательности) и к хранящейся информации можно обратиться и вывести ее на экран.
Так, например, переменная Tbranch.Count показывает количество ветвей в расчетной модели.

Переменная Tbranch.Cols("XXX").ZS(YYY) позволяет обратиться к данным, которые находятся в строке “YYY” (ветвь расчетной схемы) и в столбце «XXX» (название переменной, которую нужно вывести).

Значение "YYY" может быть в диапазоне от “0” до “Tbranch.Count-1”
Значение "XXX" может принимать одно из разрешенных наименований:
tip - тип ветви, ip - номер начального узла ветви, iq - номер конечного узла в ветви, np - номер параллельности ветви, name - пользовательское название ветви, r - заданный параметр активного сопротивления, x - заданный параметр реактивного сопротивления, b - проводимость ветви на землю (мкСим), ktr - вещественная составляющая коэффициента трансформации, kti - мнимая составляющая коэффициента трансформации
pl_ip - величина активной мощности (P) в начале ветви, ql_ip - величина реактивной мощности (Q) в начале ветви, pl_iq - величина активной мощности (P) в конце ветви, ql_iq - величина реактивной мощности (Q) в конце ветви, ib - величина тока в начале ветви, ie - величина тока в конце ветви,
.......... и т.д.

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум
Пользовательское соглашение.

По всем возникшим вопросам Вы можете обратиться к администрации сайта по электронной почте (administrator@simenergy.ru) или с помощью формы обратной связи.

Статистика сайта:
Яндекс.Метрика