PLC 剖析 — 测试套件(“건조로 #2”)
PLC 剖析(PLC 프로파일링) 是这样一项功能:边缘以只读方式扫描没有 IO 地址表的 PLC,找出实际使用的地址,并让您为其命名、注册为标签。本页的测试套件让您无需真实设备即可从头到尾试用这一流程 —— 包括模拟虚构的“건조로 #2”(干燥炉 #2)的 Modbus TCP 模拟器,以及与其数值相匹配的 HMI 画面照片和 PLC 注释文件。
尚未发布的功能
PLC 剖析尚未正式发布,因此仅在包含该功能的测试版本中显示。通过画面标题栏中的芯片图标打开,并且仅在已配置 AI 时才会显示。功能介绍请参阅 边缘提案 中“⑥ 没有地址表也能接入”一页。
下载套件
| 文件 | 内容 | 下载 |
|---|---|---|
| HMI 画面照片 | 虚构 HMI“건조로 #2 운전 화면”(干燥炉 #2 运行画面,1280×800)。设定值、生产数量、指示灯与模拟器数值一致 | hmi-dryer2.png |
| PLC 注释 | PLC 注释导出示例。Modicon 地址(4xxxx · 3xxxx · 0xxxx · 1xxxx,从 1 开始计数),UTF-8,23 行 | dryer2-comments.csv |
| 模拟器 | 与上述两个文件数值一致的 Modbus TCP 模拟器。仅使用 Python 3 标准库,只读 | dryer2_sim.py |
照片和注释是可选附件。即使没有,也会仅凭扫描结果生成默认名称 —— 附上后,AI 会以其为依据建议标签名、说明和单位。

运行模拟器
python3 dryer2_sim.py 5020
- 省略端口时为
5020。启动后会输出dryer2 simulator listening on :5020。 - 若与边缘在同一主机上运行,边缘中要填写的 IP 为
127.0.0.1(边缘容器使用 host 网络)。若在另一台 PC 上运行,则填写该 PC 的 IP。 - 若是另一台 PC,可能需要在该 PC 的防火墙中开放
5020/tcp。 - Unit ID 填写任何值都会被接受。
模拟器提供的数值
地址同时列出了 Modbus 协议地址(从 0 开始)和 Modicon 表示法(从 1 开始)。注释 CSV 使用 Modicon 表示法。
| 区域 · 地址 | Modicon | 含义 | 值 |
|---|---|---|---|
| holding 0 | 40001 | 干燥炉当前温度(×0.1 ℃) | 在 99.0~102.0 之间变化 |
| holding 1 | 40002 | 排气风门当前开度(×0.1 %) | 变化 |
| holding 2 | 40003 | 批次号 | 35(固定) |
| holding 3 | 40004 | 生产计数器 | 每 3 秒 +1 |
| holding 4 | 40005 | 累计运行时间(h) | 111(固定) |
| holding 5 | 40006 | 配方号 | 640(固定) |
| holding 10 | 40011 | 干燥炉设定温度(×0.1 ℃) | 1008 → 100.8 ℃ |
| holding 11 | 40012 | 排气风门设定(×0.1 %) | 1009 → 100.9 % |
| holding 12 | 40013 | 供给压力设定(×0.01 bar) | 1015 → 10.15 bar |
| holding 13 | 40014 | 输送机速度设定(×0.01 m/min) | 1016 → 10.16 m/min |
| holding 14 | 40015 | 上限报警设定(×0.1 ℃) | 1020 → 102.0 ℃ |
| holding 20–21 | 40021–40022 | 供给压力当前值,FLOAT32 高位字在前 | 在 10.0~10.3 bar 之间变化 |
| input 0 | 30001 | 生产数量显示(EA) | 999 |
| input 1 | 30002 | 运行时间显示(h) | 111 |
| coil 0~3 | 00001~00004 | 运行 · 停止 · 自动 · 异常指示灯 | 1 · 0 · 1 · 0 |
| discrete 0 | 10001 | 门已关闭 | 1 |
| discrete 1 | 10002 | 急停已按下 | 0 |
| discrete 2 | 10003 | 燃烧器火焰检测 | 每 5 秒闪烁 |
- 四个区域都提供地址 0~1999,上表中没有的地址为 0。
- 2000 及以上地址以“不存在的地址”(Modbus 异常 02)应答 —— 扫描的边界探测在此找到终点。
- 写请求(功能码 5 · 6 · 15 · 16)以异常 01 拒绝。
测试步骤
- 打开边缘画面标题栏中的 PLC 剖析(PLC 프로파일링)。
- 选择 输入新 PLC 信息(새 PLC 정보 입력),填写名称“건조로 #2”、说明(必填)、协议 Modbus、上面确定的 IP 以及端口
5020。 - 将扫描时间设为 5 分钟。
- 附上套件中的 HMI 照片和注释 CSV(可选)。
- 点击 开始(시작)。
- 扫描结束后,点击 用 AI 生成名称(AI 로 이름 만들기)。
- 在 ④ 确认 · 注册(④ 확인 · 등록) 画面查看准确度和依据,勾选正确的项后注册。
预期结果
- 照片中的设定值 100.8 · 100.9 · 10.15 · 10.16 · 102.0 与 40011~40015 配对。
- 照片中的 35 · 640 · 111 · 999 也分别与相应地址配对。
- 照片中的指示灯(运行 · 停止 · 自动 · 异常)与线圈 00001~00004 配对。
- 注释 CSV 中的
49001位于扫描区域之外,因此会被丢弃 —— 这是正常的。 - 如果照片没有拍摄时间(EXIF),则与上传时刻的值进行比较。因此温度、开度、压力等变化的值可能对不上 —— 配对以固定值和设定值为准。
仅供测试
本套件用于测试,并非实际运行中的 PLC。模拟器拒绝写入(只读),并在所有网络地址上接受连接,因此请仅在测试网络中运行,测试结束后将其关闭。
各协议的预先设置与限制
扫描真实 PLC 之前,请确认以下内容。在开始画面选择协议后,边缘画面也会在目标区域上方显示相同的内容。
通用
- 对于限制并发连接数的 PLC,如果现有采集正在占用连接,扫描连接可能会被拒绝。此时扫描会以 «第二个连接被拒绝(두 번째 연결 거절)» 为原因停止。
- 防火墙中必须开放 PLC 端口。
Siemens S7 (1200/1500)
- 必须在 CPU 属性 › 防护与安全 › 连接机制 › «允许来自远程对象的 PUT/GET 通信访问» 中启用,M · I · Q 才能被读取。保护级别为 «不能访问(完全保护)» 时同样无法读取。
- 在 TIA Portal 中以 «优化的块访问» 创建的 DB 无法按地址读取,会被排除在扫描之外(现场的 1200/1500 中很常见)。关闭该 DB 的 «优化的块访问» 并重新下载后即可读取。
Mitsubishi
- PLC 以太网设置中必须开放 MC 协议(SLMP)端口,且通信数据代码必须为 «二进制码通信»。
- FX3 需要以太网适配器(FX3U-ENET 等)的 MC 协议设置,A 系列需要以太网模块的 1E 帧通信。
- ZR(扩展文件寄存器)不包含在默认扫描区域中。
LS
- 必须启用 FEnet 模块的 «XGT 专用协议»(默认端口
2004),并且允许连接的 IP 中必须包含边缘。 - 在 XGI / XEC 中,没有直接地址(
%MW·%MX等)而只有名称的变量无法按地址读取,会被排除在扫描之外。
Modbus
- 哪个地址上有什么因设备而异。Unit ID 错误时将读取不到任何内容。
- 经由 RTU-TCP 网关时速度非常慢,因此请将扫描时间设为 30 分钟以上。