Дворниченко Михайло

Blog

PowerSim SDK. Пишем первую программу (Пример)

Сегодня я публикую первую статью посвященную PowerSim SDK. В будущем публикации будут по мере того как появится свободная минута. Однако если у Вас нет времени ждать и возникли конкретные вопросы, пожалуйста, пишите мне и я обязательно Вам отвечу.

Итак, начнем.

План:

1)      Подключение PowerSim SDK к VisualStudio 2010

2)      Краткий обзор технической документации PowerSim SDK

3)      Подготовка модели PowerSim для подключения к проекту  с помощью Powersim Studio SDK Administration Utility

4)      Первая программа с использованием PowerSim SDK

 

1.     Подключение PowerSim SDK к VisualStudio 2010

На этом этапе лично у меня начались «танцы с бубном». По идее после установки SDK, библиотеки автоматически регистрируются в системе и открыв VisualStudio –Project-Add reference- COM-Powersim Studio Simulation Engine (PsSimEng.dll), нужная библиотека подключается к проекту и можно работать. Но есть одно «НО», у меня на Windows 7 x64 библиотека не принималась и выдавала странные ошибки. В итоге на форумах удалось узнать, что проблема именно с операционной системой x64.

Да, PowerSim 8 Academic рассчитано на архитектуру x86 и в свойствах компилятора нужно это четко указывать иначе при компиляции поплывут ошибки.

Хотя если верить сайту PowerSim , начиная с версии PowerSim 9, система будет поддерживать архитектуру x64.

Если вы столкнулись с проблемой аналогичной моей, то предлагаю пойти по следующему этапу.

Нужную нам библиотеку необходимо взять из папки с примерами программ, который идут в поставке с SDK. Для этого после установки PowerSim Studio и PowerSim SDK в папке x:\Program Files\Powersim\Powersim Studio SDK\Samples\Visual Basic .NET\SimInspector\bin необходимо забрать файл Interop.PsSimEng.dll.

Далее просто подключить его к проекту Project-Add reference. И всё должно сработать. Пересоберите проект.

 

2.     Краткий обзор технической документации PowerSim SDK

Если библиотеку на предыдущем этапе подключили успешно, то настало время перейти к обзору документации.

После установки SDK документация находится здесь: C:\Program Files\Powersim\Powersim Studio SDK\Help\ PsSDK.chm

В файле документации всё описано чётко но очень «сухо». Т.е. не рассчитывайте на огромное количество примеров на каждой странице как в MSDN. А иногда те примеры которые представлены в документации и вовсе лучше не смотреть, т.к. во первых они написаны для VBA и/или VB.NET, а во вторых в них куча ошибок. Вероятно примеры остались старые, а SDK дорабатывали. Из-за этого и возникает такая ерунда.

Поэтому морально готовьтесь, что всё разбирать придется самостоятельно ручками. Но не стоит переживать, если поймете принцип работы, то Вам и примеры будут не нужны.

Спасибо разработчикам документации за интерактивную карту интерфейсов. Действительно, с ней работать достаточно просто и наглядно.

PowerSim SDK Documentation

На этом пожалуй краткий обзор документации стоит завершить.

 

3.     Подготовка модели PowerSim для подключения к проекту  с помощью Powersim Studio SDK Administration Utility

На этом этапе расскажу очень интересную штуку, которая позволяет адаптировать  модель разработанную в PowerSim Studio для работы в SDK.

Для этих целей в поставке с SDK идет хитрая утилита под названием  Studio SDK Administration Utility.

После того как мы нарисовали нашу модель в PowerSim Studio нам необходимо её сохранить. Формат файла *.sip . После этого запускаем нашу утилиту администрирования и нажимаем кнопку “Authorization Key…”.

Выглядит программка следующим образом:

Powersim Studio SDK Administration Utility

На экране появится окно предлагающее ввести пароль или код продукта**, а ниже будет предложено выбрать файл нашей модели.

** Код продукта нужно взять из документа, который прислали на почту там, где находится серийный номер.

После всего этого нажимаем «ОК», и на экране появится надпись что в буфер обмена скопирован некий ключ, который надо будет вставить в программный код, для идентификации модели. Куда вставлять этот ключ, будет рассказано дальше.

Вот собственно и всё. Модель готова для работы с SDK.

 

4.     Первая программа с использованием PowerSim SDK

И вот мы подошли к последнему этапу, в котором с Вами напишем первую программу.

Открываем VisualStudio. Создаем проект на языке C#. Подключаем к проекту библиотеку (рассмотрено на этапе 1). Приступаем к кодингу.

Указываем

using PsSimEng;

Ниже я напишу процедуру, а в комментариях подробно опишу действия.

// подключение движка ситуационного модеирования
private readonly PsSimEng.SimulationEngine engine = new PsSimEng.SimulationEngine();
private void tryGetData()
{
            // Указываем путь к файлу модели
            PsSimEng.SimulationProject project = engine.OpenProject(@"D:\Install\Work\НИЦИТ\Rada\Source\26-12-11\PSMDLS\2011\062-DNC\M062.sip", "сюда вставить полученный код модели из Studio SDK Administration Utility ");

            // Обращаемся к компонентам модели
            SimulationComponents simulationComponents = project.Components;

            // извлекаем компоненты модели. При этом OpenDefaultSimulation() запускает процесс имитации
            SimulationComponent simulationComponent = simulationComponents.Project.OpenDefaultSimulation().Component;

            // После имитации, необходимо сделать обращение к переменным.
            ModelVariables mvs = simulationComponent.Variables;

            // Извлекаем данные
            foreach (ModelVariable item in mvs)
            {
                int id = item.Id; // идентификатор переменной в проекте
                string fullname=item.FullName; // Имя переменной
                string number = item.Number.ToString(); // Значение переменной
            }
}

 

Вот так, в результате мы можем извлечь данные из модели.

 

Естественно этот пример не раскрывает всю полноту работы с PowerSim SDK, а исходный код написан не с позиции оптимальности.

Надеюсь, что информация изложена доступно и Вам она поможет на начальном этапе освоить работу с PowerSim SDK.

Удачи!

С Уважением,
Дворниченко Михаил

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *