Zum Inhalt

Terminalbefehle (PCS CLI)

Der repo-lokale Befehl pcs ist der bevorzugte Einstiegspunkt für Entwicklerinnen und Entwickler. Führe Befehle aus dem Repository-Root aus, sofern nichts anderes angegeben ist.

Zuerst die freundliche CLI verwenden

Bevorzuge pcs ...-Befehle für die tägliche Arbeit. Die Low-Level-Skripte in tools/tia-openness bleiben für Troubleshooting und Automatisierung verfügbar.

Befehlsübersicht

Diese Kurzreferenz ist nach Befehlsfamilien gruppiert. Die detaillierten Abschnitte darunter erklären, wann welcher Befehl sinnvoll ist und welche Optionen wichtig sind.

Setup und Konfiguration

Aufgabe Befehl
Erstmalige Tool-Einrichtung der Maschine .\pcs.cmd install tools
Tools prüfen, ohne die Maschine zu ändern .\pcs.cmd install tools --check-only
Unterstützte fehlende Tools ohne weitere Rückfragen installieren .\pcs.cmd install tools --yes
Repo-lokale Umgebung initialisieren pcs init
Aufgelöste Projekteinstellungen anzeigen pcs config show

Source-Erstellung und Tool-Build

Aufgabe Befehl
Baustein-Scaffold im Root erstellen pcs new block FB_MyNewBlock
Baustein-Scaffold in einem Subsystem erstellen pcs new block 06_ALARMS/FB_AlarmRouting
Openness CLI bauen pcs build
Gegen eine bestimmte TIA-Version bauen pcs build tia-version=V20

Projekt-Discovery

Aufgabe Befehl
Konfigurierte PLCs ohne TIA-Öffnen auflisten pcs list plcs configured
PLCs aus dem TIA-Projekt auflisten pcs list plcs
Bausteine in tia/exports auflisten pcs list blocks

Deployment

Aufgabe Befehl
Alle konfigurierten Sources deployen pcs deploy
Auf eine PLC deployen pcs deploy plcs=PLC_1
Ausgewählte Bausteine deployen pcs deploy plcs=PLC_1 blocks=FB_AlarmRouting,FB_AlarmDelay
Einen Ordner deployen pcs deploy plcs=PLC_1 folder=06_ALARMS
Ohne Compile deployen pcs deploy plcs=PLC_1 blocks=FB_AlarmRouting no-compile
Deployment vorschauen pcs deploy plcs=PLC_1 folder=06_ALARMS dry-run no-compile
Openness CLI vor Deployment bauen pcs deploy build

TIA-/Repository-Sync

Aufgabe Befehl
Repository-Sync-Status anzeigen pcs sync status
Sync-Status als JSON anzeigen pcs sync status --json
Lokale Sync-Baseline erstellen pcs sync baseline
Lokale Sync-Baseline bewusst ersetzen pcs sync baseline --force
Normalisierte Repository-Hashes ausgeben pcs sync hash repo
TIA-Source-Snapshot erfassen pcs sync snapshot tia plc=PLC_1
TIA-Snapshot mit expliziter TIA-Version erfassen pcs sync snapshot tia plc=PLC_1 tia-version=V20
Eine Repo-/TIA-Source diffen pcs sync diff FB_AlarmRouting
Raw-Diff zwischen Repo und TIA anzeigen pcs sync diff FB_AlarmRouting raw
Übernahme sicherer TIA-Änderungen vorschauen pcs sync accept tia FB_AlarmRouting --dry-run
Eine sichere TIA-Änderung ins Repo übernehmen pcs sync accept tia FB_AlarmRouting
Übernahme aller sicheren TIA-Änderungen vorschauen pcs sync accept tia all --dry-run
Alle sicheren TIA-Änderungen ins Repo übernehmen pcs sync accept tia all

Dokumentation

Aufgabe Befehl
Docs lokal serven pcs docs serve
Lokale Docs-Seite öffnen pcs docs open
PlantUML-Diagramme rendern pcs docs render
Docs bauen pcs docs build

TIA-Projekthelfer

Aufgabe Befehl
Konfiguriertes TIA-Projekt öffnen pcs tia open
Konfiguriertes TIA-Projekt archivieren pcs tia archive
Archivpfad ohne TIA-Öffnen prüfen pcs tia archive dry-run
In einen eigenen Backup-Ordner archivieren pcs tia archive backup="%USERPROFILE%\Documents\TIA-Archives\PCS"
Mit eigenem Archivnamen archivieren pcs tia archive name=PCS_before_factory_acceptance_test

Library und Release

Aufgabe Befehl
Lokalen Library-/Release-Status anzeigen pcs library status
Release-Manifest oder Ordner inspizieren pcs library inspect path=releases/PCS_1.2.0
Library-Release vergleichen pcs library compare path=releases/PCS_1.2.0
Geführte Library-Update-Prüfung ausführen pcs library update path=releases/PCS_1.2.0
Release-Manifest vorbereiten pcs release prepare version=1.2.0
Release gegen explizite Baseline vorbereiten pcs release prepare version=1.2.0 since=pcs-library-v1.1.0
Release-Artefakte validieren pcs release validate
TIA-Library-Release-Schritt vorbereiten pcs release library version=1.2.0
Release-Ordner paketieren pcs release package version=1.2.0

Der erste Befehl verwendet pcs.cmd

Verwende beim ersten Mal .\pcs.cmd install tools, weil der Repository-Root noch nicht im Benutzer-PATH liegt. Führe diesen ersten Setup-Befehl aus einem als Administrator geöffneten Windows Terminal aus, damit der Benutzer zur lokalen Gruppe Siemens TIA Openness hinzugefügt werden kann. Nach Setup und Neustart verwendest du normale, nicht erhöhte VS-Code-Terminals.

Befehle für die Ersteinrichtung

pcs install tools

Führe die erste Tool-Einrichtung über pcs.cmd aus dem Repository-Root in einem als Administrator geöffneten Windows Terminal aus:

.\pcs.cmd install tools

Dieser Befehl darf die Benutzerumgebung und, wenn er erhöht ausgeführt wird, die lokale Openness-Gruppenmitgliedschaft ändern. Er fügt den Repository-Root zum Benutzer-PATH hinzu, setzt die CurrentUser-PowerShell-Execution-Policy auf RemoteSigned und prüft die Verfügbarkeit der Befehle Python, Java, Graphviz, PlantUML sowie die Mitgliedschaft in der lokalen Gruppe Siemens TIA Openness.

Wenn Python, Java oder Graphviz fehlen, kann der Befehl sie nach Bestätigung mit winget installieren. Wenn PlantUML fehlt, kann der Befehl plantuml.jar herunterladen, einen plantuml.cmd-Wrapper unter %LOCALAPPDATA%\PCS\PlantUML erstellen und diesen Ordner zum Benutzer-PATH hinzufügen.

Tool Verwendet für
Python .venv, MkDocs, Repository-Initialisierung
Java PlantUML-Diagrammrendering
Graphviz dot PlantUML-Graphlayout
PlantUML Diagrammrendering-Befehl

Nützliche Optionen:

.\pcs.cmd install tools --check-only
.\pcs.cmd install tools --yes
Option Bedeutung
--check-only PATH und Tools prüfen, ohne zu installieren oder die Benutzerumgebung zu ändern.
--yes Unterstützte fehlende Tools installieren, ohne erneut zu fragen.

Nach Maschinenänderungen neu starten

Nachdem install tools erfolgreich war, folge den nächsten Schritten, die der Befehl ausgibt. Er prüft, ob die Gruppe Siemens TIA Openness in der aktuellen Windows-Sitzung aktiv ist, und fordert nur dann zum Abmelden oder Neustarten auf, wenn es nötig ist.

pcs init

Initialisiere nach dem Neustart des Terminals das Repository:

pcs init

Dieser Befehl bleibt innerhalb des Repositorys. Er erstellt bei Bedarf .venv, installiert die gepinnten Python-Pakete aus requirements.txt, prüft pcs.config.json, führt einen MkDocs-Build aus, prüft Java, Graphviz und die TIA-Openness-Gruppenmitgliedschaft und gibt die nächsten empfohlenen Befehle aus.

Führe ihn erneut aus, nachdem du Dependency-Änderungen gepullt oder requirements.txt bearbeitet hast.

Konfiguration

Der Befehl pcs liest Projekt-Defaults aus pcs.config.json:

Feld Bedeutung
projectPath TIA-Portal-Projektpfad
backupPath Ausgabeverzeichnis für TIA-Archive
exportsRoot PLC-Source-Root, normalerweise tia\exports
plcs Standard-PLC-Ziele
plant Build-time Anlagenkonfiguration, zum Beispiel Propulsion-Technologie und Equipment-Anzahlen
author Umgebungsvariablen-Einstellungen für generierte Header
pcs config show
Beispielausgabe
Project name: PCS
Project path: C:\Users\Tom Westerling\Documents\TIA-Projekte\PCS\PCS.ap20
Exports root: C:\Users\Tom Westerling\pcs\tia\exports
PLCs: PLC_1, PLC_2
Author variable: PCS_AUTHOR
Author value: Tom Westerling

Sources erstellen

Erstelle ein neues PLC-Source-Scaffold:

pcs new block FB_MyNewBlock
pcs new block 00_SYSTEM/FB_MyNewBlock
pcs new block 06_ALARMS/UDT_MyNewType

Benennung wird erzwungen

Bausteinnamen müssen mit FB_, FC_, OB_, DB_ oder UDT_ beginnen. So entscheidet die CLI, ob .scl, .db oder .udt gewählt wird.

Präfix Dateityp
FB_, FC_, OB_ .scl
DB_ .db
UDT_ .udt

Tools bauen

Baue die lokale TIA-Openness-CLI:

pcs build

Gegen eine bestimmte TIA-Openness-Version bauen:

pcs build tia-version=V19

Info

Normalerweise brauchst du pcs build nur nach Änderungen an Dateien in tools/tia-openness, nach dem Pull von Tool-Änderungen oder beim Wechsel von TIA-Versionen.

Projektdaten auflisten

Schnell und öffnet TIA nicht:

pcs list plcs configured

Liest PLCs über Openness aus dem TIA-Projekt:

pcs list plcs

Listet deploybare Dateien unterhalb von tia/exports auf:

pcs list blocks

Attention

pcs list plcs kann TIA Portal öffnen oder sich daran anhängen. Verwende pcs list plcs configured, wenn du nur die konfigurierten Zielnamen sehen willst.

Geöffnetes TIA Portal wird unterstützt

TIA-bezogene Befehle versuchen zuerst, sich an eine laufende TIA-Portal-Instanz mit demselben Projektpfad anzuhängen. Wenn das passende Projekt nicht bereits geöffnet ist, öffnet das Tool es über Openness ohne Benutzeroberfläche. Das gilt für pcs list plcs, pcs deploy, pcs sync snapshot tia und pcs tia archive.

Deployment

Alle Sources auf alle konfigurierten PLCs deployen und kompilieren:

pcs deploy
pcs deploy plcs=PLC_1
pcs deploy plcs=PLC_1 blocks=FB_AlarmRouting,FB_AlarmDelay
pcs deploy plcs=PLC_1 folder=06_ALARMS
pcs deploy plcs=PLC_1 blocks=FB_AlarmRouting no-compile

Dry Run vor einem fokussierten Deployment

Verwende dry-run, um zu prüfen, welche PLCs und Dateien verwendet werden, ohne TIA zu öffnen.

pcs deploy plcs=PLC_1 blocks=FB_AlarmRouting dry-run
pcs deploy plcs=PLC_1 folder=06_ALARMS dry-run no-compile
Deployment-Optionen
Option Bedeutung
plcs=PLC_1,PLC_2 Konfigurierte PLC-Ziele überschreiben
blocks=FB_A,DB_B Ausgewählte Bausteindateien per Name deployen
folder=06_ALARMS Jede Source unterhalb eines Ordners deployen
no-compile Importieren/generieren ohne Compile
build Openness CLI vor dem Deployment bauen
dry-run Nur Eingaben auflösen; TIA nicht öffnen
tia-version=V19 Erkannte TIA-Openness-Version überschreiben

TIA-/Repo-Sync

Erstelle eine lokale Repository-Baseline, nachdem das TIA-Projekt und tia/exports bekanntermaßen übereinstimmen:

pcs sync baseline

Zeige aktuelle Repository-Source-Änderungen gegenüber dieser Baseline:

pcs sync status
pcs sync status --json

Wenn ein TIA-Snapshot vorhanden ist, vergleicht der Befehl zusätzlich Repository-Sources mit dem TIA-Snapshot und gibt Drei-Wege-Entscheidungen über Base, Repo und TIA aus. Die Entscheidungsgruppen zeigen sichere Repo -> TIA-Kandidaten, sichere TIA -> Repo-Kandidaten, gleiche Änderungen auf beiden Seiten und Konflikte.

Verwende --json für GUI-/Tool-Integration.

Vergleiche eine Source zwischen Repository und TIA-Snapshot:

pcs sync diff FB_AlarmRouting
pcs sync diff 06_ALARMS/FB_AlarmRouting.scl
pcs sync diff FB_AlarmRouting raw

Der Standard-Diff ist wie pcs sync status normalisiert; er ignoriert Whitespace-Rauschen und DB-/UDT-Kommentare. Verwende raw, wenn Formatierungsunterschiede relevant sind.

Akzeptiere sichere reine TIA-Änderungen aus dem letzten TIA-Snapshot nach tia/exports:

pcs sync accept tia FB_AlarmRouting --dry-run
pcs sync accept tia FB_AlarmRouting
pcs sync accept tia all --dry-run
pcs sync accept tia all

Es werden nur Dateien übernommen, die pcs sync status als sichere TIA -> Repo-Änderungen einstuft. Konflikte werden von diesem Befehl nie kopiert.

Gib normalisierte Hashes für die aktuellen Repository-Quelldateien aus:

pcs sync hash repo

Erfasse den aktuellen TIA-Projektstand als generierte Source-Dateien unter .pcs/sync/tia-snapshot/latest:

pcs sync snapshot tia plc=PLC_1

Wenn das konfigurierte Projekt bereits in TIA Portal geöffnet ist, hängt sich der Snapshot-Befehl an diese laufende Instanz an. Das ist der schnellste Weg während normaler Engineering-Schleifen.

Ersetze die lokale Baseline nur, nachdem bestätigt wurde, dass TIA und Repository-Sources übereinstimmen:

pcs sync baseline --force

Die Sync-Baseline und der TIA-Snapshot werden unter .pcs/sync geschrieben und von Git ignoriert.

Library- und Release-Management

pcs library status
pcs library inspect path=releases/PCS_1.2.0
pcs library compare path=releases/PCS_1.2.0
pcs library update path=releases/PCS_1.2.0

Die Library-Befehle verwenden aktuell release-manifest.json und stellen die kontrollierte Prompt-/Review-Schicht bereit. Sie führen noch keine automatisierte TIA-Typsynchronisierung aus.

Ein Developer-Release vorbereiten und paketieren:

pcs release prepare version=1.2.0
pcs release validate
pcs release library version=1.2.0
pcs release package version=1.2.0

pcs release prepare erkennt geänderte PLC-Quelldateien über Git und erstellt release-manifest.json, changelog.md und compatibility-notes.md unterhalb von releases/PCS_<version>.

Standardmäßig vergleicht die Release-Vorbereitung gegen das vorherige Tag pcs-library-v*. Überschreibe die Baseline bei Bedarf:

pcs release prepare version=1.2.0 since=pcs-library-v1.1.0

Dokumentation

pcs docs serve
pcs docs open

Öffnet den lokalen MkDocs-Server unter http://localhost:8000. Starte zuerst pcs docs serve.

pcs docs render

Rendert alle .puml-Dateien unterhalb von docs als SVGs.

pcs docs build

Der Build-Befehl fragt, ob PlantUML-Diagramme vor dem MkDocs-Lauf als SVGs gerendert werden sollen.

python -m pip freeze | Set-Content -Encoding ASCII requirements.txt
plantuml --svg "docs\development\diagrams\multi-plc-deployment.puml"

TIA Portal

Das konfigurierte TIA-Portal-Projekt öffnen:

pcs tia open

Der Projektpfad wird aus projectPath in pcs.config.json aufgelöst.

Ein komprimiertes TIA-Portal-Projektarchiv mit dem TIA-Openness-Archiver erstellen:

pcs tia archive

Standardmäßig wird das Archiv nach backupPath aus pcs.config.json geschrieben und so benannt:

<projectName>_YYYY-MM-DD-HHmm.zap20

Zum Beispiel:

PCS_2026-05-13-2305.zap20

Projektpfad, Backup-Ordner und Archivname prüfen, ohne TIA zu öffnen:

pcs tia archive dry-run

Nützliche Optionen:

pcs tia archive backup="%USERPROFILE%\Documents\TIA-Archives\PCS"
pcs tia archive name=PCS_before_factory_acceptance_test
pcs tia archive tia-version=V20
pcs tia archive build

Der Befehl speichert zuerst das TIA-Projekt und ruft danach über Openness die originale TIA-Portal-Archiv-API auf. Das Zielarchiv darf noch nicht existieren.

Wenn das konfigurierte Projekt bereits in TIA Portal geöffnet ist, hängt sich pcs tia archive an diese laufende Instanz an und archiviert sie. Andernfalls öffnet der Befehl zuerst das konfigurierte Projekt über Openness.

Erweiterte Skripte

Die Low-Level-Skripte bleiben für Troubleshooting und Automatisierung verfügbar.

Direkte Openness-Befehle

Die Openness CLI direkt bauen:

.\tools\tia-openness\build.ps1

Direkt über den Openness-Wrapper deployen:

.\tools\tia-openness\deploy.ps1 `
  -Project "%USERPROFILE%\Documents\TIA-Projekte\PCS\PCS.ap20" `
  -Plc "PLC_1"

Eine Source-Datei direkt deployen:

.\tools\tia-openness\deploy.ps1 `
  -Project "%USERPROFILE%\Documents\TIA-Projekte\PCS\PCS.ap20" `
  -Plc "PLC_2" `
  -SourceFile "tia\exports\01_PLATFORM\FB_AnalogScaling.scl"