前言¶
在 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 工程或庫解碼。
安裝與啓用¶
前提:
- 已安裝 DSH 桌面端(插件在 DSH 內運行,Node 版本跟隨 DSH);
package.json聲明兼容 DSH >=0.2.1-rc.5 <0.3.0-0,README 寫明 0.2.1-rc.5 實測通過,0.3 起不保證。 - 解碼
.project/.dvp需要 Python 3.9+ 在PATH中(僅用標準庫,無需 pip)。 - 解碼
.smart/.smartlib不需要 Python。
從 GitHub 安裝(命令來自倉庫 README):
dsh plugin --profile web add github:taoziliyouchong/dsh-plc-decode
裝完後重啓 DSH。本插件沒有 npm 運行時依賴。
典型用法¶
- 將 PLC 工程放在 DSH 工作區內(或提供可訪問路徑)。
- 執行統一解碼,例如:
/plc-decode /path/to/YourProject.smart
- 打開
解碼歸檔/下對應目錄裏的00-索引.md(CoDeSys / DVP)或00-目錄.md(SMART),按索引閱讀報告與源碼/表格。 - 需要改址或排查衝突時,在已解碼的
.smart上繼續:
/smart-free-space /path/to/YourProject.smart
/smart-conflict /path/to/YourProject.smart
- 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。