Макрос. Вывод уровней напряжений в узлах.

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

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

' Объявляем переменную, в которую будет занесена Таблица с необходимыми узлами.
' Необходимо для переменной iUserNode задать расчетные узлы.
dim iUserNode
iUserNode = Array("524719","524702","524727","524710")

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

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

'Поиск необходимых узлов и формирование матрицы iExcelNodeTabl
For k=0 to UBound(iUserNode)
For j=0 to Tnode.Count-1
if Tnode.Cols("ny").ZS(j)=iUserNode(k) then
iExcelNodeTabl (2*k) = Tnode.Cols("ny").ZS(j) & " | " & Tnode.Cols("name").ZS(j)
iExcelNodeTabl(2*k+1) = Tnode.Cols("vras").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)="Напряжение в узле"
end if
'Выгрузка в Excel матрицы с напряжениями в узлах
For i=0 to UBound(iUserNode)
if save_exl=1 then
ExWs.Cells(i+2,1)=iExcelNodeTabl (2*i)
ExWs.Cells(i+2,2)=iExcelNodeTabl(2*i+1)
end if
next
'Выводим на экран Excel с записанными в нее данными
if save_exl=1 then
Excel.Visible = 1
end if
'********************************** Конец '**********************************

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

Больше
04 сен 2022 08:05 #86 от roman
Рассмотрим небольшую модификацию программы.
Инструкция <Set Tnode=Rastr.Tables("node")> переписывает в переменную Tnode полную информацию об узлах расчетной схемы. Данная информация храниться в строгой иерархии (последовательности) и к хранящейся информации можно обратиться и вывести ее на экран.
Так, например, переменная Tnode.Count показывает сколько узлов в расчетной модели.
Переменная Tnode.Cols("XXX").ZS(YYY) позволяет обратиться к данным, которые находятся в строке “YYY” (узел расчетной схемы) и в столбце «XXX» (название переменной, которую нужно вывести).

Значение "YYY" может быть в диапазоне от “0” до “Tnode.Count-1”
Значение "XXX" может принимать одно из разрешенных наименований:
sta - состояние узла , tip - тип узла , ny - номер узла, name - название узла , uhom- номинальное напряжение, nsx – номер статической характеристики нагрузки
na – номер района, pn –нагрузка - значение активной мощности в узле, qn – нагрузка -значение реактивной мощности в узле, pg – генерация - значение активной мощности в узле , qg – генерация --значение реактивной мощности в узле, vzd – заданный модуль напряжения
vras – расчетный модуль напряжения, delta – расчетный угол напряжения
.......... и т.д.

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

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

Работает на Kunena форум
Статистика сайта:
Яндекс.Метрика