dsh-plc-decode 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +154 -112
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,143 +2,185 @@
|
|
|
2
2
|
|
|
3
3
|
<img src="assets/icon-180.png" width="96" align="right" alt="dsh-plc-decode">
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**中文** | [English](README.en.md)
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
在 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(DSH)里直接读 PLC 工程文件:按文件头自动识别格式,把工程解成可读报告与结构化数据,再基于解码结果做新旧对比、地址体检、元素级读/写判定与连线还原。同一插件行里也承接触摸屏(HMI)工程:画面、控件、变量与地址;威纶通 EasyBuilder Pro 读该工程的编译产物,解出画面、文字对象、报警事件与文字库。
|
|
8
|
+
|
|
9
|
+
**只读**:解析工程文件,不改动原文件。
|
|
10
|
+
|
|
11
|
+
## 支持的工程文件
|
|
12
|
+
|
|
13
|
+
| 文件头 | 格式 | 解码方式 |
|
|
11
14
|
|---|---|---|
|
|
12
|
-
| `50 4B 03 04
|
|
13
|
-
| `57 01 01 00` |
|
|
14
|
-
| `53 48 33 00
|
|
15
|
-
| `44 45 4D 00
|
|
16
|
-
|
|
17
|
-
>
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
| `50 4B 03 04`(ZIP) | CoDeSys V3.5 / LeadSysStudio `.project`(含雷赛) | 自带 Python 脚本:解包 → 字符串表 → 逐对象恢复 POU ST 源码 |
|
|
16
|
+
| `57 01 01 00` | 台达 WPLSoft / ISPSoft `.dvp` | 自带 Python 脚本:文件结构 / 段落注释 / 设备注释 / 指令表反汇编 |
|
|
17
|
+
| `53 48 33 00`(SH3) | 西门子 S7-200 SMART `.smart` 工程 | 内嵌 Node 解码器:块 / 指令记录 / 操作数 / 用户与系统符号表 |
|
|
18
|
+
| `44 45 4D 00`(DEM) | 西门子 S7-200 SMART `.smartlib` 库 | 内嵌 Node 解码器:库变量与注释流 |
|
|
19
|
+
|
|
20
|
+
> 雷赛(Leadshine)用 LeadSysStudio 保存的 `.project` 与 CoDeSys 同格式,走同一条解码链:ST 源码导出到 `pous/<POU>.txt`,可用 `/codesys-check` 做等价编译校验(结构体成员、数组下标、调用存在性、地址唯一、未声明符号)。
|
|
21
|
+
|
|
22
|
+
### 触摸屏(HMI)工程
|
|
23
|
+
|
|
24
|
+
| 文件 | 品牌 | 解出 |
|
|
20
25
|
|---|---|---|
|
|
21
|
-
| `.hmismart` |
|
|
22
|
-
| `.fsprj`
|
|
23
|
-
| `.nbp` |
|
|
24
|
-
| `.mcp` / `.mcgs` |
|
|
25
|
-
| `.emtp` / `.exob` |
|
|
26
|
-
|
|
27
|
-
##
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
|
|
26
|
+
| `.hmismart` | 西门子 WinCC flexible SMART(Smart Line 屏) | 画面 / 元件 / 文本 / 设备表;旁系 `{{GUID}}.data` 里解变量名、控件名、绑定候选、类型表 |
|
|
27
|
+
| `.fsprj` 或含 `HMI\Frame` 的目录 | 繁易 FStudio / Flexem | 画面 / 控件 / 控件地址(读 `HMI\System\fs2.s3db` 与 `Bin\fshmi.bin`) |
|
|
28
|
+
| `.nbp` | 欧姆龙 NB-Designer | 画面 / 控件 / 地址(XML 直读) |
|
|
29
|
+
| `.mcp` / `.mcgs` | 昆仑通态 MCGS / LSTP Studio | 画面 / 变量 / 报警 / 策略(Access 库) |
|
|
30
|
+
| `.emtp` / `.exob` | 威纶通 EasyBuilder Pro | 画面 / 文字对象 / 报警事件 / 文字库(`.emtp` 本体加密,读同工程的编译产物 `.exob`) |
|
|
31
|
+
|
|
32
|
+
## 安装
|
|
33
|
+
|
|
34
|
+
前提:
|
|
35
|
+
|
|
36
|
+
- DSH 桌面端(插件运行在 DSH 内,Node 版本跟随 DSH);
|
|
37
|
+
- 解码 `.project` / `.dvp` 需要 Python 3.9+ 在 `PATH` 里(只用标准库,无需 pip 安装);
|
|
38
|
+
- 解码 `.smart` / `.smartlib` 不需要 Python;
|
|
39
|
+
- 要求 DSH >= 0.2.1-alpha.3;实测 0.2.1-alpha.3、0.2.2-rc.1,更高版本未验证。
|
|
40
|
+
|
|
41
|
+
从 GitHub 安装:
|
|
42
|
+
|
|
34
43
|
```sh
|
|
35
44
|
dsh plugin --profile web add github:taoziliyouchong/dsh-plc-decode
|
|
36
45
|
```
|
|
37
46
|
|
|
38
|
-
|
|
39
|
-
|
|
47
|
+
装完重启 DSH。本插件没有 npm 运行时依赖。
|
|
48
|
+
|
|
49
|
+
## 使用
|
|
40
50
|
|
|
41
|
-
###
|
|
51
|
+
### 工具(模型自动调用)
|
|
42
52
|
|
|
43
|
-
|
|
|
53
|
+
| 工具 | 用途 |
|
|
44
54
|
|---|---|
|
|
45
|
-
| `plc-decode` |
|
|
46
|
-
| `smart-pou-structure` |
|
|
47
|
-
| `smart-lad` |
|
|
48
|
-
| `smart-ladder-elements` |
|
|
49
|
-
| `smart-net-trace` |
|
|
50
|
-
| `smart-box-pins` |
|
|
51
|
-
| `smart-pin-dump` |
|
|
52
|
-
| `smart-var-usage` |
|
|
53
|
-
| `smart-free-space` |
|
|
54
|
-
| `smart-conflict` |
|
|
55
|
-
| `smart-diff-project` | SMART
|
|
56
|
-
| `codesys-diff-project` | CoDeSys
|
|
57
|
-
| `hmi-decode` |
|
|
58
|
-
| `hmi-diff-project` |
|
|
59
|
-
| `ebpro-decode` |
|
|
60
|
-
| `ladder-auto` |
|
|
61
|
-
| `ladder-dvp` |
|
|
62
|
-
| `ladder-from-stl` |
|
|
63
|
-
| `ladder-render` |
|
|
64
|
-
|
|
65
|
-
###
|
|
66
|
-
|
|
55
|
+
| `plc-decode` | 统一入口:按文件头识别四格式并分发解码,参数 `file` + 可选 `outDir` |
|
|
56
|
+
| `smart-pou-structure` | 某子程序的内部结构:接口参数(L 区地址 + 类型)、盒级指令链、调用点实参 |
|
|
57
|
+
| `smart-lad` | 连线还原:按块、按网络打印 LAD 指令序列(LD/A/O/AN/ON、EU/ED、LPS/LRD/LPP、线圈、比较、指令盒占位) |
|
|
58
|
+
| `smart-ladder-elements` | 元素级读/写判定:某地址(可一批)的每个落点是触点(读)还是写 |
|
|
59
|
+
| `smart-net-trace` | 网络级轨迹:给偏移区间,按顺序列出触点 / 写元件 / 指令盒 / 常数 |
|
|
60
|
+
| `smart-box-pins` | 盒级引脚表:库调用盒(MBUS_CTRL、MBUS_MSG、TON、CTU、MOV_* 等)的「引脚名 = 实参」 |
|
|
61
|
+
| `smart-pin-dump` | 字节级定位:某地址的全部出现位置,或某偏移区间内的操作数记录 |
|
|
62
|
+
| `smart-var-usage` | 变量使用体检:某地址的全部引用点、共用字节的其它地址形式、写入点判定 |
|
|
63
|
+
| `smart-free-space` | 地址占用与空闲段:加功能前选新地址(有符号名的、预留坑都不动) |
|
|
64
|
+
| `smart-conflict` | 地址冲突体检:重叠冲突(真冲突 / 疑似 / 仅登记)+ 连续空间被切碎 |
|
|
65
|
+
| `smart-diff-project` | SMART 新旧工程对比:块清单、主程序调用链、I-O 引用、符号表差异 |
|
|
66
|
+
| `codesys-diff-project` | CoDeSys 新旧工程对比:POU 清单、真实逻辑变化区段、空白差异、字符串表、对象表 |
|
|
67
|
+
| `hmi-decode` | 触摸屏统一入口:按文件识别 `.hmismart` / `.fsprj` / `.nbp` / `.mcp` / `.emtp` / `.exob` 并解码 |
|
|
68
|
+
| `hmi-diff-project` | 新旧 `.hmismart` 对比:起始画面、画面表、画面名、配套文件 |
|
|
69
|
+
| `ebpro-decode` | 威纶通 EasyBuilder Pro:从编译产物 `.exob` 解画面 / 文字对象 / 报警事件 / 文字库 |
|
|
70
|
+
| `ladder-auto` | 自动出梯形图:直接读 `.smart` 工程,按块(可单网络)生成盒式文字梯形图(`block`、`net`) |
|
|
71
|
+
| `ladder-dvp` | 台达 `.dvp` 工程 → 文字梯形图,可只出某几行 |
|
|
72
|
+
| `ladder-from-stl` | 语句表(STL)→ 文字梯形图 + 每个网络的机械讲解 |
|
|
73
|
+
| `ladder-render` | 把网络描述(spec JSON)渲染成固定版式的文字梯形图 |
|
|
74
|
+
|
|
75
|
+
### 斜杠命令(人直接执行)
|
|
76
|
+
|
|
77
|
+
| 命令 | 用途 |
|
|
67
78
|
|---|---|
|
|
68
|
-
| `/plc-decode
|
|
69
|
-
| `/plc-archive` |
|
|
70
|
-
| `/codesys-read
|
|
71
|
-
| `/dvp-read
|
|
72
|
-
| `/smart-read <.smart/.smartlib> [
|
|
73
|
-
| `/codesys-check
|
|
74
|
-
| `/codesys-diff
|
|
75
|
-
| `/smart-diff
|
|
76
|
-
| `/smart-free-space <.smart>` |
|
|
77
|
-
| `/smart-conflict <.smart>` |
|
|
78
|
-
| `/smart-ladder <.smart> [
|
|
79
|
-
| `/smart-lad <.smart> [
|
|
80
|
-
| `/hmi-decode <.hmismart / .fsprj / .nbp / .mcp / .emtp / .exob> [
|
|
81
|
-
| `/hmi-diff
|
|
82
|
-
| `/ladder on\|off\|status` |
|
|
83
|
-
| `/ladder-auto <.smart> [
|
|
84
|
-
| `/ladder-dvp <.dvp> [
|
|
85
|
-
| `/ladder-stl
|
|
86
|
-
| `/ladder-spec <spec.json> [
|
|
87
|
-
| `/plc-calibrate
|
|
88
|
-
|
|
89
|
-
##
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
79
|
+
| `/plc-decode <文件> [输出目录]` | 统一解码入口 |
|
|
80
|
+
| `/plc-archive` | 查看当前生效的解码归档根目录、默认落点与改配置的方法 |
|
|
81
|
+
| `/codesys-read <工程>` | 解码 `.project`(ST 源码 + 报告)或 `.dvp`(解码报告) |
|
|
82
|
+
| `/dvp-read <工程>` | 台达 DVP 结构与指令表报告 |
|
|
83
|
+
| `/smart-read <.smart/.smartlib> [输出目录]` | SMART 工程 / 库解码 |
|
|
84
|
+
| `/codesys-check <工程>` | 解码 `.project` 后做等价编译静态校验(结构体 / 调用 / 地址唯一 / 未声明符号) |
|
|
85
|
+
| `/codesys-diff <旧> <新>` | CoDeSys 新旧对比 |
|
|
86
|
+
| `/smart-diff <旧> <新>` | SMART 新旧对比 |
|
|
87
|
+
| `/smart-free-space <.smart>` | 地址占用与空闲段 |
|
|
88
|
+
| `/smart-conflict <.smart>` | 地址冲突体检 |
|
|
89
|
+
| `/smart-ladder <.smart> [地址]` | 元素级读/写判定 |
|
|
90
|
+
| `/smart-lad <.smart> [块名] [网络号]` | 连线还原(LAD 指令序列) |
|
|
91
|
+
| `/hmi-decode <.hmismart / .fsprj / .nbp / .mcp / .emtp / .exob> [输出目录]` | 触摸屏工程解码 |
|
|
92
|
+
| `/hmi-diff <旧 .hmismart> <新 .hmismart>` | 触摸屏新旧对比 |
|
|
93
|
+
| `/ladder on\|off\|status` | 梯形图开关(默认关闭,立即生效) |
|
|
94
|
+
| `/ladder-auto <.smart> [块名] [网络号] [out.txt]` | 出 `.smart` 的梯形图 |
|
|
95
|
+
| `/ladder-dvp <.dvp> [起行] [止行] [out.txt]` | 出 `.dvp` 的梯形图 |
|
|
96
|
+
| `/ladder-stl <stl.txt> [out.txt]` | 语句表 → 梯形图 + 讲解 |
|
|
97
|
+
| `/ladder-spec <spec.json> [out.txt]` | 渲染 spec JSON |
|
|
98
|
+
| `/plc-calibrate <格式> <字节或 cmd:XX> <名字> [备注]` | 把解不出的字节 / 功能码记进校准表,之后解码直接用这个名字 |
|
|
99
|
+
|
|
100
|
+
## 输出位置
|
|
101
|
+
|
|
102
|
+
默认写到**工作区**的 `解码归档/<工程所在文件夹名>/`(用文件夹名而不是工程文件名,避免不同文件夹里的同名工程互相覆盖;同一文件夹里有多个工程文件时用 `文件夹名_工程名`)。也可以在工具参数里用 `outDir` 指定。
|
|
103
|
+
|
|
104
|
+
| 格式 | 主要产物 |
|
|
93
105
|
|---|---|
|
|
94
|
-
| `.project` | `00
|
|
95
|
-
| `.dvp` | `00
|
|
96
|
-
| `.smart` / `.smartlib` | `00
|
|
97
|
-
| `.hmismart` | `10
|
|
98
|
-
| `.fsprj` |
|
|
99
|
-
| `.nbp` / `.mcp` |
|
|
100
|
-
| `.emtp` / `.exob` | `HMI
|
|
106
|
+
| `.project` | `00-索引.md`(先读这份)、`pous/<POU>.txt`(ST 源码)、`工程内容报告.md`、`全部字符串.txt`、`对象表.md`、`项目树.md` |
|
|
107
|
+
| `.dvp` | `00-索引.md`、`解码报告.md`(结构 / 段落注释 / 设备注释 / 指令表)、可选 `程序解读.md` |
|
|
108
|
+
| `.smart` / `.smartlib` | `00-目录.md`(先读这份)、`解码报告.md`、`程序.lad`、`元素记录.tsv`、`符号地址.tsv`、`分析.md`、`记录.json`、`字符串全录.txt` |
|
|
109
|
+
| `.hmismart` | `10-画面.tsv`、`11-元件.tsv`、`12-文本.tsv`、`13-设备.tsv`、`20-变量.data.tsv`、`21-控件.data.tsv`、`23-控件绑定.data.tsv`、`24-类型表.tsv` |
|
|
110
|
+
| `.fsprj` | `画面.tsv`、`控件.tsv`、`控件地址.tsv`、`变量.tsv` |
|
|
111
|
+
| `.nbp` / `.mcp` | `解码报告.md` + 画面/控件(或变量/报警/策略)JSON |
|
|
112
|
+
| `.emtp` / `.exob` | `HMI解码/HMI解码报告.md` + `00-格式说明.md`、`10-画面.tsv`、`11-文字对象.tsv`、`12-报警事件.tsv`、`13-文字库.tsv`、`08-统计.json` |
|
|
113
|
+
|
|
114
|
+
### 梯形图(默认关闭)
|
|
115
|
+
|
|
116
|
+
梯形图工具默认关着,免得一次普通解码就多出一组工具:
|
|
117
|
+
|
|
118
|
+
- 打开:`/ladder on`(立即生效,不用重启);关闭:`/ladder off`;看状态:`/ladder status`
|
|
119
|
+
- 或者在 profile 的 `cordis.patch.yml` 里给本插件那一行写 `config: { ladder: true }` 作初始状态
|
|
120
|
+
- 关着时梯形图工具只回一行开启提示;解码照常
|
|
121
|
+
- 前三次解码会在结果末尾提示「可以看梯形图」(1/3、2/3、3/3),之后不再提示;开关状态与计数存在 `$DSH_HOME/ladder-state.json`
|
|
101
122
|
|
|
102
|
-
###
|
|
103
|
-
姊舰鍥惧伐鍏烽粯璁や笉寮€鍚紝閬垮厤姣忔瑙g爜閮藉涓€鎵瑰伐鍏蜂笌鎻愮ず锛?
|
|
104
|
-
- 寮€锛歚/ladder on`锛堢珛鍗崇敓鏁堬紝涓嶇敤閲嶅惎锛夛紱鍏筹細`/ladder off`锛涚湅鐘舵€侊細`/ladder status`
|
|
105
|
-
- 涔熷彲浠ュ湪 profile 鐨?`cordis.patch.yml` 閲岀粰鏈彃浠惰鍐?`config: { ladder: true }` 浣滀负鍒濆鐘舵€?- 鍏抽棴鏃惰皟鐢ㄦ褰㈠浘宸ュ叿鍙洖涓€琛屽紑鍚彁绀猴紱瑙g爜浜х墿鐓у父
|
|
106
|
-
- 鍓嶄笁娆¤В鐮佷細鍦ㄧ粨鏋滄湯灏炬彁绀恒€岃繖涓伐绋嬪彲浠ュ嚭姊舰鍥俱€嶏紙绗?1/3銆?/3銆?/3 娆★級锛屼箣鍚庝笉鍐嶆彁绀猴紱寮€鍏充笌鎻愮ず璁℃暟璁板湪 `$DSH_HOME/ladder-state.json`
|
|
123
|
+
### 改归档地址(不用改代码)
|
|
107
124
|
|
|
108
|
-
|
|
109
|
-
鍦?DSH profile 鐨?`cordis.patch.yml`锛坄$DSH_HOME/profiles/<profile>/cordis.patch.yml`锛夋湯灏剧粰鏈彃浠堕偅涓€琛屽姞 config锛堝彧鍐?`archiveDir`锛氬綊妗f牴鐩綍锛夛細
|
|
125
|
+
在 DSH profile 的 `cordis.patch.yml`(`$DSH_HOME/profiles/<profile>/cordis.patch.yml`)末尾给本插件那一行加 config(只写 `archiveDir`:归档根目录):
|
|
110
126
|
|
|
127
|
+
`archiveDir` 是归档**根目录**:相对路径按当前会话工作区解析,绝对路径原样使用;默认 `解码归档`。改完重启 dsh 生效,`/plc-archive` 可随时查看当前生效值;只想改一次就在解码时传 `outDir`。
|
|
111
128
|
|
|
112
|
-
`
|
|
113
|
-
`.smart` 鐨?`璁板綍.json` 鍚屾椂鏄悇鍒嗘瀽宸ュ叿锛堝湴鍧€鍗犵敤銆佸彉閲忎娇鐢ㄧ瓑锛夌殑杈撳叆锛屼篃鏄瘑鍒€屽凡瑙g爜鐩綍銆嶇殑鍑嵁锛涜В鐮佹姤鍛婂ご閮ㄥ甫**婧愭枃浠舵寚绾?*锛堟枃浠跺ぇ灏?+ 淇敼鏃堕棿锛夛紝宸ョ▼鎹㈢増鏈悗鍏堟牳瀵规寚绾瑰啀鐢ㄦ棫鎶ュ憡銆?
|
|
114
|
-
## 宸茬煡杈圭晫
|
|
129
|
+
`.smart` 的 `记录.json` 同时是各分析工具(地址占用、变量使用等)的输入,也是识别「已解码目录」的凭据;解码报告头部带**源文件指纹**(文件大小 + 修改时间),工程换版本后先核对指纹再用旧报告。
|
|
115
130
|
|
|
116
|
-
|
|
117
|
-
|
|
131
|
+
## 已知边界
|
|
132
|
+
|
|
133
|
+
- 触摸屏工程:`.hmismart` 里只有模板骨架,真实画面与控件在旁系 `{{GUID}}.data`(ES2RT 序列化流),变量名与控件名能解,控件到变量的引用只解出同段共现与 UUID 命中那部分,其余标「未解出」;繁易工程若没建变量,控件地址只在 `Bin\fshmi.bin` 的动作表里;昆仑通态工程需本机有 `.mcp` 样本才能验证。
|
|
134
|
+
- 威纶通 EasyBuilder Pro:`.emtp` 本体压缩加密,只能读同工程的编译产物 `.exob`,表里反映的是**编译当时**的工程(工程改过要先重新编译);编译产物只带源语言,没有译文。画面归属由对象流分段推定,表里的 x/y/w/h 是文字框度量,不是画面坐标。
|
|
135
|
+
- 库块调用区(如 MBUS_MSG 的 Slave / RW / Addr / Count / DataPtr)的引脚级实参解不出,工具会明确说明,不猜。
|
|
136
|
+
- 加密或特殊压缩的工程可能解不出;解码器会报错而不是给出半真结果。
|
|
137
|
+
- `.smart` 的串/并联拓扑由指令记录还原,已用官方导出的 STL 逐网络回归验证;库调用区(无标准盒头)不在覆盖范围内。
|
|
138
|
+
- 指令名带 `?`(如 `?DRVI`)是推断名,报告末尾有推断对照表;`??xx` 是未定名,保持原样。
|
|
139
|
+
|
|
140
|
+
## 开发与自检
|
|
118
141
|
|
|
119
142
|
```sh
|
|
120
|
-
npm run check #
|
|
121
|
-
npm run smoke
|
|
122
|
-
npm
|
|
143
|
+
npm run check # 语法检查
|
|
144
|
+
npm run smoke # 装载插件 + 核对注册面(工具 19 个 / 命令 20 个)
|
|
145
|
+
npm run smoke -- <工程文件> # 额外对一个真实工程跑端到端解码,核对产物落盘
|
|
146
|
+
npm pack --dry-run # 看包里内容(node_modules、publish/ 不应进包)
|
|
147
|
+
```
|
|
123
148
|
|
|
124
|
-
##
|
|
149
|
+
## 目录结构
|
|
125
150
|
|
|
126
151
|
```
|
|
127
|
-
index.js
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
assets/
|
|
131
|
-
assets/
|
|
132
|
-
assets/
|
|
152
|
+
index.js 插件入口:工具与命令注册、四格式分发、SMART 解码器
|
|
153
|
+
hmi.js 触摸屏解码模块(工具/命令/技能注册,由 index.js 调用)
|
|
154
|
+
ladder.js 梯形图模块(默认关闭,/ladder on;由 index.js 调用)
|
|
155
|
+
assets/decode-pack.mjs 解码产物落盘(索引/目录/表格/记录)
|
|
156
|
+
assets/smart-lad.mjs 连线还原脚本(由 smart-lad 工具调用)
|
|
157
|
+
assets/smart-net-trace.mjs 网络轨迹脚本(由 smart-net-trace 工具调用)
|
|
158
|
+
assets/codesys-tools/ CoDeSys / DVP 解码 Python 脚本(只用标准库)
|
|
159
|
+
assets/hmismart-decode.mjs 西门子 .hmismart 解码器(结构表 + .data 名字/绑定/类型表)
|
|
160
|
+
assets/hmismart-report.mjs .hmismart 可读报告(画面/变量/连接)
|
|
161
|
+
assets/hmismart-diff.mjs .hmismart 新旧对比
|
|
162
|
+
assets/fstudio-tables.py 繁易画面 / 控件 / 控件地址表
|
|
163
|
+
assets/fstudio_i18n.py 繁易元件文本扫描(按语种槽)
|
|
164
|
+
assets/hmi-decode-workflow.md 触摸屏解读流程(技能正文)
|
|
165
|
+
assets/nb-decode.mjs 欧姆龙 NB-Designer 解码器
|
|
166
|
+
assets/mcgs-decode.mjs 昆仑通态 MCGS / LSTP 解码器
|
|
167
|
+
assets/ebpro-decode.mjs 威纶通 EasyBuilder Pro 解码器(读 .exob)
|
|
168
|
+
assets/ladder-render.mjs 文字梯形图渲染器(由 ladder-render 调用)
|
|
169
|
+
assets/stl-to-ladder.mjs STL → 梯形图(由 ladder-from-stl 调用)
|
|
170
|
+
assets/smart-ladder-auto.mjs .smart 自动出图(由 ladder-auto 调用)
|
|
171
|
+
assets/dvp-ladder.mjs .dvp 自动出图(由 ladder-dvp 调用)
|
|
172
|
+
scripts/smoke.mjs 冒烟测试
|
|
133
173
|
```
|
|
134
174
|
|
|
135
|
-
##
|
|
175
|
+
## 反馈
|
|
176
|
+
|
|
177
|
+
插件有问题,按这个顺序:
|
|
178
|
+
|
|
179
|
+
1. 开 Issue:https://github.com/taoziliyouchong/dsh-plc-decode/issues —— 能留痕、能搜历史,别人也可能已经遇过;
|
|
180
|
+
2. 急着问或不想开 Issue,QQ 号:**2171960697**(加好友请注明装的是哪个插件)。
|
|
136
181
|
|
|
137
|
-
|
|
182
|
+
反馈时带上:DSH 版本、插件版本、报错原文、截图。少一样多半要再问一轮。
|
|
138
183
|
|
|
139
|
-
|
|
140
|
-
2. 鎬ョ潃闂垨涓嶆兂寮€ Issue锛孮Q 鍙凤細**2171960697**锛堝姞濂藉弸璇锋敞鏄庤鐨勬槸鍝釜鎻掍欢锛夈€?
|
|
141
|
-
鍙嶉鏃跺甫涓婏細DSH 鐗堟湰銆佹彃浠剁増鏈€佹姤閿欏師鏂囥€佹埅鍥俱€傚皯涓€鏍峰鍗婅鍐嶉棶涓€杞€?
|
|
142
|
-
## 璁稿彲
|
|
184
|
+
## 许可
|
|
143
185
|
|
|
144
186
|
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-plc-decode",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "在 DSH 里读工控工程文件:PLC(CoDeSys、台达、西门子 SMART)与触摸屏(西门子 WinCC flexible SMART、繁易 FStudio、欧姆龙 NB、昆仑通态 MCGS、威纶通 EasyBuilder Pro)里的程序、画面、控件、变量与地址,读成能查的报告与表。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
],
|
|
22
22
|
"engines": {
|
|
23
23
|
"node": "^22.19.0 || >=24.0.0",
|
|
24
|
-
"dsh": ">=0.2.1-
|
|
24
|
+
"dsh": ">=0.2.1-alpha.3"
|
|
25
25
|
},
|
|
26
26
|
"dsh": {
|
|
27
27
|
"bundle": {
|