Python Power Factory Connector Library
Project description
pdfl digsilent_pf_lib
Dokumentasi singkat dan contoh penggunaan modul
digsilent_pf_lib.pyuntuk berinteraksi dengan PowerFactory (DIgSILENT PowerFactory) dari Python.
Dokumentasi dan output lengkap tersedia di example.ipynb pada https://github.com/alexchtst/project-hmi-reaktor-nuklir/blob/main/library/example.ipynb
Deskripsi
digsilent_pf_lib.py menyediakan kelas DigsilentPowerFactoryLibrary yang membungkus (wrapper) operasi umum untuk:
- Menghubungkan ke aplikasi PowerFactory,
- Mengaktifkan project PowerFactory,
- Mendeteksi study case dan event,
- Menjalankan loadflow (steady-state) dan mengumpulkan hasil,
- Menjalankan simulasi dinamik (time-domain), mengatur event, dan mengekspor hasil.
Prasyarat
- DIgSILENT PowerFactory terinstall pada mesin (biasanya Windows).
- Akses ke modul Python
powerfactoryyang disediakan oleh instalasi PowerFactory (biasanya path ke direktori instalasi harus ditambahkan kesys.path— modul ini melakukansys.path.append(digsilent_path)). - Python (3.8+) yang mampu mengeksekusi skrip yang memanggil COM API PowerFactory.
- Menjalankan notebook / skrip pada mesin yang sama dengan PowerFactory (atau environment yang punya akses library
powerfactory).
Catatan: jika path ke instalasi PowerFactory tidak ditemukan, konstruktor akan mencetak peringatan. Pastikan
digsilent_pathmerujuk ke folder yang benar.
Instalasi sederhana
Letakkan digsilent_pf_lib.py di folder kerja Anda (provinsi sudah diupload: ). Tidak perlu packaging khusus; import langsung dari notebook / script:
from dspfl.digsilent_pf_lib import DigsilentPowerFactoryLibrary
Inisialisasi / Konstruktor
DigsilentPowerFactoryLibrary(digsilent_path, proj_name=None, case_name=None)
digsilent_path(str): path folder instalasi PowerFactory (harus berisi modulpowerfactory).proj_name(str, optional): nama project yang ingin diaktifkan saat inisialisasi.case_name(str, optional): nama study case default.
Setelah inisialisasi, objek memiliki properti seperti pf_app, project_app, cases_app, dan flag __ready_to_run__.
Contoh:
lib = DigsilentPowerFactoryLibrary(r"C:\Program Files\DIgSILENT\PowerFactory 2023", proj_name="MyProject")
API utama (method)
detect_project_names()
Mendeteksi semua project yang dapat diakses oleh current user.
- Return:
(bool, message, list_of_project_names).
Contoh:
ok, msg, projects = lib.detect_project_names()
detect_study_cases()
Mengambil semua study case di project aktif.
- Return:
(bool, message, list_of_case_names).
Contoh:
ok, msg, cases = lib.detect_study_cases()
detect_event_in_case(case_specific_name=None)
Mengambil daftar event dari study case tertentu (atau self.case_name jika parameter None).
- Return:
(bool, message, list_of_event_dicts) event_dictminimal berisi:name,class, dan jika tersediatarget,time,switch_state.
Contoh:
ok, msg, events = lib.detect_event_in_case("LoadFlow_Case1")
connect_digsilent_pf_project(connect_to_project=None)
Mengganti (activate) project PowerFactory.
- Return:
(bool, message).
Contoh:
ok, msg = lib.connect_digsilent_pf_project("AnotherProject")
running_loadflow(case_specific_name=None)
Menjalankan powerflow (loadflow) pada study case yang dipilih, lalu mengumpulkan hasil (buses, generators, lines, loads, transformers).
- Return:
(bool, message, result_dict) result_dictberisi keys:project,study_case, dan list data untuk tiap tipe objek.
Contoh:
ok, msg, data = lib.running_loadflow("Case_LF_1")
if ok:
print(data["buses"][:3])
running_dynamic(...)
Menjalankan simulasi dinamik dengan opsi pengaturan:
case_specific_name,start_calc,start_time_simulation,stop_time_simulation,step_size,events_config(dictionary untuk konfigurasi event — nama event, apakah aktif, config khusus untuk short-circuit, switch, dsb),properties_data_name(mapping tipe elemen ke variabel yang ingin dimonitor).
Return: (bool, message, result_data)
result_data berisi header kolom, data baris time-series, jumlah baris/kolom, rentang waktu, dsb.
Contoh minimal:
ok, msg, dyn = lib.running_dynamic(
case_specific_name="DynCase1",
start_time_simulation=0,
stop_time_simulation=2.0,
step_size=0.01,
properties_data_name={"ElmSym": ["m:P:bus1", "m:Q:bus1"], "ElmTerm": ["m:fehz"]}
)
if ok:
header = dyn["header"]
rows = dyn["data"]
Contoh pembuatan konfigurasi event (fault + clear):
events_cfg = {
"Fault1": {
"event_data": {"name": "FaultAtBusX", "target": "Bus X", "class": "EvtShc"},
"in_service": True,
"configured": True,
"config": {"start_fault": 0.1, "clear_fault": 0.2, "fault_type": 1}
}
}
ok, msg, dyn = lib.running_dynamic(case_specific_name="DynCase1", events_config=events_cfg)
safe_getattr(obj, attr, default=0)
Utility untuk safe-get attribute dari objek PowerFactory. Mengembalikan default jika tidak tersedia.
Penanganan error & logging
- Method mengembalikan tuple
(bool, message, data)— periksa nilai boolean sebelum memakaidata. - Jika terjadi exception, library berusaha menangkap dan mengembalikan pesan error yang cukup informatif; untuk simulasi dinamik juga mengikutsertakan stacktrace dalam pesan error.
- Library mencetak progress & info ke output saat berjalan (contoh:
[INFO]: Collecting bus loadflow data...).
Contoh penggunaan cepat (snippet)
from digsilent_pf_lib import DigsilentPowerFactoryLibrary
# inisialisasi
lib = DigsilentPowerFactoryLibrary(r"C:\Program Files\DIgSILENT\PowerFactory 2023", proj_name="MyProject", case_name="Case1")
# cek project
ok, msg, projects = lib.detect_project_names()
# mendapat study cases
ok, msg, cases = lib.detect_study_cases()
# jalankan loadflow
ok, msg, loadflow_result = lib.running_loadflow()
# jalankan dynamic dengan monitoring variabel dasar
ok, msg, dyn_result = lib.running_dynamic(
start_time_simulation=0,
stop_time_simulation=1.0,
step_size=0.01,
properties_data_name={"ElmSym": ["m:P:bus1", "m:Q:bus1"], "ElmTerm": ["m:fehz"]}
)
Notebook contoh
File example.ipynb yang Anda upload berisi contoh pemakaian modul ini (inisialisasi, pemanggilan method, dan contoh mengekspor/menampilkan output). Jalankan notebook pada mesin yang sama dengan PowerFactory agar powerfactory module dapat ter-load. (Notebook ada di workspace Anda.)
Batasan & catatan praktis
- Library mengandalkan API
powerfactoryyang hanya tersedia dari instalasi PowerFactory; tidak dapat dijalankan di mesin tanpa instalasi tersebut. - Uji di environment Windows yang sama dengan PowerFactory (PowerFactory biasanya bereaksi berbeda jika dijalankan sebagai service / user berbeda).
- Pastikan project
.pfddan study case sudah ter-load di PowerFactory GUI bila diperlukan. - Perhatikan permission dan konfigurasi PowerFactory untuk scripting (beberapa instalasi membatasi akses API).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dspfl-0.0.1.tar.gz.
File metadata
- Download URL: dspfl-0.0.1.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
622b907d0a39e910d95852da959816b821075d5a0af3a638f73bf07fa1de77e0
|
|
| MD5 |
a27b946c8010738d55a6f071fb23912d
|
|
| BLAKE2b-256 |
af759c5ed695927456675eb722008d7694730a488ab6bd80c3a5c47c5142de57
|
File details
Details for the file dspfl-0.0.1-py3-none-any.whl.
File metadata
- Download URL: dspfl-0.0.1-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c489f0560f52f1f357439474527448ab2a3ed1739407499e361293a341a98f88
|
|
| MD5 |
30f333534153ed3ea095f1965a30b032
|
|
| BLAKE2b-256 |
d409fdaa8cfab0802ca7ea430102fdead93465613ada109a9f84dc821b709bd2
|