Siemenslib
Read what DIGSI writes into an SCL file beside the standard.
pip install siemenslib
from pathlib import Path
from siemenslib import digsi
scd = Path("station.scd")
for ied in digsi.read_ieds(scd):
print(ied.name, ied.device, ied.digsi_name, ied.application_template)
# QPC2_TR1_AL11 7SJ85 AL11_UPC1 7SJ85_Non_Directional_OC
# QPC1_TR1_UPC1 7UT85 TR1_UPC1 7UT8x_2WindTransformer_Basic
for app in digsi.read_goose_applications(scd):
print(app.name, app.app_id, app.ied_names)
# 138 kV 0001 ['QPC1_LT1_UPC1', 'QPC1_LT2_UPC1', ...]
# 34,5 kV 0002 ['QPC2_TR1_AL11', 'QPC2_TR1_AL12', ...]
| module | what it reads |
|---|---|
siemenslib.digsi |
the Siemens-* privates and the siedig namespace in an SCD/ICD: SIPROTEC product codes, application templates, DIGSI names and revisions, and the GOOSE applications |
Why this exists
An SCD from the Siemens IEC 61850 System Configurator is ordinary SCL with a
second layer folded into it. The reference station — 14 IEDs — carries 2,473
<Private type="Siemens-*"> elements, and no vendor-neutral reader looks at
one of them. They hold what a commissioning engineer actually asks about a
SIPROTEC: which device it is, which application template it was built from,
what DIGSI calls it, and when it last changed.
The GOOSE applications are the part that earns the library. DIGSI groups datasets into named applications — "138 kV", "34,5 kV" — and the grouping is by GUID:
<siedig:GooseApplication name="138 kV">
<siedig:DataSet guidRef="1f741f02..." /> <!-- an opaque hex string -->
<IED name="QPC1_TR1_UPC1"> … <LN0> <DataSet>
<Private type="Siemens-GUID">1f741f02...</Private> <!-- lives over here -->
Walking that link turns a list of hex strings into the IEDs that publish in each application. On the reference station all 14 datasets resolve, and the two applications split cleanly by voltage level.
What this does not do
It does not read the standard half of IEC 61850. An SCD's IEDs, GOOSE
control blocks, addressing and data model are ordinary SCL, and
SELlib's scl module reads them
for any vendor — the reference station parses with it unchanged. A second
reader for one standard format would be two things to keep right instead of
one. This library is for what is Siemens' own.
It does not write. Reading is what a commissioning job needs from these privates; nothing here modifies a project DIGSI owns.
Status
Alpha, and proven against one real station: 14 IEDs, 2 GOOSE applications, read in 324 ms.
Licence
AGPL-3.0-or-later.
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 siemenslib-0.1.0.tar.gz.
File metadata
- Download URL: siemenslib-0.1.0.tar.gz
- Upload date:
- Size: 20.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e891599aa626c5648a137a44f1b539cb40361515b3995c3e8b1327a9b45b421
|
|
| MD5 |
8452457bb7caf2e2df5133547baa78c4
|
|
| BLAKE2b-256 |
155d5e3967fe6b34a9cef554857fe110a582c56201e89e7fe952ff1f1422a408
|
Provenance
The following attestation bundles were made for siemenslib-0.1.0.tar.gz:
Publisher:
release.yml on GuilhermeMarini/Siemenslib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
siemenslib-0.1.0.tar.gz -
Subject digest:
1e891599aa626c5648a137a44f1b539cb40361515b3995c3e8b1327a9b45b421 - Sigstore transparency entry: 2732700545
- Sigstore integration time:
-
Permalink:
GuilhermeMarini/Siemenslib@4a396008d1050e1d9597ef7fb5ec6be0bc1ecb84 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/GuilhermeMarini
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4a396008d1050e1d9597ef7fb5ec6be0bc1ecb84 -
Trigger Event:
push
-
Statement type:
File details
Details for the file siemenslib-0.1.0-py3-none-any.whl.
File metadata
- Download URL: siemenslib-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3306b52f3982aa16fbb4f93fc98cb89bde0019a035161c56c0c9b01f99a47929
|
|
| MD5 |
447b2691b0e16f9268d825c55a9d1b77
|
|
| BLAKE2b-256 |
41b722a65036f3714449494241c5d6223541c20c69f510d144446d18e5a5884d
|
Provenance
The following attestation bundles were made for siemenslib-0.1.0-py3-none-any.whl:
Publisher:
release.yml on GuilhermeMarini/Siemenslib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
siemenslib-0.1.0-py3-none-any.whl -
Subject digest:
3306b52f3982aa16fbb4f93fc98cb89bde0019a035161c56c0c9b01f99a47929 - Sigstore transparency entry: 2732700554
- Sigstore integration time:
-
Permalink:
GuilhermeMarini/Siemenslib@4a396008d1050e1d9597ef7fb5ec6be0bc1ecb84 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/GuilhermeMarini
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4a396008d1050e1d9597ef7fb5ec6be0bc1ecb84 -
Trigger Event:
push
-
Statement type: