Engineering & Werkzeuge
TIA Portal mit Python steuern: Mechanik und Grenzen
Wie pythonnet die Brücke zu TIA Portal Openness schlägt, warum .NET 6 ausscheidet, was V21 bricht — und wo Python an eine harte Grenze stößt.
Engineering · TIA Portal Openness
V21 bricht erstmals die Openness-Abwärtskompatibilität — Werkzeuge für V20 laufen nicht mehr. Versionsregeln, Einstiegsfallen und der Stand der KI-Anbindung.
Stand:
Wer im TIA Portal Arbeit automatisiert — Bausteine exportieren, Projekte vergleichen, Hardware aus einer Liste erzeugen —, tut das über Openness. Und wer das seit ein paar Jahren tut, hat sich auf eine Regel verlassen, die es ab Version 21 nicht mehr gibt: Openness war vier Versionen abwärtskompatibel.
Bis einschließlich V20 brachte jede TIA-Installation ein rollierendes Fenster von vier API-Versionen mit. Eine gegen V17 gebaute Anwendung lief unverändert auf einem V19- oder V20-Rechner. V21 liefert ausschließlich V21-APIs. Siemens formuliert es unmissverständlich: Anwendungen und Add-ins müssen gegen V21 neu gebaut werden, und was auf V21 zielt, läuft nicht mehr auf früheren Versionen.
Für den Betrieb heißt das: Jedes Openness-Werkzeug, das vor Dezember 2025 entstanden ist, steht auf einer V21-Installation still — bis es jemand neu baut. Dieser Artikel sammelt, was dabei zu beachten ist, welche Fallstricke unabhängig von der Version gelten und was die viel diskutierte KI-Anbindung technisch überhaupt kann.
Vorweg zur Einordnung: Openness automatisiert das Engineering, nicht die Anlage. Was am Ende in der Steuerung läuft, entsteht weiterhin in der SPS-Programmierung — Openness nimmt einem die Wiederholarbeit drumherum ab.
Eigene Darstellung nach Siemens-Openness-Systemhandbuch und V21-Dokumentation.
Die monolithische Assembly zerfällt in Teile: eine Basis-Assembly und getrennte Bibliotheken für Steuerungen, die WinCC-Linien und die Antriebsprojektierung. Wer nur die Basis referenziert, bekommt beim ersten Zugriff auf Steuerungsobjekte einen Ladefehler — die Steuerungs-Namensräume liegen jetzt woanders.
Der Versionsvertrag
Was eine Installation an API-Versionen mitbringt.
Bis V20
Rollierendes Fenster
Jede Installation brachte vier API-Versionen mit.
Vier Versionen breit
Ab V21
Nur die eigene Version
Die Installation liefert ausschließlich V21-APIs.
Eine Version breit
Wer Anlagen mit V21 und mit älteren Ständen betreut, braucht deshalb zwei getrennte Bauläufe desselben Werkzeugs — nicht ein Werkzeug, das beide Welten bedient.
Zwei der Änderungen kosten erfahrungsgemäß die meiste Suchzeit, und sie verhalten sich gegensätzlich. Die Umstellung auf das Dienst-Muster und die umbenannten Schnittstellen sind Fleißarbeit beim Portieren, aber der Übersetzer findet sie und zeigt jede Stelle an. Der geänderte Referenzpfad dagegen bricht erst zur Laufzeit — und meldet sich als fehlende Datei, nicht als Versionsproblem.
// Die Openness-Assemblies liegen nicht im Ausgabeordner der eigenen Anwendung.
// Sie werden zur Laufzeit nachgeladen — üblicherweise in einer Auflösungs-
// routine, die den Pfad aus Installationsordner und Version zusammensetzt.
// Genau diese Routine ist die Stelle, die beim Wechsel auf V21 bricht.
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
// BIS V20 — die Datei lag unmittelbar im Versionsordner:
// var pfad = Path.Combine(BASIS_ORDNER, TIA_VERSION, ASSEMBLY_DATEI);
// AB V21 — eine Ebene mehr für das .NET-Framework-Ziel:
var pfad = Path.Combine(BASIS_ORDNER, TIA_VERSION, ZIEL_FRAMEWORK, ASSEMBLY_DATEI);
// Fehlt die Datei, meldet .NET eine fehlende Assembly und kein Wort zur
// Version. Deshalb hier selbst prüfen und die Ursache benennen.
if (!File.Exists(pfad))
throw new FileNotFoundException(
"Openness-Assembly nicht gefunden: " + pfad + ". Ab V21 liegt sie " +
"in einem Unterordner für das .NET-Framework-Ziel.");
return Assembly.LoadFrom(pfad);
};Basisordner, Dateiname der Assembly, Versionsordner und Framework-Ziel stehen hier bewusst als Konstanten und nicht als Zeichenketten im Code: Die genauen Namen nennt die Openness-Dokumentation zur installierten Version, und wer sie fest verdrahtet, baut sich den nächsten Versionswechsel als Fehler ein.
Betroffen ist auch der niederschwellige Einstieg: Der von Siemens bereitgestellte Openness-Scripter, mit dem viele ohne eigene .NET-Entwicklungsumgebung gearbeitet haben, stammt aus der V18-Zeit und lief zuletzt unter V20. Für V21 liegen dazu Anwenderberichte vor, aber keine offizielle Aussage — wer darauf aufbaut, sollte das vor einer V21-Migration prüfen.
Versionsstände
Was in welcher Version dazukam oder wegfiel.
V18
Der Openness-Scripter
EinstiegDer von Siemens bereitgestellte Scripter stammt aus dieser Zeit. Für viele war er der Einstieg in Openness, ohne eine eigene .NET-Entwicklungsumgebung aufsetzen zu müssen.
V19
Zwei Änderungen an den Rändern
CAx · SprachenDie Kommandozeilenschnittstelle für den CAx-Datenaustausch entfällt; wer dort Batch-Ketten betreibt, muss auf Openness umbauen. Gleichzeitig kommt die Importoption dazu, mit der sich fehlende Projektsprachen beim Import automatisch aktivieren lassen.
V20
Letzte Version mit dem Vier-Versionen-Fenster
Fenster offenEin gegen V17 gebautes Werkzeug lief hier noch unverändert. Auch der Openness-Scripter lief zuletzt unter dieser Version.
V21
Der Bruch
Neubau nötigDie Installation liefert ausschließlich V21-Assemblies. Die monolithische Assembly zerfällt in Basis und getrennte Bibliotheken, der Referenzpfad bekommt eine Ebene für das .NET-Framework-Ziel, die Aufrufe folgen einem Dienst-Muster.
V21
Textbasiertes Quellformat
QuellformatEin Format, das laut Siemens versionsunabhängig ist und ausdrücklich auf Vergleichbarkeit zielt — der Gegenentwurf zum XML-Export, weiter unten im Artikel.
Versionsstände nach Siemens-Openness-Dokumentation und V21-Readme.
Hier steckt ein Fehler, der erst Wochen später auffällt. Das XML-Exportformat richtet sich nach der installierten TIA-Version, nicht nach der verwendeten API-Version. Ein altes Exportwerkzeug, das auf einem neueren Rechner läuft, erzeugt Dateien im neueren Format.
Der Import geht nur abwärts: Eine neuere Installation liest ältere Dateien, umgekehrt nicht. V21 importiert das Fenster von V18 bis V21.
Der typische Ablauf im Betrieb: Das Exportwerkzeug wird auf dem neuen Engineering-Rechner betrieben, die erzeugten Dateien sollen aber auf dem älteren Anlagenrechner eingespielt werden — und lassen sich dort nicht mehr importieren. Die Versionsmarke steht sichtbar im Kopf jeder Datei; ein Blick in die erste Zeile klärt den Fall in Sekunden.
Datenblatt
Pfade, Versionsstände und Formate auf einen Blick.
Zusammengetragen aus dem Openness-Systemhandbuch, der V21-Dokumentation und Beitrags-ID 108716692. Stand: 26.08.2026.
Wenn ein Openness-Werkzeug auf einem fremden Rechner nicht läuft, wird meist zuerst die Sicherheitsabfrage verdächtigt. Der häufigste Grund ist ein anderer: Openness kennt keinen Kompatibilitätsmodus.
Vier Hürden vor dem ersten Aufruf
Keine davon steht im Code.
Hürde 1
Optionspakete und Hardware-Support-Pakete
Jedes Optionspaket und jedes Hardware-Support-Paket, das im Projekt verwendet wird, muss auf dem ausführenden Rechner installiert sein — Safety, Antriebsprojektierung, die WinCC-Linien, herstellerspezifische Erweiterungen. Fehlt eines, schlägt schon das Öffnen fehl, und die Meldung nennt nicht, welches Paket fehlt.
Kein Kompatibilitätsmodus
Hürde 2
Die Windows-Gruppe
Das TIA-Setup legt eine lokale Gruppe an; der ausführende Benutzer muss darin sein. Nach dem Eintragen ist eine Neuanmeldung nötig — das wird regelmäßig übersehen und sieht dann aus wie ein Rechtefehler an anderer Stelle.
Neuanmeldung nicht vergessen
Hürde 3
Die Whitelist
Der Sicherheitsdialog ist ein Registry-Eintrag mit drei Werten: Pfad, Änderungsdatum und Prüfsumme der ausführbaren Datei. Weil Hash und Zeitstempel dazugehören, erscheint die Abfrage nach jeder Neukompilierung erneut; dreimaliges Ablehnen beendet den Vorgang mit einer Ausnahme.
Nach jedem Neubau erneut
Hürde 4
Die Projektsprachen
Referenziert eine Importdatei eine Sprache, die im Zielprojekt nicht aktiv ist, scheitert der Import. Seit V19 lässt sich über eine Importoption steuern, ob fehlende Sprachen automatisch aktiviert werden. Diese Fehlerklasse wird fast immer der Datei zugeschrieben, liegt aber am Zielprojekt.
Die Ursache liegt im Zielprojekt
Die Reihenfolge ist die, in der sie zuschlagen.
Der Weg ist keine Übersetzungsarbeit an einer einzigen Stelle, sondern eine Kette aus fünf Schritten. Die Reihenfolge spart Arbeit, weil jeder Schritt voraussetzt, dass der vorige stimmt.
Anleitung
Vom V20-Werkzeug zum V21-Werkzeug.
Der aufwendige Teil liegt nicht im Umschreiben der Aufrufe, sondern in der Auslieferung: Ein Werkzeug, das auf dem eigenen Rechner läuft, ist noch kein Werkzeug, das auf dem Anlagenrechner läuft.
Zuerst die Frage klären, wie groß die Aufgabe überhaupt ist. Auf die Liste gehören:
Die Basis-Assembly allein reicht nicht mehr. Für Steuerungsobjekte, die WinCC-Linien und die Antriebsprojektierung kommt je eine eigene Bibliothek dazu. Der Übersetzer zeigt die fehlenden Namensräume an — dieser Schritt ist unangenehm, aber ehrlich.
Die Auflösungsroutine für die Assemblies ist der Teil, der still bricht: Sie läuft durch, findet die Datei nicht und meldet das als fehlende Datei. Sie gehört deshalb zuerst angefasst, nicht zuletzt.
Fleißarbeit mit einem Vorteil: Jede Stelle, die nicht mehr passt, steht in der Fehlerliste des Übersetzers. Das Muster ist immer dasselbe.
// Bis V20 — die Funktion hing am Objekt selbst:
// objekt.Funktion(parameter);
// Ab V21 — die Funktion wird als Dienst am Objekt geholt und dort aufgerufen:
var dienst = objekt.GetService<IDienst>();
if (dienst == null)
throw new InvalidOperationException(
"Dienst nicht verfügbar — meist fehlt die Bibliothek des passenden " +
"Objektbereichs in den Referenzen (Steuerungen, WinCC-Linien, Antriebe).");
dienst.Funktion(parameter);Muster, nicht Wortlaut: Die Namen der Dienste und Schnittstellen nennt die Openness-Dokumentation zur installierten Version. Einzelne Schnittstellen wurden mit V21 zusätzlich umbenannt — auch das findet der Übersetzer.
Auf dem Entwicklungsrechner sind Gruppe, Whitelist und Optionspakete längst eingerichtet — dort läuft alles. Die Prüfung zählt erst auf dem Rechner, auf dem das Werkzeug später arbeitet.
Zum Schluss der Punkt, der erst Wochen später auffällt: Sobald das Werkzeug auf dem neuen Rechner läuft, erzeugt es Dateien im neuen Format — auch dann, wenn am Werkzeug selbst nichts geändert wurde.
Wer Dateien zwischen Ständen austauscht, legt deshalb fest, auf welchem Rechner exportiert wird, und protokolliert die Versionsmarke aus dem Dateikopf mit. Das ist billiger als die Suche nach dem Grund, warum ein Import auf dem Anlagenrechner abgewiesen wird.
Für die Einschätzung jedes Automatisierungsvorhabens — und jeder KI-Diskussion — ist das der wichtigste Punkt.
Logik gelangt auf genau vier Wegen ins Projekt:
Dokumentierte Einschränkungen
Drei Fragen, an denen ganze Vorhaben kippen.
Sollen Geräteattribute im Online-Zustand geschrieben werden?
Im Online-Zustand lassen sie sich nur lesen. Wer eine Umparametrierung im laufenden Betrieb einplant, plant etwas, das die Schnittstelle nicht hergibt.
Sollen vorhandene Passwörter ausgelesen werden?
Passwörter lassen sich setzen, aber nicht auslesen. Für eine Bestandsaufnahme vorhandener Schutzeinstellungen ist Openness damit kein Werkzeug — der Weg führt nur in eine Richtung.
Werden Bausteine im Massenimport eingespielt?
Dabei können instanzspezifische Angaben verlorengehen, Startwerte zum Beispiel. Bei einem Massenimport passiert das still und fällt erst beim Anlagenlauf auf — also an der teuersten Stelle.
Aus der Liste der dokumentierten Einschränkungen des Openness-Systemhandbuchs.
XML als Versionierungsformat hat ein bekanntes Problem: interne Kennungen, Verdrahtungsinformationen und Metadaten erzeugen Änderungsvergleiche, in denen niemand mehr erkennt, was sich fachlich geändert hat. Dazu kommt die Bindung an die Engineering-Version.
V21 führt dafür ein textbasiertes Quellformat ein, das laut Siemens versionsunabhängig ist und für Kontaktsprache, Funktionsplan, SCL, gemischte Bausteine, Datenbausteine und Bibliotheken funktioniert — ausdrücklich mit dem Ziel, es mit Git, SVN und externen Vergleichswerkzeugen nutzbar zu machen.
Wer jetzt eine Versionsverwaltung für SPS-Projekte aufbaut, sollte diese Entscheidung bewusst treffen.
Welches Format trägt die Versionsverwaltung eines SPS-Projekts?
Die Reihenfolge zählt: Der erste Fall, der zutrifft, ist die Antwort.
Wenn
Bestand auf V20 und darunter, vorhandene Werkzeuge laufen
Dann
XML
Etabliert und breit unterstützt. Die schlechte Vergleichbarkeit und die Versionsbindung bleiben — dafür ändert sich nichts an der vorhandenen Werkzeugkette.
Wenn
Neue Versionsverwaltung, Projekt auf V21
Dann
Textbasiertes Quellformat
Laut Siemens versionsunabhängig und ausdrücklich für Git, SVN und externe Vergleichswerkzeuge gedacht.
Wenn
V21 und ältere Stände parallel im Feld
Dann
XML führen, Quellformat aufbauen
Die Entscheidung lässt sich nicht für beide Stände gleichzeitig treffen: Das Quellformat kommt mit V21, alles darunter bleibt bei XML.
Wenn
Der Bestand soll maschinell gelesen und verglichen werden
Dann
Quellformat
Lesbarer Text ohne interne Kennungen. XML mit wechselnden Metadaten ist dafür die schlechtere Grundlage.
XML ist etabliert und breit unterstützt, aber versionsgebunden und schlecht vergleichbar. Das Quellformat ist neu, dafür lesbar und für genau diesen Zweck gemacht.
Für Bestandsprojekte hat das einen praktischen Nebeneffekt: Ein nachvollziehbarer Softwarestand ist eine der Grundlagen, ohne die eine Migration von Altsteuerungen mit Unsicherheiten startet — und er entsteht nicht von selbst, sondern mit der Entscheidung für ein Format.
Der folgende Abschnitt beschreibt einen Stand, der sich schnell ändert. Recherchestand: 26. August 2026.
Zu diesem Zeitpunkt gibt es keinen offiziellen Siemens-Server für die Anbindung von Sprachmodellen an das TIA Portal. Was existiert, sind einige quelloffene Community-Projekte im niedrigen zwei- bis dreistelligen Sternebereich — und alle, die sich prüfen ließen, zielen auf V20 oder älter. Wegen des oben beschriebenen Bruchs laufen sie auf einer V21-Installation nicht.
Drei Punkte sind unabhängig vom Reifegrad dieser Projekte belastbar.
Erstens: Jede Anbindung erbt sämtliche Openness-Voraussetzungen. Ein lizenziertes TIA Portal auf demselben Rechner, die Windows-Gruppe, die Whitelist, die Optionspakete. Auch Siemens’ eigener Engineering-Assistent ist ein Openness-Client mit genau diesen Voraussetzungen — er hat keine privilegierte interne Schnittstelle. Damit gibt es auch keine Variante „KI ohne TIA-Lizenz“.
Zweitens: Ein Sprachmodell kann über Openness nichts direkt programmieren. Es erzeugt Text — SCL oder XML — und der einzige belastbare Prüfer danach ist der TIA-Übersetzer. Wie weit das trägt, zeigt eine Untersuchung aus dem Umfeld verifizierten Codes.
≈47%
Erfolgsquote bei der Erzeugung von Structured Text ohne Rückkopplung
Untersuchung aus dem Umfeld verifizierten Codes (arXiv:2401.05443)
≈72%
Erfolgsquote, als Grammatikprüfer, Übersetzer und Modellprüfer in einer Schleife eingebunden waren
dieselbe Untersuchung
Ohne diese Schleife scheitert also etwa jeder zweite Versuch schon vor der inhaltlichen Prüfung. Und auch mit ihr lautet die Aussage am Ende „übersetzbar“, nicht „richtig“.
Drittens — und das ist der Punkt für die Freigabe: Openness kann Hardware und Software in eine CPU laden. Eine Anbindung, die Openness-Funktionen ungefiltert an ein Sprachmodell durchreicht, kann damit grundsätzlich in eine laufende Anlage schreiben. Wer so etwas freigibt, sollte die Liste der freigegebenen Funktionen kennen und den Zugriff auf lesende Operationen begrenzen, solange kein belastbarer Prüfweg dahintersteht.
Wer die Entwicklung verfolgt, prüft am besten zwei Dinge regelmäßig: ob eines der Projekte auf V21 portiert wurde, und ob das neue textbasierte Quellformat dort unterstützt wird — es ist für Sprachmodelle deutlich besser geeignet als XML mit internen Kennungen.
Fahrplan
Fünf Voraussetzungen, die häufiger scheitern als der Code selbst — in der Reihenfolge, in der sie zuschlagen.
Versionen abgleichen
Die API-Version muss zur installierten TIA-Version passen. Bis V20 lief ein Werkzeug im Fenster von vier Versionen; ab V21 nur noch mit V21-Assemblies.
Optionspakete und HSP prüfen
Jedes im Projekt verwendete Optionspaket und jedes HSP muss auf dem ausführenden Rechner installiert sein — sonst schlägt schon das Öffnen fehl, ohne das fehlende Paket zu nennen.
Windows-Gruppe eintragen
Der ausführende Benutzer gehört in die lokale Gruppe „Siemens TIA Openness", die das TIA-Setup anlegt. Nach dem Eintragen ist eine Neuanmeldung nötig.
Whitelist-Eintrag setzen
Der Sicherheitsdialog vergleicht Pfad, Änderungsdatum und Prüfsumme der Anwendung. Nach jeder Neukompilierung erscheint er erneut; dreimaliges Ablehnen führt zum Abbruch mit Ausnahme.
Projektsprachen klären
Beim Import scheitert eine XML-Datei, wenn eine darin referenzierte Projektsprache im Zielprojekt nicht aktiv ist. Seit V19 lässt sich das über eine Importoption steuern.
FAQ
Nein. Openness ist im Lieferumfang enthalten und wird beim TIA-Setup unter den Optionen mitinstalliert. Vorausgesetzt wird ein installiertes und lizenziertes TIA Portal auf demselben Rechner — die eigentlichen Kosten entstehen also je Arbeitsplatz, nicht für Openness selbst.
Nicht ohne Neubau. V21 liefert ausschließlich V21-Assemblies aus; das bis dahin geltende Fenster von vier API-Versionen entfällt. Anwendungen müssen gegen V21 neu gebaut werden und laufen dann ihrerseits nicht mehr auf älteren Installationen.
Nicht direkt. Es gibt keine Schnittstelle, die Netzwerke oder Anweisungen in einem Baustein anlegt. Logik gelangt nur über Import einer XML-Datei, über eine externe Quelldatei, über die Instanziierung eines Bibliothekstyps oder über Quelldokumente ins Projekt.
Weil der Whitelist-Eintrag neben dem Pfad auch Änderungsdatum und Prüfsumme der ausführbaren Datei enthält. Jede Neukompilierung ändert beides, der Eintrag passt nicht mehr und die Abfrage erscheint erneut.
Nur eingeschränkt. Es enthält interne Kennungen und Metadaten, die bei jedem Export wechseln können, und es ist an die Engineering-Version gebunden. V21 führt dafür ein textbasiertes Quellformat ein, das ausdrücklich auf Vergleichbarkeit und Versionsverwaltung zielt.
Engineering & Werkzeuge
Wie pythonnet die Brücke zu TIA Portal Openness schlägt, warum .NET 6 ausscheidet, was V21 bricht — und wo Python an eine harte Grenze stößt.
Recht, Sicherheit, Förderung
Ab 11.09.2026 gilt die CRA-Meldepflicht — auch für Maschinen, die längst ausgeliefert sind. Was Artikel 14 verlangt, wen er trifft, was bis dahin zu tun ist.
Kommunikation & Daten
Strukturen sind nicht konsistent lesbar, der Server läuft im CPU-STOP weiter, Zeitstempel meinen etwas anderes: Was vor einer MES-Anbindung zu klären ist.
Kontakt
Eine erste Einschätzung zu Ihrem Vorhaben ist kostenfrei und unverbindlich.
Antwort innerhalb von zwei Werktagen