Перейти к содержанию

Редактор сценариев симуляции

Сокращения и определения

Контейнер - изолированное окружение в котором исполнятся Python-код.

Скрипт – исполняемый файл сценария симуляции с кодом на языке программирования Python.

ЯП – язык программирования.

Краткий обзор приложения «Редактор сценариев симуляции»

Приложение «Редактор сценариев симуляции» входит в состав интеграционной платформы и предназначено для разработки сценариев симуляции схемы энергосистемы на языке программирования Python.

Количество контейнеров определеяется на этапе отгрузки продукта Заказчику на основании количества оплаченных лицензий.

Приложение «Редактор сценариев симуляции» имеет один экран. На экране есть три основных области:

  • «Контейнер»

  • «Библиотека скриптов»

  • «Область входных и выходных сигналов»

Для доступа к приложению «Редактор сценариев симуляции» необходимо при создании или редактировании проекта активировать доступ к приложению «Редактор сценариев симуляции» и нажать кнопку «Применить».

После выполненных действий, приложение «Редактор сценариев симуляции» отобразится в списке доступных приложений проекта.

Создания скрипта

Для создания скрипта необходимо перейти в приложение «Редактор сценариев симуляции» и в окне приложения нажать кнопку «Новый лаунчер» и в рабочей области приложения выбрать блокнот «Python 3».

После выполнения действий, описанных выше, в библиотеку скриптов будет добавлен скрипт с наименование Untitled и открыто окно ввода программного кода на ЯП Python.

Синтаксис скрипта:

Скрипт сценария управления симуляцией осуществляется на ЯП Python3. Посредством скрипта доступен следующий функционал:

  • управление статусом симуляции (старт/стоп);
  • управление оборудованием в ходе симуляции (например: отпайка РПН, положение коммутационных аппаратов и другие);
  • построение графиков и другой функционал библиотек Matplotlib и Numpy;
  • разработка и запуск логики управления симуляцией, vPLC, vPACS и данных из протоколов с использованием входных и выходных сигналов.

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

Импорт модулей и библиотек

Для управления схемой и использования скрипта необходимо выполнить обязательные импорты:

Импорт схемы

from dtps.scheme import scheme

Импорт перечня оборудования

from dtps.equipment.enum import

Импорт команд для управления симуляцией

from dtps.simulation import Simulation, wait

Опциональные импорты:

Импорт библиотеки Matplotlib

import matplotlib

Импорт библиотеки NumPy

import numpy

Примечание

В настоящей момент доступно только две стронних библиотеки для импорта в проект: Matplotlib и NumPy.

После импорта требуемых модулей и библиотек можно приступать к разработке логики скрипта.

Синтаксис команд управления симуляцией

  • Запуск симуляции
Simulation().start(duration)  
#  duration - желаемая длительность симуляции в секундах. 
Например, Simulation().start(30)
  • Останов симуляции
Simulation().stop()

Инициализация схемы и оборудования

Для управления элементами схемой текущего проекта в приложении «Симулятор ЭЭС» необходимо выполнить инициализацию элементов схемы. Для этого необходимо создать переменную, в которой будет храниться ссылка на оборудование определенной подстанции.

Инициализация оборудования конкретной подстанции

scheme().substations(name).equipment()  
#  name - имя ПС аналогичное имени ПС в Редактор ЭЭС.
Например, "ПС Новая 550/220 кВ".

Получение всей информации со схемы о конкретной ЛЭП

scheme().transmission_lines(name)  
#  name - имя ЛЭП аналогичное имени ЛЭП в Редактор ЭЭС.
Например, "ЛЭП Новая Москва".

Примечание

В случае, если необходимое оборудование или сегмент ЛЭП не привязан к какой-либо ПС или ЛЭП соответственно, то аргумент "name" – "Нераспределенные".

Пример инициализации оборудования, относящегося к "ПС 110/10" и не относящегося к какой-либо ПС:

equipment_SS2 = scheme().substations("ПС 110/10").equipment()
equipment_SS1 = scheme().substations("Нераспределенные").equipment()

Пример инициализации сегментов ЛЭП, относящихся к "ЛЭП1" и не относящихся к какой-либо ЛЭП:

equipment_tl1 = scheme().transmission_lines("ЛЭП1")
equipment_tl2 = scheme().transmission_lines("Нераспределенные")

Синтаксис команд

Посредством приложения «Редактор сценариев симуляции» можно управлять оборудованием схемы. Перечень параметров для управления аналогичен параметрам элементов в приложении «Симулятор ЭЭС».

Для управления оборудованием необходимо использовать переменную оборудования/ЛЭП. Для этого необходимо обратиться к переменной, в которой храниться ссылка на оборудование [см. пункт "Инициализация схемы и оборудования"].

Примечание

Для автоматизированного отображения элементов необходимо нажать клавишу Tab после переменной, в которой хранится оборудования ПС/ЛЭП. Например после: «equipmentPS2.» или «transmitionLines.» далее выбрать из представленного списка необходимо оборудование.

После выбора оборудования необходимо выбрать требуемый метод.

Методы get()

Данные методы не требуют аргументов и используется для получения значений. Перечень возможных методов для каждого оборудования доступен после обращения к оборудованию. Например, «equipmentPS2.circuit_breakers("В258").».

Методы set()

Данные методы используются для задания параметров элементам схемы. В связи с этим у методов set() необходимо указывать аргумент типа float (например 1.0), кроме следующих методов:

Силовой трансформатор

set_tap_changer_position(value) 
#  value типа int (например: 1)

Асинхронный двигатель

Режим управления

set_motor_operation_mode(value) 
# value одно из значений 
(например: MotorOperationMode.SPEED, MotorOperationMode.LOAD)

3-ф и 1-ф выключатель:

Положение выключателя

set_position(value) # value одно из значений (Position.ON, Position.OFF)

3-ф и 1-ф разъединитель:

Положение разъединителя

set_position(value) #  value одно из значений (Position.ON, Position.OFF)

3-ф и 1-ф заземляющие ножи:

Положение ЗН

set_position(value) # value одно из значений (Position.ON, Position.OFF)

У СНЭЭ:

Режим СНЭЭ

set_electricity_storage_system_mode(value) 
# value одно из значений 
(ElectricityStorageSystemMode.CHARGE, ElectricityStorageSystemMode.DISHARGE, 
ElectricityStorageSystemMode.OFF)

У 1-ф короткого замыкания:

Состояние КЗ

set_fault(value) # value одно из значений (Position.ON, Position.OFF)

У 3-ф короткого замыкания:

Состояние КЗ

set_fault(value) # value одно из значений (Position.ON, Position.OFF)

Тип КЗ

set_short_circuit_type(value)  
# value одно из значений 
(ShortCircuitType.ABC, ShortCircuitType.ABCG, ShortCircuitType.BC, ShortCircuitType.BCG, ShortCircuitType.AG)

У синхронного генератора:

Состояние автоматики регулирования возбуждения

set_driving_winding_automatic_regulation(value)  
# value одно из значений 
(DrivingWindingAutomaticRegulation.ON, DrivingWindingAutomaticRegulation.OFF)

Состояние автоматики регулирования частоты вращения

set_speed_automatic_regulation(value)  
# value одно из значений (SpeedAutomaticRegulation.ON, SpeedAutomaticRegulation.OFF)

Состояние автоматики регулирования мощности

set_power_automatic_regulation(value) 
# value одно из значений (PowerAutomaticRegulation.ON, PowerAutomaticRegulation.OFF)

Примечание

Полный перечень доступных методов доступен при нажатии клавишы Tab после указания требуемого оборудования (например: «synchronous_generators("Синхронный генератор 124").»)

Пример получения тока фазы А в начале сегмента ЛЭП «Сегмент 2-3», не привязанного к какой-либо ЛЭП:

transmitionLines = scheme().transmission_lines("Нераспределенные")
current_a_TL = transmitionLines.segments("Сегмент ЛЭП").get_current_a_second()

Пример получения тока фазы А, протекающего через выключатель «В258», относящегося к ПС «ПС Новая 2»:

equipmentPS2 = scheme().substations("ПС Новая 2").equipment()
current_a_result_on = equipmentPS2.circuit_breakers("В258").get_current_a()

Создание входных и выходных сигналов

Для работы с данными из vPLC, vPACS, протоколов передачи и информационной модели, в приложении «Редактор сценариев симуляции» имеется возможность создать входные и выходные сигналы. Далее созданные сигналы связываются с другими сигналами в приложении «Конфигуратор протоколов» -> экран «Матрица связей и сигналов».

Примечание

Важно: для использования созданных сигналов в скрипте необходимо в программном коде использовать Тег сигнала в качестве наименования переменной.

На рисунке ниже представлено окно создания выходного сигнала.

Параметр сигнала Значение Примечание
Объект Значение параметра заполняем вручную. Параметр обязателен для заполнения.
Уровень напряжения Значение параметра необходимо выбрать из выпадающего списка. Если для оборудования сигнала не определен уровень напряжения, значение параметра не заполняем.
Оборудование Значение параметра заполняем вручную. Параметр обязателен для заполнения.
Тип сигнала Значение параметра необходимо выбрать из выпадающего списка - указать тип создаваемого сигнала. Параметр обязателен для заполнения.
Наименование сигнала Значение параметра заполняем вручную. Параметр обязателен для заполнения.
Тег Значение параметра заполняем вручную - указываем уникальный тег сигнала, который используется как переменная при использовании сигнала. Параметр обязателен для заполнения.
Класс тревоги Значение параметра необходимо выбрать из выпадающего списка. По умолчанию для параметра устанавливается значение "Оперативный". Параметр обязателен для заполнения.
Предупредительная верхняя граница Значение параметра доступно для редактирования, если для сигнала установлен тип "Измерение". Параметр не обязателен для заполнения.
Аварийная верхняя граница Значение параметра доступно для редактирования, если для сигнала установлен тип "Измерение". Параметр не обязателен для заполнения.
Предупредительная нижняя граница Значение параметра доступно для редактирования, если для сигнала установлен тип "Измерение". Параметр не обязателен для заполнения.
Аварийная нижняя граница Значение параметра доступно для редактирования, если для сигнала установлен тип "Измерение". Параметр не обязателен для заполнения.

Для сохранения нового сигнала необходимо нажать на кнопку "Создать". Кнопка "Создать" активна, если на форме заполнены все обязательные для заполнения параметры. Для отмены действия необходимо нажать на кнопку "Отменить".

После клика на кнопку "Создать" новый сигнал будет автоматически добавлен в область выходных сигналов.

На рисунке ниже представлено окно создания входного сигнала

Параметр сигнала Значение Примечание
Наименование сигнала Значение параметра заполняем вручную. Параметр обязателен для заполнения.
Тег Значение параметра заполняем вручную - указываем уникальный тег сигнала, который используется как переменная при использовании сигнала. Параметр обязателен для заполнения.

Для сохранения нового сигнала необходимо нажать на кнопку "Создать". Кнопка "Создать" активна, если на форме заполнены все обязательные для заполнения параметры. Для отмены действия необходимо нажать на кнопку "Отменить".

После клика на кнопку "Создать" новый сигнал будет автоматически добавлен в область входных сигналов.

Запись сценария симуляции

В приложении «Редактор сценариев симуляции» имеется функционал записи действий пользователя в приложении «Симулятор ЭЭС» на ЯП «Python».

Для этого необходимо нажать кнопку «Запись» на панели инструментов в приложении "Редактор сценариев симуляции", далее перейти в приложение "Симулятор ЭЭС" и запустить симуляцию.

После начала записи сценария симуляции и запуска симуляции приложение «Редактор сценариев симуляции» начнет фиксировать все совершенные пользователям действия в ходе симуляции.

Для завершения записи необходимо нажать на кнопку завершения записи сценария симуляции в приложении "Редактор сценариев симуляции".

После завершения записи в библиотеке сценариев приложения "Редактор сценариев симуляции" будет создан скрипт, в наименовании которого будет установлена текущая дата.

Примечание

В сценарии отображаются только события, произошедшие в приложении "Симулятор ЭЭС" в ходе симуляции, а также команды управления симуляцией (старт, стоп).

Максимальная длительность записи - 100 минут.

Запуск сценария симуляции

Для запуска сценария симуляции (созданного вручную пользователем или созданного автоматически на основании функционала записи) необходимо открыть сценарий в библиотеке скриптов (дважды кликнув на него ЛКМ) и нажать на кнопку "Выполнить ячейку и продвинуться вперед" в окне сценария.

Примечание

Если при открытии сценария приложение предложит выбрать ядро, необходимо подтвердить действие на форме модального окна.

После запуска сценария симуляции в приложении "Редактор сценариев симуляции" в приложении "Симулятор ЭЭС" автоматически будет запущен процесс симуляции и будут выполнены действия согласно выбранному сценарию.