Макросы в RastrWin на языке C Sharp
Эта статья посвящена обзору программного интерфейса ПК RastrWin на языке C#.
Расчёт установившегося режима
Все расчётные методы и объекты, связанные с расчётом установившегося режима, хранятся в библиотеке ASTRALib.dll, которая находится в каталоге ПК RastrWin. Необходимо отметить, что для выполнения тех или иных расчётов требуется соответствующая лицензия.
Перед выполнением расчётов нужно подключить к проекту библиотеку ASTRALib.dll, в разделе reference (ссылки).
Далее приведён пример загрузки файла с существующей расчётной моделью в ПК RastrWin, записи мощности нагрузки в узел, находящийся во второй строке таблицы Узлы и запуск расчёта установившегося режима.
В качестве наименований таблиц и колонок в программном коде используются уникальные внутренние индентификаторы.
string PathFile = "Путь до файла с даными расчётной модели";
//Создание указателя на экземпляр RastrWin и его запуск
ASTRALib.IRastr Rastr = new ASTRALib.Rastr();
//Загрузка файла с данными
Rastr.Load(ASTRALib.RG_KOD.RG_REPL, PathFile, "");
//Объявление объекта, содержащего таблицу "Узлы"
ASTRALib.ITable Node = Rastr.Tables.Item("node");
//Создание объектов, содержащих информацию по каждой колонке
ASTRALib.ICol numberBus = Node.Cols.Item("ny"); //Номер Узла
ASTRALib.ICol powerActiveLoad = Node.Cols.Item("pn"); //активная мощность нагрузки.
ASTRALib.ICol powerRectiveLoad = Node.Cols.Item("qn"); //реактивная мощность нагрузки.
ASTRALib.ICol voltageCalc = Node.Cols.Item("vras"); //Расчётное напряжение.
Для того чтобы прочитать параметр из соответвующей колонки необходимо вызвать метод get_ZN:
//Считывание расчётного значения напряжения узла с индексом 2
int NubBus=2;
double volAuto = voltageCalc.get_ZN(NubBus);
Важно отмтеить, что номер узла не совпадает с его индексом в таблице "node".
Запись какого-либо параметра в таблицу растра осуществляется через вызов метода set_ZN для соответствующей колонки.
//Пример записи мощности нагрузки 2 + j1 МВА в строку 2, таблицы "Узлы"
int NubBus=2;
double P=2;
double Q=1;
powerActiveLoad.set_ZN(NumBus, P);
powerRectiveLoad.set_ZN(NumBus, Q);
Для запуска расчёта установившегося режима надо вызвать метод rgm экземпляра RastrWin. В кавычках указываются параметры расчёта.
Rastr.rgm(""); //Расчет режима
Статус расчёта режима можно посмотреть в таблице com_regim. В колонке status хранится информация о том как завершился расчёт режима: 0 - успех; 1 - аварийная остановка расчёта.
/// <summary>
/// Расчёт установившегося режима
/// </summary>
/// <returns>Возвращает: true - успешный расчёт, false - аварийная остановка расчёта</returns>
bool calcRegim(ASTRALib.IRastr inRastr)
{
ASTRALib.ITable ParamRgm = inRastr.Tables.Item("com_regim");
ASTRALib.ICol statusRgm = ParamRgm.Cols.Item("status");
inRastr.rgm(""); //Расчет режима
int a = statusRgm.get_ZN(0);
if (a == 0)
return true;
else
return false;
}
За сохранение результатов расчёта в расчётную модель отвечает метод Save.
Rastr.Save(PathFile, "");
Примечания
Версия программы, используемая при инаписании статьи- RastrWin 3 v 1.80