|
def | __new__ (cls, *args, **kwargs) |
| Создаёт или возвращает существующий экземпляр ClientSimulator. Подробнее...
|
|
def | __init__ (self, ip=None, port=102, scl=None, ied_name=None, ap_name=None) |
| Инициализирует новый экземпляр ClientSimulator для подключения к IED. Подробнее...
|
|
def | __del__ (self) |
| Удаляет экземпляр ClientSimulator. Подробнее...
|
|
def | __str__ (self) |
| Возвращает строковое представление ClientSimulator. Подробнее...
|
|
def | ip (self) |
| Получает IP-адрес IED для подключения. Подробнее...
|
|
def | ip (self, address) |
| Устанавливает IP-адрес IED для подключения. Подробнее...
|
|
def | port (self) |
| Получает номер порта IED для подключения. Подробнее...
|
|
def | port (self, port) |
| Устанавливает номер порта IED для подключения. Подробнее...
|
|
def | ied_name (self) |
| Получает имя IED для подключения. Подробнее...
|
|
def | ied_name (self, name) |
| Устанавливает имя IED для подключения. Подробнее...
|
|
def | ap_name (self) |
| Получает имя точки доступа (AP) внутри IED. Подробнее...
|
|
def | ap_name (self, name) |
| Устанавливает имя точки доступа (AP) внутри IED. Подробнее...
|
|
def | associate (self) |
| Устанавливает соединение с IED, используя настроенные IP-адрес и порт. Подробнее...
|
|
def | release (self) |
| Завершает активное соединение с IED. Подробнее...
|
|
def | abort (self) |
| Прерывает текущее соединение с IED. Подробнее...
|
|
def | close (self) |
| Корректно завершает соединение с IED. Подробнее...
|
|
def | get_controlable_objects_list (self) |
| Получает список управляемых объектов из модели данных IED. Подробнее...
|
|
ControlModelKind | get_ctlmodel_for_object (self, str ref) |
| Получает модель управления для указанного объекта. Подробнее...
|
|
def | get_value (self, str ref, force_fetch=True) |
| Получает значение указанного объекта. Подробнее...
|
|
def | control (self, str ref, value, type, bool test=False, ControlModelKind ctlModel=None, OriginatorCategoryKind orCat=None, orIdent=None) |
| Выполняет команду управления для указанной ссылки на IED. Подробнее...
|
|
def | orCat (self) |
| Получает или задает категорию инициатора для операций управления. Подробнее...
|
|
def | orCat (self, orCat) |
|
def | orIdent (self) |
| Получает или задает идентификатор инициатора для операций управления. Подробнее...
|
|
def | orIdent (self, orIdent) |
|
def | get_datamodel (self, force_fetch=False, with_values=False) |
| Получает модель данных подключенного IED. Подробнее...
|
|
def | datamodel (self) |
| Возвращает текущую модель данных подключенного IED. Подробнее...
|
|
def | datamodel_to_csv (self, str csv_filename) |
| Экспортирует модель данных в CSV-файл. Подробнее...
|
|
def | get_mms_ied_name (self) |
| Извлекает имя IED на основе ссылок на сигналы из datamodel. Подробнее...
|
|
Класс ClientSimulator для имитации клиентских взаимодействий с IED.
Класс ClientSimulator используется для эмуляции клиентской связи с IED через MMS. Он может устанавливать соединения, отправлять команды управления, извлекать значения данных и управлять подключениями. Каждый экземпляр идентифицируется своим IP-адресом и портом или выбором IED из конфигурации SCL. Если экземпляр с таким же IP и портом уже существует, будет использоваться существующий экземпляр.
Пример использования:
try:
client = ClientSimulator(ip="192.168.0.1", port=102)
client.associate()
value = client.get_value("LDName/LNName.DO.DA")
print(f"Полученное значение: {value}")
client.control("LDName/LNName.DO.DA", value=True, type="BOOLEAN")
client.release()
except Exception as e:
print(f"Произошла ошибка: {e}")
def __init__ |
( |
|
self, |
|
|
|
ip = None , |
|
|
|
port = 102 , |
|
|
|
scl = None , |
|
|
|
ied_name = None , |
|
|
|
ap_name = None |
|
) |
| |
Инициализирует новый экземпляр ClientSimulator для подключения к IED.
Настраивает ClientSimulator с необходимыми данными для подключения к конкретному IED (Интеллектуальному электронному устройству). Симулятор может быть настроен с использованием прямого IP-адреса и порта IED или извлечением данных о подключении из SCL файла. Если предоставлен SCL файл, ClientSimulator извлечёт такие данные, как IP-адрес, порт, имя IED и AccessPoint. Класс гарантирует, что поддерживается только одно активное подключение для каждого уникального конфигурационного соединения с IED. Также устанавливает информацию о происхождении, помогая идентифицировать клиента.
- Аргументы
-
ip | IP-адрес IED, к которому будет подключаться ClientSimulator. |
port | Номер порта на IED для подключения (по умолчанию 102). |
scl | SCL файл для извлечения данных о подключении к IED, если IP и порт не предоставлены напрямую. |
ied_name | Имя IED для установления соединения. |
ap_name | Имя AccessPoint на IED для установления соединения. |
Удаляет экземпляр ClientSimulator.
Метод __del__
гарантирует, что экземпляр ClientSimulator удаляется из списка активных экземпляров, когда он больше не нужен. Этот метод помогает в управлении и освобождении ресурсов путём автоматического удаления ссылки на экземпляр. Кроме того, он удаляет ClientSimulator из списка instances
, чтобы гарантировать отсутствие оставшихся ссылок, которые могут вызвать непредвиденное поведение.
Устанавливает соединение с IED, используя настроенные IP-адрес и порт.
Этот метод инициирует ассоциацию между ClientSimulator и IED, используя указанные IP-адрес и порт. Он отправляет запрос на установление связи, что позволяет дальнейшее взаимодействие с IED, например, чтение данных, управление объектами и т. д. Если соединение не удалось установить, возникает ошибка с подробной информацией о сбое.
- Исключения
-
Exception | Возникает при неудачной попытке подключения, предоставляя сведения о типе ошибки, описании и трассировке ошибки. |
Выполняет команду управления для указанной ссылки на IED.
Этот метод отправляет команду управления на IED для манипуляции указанным объектом. Управление может выполняться с использованием различных моделей, таких как Прямое управление, Выбор перед выполнением (SBO), и может быть настроено для использования обычной или усиленной безопасности. Команда управления также позволяет указывать дополнительные параметры, такие как тестовый режим, категория инициатора и идентификация инициатора.
- Аргументы
-
ref | Ссылка на объект, который нужно контролировать. |
value | Значение, которое необходимо установить при выполнении команды управления. |
type | Тип данных значения, подлежащего управлению. |
test | Булевый параметр, указывающий, является ли операция тестовой. По умолчанию False. |
ctlModel | Необязательный параметр, модель управления. Если не указано, метод определит подходящую модель на основе объекта. |
orCat | Необязательный параметр, категория инициатора. По умолчанию self.orCat . |
orIdent | Необязательный параметр, идентификатор инициатора. По умолчанию self.orIdent . |
- Исключения
-
MmsClientNotSupported | Выбрасывается, если модель управления объекта не поддерживает операции управления. |
Exception | Выбрасывается, если команда управления не удалась, включая подробное описание ошибки. |
def datamodel_to_csv |
( |
|
self, |
|
|
str |
csv_filename |
|
) |
| |
Экспортирует модель данных в CSV-файл.
Этот метод извлекает данные из внутренней модели данных и записывает их в указанный CSV-файл. Каждая строка в CSV представляет элемент модели данных, исключая элементы типа "structure". Колонки CSV включают ссылки, MMS ссылки, функциональные ограничения (FC), типы данных и значения.
- Аргументы
-
csv_filename | Имя CSV-файла, в который будет сохранена модель данных. |
def get_controlable_objects_list |
( |
|
self | ) |
|
Получает список управляемых объектов из модели данных IED.
Этот метод сканирует модель данных IED, чтобы выявить объекты, которые обладают управляющими функциями. Он проверяет ctlModel
каждого объекта данных и добавляет его в список, если он является одним из управляемых типов (например, прямое управление, управление SBO). Это помогает определить, какие объекты могут быть управляемыми через ClientSimulator.
- Возвращает
- Список строк, где каждая строка является ссылкой на управляемый объект внутри модели данных IED.
def get_mms_ied_name |
( |
|
self | ) |
|
Извлекает имя IED на основе ссылок на сигналы из datamodel.
Функция извлекает имя IED из ссылок на сигналы, присутствующих в datamodel экземпляра ClientSimulator. Для определения общего префикса, который служит именем IED, используется функция extract_ied_name
. Обратите внимание, что полученное имя IED может иногда отличаться от имени IED в SCL, так как функция может неправильно определить границу между iedName
и ldInst
.
- Возвращает
- Извлеченное имя IED на основе ссылок на сигналы.
- См. также
- extract_ied_name
Получает или задает категорию инициатора для операций управления.
Это свойство позволяет получить или задать категорию инициатора (orCat
), которая используется в операциях управления. Категория инициатора помогает определить источник команды управления, например, автоматическая станция или обслуживание.
@getter Возвращает текущую категорию инициатора как OriginatorCategoryKind
. @setter Устанавливает категорию инициатора. Должно быть экземпляром OriginatorCategoryKind
.
Получает или задает идентификатор инициатора для операций управления.
Это свойство позволяет получить или задать идентификатор инициатора (orIdent
), который используется в операциях управления. Идентификатор инициатора представляет собой строковое значение, которое позволяет определить источник команды управления, например, название системы или ID пользователя.
@getter Возвращает текущий идентификатор инициатора как строку. @setter Устанавливает идентификатор инициатора. Должно быть строковым значением, представляющим источник управления.
def remove_incomplete_references |
( |
|
data_list, |
|
|
|
delimiter = '$' |
|
) |
| |
|
static |
Удаляет неполные ссылки из списка ссылок на данные.
Этот статический метод обрабатывает список ссылок на данные, обычно связанных с MMS или другими коммуникационными протоколами, и удаляет любые ссылки, которые являются подстроками других, более длинных ссылок. Это помогает обеспечить сохранение только полных, уникальных ссылок. Метод использует разделитель (по умолчанию $
) для различения компонентов ссылок.
- Аргументы
-
data_list | Список ссылок на данные в виде строк. |
delimiter | Разделитель, используемый для разделения компонентов ссылок. По умолчанию $ . |
- Возвращает
- Список полных ссылок, исключая любые неполные или подстроки.