| name | eplan-electric-p8-live-loop |
| description | Work with the already-open EPLAN Electric P8 2.9 project in D:\skills\codex\Eplan: prove the live connection, read project facts, export IO/template/BOM workbooks, repair PLC address overview reports, and prepare controlled PLC or part changes with project-local evidence. |
EPLAN Electric P8 Live Loop
Use this skill for EPLAN work launched from D:\skills\codex\Eplan, especially when EPLAN is already open and the user asks about PLC points, PLC address overview reports, cabinets, terminal strips, power, 485/network topology, Excel exports, BOM, or controlled edits.
Authority Boundary
- Use only this workspace as the project authority:
D:\skills\codex\Eplan\skills\
D:\skills\codex\Eplan\knowledge\
D:\skills\codex\Eplan\scripts\
- Do not blend in facts, scripts, or conclusions from other projects unless the user explicitly asks for external comparison or lookup.
- Do not mutate the live EPLAN project unless the user asks for a concrete edit/export.
- Every operation needs input/output closure: record the request, read back the observed state, and save evidence under
D:\skills\codex\Eplan\logs\.
First Step
For any live EPLAN task, prove the connection before answering from the open project:
.\scripts\connect-eplan.ps1 -CaptureScreenshot
If the expected project/title fragment is known:
.\scripts\invoke-eplan-closed-loop.ps1 -ExpectedTitlePart "A1"
Read back:
Observed.SelectedWindowTitle
Observed.ScreenshotPath
Success
Task Router
- Project facts, page tree, cabinets, terminal strips: read
knowledge\PROJECT-FACTS.md, then refresh with scripts\extract-eplan-project-map.py if the live project changed.
- Template-style Excel export: use
scripts\export-eplan-template-xlsx.py; rules are in knowledge\EXPORT-RULES.md.
- Procurement BOM: use
scripts\export-eplan-bom.py; rules and caveats are in knowledge\BOM-RULES.md.
- PLC point lookup or point change: use
knowledge\PLC-IO-RULES.md; prefer EPLAN export/import/API routes and treat binary .edb probing as read-only verification unless the user explicitly accepts a targeted fallback.
- PLC address overview report restore/filter/layout: read
knowledge\PLC-ADDRESS-FORM-TEMPLATE.md. Use scripts\Apply-PlcAddressFilter.ps1 to remove blank-address rows across all generated =Convey&PLCIO/* pages. Use scripts\rebuild-plc-address-form-9col.py only after backing up F48_001.f48.
- General report/form template modifications: read
knowledge\REPORT-FORM-MODIFICATION-PATTERNS.md first, then the specific report knowledge file. Treat master form files, report-generator settings, and generated report pages as separate layers that each need their own read-back.
- Power, 485, network, PLC arrangement, cabinet/front-panel ordering: read
knowledge\TOPOLOGY-ORDERING-RULES.md before exporting or answering.
- Wire/connection numbering: read
knowledge\WIRE-NUMBERING-RULES.md; summarize schemes with scripts\summarize-wire-numbering-scheme.py before customizing formats.
- Terminal diagram form/template changes: read
knowledge\REPORT-TEMPLATE-RULES.md and knowledge\TERMINAL-FORM-TEMPLATE.md; summarize .f13 forms with scripts\summarize-eplan-form-template.py before changing headers, variables, coordinates, or property ids.
- Failures and fixes: append concise notes to
knowledge\ERRORS.md.
- Useful new discoveries: append concise notes to
knowledge\learning-log.md and update the matching knowledge file.
Safe Script Entry Points
# Live connection proof
.\scripts\connect-eplan.ps1 -CaptureScreenshot
# Closed-loop title verification
.\scripts\invoke-eplan-closed-loop.ps1 -ExpectedTitlePart "A1"
# Refresh read-only project map evidence
python -X utf8 .\scripts\extract-eplan-project-map.py --help
# Export IO workbook using the user's template
python -X utf8 .\scripts\export-eplan-template-xlsx.py
# Export procurement BOM draft
python -X utf8 .\scripts\export-eplan-bom.py
# Summarize the learned HAOYUE300 wire-numbering scheme
python -X utf8 .\scripts\summarize-wire-numbering-scheme.py
# Summarize the learned terminal diagram form
python -X utf8 .\scripts\summarize-eplan-form-template.py
# Reapply PLC address non-empty filtering to all regenerated PLCIO pages
.\scripts\Apply-PlcAddressFilter.ps1
Reading Rules
- Prefer EPLAN reports, page-level read-back, and exported data over raw binary strings.
- Raw
.edb string extraction is useful for discovery but can contain mojibake, duplicate strings, stale context, or unrelated page text.
- For AI/AQ, preserve signed terminals such as
IW0+, IW0-, QW0+, QW0-; do not collapse them to IW0 or QW0.
- For uncertain names, output
待确认 instead of inventing a device name.
- For BOM quantities, treat script counts as a check draft until verified against EPLAN reports/order pages.
Modification Rules
- Before any change: capture live connection evidence and create a backup/export of the target data.
- Change only the named target. Avoid grid-wide paste or mouse-driven bulk edits.
- After a change: run EPLAN refresh/check when possible, then read back the exact point/part/page and save screenshot or export evidence.
- If API/export/import fails, log the failure and propose the safest fallback before touching project data.
- For report/form templates, never rely on fixed generated page numbers. Identify the form, report type, page family, and dynamic report objects before editing.
- Preserve structural report objects such as dynamic report boxes and property variables unless a backup, read-back, and visual verification plan is in place.
PLC Overview Guardrails
- Do not assume PLC overview page numbers are stable. Regeneration may move the same report from
/12 and /13 to /1 and /2.
- For blank rows in the PLC address overview, patch every
=Convey&PLCIO/* SignalOverview report block with PLC地址非空, then run reports /TYPE:PROJECT and gedRedraw.
- Verify both the report-block read-back and the live page screenshot. A successful refresh action alone is not enough.