Tekvel Magic
|
Класс ServerSimulator для имитации MMS-сервера. Подробнее...
Открытые члены | |
def | get_by_name (cls, ied_name, ap_name) |
Получить экземпляр ServerSimulator по имени IED и AccessPoint. Подробнее... | |
def | destroy_all (cls) |
Уничтожает все экземпляры ServerSimulator. Подробнее... | |
def | __new__ (cls, *args, **kwargs) |
Создание или получение экземпляра ServerSimulator. Подробнее... | |
def | __init__ (self, scl=None, ied_name=None, ap_name=None, ip=None, port=102) |
Инициализация экземпляра ServerSimulator. Подробнее... | |
def | __del__ (self) |
Деструктор для класса ServerSimulator. Подробнее... | |
def | model (self) |
Свойство для доступа к полной модели данных MMS-сервера. Подробнее... | |
def | create (self, **kwargs) |
Создание и инициализация экземпляра ServerSimulator. Подробнее... | |
def | create_ied (self, **kwargs) |
Обертка для создания и инициализации экземпляра IED. Подробнее... | |
def | start (self) |
Запускает симулятор ServerSimulator для MMS-симуляции. Подробнее... | |
def | is_running (self) |
Проверяет, запущен ли симулятор ServerSimulator. Подробнее... | |
def | stop (self) |
def | is_created (self) |
Проверяет, создан ли экземпляр ServerSimulator. Подробнее... | |
def | destroy (self) |
Уничтожает экземпляр ServerSimulator. Подробнее... | |
def | ied_name (self) |
Возвращает имя IED, связанное с экземпляром ServerSimulator. Подробнее... | |
def | ap_name (self) |
Возвращает имя AccessPoint (AP), связанное с экземпляром ServerSimulator. Подробнее... | |
def | port (self) |
Возвращает порт, используемый экземпляром ServerSimulator. Подробнее... | |
def | port (self, port) |
Устанавливает порт для ServerSimulator. Подробнее... | |
def | ip (self) |
Возвращает IP-адрес, используемый экземпляром ServerSimulator. Подробнее... | |
def | ip (self, address) |
Устанавливает IP-адрес для ServerSimulator. Подробнее... | |
def | scl (self) |
Возвращает объект SCL, связанный с ServerSimulator. Подробнее... | |
def | set_val (self, str reference, value, val_type=None, bool auto_ts=True) |
Устанавливает значение для указанной ссылки в модели сервера. Подробнее... | |
Открытые атрибуты | |
port | |
ip | |
Статические открытые данные | |
list | instances = [] |
Класс ServerSimulator для имитации MMS-сервера.
Класс ServerSimulator используется для имитации MMS-сервера (Manufacturing Message Specification) для конкретного IED (Интеллектуальное Электронное Устройство) и точки доступа (AccessPoint). Класс гарантирует, что для каждой комбинации IED и AccessPoint будет создан только один экземпляр сервера. Он поддерживает создание, запуск и остановку MMS-сервера, а также предоставляет возможность задавать значения для определенных атрибутов данных IED.
Если имя IED или точка доступа не указаны, класс предложит пользователю выбрать их через диалоговые окна. Класс также автоматически управляет ресурсами, очищая их при удалении экземпляра.
ref_list
) правильно определены в соответствии с используемой моделью данных.Пример использования класса ServerSimulator:
def __init__ | ( | self, | |
scl = None , |
|||
ied_name = None , |
|||
ap_name = None , |
|||
ip = None , |
|||
port = 102 |
|||
) |
Инициализация экземпляра ServerSimulator.
Метод __init__
инициализирует экземпляр ServerSimulator с указанными SCL, именем IED, именем AccessPoint, IP-адресом и портом. Если экземпляр с таким же IED и AccessPoint уже существует, процесс инициализации прекращается. Экземпляр может прослушивать определенный IP-адрес и порт, и если IP-адрес не указан, по умолчанию используется "0.0.0.0", что означает прослушивание на всех IP-адресах хоста.
scl | Объект SCL, используемый для симуляции (необязательно). |
ied_name | Имя IED для симуляции (необязательно). |
ap_name | Имя AccessPoint для симуляции (необязательно). |
ip | IP-адрес, на котором сервер будет прослушивать (по умолчанию: "0.0.0.0"). |
port | Номер порта для сервера (по умолчанию: 102). |
def __del__ | ( | self | ) |
Деструктор для класса ServerSimulator.
Метод __del__
выполняет операции очистки при уничтожении экземпляра ServerSimulator. Если симулятор работает, он сначала его останавливает. Если модель была создана, она уничтожается. В завершении экземпляр удаляется из списка ServerSimulator.instances
для обеспечения корректного освобождения ресурсов.
def __new__ | ( | cls, | |
* | args, | ||
** | kwargs | ||
) |
Создание или получение экземпляра ServerSimulator.
Этот метод __new__
отвечает за создание нового экземпляра ServerSimulator или получение существующего, основанного на предоставленных именах IED и AccessPoint. Если IED или AccessPoint не предоставлены, метод предложит пользователю выбрать IED и AccessPoint из SCL файла. Метод также проверяет наличие IED и AccessPoint в предоставленном SCL файле.
scl | Объект SCL, используемый для симуляции. |
ied_name | Имя IED для симуляции. |
ap_name | Имя AccessPoint для симуляции. |
ValueError | Выбрасывается, если SCL файл не предоставлен. |
AttributeError | Выбрасывается, если AccessPoint указан без имени IED или если IED или AccessPoint недействительны. |
Exception | Выбрасывается, если в предоставленном SCL файле нет допустимых IED или возникают другие проблемы при выборе. |
def ap_name | ( | self | ) |
Возвращает имя AccessPoint (AP), связанное с экземпляром ServerSimulator.
Это свойство возвращает имя AccessPoint (AP), которое используется в текущем экземпляре ServerSimulator. Имя AP извлекается из файла SCL во время инициализации.
def create | ( | self, | |
** | kwargs | ||
) |
Создание и инициализация экземпляра ServerSimulator.
Метод create
конструирует экземпляр ServerSimulator из модели SCL и выполняет его инициализацию. Если симулятор сервера уже был создан, функция вернётся без выполнения дополнительных действий. Метод выполняет следующие действия:
Если аргумент init_values
установлен в True
или опущен, функция инициализирует атрибуты данных значениями по умолчанию или предоставленными значениями для временной метки, качества, режима поведения и здоровья. Эти значения могут быть настроены с помощью ключевых аргументов q
, beh
, mod
и health
.
init_values | Флаг, указывающий на необходимость инициализации атрибутов модели данных сервера (по умолчанию: True). |
q | Опциональный объект качества для инициализации атрибутов качества. |
beh | Опциональный объект BehaviourModeKind для инициализации состояния поведения. |
mod | Опциональный объект BehaviourModeKind для инициализации режима работы. |
health | Опциональный объект HealthKind для инициализации состояния здоровья. |
autofix_trgops | Опциональный флаг, устанавливающий значение всех атрибутов триггеров (dchg, qchg, dupd) в значение "true" для всех элементов DA в DataTypeTemplates симулируемого SCL-файла в соответствии с применимым NSD (по умолчаию: True) |
Exception | Выбрасывается, если SCL не загружен или если возникают какие-либо проблемы при создании или инициализации. |
def create_ied | ( | self, | |
** | kwargs | ||
) |
Обертка для создания и инициализации экземпляра IED.
Это простая обертка вокруг метода create
, специально предназначенная для создания IED. Она выполняет ту же функциональность, что и метод create
, конструируя и инициализируя экземпляр IED в ServerSimulator с использованием переданных аргументов.
kwargs | Любые ключевые аргументы, которые передаются методу create . |
Exception | Выбрасывается, если возникают проблемы при создании или инициализации. |
def destroy | ( | self | ) |
Уничтожает экземпляр ServerSimulator.
Этот метод уничтожает экземпляр ServerSimulator, удаляя модель IED из памяти. Метод должен вызываться только если симулятор был создан. В случае если симулятор не был создан, генерируется исключение.
Исключение | Возникает, если ServerSimulator не был создан перед вызовом этого метода. |
def destroy_all | ( | cls | ) |
Уничтожает все экземпляры ServerSimulator.
Метод destroy_all
пытается остановить и уничтожить все существующие экземпляры класса ServerSimulator
. Он проходит по всем экземплярам в cls.instances
, останавливая те, которые в данный момент работают, и уничтожая те, которые были созданы. Если во время остановки или уничтожения происходит ошибка, выводится сообщение об ошибке с соответствующим трассировочным сообщением.
Exception | Выводится сообщение об ошибке, если экземпляр не может быть остановлен или уничтожен. |
def get_by_name | ( | cls, | |
ied_name, | |||
ap_name | |||
) |
Получить экземпляр ServerSimulator по имени IED и AccessPoint.
Этот метод класса возвращает существующий экземпляр ServerSimulator, связанный с указанными именами IED и AccessPoint. Если подходящий экземпляр не найден, выбрасывается исключение ObjectNotFound.
ied_name | Имя IED, для которого запрашивается экземпляр симулятора сервера. |
ap_name | Имя точки доступа AccessPoint, для которой запрашивается экземпляр симулятора сервера. |
ObjectNotFound | Выбрасывается, если экземпляр ServerSimulator с указанными именами IED и AccessPoint не найден. |
def ied_name | ( | self | ) |
Возвращает имя IED, связанное с экземпляром ServerSimulator.
Это свойство возвращает имя IED, которое симулируется экземпляром ServerSimulator. Имя IED извлекается из файла SCL во время инициализации.
def ip | ( | self | ) |
Возвращает IP-адрес, используемый экземпляром ServerSimulator.
Это свойство возвращает IP-адрес, к которому привязан ServerSimulator для связи. Если IP-адрес не был указан при инициализации, по умолчанию используется "0.0.0.0", что означает прослушивание на всех доступных интерфейсах.
def ip | ( | self, | |
address | |||
) |
Устанавливает IP-адрес для ServerSimulator.
Назначает новый IP-адрес для экземпляра ServerSimulator. IP-адрес должен быть в формате IPv4, так как поддержка IPv6 отсутствует. Если сервер уже запущен, будет вызвано исключение. Кроме того, перед назначением нового IP-адреса система проверяет уникальность комбинации IP-адреса и порта среди всех работающих экземпляров ServerSimulator.
address | Новый IP-адрес для назначения (должен быть допустимым IPv4-адресом). |
AttributeError | Выбрасывается, если IP-адрес имеет недопустимый синтаксис или если пытается изменить IP-адрес при запущенном сервере. |
NotImplementedError | Выбрасывается, если предоставлен IPv6-адрес (поддержка IPv6 отсутствует). |
ValueError | Выбрасывается, если комбинация IP-адреса и порта уже используется другим экземпляром ServerSimulator. |
def is_created | ( | self | ) |
Проверяет, создан ли экземпляр ServerSimulator.
Это свойство возвращает логическое значение, указывающее, был ли создан экземпляр ServerSimulator. Оно может быть использовано для проверки, был ли инициализирован и построен IED-модель симулятора.
def is_running | ( | self | ) |
Проверяет, запущен ли симулятор ServerSimulator.
Это свойство возвращает логическое значение, указывающее на то, был ли запущен симулятор ServerSimulator. Возвращает True
, если симулятор запущен, и False
в противном случае.
def model | ( | self | ) |
Свойство для доступа к полной модели данных MMS-сервера.
Свойство model
возвращает полную модель данных MMS-сервера, сохранённую в атрибуте _full_model
. Эта модель содержит сопоставление ссылок на атрибуты данных с их соответствующими данными, которое строится методом _build_full_model
.
def port | ( | self | ) |
Возвращает порт, используемый экземпляром ServerSimulator.
Это свойство возвращает номер порта, на котором ServerSimulator прослушивает MMS-сообщения. Порт может быть настроен, но его нельзя изменить после начала симуляции.
def port | ( | self, | |
port | |||
) |
Устанавливает порт для ServerSimulator.
Назначает новый порт для экземпляра ServerSimulator. Если симуляция уже запущена, изменение порта вызовет исключение. Перед назначением нового порта система проверяет конфликты с другими экземплярами ServerSimulator, работающими на том же IP-адресе.
port | Новый номер порта для назначения. |
AttributeError | Выбрасывается, если пытается изменить порт при запущенной симуляции. |
ValueError | Выбрасывается, если порт уже используется другим экземпляром ServerSimulator. |
def scl | ( | self | ) |
Возвращает объект SCL, связанный с ServerSimulator.
Предоставляет доступ к объекту SCL, который используется для настройки ServerSimulator. Этот объект содержит конфигурационные данные из файла SCL, включая информацию об IED, точках доступа и других элементах подстанции.
def set_val | ( | self, | |
str | reference, | ||
value, | |||
val_type = None , |
|||
bool | auto_ts = True |
||
) |
Устанавливает значение для указанной ссылки в модели сервера.
Этот метод обновляет модель сервера новым значением для указанной ссылки. Значение может быть любого типа, и если значение является экземпляром _MMSVar, оно будет преобразовано в MMS-представление. Эта функция взаимодействует с MMS-сервером для обновления модели новым значением.
reference | Ссылка на атрибут данных в модели (например, IED.LN.DO.DA). |
value | Новое значение для установки. Если это экземпляр _MMSVar, он будет преобразован в MMS-представление. |
val_type | Необязательный параметр, указывающий тип устанавливаемого значения (например, BOOLEAN, INT и т.д.). |
Exception | Выбрасывается, если операция установки значения не удалась. Исключение содержит подробности об ошибке и трассировку произошедшей проблемы. |
def start | ( | self | ) |
Запускает симулятор ServerSimulator для MMS-симуляции.
Этот метод инициирует симуляцию MMS-сервера для экземпляра IED. Перед вызовом метода start
, экземпляр IED должен быть создан с помощью метода create
. Если сервер уже запущен, метод просто возвращает управление без дополнительных действий. Симуляция запускается на указанном IP-адресе и порте или на значении по умолчанию "0.0.0.0" (прослушивание всех интерфейсов).
Exception | Выбрасывается, если сервер не был создан или если операция запуска завершилась с ошибкой. |
def stop | ( | self | ) |
|
static |
ip |
port |