asckye/tia_portal_openness_mcp/software-hierarchy

Claude Code and agent skill by asckye/tia_portal_openness_mcp

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

PlcSoftware root plus BlockGroup, TypeGroup, TagTableGroup, and ExternalSourceGroup object model. Use when writing or reviewing C# code that navigates or creates PLC software elements beneath a PlcSoftware or SW-Unit context.

Install

npx vskill@latest install asckye/tia_portal_openness_mcp/software-hierarchy

SKILL.md

Software Hierarchy (PlcSoftware)

Overview

Use this as an orientation and routing guide for PLC software scope. It identifies the raw Openness path, the independent hierarchy roots, and the correct import destination. For CRUD details, deep searches, and format-specific behavior, follow the linked specialist skills.

Required Namespaces

csharp
using Siemens.Engineering;
using Siemens.Engineering.HW;
using Siemens.Engineering.HW.Features;
using Siemens.Engineering.SW;
using Siemens.Engineering.SW.Units;

Required Assemblies

  • Siemens.Engineering.Base.dll
  • Siemens.Engineering.Step7.dll

HW and SW are namespaces, not separate Siemens.Engineering.HW.dll or Siemens.Engineering.SW.dll assemblies.


Raw Openness path to PlcSoftware

In the raw API, start from the CPU DeviceItem, obtain its SoftwareContainer service, then cast SoftwareContainer.Software to PlcSoftware:

csharp
DeviceItem cpu = /* CPU DeviceItem */;
SoftwareContainer container = cpu.GetService<SoftwareContainer>();
PlcSoftware plcSoftware = container?.Software as PlcSoftware;

This describes the raw Openness path; framework wrappers may expose a different navigation surface. SoftwareContainer is a DeviceItem service, not a service on Device.

Hierarchy map

text
PlcSoftware
├── BlockGroup root blocks and folders
├── TypeGroup root PLC data types and folders
├── TagTableGroup root tag tables and folders
├── ExternalSourceGroup root text-source imports
├── TechnologicalObjectGroup root technology objects
└── GetService<PlcUnitProvider>()
└── UnitGroup.Units
└── PlcUnit
├── BlockGroup
├── TypeGroup
├── TagTableGroup
└── ExternalSourceGroup

PlcUnitProvider may be null on PLC software that does not support SW-Units. Guard it before accessing UnitGroup.

Scope and navigation rules

  • BlockGroup, TypeGroup, and TagTableGroup are independent group trees; a folder or element in one is not visible in another.
  • User constants belong to a PlcTagTable.UserConstants composition reached through TagTableGroup; they are not a PlcSoftware root group.
  • Find(...) on a composition is single-level. Use the relevant specialist skill when the target folder is not already known.
  • The PlcSoftware groups are the PLC root scope. Each PlcUnit exposes isolated group trees; root searches and creations do not include SW-Unit content.
  • ExternalSourceGroup follows the target scope: use the root source group for root imports and the unit's source group for SW-Unit imports.

Import routing

InputTarget APIScope rule
Block XMLBlocks.Import(...)Use the target root or SW-Unit BlockGroup.
SCL/text sourceExternalSourceGroupUse the ExternalSourceGroup belonging to the target root or SW-Unit scope.
SIMATIC SDBlocks.ImportFromDocuments(...)Use the target root or SW-Unit BlockGroup.

Route detailed work to the specialist skill

NeedDetailed skill
Blocks, folders, XML import/export, compilation, protection`blocks`
PLC data types and UDT XML`plc-data-types`
Tag tables, tags, addresses, and user constants`tags-and-tagtables`
SW-Unit traversal, isolation, placement, and PLC-wide lookup`sw-units`
SIMATIC SD document import/export`simatic-sd`
Technology-object creation and configuration`technology-objects`

Quick checklist

  1. Locate the CPU DeviceItem, then its SoftwareContainer, then PlcSoftware.
  2. Decide whether the target is PLC root scope or one specific SW-Unit.
  3. Select the matching group tree; do not assume another tree or scope will find the element.
  4. Null-check PlcUnitProvider before using SW-Units.
  5. Route XML, SCL, and SIMATIC SD imports through their distinct APIs and the correct target scope.

Quick reference

GoalAPI / scope
Root blocksplcSoftware.BlockGroup
Root UDTsplcSoftware.TypeGroup
Root tag tablesplcSoftware.TagTableGroup
User constantsplcTagTable.UserConstants after locating the table through TagTableGroup
Root text sourcesplcSoftware.ExternalSourceGroup
Root technology objectsplcSoftware.TechnologicalObjectGroup
SW-Unit providerplcSoftware.GetService<PlcUnitProvider>()
SW-Unit import targetThe corresponding group or ExternalSourceGroup on that PlcUnit

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/asckye/tia_portal_openness_mcp/software-hierarchy/badge)](https://verified-skill.com/skills/asckye/tia_portal_openness_mcp/software-hierarchy)

Something wrong with this skill or its page? Tell us.