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。

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

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

小夜