SPS mit C#
programmieren.
Wann, wie, wo nicht.
S7.NET, Beckhoff TwinCAT.NET und Rockwell mit .NET — die pragmatische Brücke zwischen Steuerungstechnik und IT-Welt. Inklusive Git- und CI/CD-Workflow.
Andreas Schönfeld
Geschäftsführer & DevOps-Berater, Comquent GmbH
20 Jahre CI/CD- und Industrial-DevOps-Beratung — Schwerpunkt SPS/PLC-Versionierung, IT/OT-Brücke und Embedded-Toolchains.
SPS-Steuerungslogik schreiben Sie nach IEC 61131-3 — nicht in C#. Mit C# realisieren Sie in der OT drei Pfade: S7.NET für Siemens-Kommunikation, Beckhoff TwinCAT.NET für .NET-Komponenten in der TwinCAT-Runtime, und Rockwell .NET-Integration über Component Object Model. Pragmatisch — weil Git, CI/CD und Tests Standard-IT-Toolchain bleiben.
Welche Vendor-Pfade
gibt es 2026?
Die drei großen SPS-Hersteller bieten unterschiedliche .NET-Wege. Keiner ersetzt die Steuerungs-IDE — aber alle erlauben C# als Ergänzung für HMI, OPC UA, MES-Anbindung und Test-Automation.
Siemens
S7.NETPlus / Sharp7
Windows-/Linux-Host, Edge-Device
Datenaustausch S7-1200/1500, LOGO!, S7-300/400 — kein Code auf der SPS
- HMI-Anwendungen
- OPC-UA-Gateway
- MES-Anbindung
- Edge-Daten-Pufferung
Beckhoff
TwinCAT.NET (Beckhoff.TwinCAT.Ads)
TwinCAT-3-Runtime in Visual Studio
.NET-Komponenten in der TwinCAT-Runtime — echte SPS-nahe C#-Logik (nicht-zeitkritisch)
- Daten-Mapping
- OPC-UA-Server
- Logging & Visualisierung
- Fertigungsdaten an Cloud
Rockwell
Studio 5000 Component Object Model / libplctag.NET
Windows-Host neben ControlLogix/CompactLogix
Datenaustausch mit Logix-Steuerungen, .NET-Komponenten in Studio-5000-Add-Ons
- HMI-Plant-Floor
- AS-i / OPC-UA-Bridge
- MES-Integration
- Reporting
Vier Gründe für
C# in der OT.
Wo C# der pragmatischere Pfad ist — und warum.
Standard-Toolchain
MSBuild, NuGet, dotnet CLI, Roslyn, NUnit, xUnit — alle bekannten DevOps-Tools laufen direkt. Keine TIA-Portal-Lizenz auf dem Build-Agent.
Diff-bar in Git
Anders als KOP/AWL ist C#-Code reiner Text. Pull-Request-Reviews, Branch-Strategien und Merge-Konflikte funktionieren wie in klassischen IT-Projekten.
Test-Automation
Steuerungs-Adapter abstrahieren — und Tests laufen ohne reale SPS. Coverage ≥ 70 % auf der Daten-Mapping-Logik ist in jedem Projekt erreichbar.
IT-Talente gewinnen
Junior-Entwickler aus der Hochschule können sofort produktiv sein — sie kennen C# und Visual Studio, aber selten Structured Text oder KOP.
Drei Grenzen.
Ehrlich genannt.
C# ist kein Universal-Hammer. Diese drei Use-Cases bleiben IEC 61131-3.
Harte Echtzeit-Regler
Lageregler, Motion-Control unter 1 ms, Sicherheits-SPS nach IEC 61508/SIL2+ — bleibt in IEC 61131-3 (Structured Text in TIA Portal, CODESYS, TwinCAT PLC).
Steuerungen ohne .NET-Runtime
S7-1200 ohne TwinCAT, klassische CompactLogix ohne Add-On — hier läuft C# nur als externer Kommunikations-Layer auf einem PC/Edge-Device, nicht auf der Steuerung.
Zertifizierungs-Pflicht
SIL-zertifizierte Codebasen brauchen geprüfte Compiler und Toolchains. C# und .NET sind dort meist nicht zugelassen — die Hersteller-IDEs der SPS liefern die zertifizierten Build-Strecken mit.
Read/Write gegen
eine S7-1500.
Minimales C#-Beispiel: Verbindung zur S7-1500, einen DB-Wert lesen, einen Merker setzen. NuGet-Paket S7.NetPlus installieren und in einer Konsolen-Anwendung referenzieren.
Der Code unten läuft auf einem beliebigen Windows-/Linux-Host mit Netzwerkzugriff auf die Steuerung — die SPS selbst bleibt unverändert (kein Code-Deployment auf die SPS).
// dotnet add package S7.NetPlus using S7.Net; var plc = new Plc(CpuType.S71500, "192.168.0.10", 0, 1); await plc.OpenAsync(); // DB1.DBD0 als REAL lesen var temperature = (float)await plc.ReadAsync("DB1.DBD0"); Console.WriteLine($"Temperatur: {temperature:F2} °C"); // Merker M10.0 setzen await plc.WriteAsync("M10.0", true); plc.Close();
S7.NetPlus · NuGet · Open Source (MIT) · S7-1200/1500, S7-300/400, LOGO!
Vom ersten Modul
zur Pipeline.
Empirisch in 4 Wochen umsetzbar — Standard-Toolchain, kein Spezial-Setup nötig.
Woche 1
Modul-Wahl & Library-Setup
Use-Case festlegen: HMI-Logik, OPC-UA-Gateway oder MES-Anbindung. NuGet-Pakete einbinden — S7.NETPlus für Siemens, Beckhoff.TwinCAT.Ads für TwinCAT, libplctag.NET für Multi-Vendor. Solution-Struktur mit Library-/Test-/Application-Project. .gitignore vorbereiten.
Woche 2
Unit-Tests & Mocking
NUnit oder xUnit konfigurieren. Steuerungs-Adapter über Interface abstrahieren, damit Tests ohne reale SPS laufen. Coverage-Ziel: ≥ 70 % auf der reinen C#-Logik (Daten-Mapping, Protokoll-Adapter). Mocks für DB-Reads, Schreib-Operationen mit Test-Doubles.
Woche 3
Build-Pipeline + statische Analyse
Jenkinsfile oder GitLab-CI mit MSBuild-Stage. Roslyn-Analyzer für Code-Quality, SonarQube für Coverage-Reporting. Signed-Build-Artefakt (Authenticode) für OT-Deployments. SBOM-Generierung mit CycloneDX für IEC-62443-Compliance.
Woche 4
Integration-Tests gegen virtuelle SPS
PLCSim Advanced (Siemens) oder TwinCAT-Runtime im Container starten. Integration-Tests im CI gegen die virtuelle Steuerung — Read/Write-Zyklen, Datentyp-Konsistenz, Edge-Cases. Promotion auf Real-Hardware nur nach Pass.
.NET-Code in der OT —
was IEC 62443 verlangt.
Sobald C#-Code mit einer Steuerung kommuniziert, wird er zum Bestandteil der OT-Sicherheitszone. IEC 62443 stuft solchen Code als SL-relevant ein — Build, Lieferkette und Deployment müssen nachvollziehbar sein.
Die fünf Pflicht-Stages, die in jeder CI/CD-Pipeline für .NET-OT-Code laufen sollten, sind unten aufgeführt. Mit dem Cyber Resilience Act kommen ab Dezember 2027 zusätzliche SBOM- und Meldepflichten dazu.
- /01
Authenticode-Signatur
Build-Artefakte mit gültigem Code-Signing-Zertifikat signieren. Manipulationsschutz und Lieferanten-Nachweis in einem.
- /02
SBOM (CycloneDX)
Alle NuGet-Dependencies in einer CycloneDX-Software-Bill-of-Materials erfassen. Pflicht ab CRA Dezember 2027.
- /03
Statische Analyse
Roslyn-Analyzer mit Security-Regeln aktivieren (z. B. SecurityCodeScan). SonarQube für zentrale Pflege der Regeln.
- /04
Dependency-Scan
Trivy oder OWASP Dependency-Check gegen alle NuGet-Pakete. CVE-Treffer ab CVSS 7 blocken den Build.
- /05
Verschlüsselte Kommunikation
Wo das Protokoll es zulässt: OPC UA mit X.509-Zertifikaten statt klassische S7-Telegramme über Plain-TCP.
FAQ — C# in der
SPS-Welt.
- /01
- Kann man eine SPS mit C# programmieren?
- Klassischer SPS-Steuerungscode wird nach IEC 61131-3 in KOP, FUP, AWL, ST oder SFC geschrieben — nicht in C#. Mit C# realisieren Sie in der OT typischerweise drei Pfade: Siemens S7.NET als Kommunikations-Library, Beckhoff TwinCAT.NET zur Programmierung der TwinCAT-Runtime mit .NET, oder Rockwell Studio 5000 mit .NET-Komponenten. Echte Echtzeit-Logik bleibt in der IEC-61131-3-Umgebung.
- /02
- Was ist S7.NET und wofür wird es eingesetzt?
- S7.NET (auch S7.NETPlus oder Sharp7) ist eine offene C#-Library zur Kommunikation mit Siemens-S7-Steuerungen über das S7-Protokoll. Typische Use-Cases sind HMI-Anwendungen, OPC-UA-Gateways, MES-Anbindungen, Datenarchivierung und Edge-Datenvorverarbeitung. S7.NET läuft nicht auf der SPS, sondern auf Windows-/Linux-Hosts.
- /03
- Was ist Beckhoff TwinCAT.NET?
- TwinCAT.NET-Komponenten und Beckhoff.TwinCAT.Ads.NET sind die offiziellen Beckhoff-Libraries, mit denen .NET-Anwendungen über ADS auf TwinCAT-Runtime und SPS-Variablen zugreifen. In Visual Studio lassen sich C#-Module schreiben, die auf der TwinCAT-3-Runtime gehostet werden.
- /04
- Wann lohnt sich C# statt KOP/AWL/ST in der SPS-Programmierung?
- C# überzeugt für HMI-Logik, OPC-UA-Gateways, MES-Anbindungen, Datenarchivierung, Edge-Datenvorverarbeitung und Test-Automation. C# reicht nicht aus für: harte Echtzeit-Regler, Safety-relevante Logik nach IEC 61508/SIL2+, und tief integrierte Steuerungslogik auf Steuerungen ohne .NET-Runtime.
- /05
- Wie versioniere ich C#-SPS-Code mit Git?
- C#-Code für SPS-Anbindung wird wie normaler .NET-Code in Git versioniert: .gitignore mit Standard-VS-Einträgen, NuGet-Pakete über PackageReference. Trennung in Library, Application und Tests. Pull-Request-Workflows funktionieren analog zu klassischen IT-Projekten.
- /06
- Wie baut man eine CI/CD-Pipeline für C# in der OT?
- Standard-Pipeline in vier Stages: Restore (NuGet-Pakete cachen), Build (MSBuild oder dotnet build), Test (NUnit/xUnit + Coverage), Package & Sign (Authenticode). Bei TwinCAT.NET zusätzlich TcCOM-Assembly. Build-Agents brauchen Windows mit Visual Studio Build Tools.
- /07
- Welche Sicherheitsanforderungen gelten für .NET-Code in der OT?
- IEC 62443 stuft Code, der mit Steuerungen kommuniziert, als SL-relevant ein. Pflicht sind signierte Build-Artefakte (Authenticode), SBOM für alle NuGet-Dependencies (CycloneDX), statische Code-Analyse, Dependency-Scanning auf CVEs und verschlüsselte Kommunikation zur SPS (OPC UA mit X.509).
- /08
- Welche Tools und Libraries für C#-SPS-Entwicklung 2026?
- Siemens: S7.NETPlus, Sharp7, Siemens Openness. Beckhoff: Beckhoff.TwinCAT.Ads, TwinCAT.NET-Komponenten. Rockwell: Studio 5000 mit COM, libplctag.NET (Open Source, Multi-Vendor). Hersteller-übergreifend: OPC UA via OPC Foundation .NET Standard Stack.
C# in der OT.
Pipeline in
4 Wochen.
Wir bauen Ihre erste CI/CD-Pipeline für .NET-Code in der Steuerungstechnik — mit S7.NET, TwinCAT.NET oder Multi-Vendor über libplctag. Standard-Toolchain, signierte Artefakte, virtuelle SPS-Tests.
Verwandte Artikel
SPS-Versionsverwaltung: Git für Industrial IT
octoplant, Copia und TIA Portal V21 — Versionskontrolle für SPS-Code in der Praxis.
CI/CD für SPS mit TIA Portal & Jenkins
Build, PLCSim-Tests, Quality Gates: Inbetriebnahmezeit um 40–60 % reduzieren.
Software Defined Automation einführen
DevOps für die SPS-Welt — Pilot in 8 Wochen, 40 % kürzere Lead Time.
Erstgespräch.
Kostenlos.
90 Tage zum Ergebnis.
Wir klären gemeinsam, wie Sie in 90 Tagen die ersten messbaren Industrial-DevOps-Erfolge erzielen.
Industrie · Automotive · Finance
