eae-sln-overview
EAE Solution Overview
Analyzes EcoStruxure Automation Expert (EAE) projects and generates comprehensive reports.
Quick Start
# Basic analysis - generates markdown report
python scripts/analyze_project.py --project-dir /path/to/project
# JSON output for automation
python scripts/analyze_project.py --project-dir /path/to/project --json
# Quick summary
python scripts/analyze_project.py --project-dir /path/to/project --format summary
# Save report to file
python scripts/analyze_project.py --project-dir /path/to/project --output report.md
Triggers
Use this skill when:
- "analyze EAE project"
- "generate project report"
- "project overview"
- "solution summary"
- "show project quality"
- "what's in this EAE project"
/eae-sln-overview
Quick Reference
| Analysis | Description | Script |
|---|---|---|
| Solution | Projects, blocks, library refs, EAE version | parse_solution.py |
| Topology | Devices, resources, CAT instances | parse_system_topology.py |
| Protocols | OPC-UA, Modbus, EtherNet/IP, IO-Link | parse_protocols.py |
| Libraries | SE vs custom, dependencies | parse_libraries.py |
| I/O | Event/data inputs/outputs | count_io.py |
| ISA88 | System/subsystem hierarchy | parse_isa88.py |
| Description | Project description (docs or inferred) | parse_description.py |
| Quality | 8-dimension scoring | calculate_quality.py |
Report Sections
1. Executive Summary
Quick metrics table with quality score, project count, device count, blocks, and I/O points.
2. Network Architecture
ASCII diagram showing device topology with:
- Device names and types
- Resource counts
- CAT instance counts
3. Protocol Inventory
| Protocol | What's Detected |
|---|---|
| OPC-UA Server | Exposed node count, over-exposure warnings |
| OPC-UA Client | Cross-device connections |
| Modbus TCP/RTU | Masters and slaves |
| EtherNet/IP | Scanner instances |
| Other | DNP3, PROFINET, IO-Link, etc. |
4. Library Matrix
- SE Standard Libraries: Runtime.Base, SE.App2CommonProcess, etc.
- Custom Libraries: Project-specific namespaces with dependencies
5. I/O Summary
| Category | Description |
|---|---|
| Event Inputs | INIT, REQ, etc. |
| Event Outputs | INITO, CNF, etc. |
| Data Inputs | Interface variables (inputs) |
| Data Outputs | Interface variables (outputs) |
| Internal Vars | Private variables |
| Adapters | Socket/Plug connections |
6. ISA88 Hierarchy
System/Subsystem hierarchy from System.sys:
System: System
+-- Subsystem: JetMix (JetMix)
+-- Equipment modules...
+-- Subsystem: JetSpray (JetSpray)
+-- Equipment modules...
Parsed from Device.FolderPath attribute and CAT instances in System.sys.
7. Quality Score
8-dimension scoring system (100 points total):
| Dimension | Max | Description |
|---|---|---|
| Naming Compliance | 20 | SE naming convention adherence |
| Library Organization | 15 | SE/custom separation, dependencies |
| Documentation | 15 | .doc.xml coverage, comments |
| ISA88 Hierarchy | 15 | Asset structure and CAT linking |
| Protocol Config | 10 | OPC-UA exposure, clean configs |
| Code Organization | 10 | Folder structure, consistency |
| Block Complexity | 10 | Variable counts, event fanout |
| Reusability | 5 | Adapter usage, composition |
Grades: A (90+), B (80-89), C (70-79), D (60-69), F (<60)
Commands
Main Orchestrator
python scripts/analyze_project.py --project-dir PATH [OPTIONS]
Options:
--project-dir PATH EAE project root directory (required)
--format FORMAT Output: markdown, json, summary (default: markdown)
--output PATH Write to file instead of stdout
--json Shortcut for --format json
Individual Scripts
Run individual analysis modules for targeted inspection:
# Solution structure
python scripts/parse_solution.py --project-dir PATH [--json]
# System topology
python scripts/parse_system_topology.py --project-dir PATH [--json]
# Protocol detection
python scripts/parse_protocols.py --project-dir PATH [--json]
# Library analysis
python scripts/parse_libraries.py --project-dir PATH [--json]
# I/O counting
python scripts/count_io.py --project-dir PATH [--json] [--details]
# ISA88 hierarchy
python scripts/parse_isa88.py --project-dir PATH [--json]
# Project description
python scripts/parse_description.py --project-dir PATH [--json]
# Quality scoring
python scripts/calculate_quality.py --project-dir PATH [--json]
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Analysis complete, quality >= 70% |
| 1 | Error (project not found, critical failure) |
| 10 | Analysis complete with warnings, or quality 50-69% |
| 11 | Analysis complete, quality < 50% |
Output Formats
Markdown (default)
Full report with tables, ASCII diagrams, and formatted sections. Best for documentation.
JSON
Structured data for automation and integration:
{
"project_dir": "/path/to/project",
"analyzed_at": "2024-01-15T10:30:00",
"solution": { ... },
"topology": { ... },
"protocols": { ... },
"libraries": { ... },
"io": { ... },
"isa88": { ... },
"quality": { ... }
}
Summary
One-line-per-metric quick overview:
Project: MyProject
Description: MyProject is an IEC 61499 automation project for food and beverage processing.
EAE Version: 24.0.0.0
Quality: 75/100 (Grade C)
Projects: 3
Blocks: 250
I/O Points: 8,287
SE Libraries (16): Runtime.Base, SE.AppBase, ...
Custom Libraries (3): MyLib.IoLink, ...
Protocols: OPC-UA (0 refs), Modbus (334 refs), EtherNet/IP (1475 refs)
System: System
Subsystems (4): JetMix, JetSpray, JetFlam, Ligne
Equipment Modules: 114
Project Locations
Default EAE project locations:
C:\Users\{user}\Documents\Schneider Electric\EcoStruxureAutomationExpertProjectsC:\Users\{user}\Documents\GitHub
Files Analyzed
| Pattern | Purpose |
|---|---|
*.sln, *.nxtsln |
Solution structure |
*.dfbproj |
Project metadata, library refs, EAE version |
*.fbt |
Function blocks (interfaces) |
*.adp |
Adapters |
*.dt |
Data types |
System.cfg, System.sys |
Topology, CAT instances, ISA88 hierarchy |
*.opcua.xml |
OPC-UA server configuration |
*.hcf |
Hardware configuration (protocol detection) |
*.doc.xml |
Documentation (description extraction) |
Folders.xml |
Code organization |
README.md |
Project documentation |
Integration with Other Skills
| Skill | Integration |
|---|---|
eae-naming-validator |
Quality scoring uses naming patterns |
eae-performance-analyzer |
Can be run after overview for deep analysis |
eae-skill-router |
Parent skill for routing |
Anti-Patterns
| Avoid | Why | Instead |
|---|---|---|
| Analyzing without reading | May miss context | Review report sections |
| Ignoring quality warnings | Technical debt | Address recommendations |
| Over-exposed OPC-UA | Security risk | Review exposed nodes |
| Empty ISA88 | Missing asset management | Configure hierarchy |
Verification
After running analysis:
- Quality score calculated (not error)
- All 8 analysis sections present (solution, topology, protocols, libraries, io, isa88, description, quality)
- No critical warnings
- Library list includes SE and custom libraries
- Protocol detection shows expected communication types
- ISA88 subsystems match expected configuration
Troubleshooting
"Project directory not found"
Ensure the path points to the root containing .sln or IEC61499/ folder.
"No .dfbproj files found"
The project may not be an IEC61499 project or may have a non-standard structure.
"System directory not found"
The project doesn't have a configured system topology yet. This is normal for library-only projects.
"No subsystems found"
ISA88 hierarchy is not configured in System.sys. Ensure Device.FolderPath is defined with subsystem names.
Changelog
v1.1.0
- Added
parse_description.py- hybrid description generation (docs + metadata inference) - Enhanced protocol detection from .hcf files and library references
- Added EAE version detection from .dfbproj files
- Fixed ISA88 parsing to use System.sys instead of Assets.json
- Improved custom library detection via ProjectReference elements
- Added compatibility field to frontmatter
v1.0.0
- Initial release
- 7 analysis modules
- 8-dimension quality scoring
- Markdown, JSON, summary output formats
- ASCII network diagrams