Макросы в RastrWin на языке C Sharp

Материал из Wiki Power System
Перейти к: навигация, поиск

Эта статья посвящена обзору программного интерфейса ПК 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