Help us improve
Share bugs, ideas, or general feedback.
From totally-integrated-claude
Implements PLC software engineering via Siemens TIA Portal Openness API in C#. Covers online status, block management, tags, alarms, safety, OPC UA, and supervision.
npx claudepluginhub czarnak/totally-integrated-claude --plugin totally-integrated-claudeHow this skill is triggered — by the user, by Claude, or both
Slash command
/totally-integrated-claude:tia-plc-operationsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
PLC software engineering — full C# Openness implementation.
references/alarms.mdreferences/blocks.mdreferences/compare.mdreferences/external-sources.mdreferences/online-status.mdreferences/opc-ua.mdreferences/safety-administration.mdreferences/safety-unit.mdreferences/software-units.mdreferences/supervision.mdreferences/tags-types.mdreferences/technological-objects.mdreferences/watch-force-tables.mdProvides C# Openness implementations for device-level operations in TIA Portal, including enumeration, creation, attributes, hardware parameters, device items, and networks.
Statically reviews exported IEC 61131-3 PLC programs (Ladder, ST, FBD, SFC) for safety-critical defects like E-stop issues, unresolved latches, forced I/O, and interlock bypass risks in OT/ICS environments.
Analyzes PLC firmware for security vulnerabilities like hard-coded credentials, backdoors, insecure updates, and debug interfaces from Siemens S7, Allen-Bradley, Schneider Modicon via extraction, static/dynamic analysis, and baseline comparison.
Share bugs, ideas, or general feedback.
PLC software engineering — full C# Openness implementation.
When the roadmap routes here, the entire solution is C#.
Do not mix with Python wrapper calls.
Always load tia-csharp-common first (done by roadmap).
Load ONLY the reference file(s) relevant to the task. Do not load all files at once.
| Reference file | Load when the task involves |
|---|---|
references/online-status.md | Going online/offline, reading PLC state, configuring connection parameters, OnlineProvider, OnlineState, ConnectionConfiguration |
references/compare.md | Comparing PLC software or hardware, CompareResult, CompareResultState, CompareToOnline, UpdateProgram |
references/blocks.md | Program blocks, system blocks, PlcSoftware root, know-how/write protection, block groups, ProDiag-FB, DataBlock snapshots, compile individual block/UDT, fingerprints, webserver pages, OB priority, loadable file |
references/external-sources.md | PLC external source files, importing/generating blocks from sources, PlcExternalSource, PlcExternalSourceGroup |
references/tags-types.md | PLC tag tables, tags, user constants, system constants, UDTs, PLC types, UDT group navigation |
references/software-units.md | Software units (PlcUnit), PlcUnitProvider, unit relations, unit access/publish, namespaces, name value type documents |
references/safety-unit.md | Fail-safe unit (PlcSafetyUnit), SafetyUnit access, safety relations, publish safety blocks |
references/safety-administration.md | Global safety settings, SafetyAdministration, safety signature, safety system version, safety runtime groups, safety validation assistant |
references/alarms.md | PLC alarms, alarm classes, alarm text lists, PlcAlarmTextProvider |
references/technological-objects.md | Technological Objects (TOs), motion control, axes, encoders, TO mapping, hardware connections |
references/watch-force-tables.md | Watch tables, force tables, PlcWatchTable, PlcForceTable, watch entries |
references/opc-ua.md | OPC UA server interfaces, OPC UA communication groups, access control, role mapping |
references/supervision.md | Supervision settings, supervision provider, supervision export/import |
For tasks spanning multiple areas, load all relevant reference files before generating code.
If a task targets a partial reference file, do not invent API calls.
State clearly which sections are missing. The only remaining stub is import/export
signatures in compile-import-export.md — all other files are complete.
PlcSoftware via device's SoftwareContainerOnlineProvider service on the CPU DeviceItem (see online-status.md)CompareTo / CompareToOnline on PlcSoftware or Device (see compare.md)PlcUnitProvider service on PlcSoftware (see software-units.md)PlcUnitProvider.UnitGroup.SafetyUnits (see safety-unit.md)using Siemens.Engineering.HW.Features;
using Siemens.Engineering.SW;
// From a DeviceItem (CPU)
SoftwareContainer sc = deviceItem.GetService<SoftwareContainer>();
PlcSoftware plcSoftware = sc?.Software as PlcSoftware;