dsh-plc-decode:在 DSH 里只读解码 PLC 工程

前言

在 DeepSeek Harness(DSH)里做工业自动化相关对话或工作流时,模型往往拿不到 PLC 工程里的真实逻辑:.project、.dvp、.smart 等是厂商私有二进制或打包格式,不能直接当文本读。常见做法是人工在 IDE 里导出再粘贴,或写一次性脚本解包,既慢又难和 DSH 的工具调用对齐。

下面介绍社区插件 dsh-plc-decode(维护者 taoziliyouchong),它在 DSH 内按文件头识别四种工程格式,解成可读报告与结构化数据,并在此基础上提供新旧对比、地址体检与 SMART 连线还原等能力。解析过程只读,不改动原工程文件。

这是什么

dsh-plc-decode 是 DSH 的「工作流」类插件:统一入口解码 CoDeSys V3.5 / LeadSysStudio(含雷赛).project、台达 WPLSoft / ISPSoft .dvp、西门子 S7-200 SMART .smart / .smartlib,输出落到工作区归档目录,供斜杠命令与模型可调用的工具链继续分析。

DeepSeek Harness 的理念是「一切皆插件」;插件目录站 skillhub.cn 为社区索引,与 DeepSeek / 幻方无官方从属关系。当前 GitHub 仓库星标为 0,版本 0.1.1,许可 MIT。

支持的工程文件

插件通过文件头自动识别格式并分发解码:

文件头 格式 解码方式
50 4B 03 04(ZIP) CoDeSys V3.5 / LeadSysStudio .project Python 脚本:解包 → 字符串表 → 逐对象恢复 POU ST 源码
57 01 01 00 台达 .dvp Python 脚本:结构 / 段落注释 / 设备注释 / 指令表反汇编
53 48 33 00(SH3) 西门子 S7-200 SMART .smart 内嵌 Node 解码器:块、指令记录、操作数、符号表
44 45 4D 00(DEM) 西门子 S7-200 SMART .smartlib 内嵌 Node 解码器:库变量与注释流

雷赛 LeadSysStudio 保存的 .project 与 CoDeSys 同链,ST 导出到 pous/<POU>.txt 后可用 /codesys-check 做等价编译静态校验(结构体成员、数组下标、调用存在性、地址唯一、未声明符号等)。

核心功能

统一解码与产物

  • 工具 plc-decode:参数 file,可选 outDir,四格式统一入口。
  • 斜杠命令 /plc-decode <文件> [输出目录] 与人直接执行等价。

默认输出到工作区 解码归档/<工程所在文件夹名>/(同名工程在不同文件夹时用 文件夹名_工程名 区分)。也可在工具里指定 outDir。

格式 主要产物
.project 00-索引.md、pous/<POU>.txt、工程内容报告.md、全部字符串.txt、对象表.md、项目树.md
.dvp 00-索引.md、解码报告.md,可选 程序解读.md
.smart / .smartlib 00-目录.md、解码报告.md、程序.lad、元素记录.tsv、符号地址.tsv、分析.md、记录.json、字符串全录.txt

.smart 的 记录.json 是后续 SMART 分析工具的输入,也是识别「已解码目录」的凭据;解码报告头部含源文件指纹(大小 + 修改时间),换版本后应先核对指纹再复用旧报告。

CoDeSys / 台达

  • /codesys-read <工程>:.project 或 .dvp 解码报告。
  • /dvp-read <工程>:台达 DVP 结构与指令表报告。
  • /codesys-check <工程>:.project 解码后的静态校验。
  • /codesys-diff <旧> <新>:POU 清单、真实逻辑变化区段、空白差异、字符串表、对象表等对比。
  • 工具 codesys-diff-project:同上,供模型调用。

西门子 SMART 分析与对比

解码后可用一组 SMART 专用工具(模型自动调用)或对应斜杠命令:

能力 工具 / 命令示例
子程序内部结构 smart-pou-structure
LAD 连线还原 smart-lad、/smart-lad <.smart> [块名] [网络号]
元素级读/写判定 smart-ladder-elements、/smart-ladder <.smart> [地址]
网络轨迹、盒引脚、字节定位、变量引用 smart-net-trace、smart-box-pins、smart-pin-dump、smart-var-usage
地址占用与冲突 smart-free-space、smart-conflict;命令 /smart-free-space、/smart-conflict
新旧工程对比 smart-diff-project、/smart-diff <旧> <新>

/smart-read <.smart/.smartlib> [输出目录] 专用于 SMART 工程或库解码。

安装与启用

前提:

  1. 已安装 DSH 桌面端(插件在 DSH 内运行,Node 版本跟随 DSH);package.json 声明兼容 DSH >=0.2.1-rc.5 <0.3.0-0,README 写明 0.2.1-rc.5 实测通过,0.3 起不保证。
  2. 解码 .project / .dvp 需要 Python 3.9+ 在 PATH 中(仅用标准库,无需 pip)。
  3. 解码 .smart / .smartlib 不需要 Python。

从 GitHub 安装(命令来自仓库 README):

dsh plugin --profile web add github:taoziliyouchong/dsh-plc-decode

装完后重启 DSH。本插件没有 npm 运行时依赖。

典型用法

  1. 将 PLC 工程放在 DSH 工作区内(或提供可访问路径)。
  2. 执行统一解码,例如:
/plc-decode /path/to/YourProject.smart
  1. 打开 解码归档/ 下对应目录里的 00-索引.md(CoDeSys / DVP)或 00-目录.md(SMART),按索引阅读报告与源码/表格。
  2. 需要改址或排查冲突时,在已解码的 .smart 上继续:
/smart-free-space /path/to/YourProject.smart
/smart-conflict /path/to/YourProject.smart
  1. CoDeSys 版本迭代时:
/codesys-diff /path/to/old.project /path/to/new.project

模型在对话中也可直接调用 README 中列出的 12 个工具(如 plc-decode、smart-lad),参数与斜杠命令语义一致。

适用场景与注意

适合:在 DSH 里让模型基于真实 ST / 指令表 / SMART 结构化记录做问答、 diff、地址规划;维护多台设备或多版本工程时,用归档目录 + 指纹避免误读旧报告。

已知边界(来自 README,勿当能力承诺):

  • 不处理 HMI:.hmismart、.fsprj 不在范围内。
  • 部分库块调用区(如 MBUS_MSG 部分引脚)无法解出实参,工具会说明,不猜测。
  • 加密或特殊压缩工程可能失败;解码器报错而非输出半真结果。
  • .smart 串并联拓扑由指令记录还原,库调用无标准盒头区域不在连线还原覆盖内;指令名带 ? 为推断名,报告末尾有对照表。

安全与信任:插件以当前 DSH 进程权限运行,会读取你指定的工程路径并写入工作区归档。安装前应在 GitHub 查看 源码与 MIT 许可证,确认符合你的合规要求。

结尾

dsh-plc-decode 把四种常见 PLC 工程文件收成 DSH 内可复用的只读解码与分析链路,减少「导出—粘贴—手写脚本」的重复劳动。目录页:skillhub.cn/plugins/taoziliyouchong/dsh-plc-decode;源码与完整工具表:github.com/taoziliyouchong/dsh-plc-decode。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye