Skip to main content

Siemenslib

Read what DIGSI writes into an SCL file beside the standard.

pip install siemenslib
from py61850.scl import SclDocument
from siemenslib import digsi

doc = SclDocument.parse("station.scd")      # parsed once, asked three times

for ied in digsi.read_ieds(doc):
    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(doc):
    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', ...]

Every reader also takes a plain path and parses a document for itself. Pass one SclDocument when you ask more than one question about the same file: on the 13.5 MB mixed-vendor reference station that is 400 ms instead of 917.

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:

<Private type="Siemens_SiedigGooseApplicationStorage">    <!-- on <SCL> -->
  <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, and it parses no XML at all. An SCD's IEDs, GOOSE control blocks, addressing and data model are ordinary SCL, and py61850's scl package reads them for any vendor, as an IEC 61850-6 object model. 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, and it reads it off py61850's model nodes.

The seam that makes that possible is standard SCL, not an arrangement made for Siemens: Private elements hang off every node, keyed by type, and a vendor library reads its own. The sibling SELlib reads SEL's half of the very same files the same way — the mixed-vendor reference station is a DIGSI export containing SEL relays, and both libraries read it without sharing a line of code or opening it twice.

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 two real stations: a 7 MB DIGSI export (14 IEDs, 2 GOOSE applications, 14 dataset GUIDs) and a 13.5 MB mixed-vendor one (14 IEDs, 14 applications, 113 GUIDs). Every field the previous XML-walking reader produced is reproduced exactly by the model-based one.

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

siemenslib-0.2.0.tar.gz (26.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

siemenslib-0.2.0-py3-none-any.whl (22.2 kB view details)

Uploaded Python 3

File details

Details for the file siemenslib-0.2.0.tar.gz.

File metadata

  • Download URL: siemenslib-0.2.0.tar.gz
  • Upload date:
  • Size: 26.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for siemenslib-0.2.0.tar.gz
Algorithm Hash digest
SHA256 751c9fd10b72bda2791b249bc29e62acbbfde41c97ac1a93134d19416da6edf4
MD5 1946f5052e0b3a7819c905ab471b4daa
BLAKE2b-256 515d1715353a25423bb5c377d9aed98902d902b262f9dd9e3a58fb9798254639

See more details on using hashes here.

Provenance

The following attestation bundles were made for siemenslib-0.2.0.tar.gz:

Publisher: release.yml on GuilhermeMarini/Siemenslib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file siemenslib-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: siemenslib-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 22.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for siemenslib-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 831cd509fac21975d4284d4542d600c387dd4f778eb99d3bcbc708fd40d2c037
MD5 ba91a95131b62429e24c50e76118cdf3
BLAKE2b-256 337308109dd140c791036ad20a2ae2e66a4f14a3a6399bf933545733fd97fac5

See more details on using hashes here.

Provenance

The following attestation bundles were made for siemenslib-0.2.0-py3-none-any.whl:

Publisher: release.yml on GuilhermeMarini/Siemenslib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.2.1

2 files

This release

0.2.0 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page