dsh-plc-decode
IdentifiedRead PLC projects inside DSH — decode CoDeSys .project and Delta .dvp (both need Python 3.9+ on PATH) and Siemens S7-200 SMART .smart/.smartlib into readable reports and structured data, plus project
dsh-plc-decode
在 DeepSeek Harness(DSH)里直接读 PLC 工程文件:按文件头自动识别格式,把工程解成可读报告与结构化数据,再基于解码结果做新旧对比、地址体检、元素级读/写判定与连线还原。
只读:解析工程文件,不改动原文件。
支持的工程文件
| 文件头 | 格式 | 解码方式 |
|---|---|---|
50 4B 03 04(ZIP) | CoDeSys V3.5 / LeadSysStudio .project(含雷赛) | 自带 Python 脚本:解包 → 字符串表 → 逐对象恢复 POU ST 源码 |
57 01 01 00 | 台达 WPLSoft / ISPSoft .dvp | 自带 Python 脚本:文件结构 / 段落注释 / 设备注释 / 指令表反汇编 |
53 48 33 00(SH3) | 西门子 S7-200 SMART .smart 工程 | 内嵌 Node 解码器:块 / 指令记录 / 操作数 / 用户与系统符号表 |
44 45 4D 00(DEM) | 西门子 S7-200 SMART .smartlib 库 | 内嵌 Node 解码器:库变量与注释流 |
雷赛(Leadshine)用 LeadSysStudio 保存的
.project与 CoDeSys 同格式,走同一条解码链:ST 源码导出到pous/<POU>.txt,可用/codesys-check做等价编译校验(结构体成员、数组下标、调用存在性、地址唯一、未声明符号)。
安装
前提:
- DSH 桌面端(插件运行在 DSH 内,Node 版本跟随 DSH);
- 解码
.project/.dvp需要 Python 3.9+ 在PATH里(只用标准库,无需 pip 安装); - 解码
.smart/.smartlib不需要 Python。 - 兼容 DSH 0.2.1-rc.5(实测通过);0.3 起不保证。
从 GitHub 安装:
dsh plugin --profile web add github:taoziliyouchong/dsh-plc-decode
装完重启 DSH。本插件没有 npm 运行时依赖。
使用
工具(模型自动调用)
| 工具 | 用途 |
|---|---|
plc-decode | 统一入口:按文件头识别四格式并分发解码,参数 file + 可选 outDir |
smart-pou-structure | 某子程序的内部结构:接口参数(L 区地址 + 类型)、盒级指令链、调用点实参 |
smart-lad | 连线还原:按块、按网络打印 LAD 指令序列(LD/A/O/AN/ON、EU/ED、LPS/LRD/LPP、线圈、比较、指令盒占位) |
smart-ladder-elements | 元素级读/写判定:某地址(可一批)的每个落点是触点(读)还是写 |
smart-net-trace | 网络级轨迹:给偏移区间,按顺序列出触点 / 写元件 / 指令盒 / 常数 |
smart-box-pins | 盒级引脚表:库调用盒(MBUS_CTRL、MBUS_MSG、TON、CTU、MOV_* 等)的「引脚名 = 实参」 |
smart-pin-dump | 字节级定位:某地址的全部出现位置,或某偏移区间内的操作数记录 |
smart-var-usage | 变量使用体检:某地址的全部引用点、共用字节的其它地址形式、写入点判定 |
smart-free-space | 地址占用与空闲段:加功能前选新地址(有符号名的、预留坑都不动) |
smart-conflict | 地址冲突体检:重叠冲突(真冲突 / 疑似 / 仅登记)+ 连续空间被切碎 |
smart-diff-project | SMART 新旧工程对比:块清单、主程序调用链、I-O 引用、符号表差异 |
codesys-diff-project | CoDeSys 新旧工程对比:POU 清单、真实逻辑变化区段、空白差异、字符串表、对象表 |
斜杠命令(人直接执行)
| 命令 | 用途 |
|---|---|
/plc-decode <文件> [输出目录] | 统一解码入口 |
/codesys-read <工程> | 解码 .project(ST 源码 + 报告)或 .dvp(解码报告) |
/dvp-read <工程> | 台达 DVP 结构与指令表报告 |
/smart-read <.smart/.smartlib> [输出目录] | SMART 工程 / 库解码 |
/codesys-check <工程> | 解码 .project 后做等价编译静态校验(结构体 / 调用 / 地址唯一 / 未声明符号) |
/codesys-diff <旧> <新> | CoDeSys 新旧对比 |
/smart-diff <旧> <新> | SMART 新旧对比 |
/smart-free-space <.smart> | 地址占用与空闲段 |
/smart-conflict <.smart> | 地址冲突体检 |
/smart-ladder <.smart> [地址] | 元素级读/写判定 |
/smart-lad <.smart> [块名] [网络号] | 连线还原(LAD 指令序列) |
输出位置
默认写到工作区的 解码归档/<工程所在文件夹名>/(用文件夹名而不是工程文件名,避免不同文件夹里的同名工程互相覆盖;同一文件夹里有多个工程文件时用 文件夹名_工程名)。也可以在工具参数里用 outDir 指定。
| 格式 | 主要产物 |
|---|---|
.project | 00-索引.md(先读这份)、pous/<POU>.txt(ST 源码)、工程内容报告.md、全部字符串.txt、对象表.md、项目树.md |
.dvp | 00-索引.md、解码报告.md(结构 / 段落注释 / 设备注释 / 指令表)、可选 程序解读.md |
.smart / .smartlib | 00-目录.md(先读这份)、解码报告.md、程序.lad、元素记录.tsv、符号地址.tsv、分析.md、记录.json、字符串全录.txt |
.smart 的 记录.json 同时是各分析工具(地址占用、变量使用等)的输入,也是识别「已解码目录」的凭据;解码报告头部带源文件指纹(文件大小 + 修改时间),工程换版本后先核对指纹再用旧报告。
已知边界
- 不处理触摸屏(HMI)工程:
.hmismart、.fsprj不在本插件范围。 - 库块调用区(如 MBUS_MSG 的 Slave / RW / Addr / Count / DataPtr)的引脚级实参解不出,工具会明确说明,不猜。
- 加密或特殊压缩的工程可能解不出;解码器会报错而不是给出半真结果。
.smart的串/并联拓扑由指令记录还原,已用官方导出的 STL 逐网络回归验证;库调用区(无标准盒头)不在覆盖范围内。- 指令名带
?(如?DRVI)是推断名,报告末尾有推断对照表;??xx是未定名,保持原样。
开发与自检
npm run check # 语法检查
npm run smoke # 装载插件 + 核对注册面(工具 12 个 / 命令 11 个)
npm run smoke -- <工程文件> # 额外对一个真实工程跑端到端解码,核对产物落盘
npm pack --dry-run # 看包里内容(node_modules、publish/ 不应进包)
目录结构
index.js 插件入口:工具与命令注册、四格式分发、SMART 解码器
invariant.js 伴随插件:登记包名所有权
assets/decode-pack.mjs 解码产物落盘(索引/目录/表格/记录)
assets/smart-lad.mjs 连线还原脚本(由 smart-lad 工具调用)
assets/smart-net-trace.mjs 网络轨迹脚本(由 smart-net-trace 工具调用)
assets/codesys-tools/ CoDeSys / DVP 解码 Python 脚本(只用标准库)
scripts/smoke.mjs 冒烟测试
许可
MIT
Comments
Loading…
Similar plugins
by beartackler
Slash commands ported from other coding agents (setup, connect, install, trust, browse, doctor, status, model, memory, compact, resume, review, mcp, init, suggest, improve, refactor), a zero-dependenc
★ 1
↓ 506/wk
MIT
TypeScript
Aug 30, 2026
dsh plugin --profile web add dsh-bridgeby HaoKuo
Bundles a deep-read paper library and the paper-deepread-html skill: a sidebar panel to browse interactive reading reports, upload PDFs into a managed library, deep-read them with an agent (or through
★ 0
MIT
HTML
Oct 30, 2026
dsh plugin --profile web add dsh-paper-deepreadby CC19990113
Structural code intelligence for DeepSeek Harness (dsh) — gives the agent codegraph and codegraph_index tools to find where a symbol is declared, what calls it, and what a change reaches, from a tre
★ 13
MIT
TypeScript
Nov 4, 2026
dsh plugin --profile agent add dsh-plugin-codegraph-rootby fashionmascherine-svg
DeepSeek Harness plugin (dsh-plugin): complete Polymarket superpowers — 31 verified tools across Gamma/CLOB/Data-API/Perps/RFQ/Bridge, embedded knowhow skill, live WebSocket stream. Read-only by defau
★ 3
JavaScript
Oct 7, 2026
dsh plugin --profile web add dsh-polymarket-knowhowby Bryan-cmf
DSH-Plugin: structural observability layer - real tool/skill usage recording (tools/result), skill-catalog audit, watchdog. No model self-reporting.
★ 0
MIT
TypeScript
Aug 17, 2026
dsh plugin --profile web add @bryan-cmf/dsh-infra-observabilityOne-stop pack for DeepSeek Harness: the workspace frontend plugin itself plus a pack/ installer for the task list, encoding fallback, LSP/audit and vision plugins. Root stays a normal marketplace-inst
★ 0
dsh plugin --profile web add dsh-workspace-frontend