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"