# 缓冲垫项目设备配置说明 **简体中文** · [English](device-configuration.en.md) · [文档目录](../docs/README.md) 本文说明缓冲垫项目前端“设置”菜单中的基础配置顺序和字段含义,适用于现场实施、维护和管理员配置。 从旧版本升级时,安装程序会自动执行随包数据库迁移,并保留已有设备、PLC 地址、缓冲垫、 使用明细和日志数据,不会用默认数据覆盖现场配置。 推荐配置顺序: ```text 1. 缓冲垫寿命 2. 设备安装位置 3. 设备信息 4. PLC地址 5. 回到运行页面连接设备并验证 ``` 其中“设备安装位置 -> 设备信息 -> PLC地址”必须按顺序配置。PLC地址依赖已配置好的 PLC 设备和扫码器设备;扫码器设备又依赖设备安装位置。 ## 一、缓冲垫寿命 菜单路径: ```text 设置 -> 缓冲垫寿命 ``` 用途: 设置全局缓冲垫最大使用次数。新增缓冲垫时,系统会把这里的值写入该缓冲垫的最大使用次数。缓冲垫使用次数达到最大值后,扫码流程会走“超过最大次数”分支,并通知 PLC。 字段说明: | 字段 | 是否必填 | 说明 | 建议 | | --- | --- | --- | --- | | ID | 系统固定 | 固定为 `1` | 不需要手工修改 | | 最大使用数量 | 是 | 全局缓冲垫最大使用次数 | 默认 `500`,按现场工艺要求填写 | 注意事项: - 系统只允许有一条寿命配置,ID 固定为 `1`。 - 重置默认会把最大使用数量恢复为 `500`。 - 已经存在的缓冲垫不会自动批量改成新寿命;新扫码生成的缓冲垫会使用新值。 ## 二、设备安装位置 菜单路径: ```text 设置 -> 设备安装位置 ``` 用途: 维护现场扫码器或设备的安装位置,例如“上”“下”“间层1”“间层2”“入口扫码位”“出口扫码位”等。设备信息中的“安装位置”下拉框来自这里。 字段说明: | 字段 | 是否必填 | 说明 | 示例 | | --- | --- | --- | --- | | 位置名称 | 是 | 现场可识别的位置名称,会显示在设备列表、PLC地址列表和运行页面中 | `上`、`下`、`间层1`、`间层2` | | 排序号 | 否 | 控制前端下拉列表和列表展示顺序;数字越小越靠前 | `1`、`2`、`3`、`4` | 推荐配置: ```text 位置名称:上 排序号:1 位置名称:下 排序号:2 位置名称:间层1 排序号:3 位置名称:间层2 排序号:4 ``` 注意事项: - 位置名称建议简短、稳定,并和现场标识一致。 - 排序号不是业务编号,只用于排序。 - 安装位置被设备信息引用后不能删除。 - 修改位置名称后,已引用该位置的设备显示名称会同步更新;如果设备当前已连接,后端会刷新该设备连接信息。 ## 三、设备信息 菜单路径: ```text 设置 -> 设备信息 ``` 用途: 维护后端需要连接的扫码器和 PLC。后端会根据这里配置的设备 IP、端口和类型主动连接设备。 字段说明: | 字段 | 是否必填 | 说明 | 示例 | | --- | --- | --- | --- | | 设备类型 | 是 | 从后端枚举获取,可选:扫码器、三菱PLC、汇川PLC、西门子 S7 PLC | `扫码器` | | 设备名称 | 是 | 设备的业务名称,建议能体现产线和位置 | `1线-上扫码器`、`1线-主PLC` | | IP | 是 | 设备网络 IP 地址 | `192.0.2.9` | | 端口 | 是 | 设备通信端口。扫码器填写 TCPServer 数据端口,PLC 填写 PLC 通讯端口 | 扫码器常见默认 `15000`;三菱 R 系列默认 `3301`;汇川 AM/AC 常见 `502`;西门子 S7 默认 `102` | | 产线 | 是 | 设备所属产线,新增默认 `1` | `1`、`2` | | 安装位置 | 是 | 从“设备安装位置”中选择;后端字段名为 `installSeq`,实际保存的是安装位置 ID | `上` | 设备类型说明: | 类型 | 编码 | 说明 | | --- | ---: | --- | | 扫码器 | `0` | 后端按扫码器 TCP 方式连接,接收二维码、NoRead、HeartBeat 等消息 | | 三菱PLC | `1` | 后端使用三菱 MC/SLMP 通讯方式连接,要求 PLC 侧开放 TCP 通信端口 | | 汇川PLC | `2` | 后端使用汇川 PLC 通讯方式连接 | | 西门子 S7 PLC(S7-1200/S7-1500) | `3` | 后端使用 S7comm over ISO-on-TCP 连接,默认端口 `102`、`rack=0`、`slot=0` | 配置建议: - 每个实际扫码器配置一条“扫码器”设备。 - 每个实际 PLC 配置一条 PLC 设备。 - 同一条业务产线上的扫码器和它对应的 PLC,产线必须一致。 - 设备名称建议唯一,便于 PLC 地址配置时从下拉框识别。 - PLC 也必须选择安装位置。如果现场没有 PLC 位置概念,可以先在“设备安装位置”中新增一个 `PLC柜` 或 `电控柜`。 - 三菱 R 系列 PLC 的“端口”默认按本项目约定填写 `3301`。该端口不是心跳地址,也不是 D 寄存器地址,而是后端连接 PLC 时使用的 MC/SLMP TCP 通信端口。 - 西门子 S7 PLC(S7-1200/S7-1500 共用)的“端口”默认填写 `102`。后端使用 S7comm over ISO-on-TCP,并按 `rack=0`、`slot=0` 连接。 三菱 R 系列 PLC 端口配置要求: 后端连接三菱 PLC 使用 `MelsecMcNet(ip, port)`,对应 TCP 通信。PLC 工程里必须配置 MC/SLMP 的 TCP 端口,并且端口号要和“设备信息”的端口一致。本项目现场默认使用 `3301`。 在 GX Works3 的“以太网配置(内置以太网端口)/ 外部设备配置”中,建议按下表配置: | 项 | 应填写 | | --- | --- | | 型号 | `SLMP连接设备` | | 通信手段 | `SLMP` | | 协议 | `TCP`,不要选 `UDP` | | 可编程控制器 IP地址 | PLC 自己的 IP,例如 `192.0.2.16` | | 可编程控制器 端口号 | `3301` | 关键操作步骤: 1. 在外部设备配置界面新增或选中 `SLMP连接设备` 这一行。 2. `协议` 下拉选择 `TCP`,不要选择 `UDP`。 3. `IP地址` 填 PLC 自己的 IP,例如 `192.0.2.16`。 4. `端口号` 填 `3301`。 5. 点击上方菜单里的“反映设置并关闭”,不要点“取消设置并关闭”。 6. 回到参数页面后点击“应用”。 7. 执行“在线 -> 写入至可编程控制器”,把参数写入 PLC。 8. 写入后需要 PLC 复位或断电重启,否则端口可能不会真正生效。 9. 重启后在后端电脑上执行 `Test-NetConnection 192.0.2.16 -Port 3301` 验证端口是否打开。 如果后端日志出现 `Connection refused`,说明 TCP 连接阶段已经被拒绝,优先检查:PLC 侧是否配成 TCP、端口是否为 `3301`、是否已写入 PLC、是否已复位或重启、是否把 `3301` 配在 `SLMP连接设备` 而不是 `MELSOFT连接设备`。 ### 西门子 S7-1200/S7-1500 通信配置要求 后端通过 S7comm over ISO-on-TCP 连接西门子 SIMATIC S7-1200/S7-1500,默认 TCP 端口为 `102`,连接参数固定为 `rack=0`、`slot=0`。在 TIA Portal 中应由 PLC 工程师完成以下设置: 1. 在 CPU 保护与安全设置中允许来自远程伙伴的 PUT/GET 通信。 2. CPU 的访问级别和连接权限必须允许外部客户端读取和写入目标存储区。 3. 使用 `DBn.DBWoffset` 绝对地址的数据块必须关闭“优化的块访问”,然后重新编译并下载到 PLC。 4. 确认 PLC 的 TCP `102` 端口可从后端电脑访问,现场网络和防火墙没有拦截。 5. 修改 PLC 参数或数据块属性后,将工程下载到 PLC,并按现场变更流程确认参数已生效。 后端电脑可执行: ```powershell Test-NetConnection 192.0.2.14 -Port 102 ``` `TcpTestSucceeded` 为 `True` 只表示网络端口可达;仍需确认 PUT/GET、数据块非优化访问和外部 读写权限,否则可能出现连接成功但读写地址失败。 示例: | 设备类型 | 设备名称 | IP | 端口 | 产线 | 安装位置 | | --- | --- | --- | ---: | ---: | --- | | 扫码器 | `1线-上扫码器` | `192.0.2.10` | `15000` | `1` | `上` | | 扫码器 | `1线-下扫码器` | `192.0.2.11` | `15000` | `1` | `下` | | 三菱PLC | `1线-主PLC` | `192.0.2.12` | `3301` | `1` | `PLC柜` | | 西门子 S7 PLC | `1线-S7-1200` | `192.0.2.14` | `102` | `1` | `PLC柜` | | 西门子 S7 PLC | `2线-S7-1500` | `192.0.2.20` | `102` | `2` | `PLC柜` | 注意事项: - 设备被 PLC 地址引用后,不能修改成不匹配的设备类型。 - 设备被 PLC 地址引用后,不能修改产线。 - PLC 或扫码器被 PLC 地址引用后,不能删除;需要先删除对应 PLC 地址配置。 - 修改已连接设备的信息后,后端会尝试刷新该设备连接。 - `产线=0` 在部分查询/连接接口中表示“全部产线”,设备配置中不建议把实际设备配置为 `0`,现场设备应填写真实产线号。 ### 扫码器输出格式配置 本项目后端支持扫码器输出以下两类成功扫码格式: ```text \x02二维码\x03 [TPL_STX]二维码[TPL_ETX] ``` 其中 `\x02` 和 `\x03` 是不可见控制字符;现场更容易检查和维护的是可见文本格式: ```text [TPL_STX]实际二维码[TPL_ETX] ``` 如果使用“智能读码器 VI 系列”客户端配置扫码器,可以按下面步骤给扫码结果增加 `[TPL_STX]` 和 `[TPL_ETX]` 头尾。 操作入口: ```text 读码器客户端 -> 连接扫码器 -> 功能介绍/格式配置 -> 数据处理 -> 数据模板 ``` PDF 手册中的相关章节: ```text 5.4 格式配置 5.4.2 数据处理 5.7 配置管理 ``` 配置步骤: 1. 打开读码器客户端软件,连接目标扫码器。 2. 进入“格式配置”。 3. 找到“数据处理”区域。 4. 找到“数据模板”,进入模板编辑。 5. 按顺序编辑模板内容。不同客户端版本的按钮名称可能略有差异,最终以“预览内容”为准。 6. 在模板开始位置添加“文本输入”,内容填写: ```text [TPL_STX] ``` 7. 在 `[TPL_STX]` 后面添加“条码内容”字段。 8. 在条码内容后面添加“文本输入”,内容填写: ```text [TPL_ETX] ``` 9. 查看“预览内容”,确认预览格式类似: ```text [TPL_STX]ABC123456[TPL_ETX] ``` 10. 保存当前数据模板。 11. 如果现场需要识别扫码失败,请在“格式配置/数据处理”中找到“输出失败字符”,设置为: ```text NoRead ``` 12. 进入“配置管理”,执行“保存全部配置”,确保配置写入扫码器,避免断电或重启后丢失。 配置结果要求: | 项目 | 要求 | | --- | --- | | 输出开始 | 固定文本 `[TPL_STX]` | | 中间内容 | 扫码器识别到的真实二维码内容 | | 输出结束 | 固定文本 `[TPL_ETX]` | | 最终输出 | `[TPL_STX]二维码[TPL_ETX]` | | 读码失败输出 | 固定文本 `NoRead` | 示例: | 实际二维码 | 扫码器应输出 | | --- | --- | | `BP-001` | `[TPL_STX]BP-001[TPL_ETX]` | | `PCB20260617001` | `[TPL_STX]PCB20260617001[TPL_ETX]` | 注意事项: - `[TPL_STX]` 和 `[TPL_ETX]` 必须使用英文半角字符,不要输入中文括号或全角符号。 - 中间必须是扫码器识别到的条码内容,不要写成固定测试码。 - `NoRead` 大小写必须一致,不能写成 `noread`、`NO_READ` 或中文。 - 如果扫码器配置了回车换行,一般可以保留;后端解析时会去掉头尾并修剪空白。 - 如果配置后后端仍无法识别,先用 TCP 调试工具连接扫码器端口,确认实际收到的内容是否为 `[TPL_STX]二维码[TPL_ETX]`。 - 扫码器通信协议建议使用 TCPServer;PDF 手册中说明 TCPServer 为常见 TCP 通信方式,扫码器作为 Server 端。设备信息中的 IP 和端口要填写扫码器实际 IP 与数据端口,手册默认数据端口为 `15000`,现场如有修改按实际配置填写。 - 后端会主动连接扫码器,所以扫码器网络、IP、端口、防火墙必须允许后端机器访问。 ## 四、PLC地址 菜单路径: ```text 设置 -> PLC地址 ``` 用途: 配置“某个扫码器在某种扫码结果下,应该通知哪个 PLC 的哪个地址”。扫码流程完成后,系统根据扫码器 ID 和操作类型找到 PLC 地址,然后写入 PLC。 配置依赖: - 必须先配置 PLC 设备。 - 必须先配置扫码器设备。 - PLC 和扫码器必须属于同一产线。 字段说明: | 字段 | 是否必填 | 说明 | 示例 | | --- | --- | --- | --- | | PLC | 是 | 从设备信息中选择三菱、汇川或西门子 S7 PLC 类型的 PLC 设备 | `1线-主PLC` | | 扫码器 | 是 | 从设备信息中选择类型为“扫码器”的设备 | `1线-上扫码器` | | 操作类型 | 是 | 扫码流程要通知 PLC 的业务动作 | `扫码成功` | | PLC端口/地址 | 是 | PLC寄存器地址,不是网络端口;格式按 PLC 类型和现场程序约定填写 | 三菱:`D6600`;汇川 AM/AC:`MW10000`;西门子:`DB1.DBW0` | ### PLC寄存器地址格式 `PLC端口/地址` 字段只填写 PLC 程序里约定好的寄存器地址,不填写设备网络端口。网络端口在“设备信息”的“端口”字段中配置。 本项目当前明确支持以下 PLC 地址格式: | PLC类型 | 适用系列 | 通信方式 | 地址格式 | 常用范围 | 示例 | | --- | --- | --- | --- | --- | --- | | 三菱PLC | MELSEC iQ-R / R 系列 | 三菱 MC 协议 | `D` + 十进制编号 | 常用数据寄存器为 `D0` 到 `D12287`;扩展数据寄存器范围可能由 PLC 参数配置扩展 | `D6600`、`D6601`、`D271` | | 汇川PLC | AM / AC 系列 | 汇川 Modbus TCP | `MW` + 十进制编号 | `MW0` 到 `MW65535`,保持寄存器,16Bit/2Byte,可读写 | `MW10000`、`MW9400` | | 西门子 S7-1200/S7-1500 | SIMATIC S7-1200 / S7-1500 | S7comm over ISO-on-TCP | `DBn.DBWoffset`、`MWoffset`、`QWoffset`;`IWoffset` 仅用于开口数读取 | 16 位字地址,实际范围以 CPU 和 PLC 点位表为准 | `DB100.DBW0`、`MW0`、`QW10`、`IW20` | 填写规则: - 设备类型选择“三菱PLC”时,PLC 地址应使用 `Dxxxx` 格式,例如 `D6600`。不要填写 `MWxxxx`。 - 设备类型选择“汇川PLC”且现场 PLC 是 AM/AC 系列时,PLC 地址应使用 `MWxxxx` 格式,例如 `MW10000`。不要填写 `Dxxxx`。 - 设备类型选择西门子 S7 PLC 时,通知写入和心跳可使用 `DBn.DBWoffset`、`MWoffset` 或 `QWoffset`;`IWoffset` 是输入区字地址,只能用于“扫码成功开口数回读”或“重新扫码成功开口数回读”,不能配置为扫码结果或心跳写入地址。 - `D`、`MW`、`QW`、`IW` 和 `DBW` 后面的编号使用十进制数字,不要加空格、中文符号或单位。 - 西门子 `DBn.DBWoffset` 中 `n` 是数据块号,`offset` 是字节偏移,例如 `DB100.DBW0`。一个 16 位字占 2 字节,推荐按 `DBW0、DBW2、DBW4...` 分配;后端会拒绝同一 PLC 上 `DBW0` 与 `DBW1` 这类相同或部分重叠的地址。对应数据块必须关闭优化访问,并允许外部读写。 - 后端接受的西门子 DB 编号为 `1..65535`,16 位字起始偏移为 `0..2097150`;PLC 实际可用范围以 CPU 和点位表为准。 - 地址是否可用最终以 PLC 工程师提供的点位表和 PLC 程序为准。文档中的范围只说明地址格式和常见可用范围,不能代替现场点位分配。 - 同一个扫码器的不同操作类型必须使用不同地址,避免一次扫码同时覆盖多个业务动作。 - 同一个 PLC 可以给多个扫码器分配不同地址段,例如上扫码器用 `D6600` 到 `D6607`,下扫码器用 `D6608` 到 `D6615`。 读写值约定: - 扫码失败、扫码成功、超过最大次数、重新扫码成功、重新扫码超过最大次数:系统向对应地址写入 `1`。 - 心跳:系统向对应地址周期性写入 `0`。 - 开口数回读:系统从对应地址读取 16 位有符号整数,并回写到缓冲垫记录。TIA 变量请声明为 `INT`,有效值约定为 `0..32767`,不要用 `WORD` 存放超过 `32767` 的值。 - 当前业务不需要配置位地址、字符串地址或浮点地址;建议 PLC 侧按 16 位字寄存器处理。 特别注意: - 汇川 H5U/EASY 等小型 PLC 的寄存器习惯可能是 `D`、`R`,和 AM/AC 系列的 `MW` 不同。本项目当前“汇川PLC”类型按 AM/AC 系列的 `MW` 地址模型说明和配置;如果现场实际使用 H5U/EASY,需要先确认后端驱动和地址模型是否需要调整。 - 三菱 R 系列如果使用 `D12288` 及以上扩展数据寄存器,必须先由 PLC 工程师确认 PLC 参数和程序支持后再配置。 - 西门子 S7 使用 `DBn.DBWoffset` 时,TIA Portal 必须允许 PUT/GET、数据块关闭优化访问,CPU 权限还必须允许外部读取和写入。 PLC地址操作类型: | 操作类型 | 编码 | 触发时机 | 写入/读取 | | --- | ---: | --- | --- | | 扫码失败 | `0` | 扫码器返回 `NoRead`,没有读到二维码 | 写入默认值 `1` | | 扫码超过最大次数 | `1` | 正常扫码后缓冲垫次数达到或超过最大次数 | 写入默认值 `1` | | 扫码成功 | `2` | 扫码器正常扫码,且缓冲垫未超过最大次数 | 写入默认值 `1` | | 重新扫码超过最大次数 | `3` | 手动扫码/重扫后缓冲垫次数达到或超过最大次数 | 写入默认值 `1` | | 重新扫码成功 | `4` | 手动扫码/重扫成功,且未超过最大次数 | 写入默认值 `1` | | 心跳 | `5` | PLC连接后,系统周期性发送心跳 | 写入心跳值 `0` | | 扫码成功开口数回读 | `6` | 扫码成功后,从 PLC 读取开口数并回写缓冲垫记录 | 读取 | | 重新扫码成功开口数回读 | `7` | 重新扫码成功后,从 PLC 读取开口数并回写缓冲垫记录 | 读取 | 补充说明: - 系统没有单独的“扫码无效/重复扫码”PLC 地址类型。缓冲垫在 2 小时有效间隔内重复扫码不会增加次数,但仍按当前寿命判断:达到上限时通知类型 `1/3`,未达到上限时通知类型 `2/4`,前端和日志保留重复扫码提示。 - 手动扫码属于重新扫码逻辑,通常使用“重新扫码成功”和“重新扫码超过最大次数”地址。 - 如果手动扫码的是新缓冲垫,系统没有历史扫码器可参考,会尝试按产线确定唯一扫码器;无法唯一确定时保留计数并产生“PLC目标无法确定”事件,不向所有扫码器广播。 关键规则: - 同一个扫码器只能关联一个 PLC。 - 同一个扫码器的同一种操作类型只能配置一条 PLC 地址。 - 一个 PLC 可以通过不同地址关联多个扫码器。 - PLC 和扫码器必须属于同一产线。 - PLC 地址页面不直接选择安装位置;列表里的安装位置是通过所选扫码器反查出来的。 推荐配置方式: 对每个扫码器,至少配置以下常用地址: ```text 扫码失败 扫码成功 扫码超过最大次数 重新扫码成功 重新扫码超过最大次数 扫码成功开口数回读 重新扫码成功开口数回读 ``` 如果现场 PLC 程序需要心跳,再给 PLC 配置“心跳”地址。同一个 PLC 建议只配置一条心跳地址;由于页面必须选择扫码器,可以选择该 PLC 关联的任意一个扫码器来保存这条心跳配置。不要给同一个 PLC 的多个扫码器重复配置相同心跳地址,否则系统会周期性重复写入。 示例一:三菱 R 系列,1线-上扫码器关联1线-主PLC | PLC | 扫码器 | 操作类型 | PLC端口/地址 | | --- | --- | --- | --- | | `1线-主PLC` | `1线-上扫码器` | 扫码失败 | `D6600` | | `1线-主PLC` | `1线-上扫码器` | 扫码超过最大次数 | `D6601` | | `1线-主PLC` | `1线-上扫码器` | 扫码成功 | `D6602` | | `1线-主PLC` | `1线-上扫码器` | 重新扫码超过最大次数 | `D6603` | | `1线-主PLC` | `1线-上扫码器` | 重新扫码成功 | `D6604` | | `1线-主PLC` | `1线-上扫码器` | 心跳 | `D6605` | | `1线-主PLC` | `1线-上扫码器` | 扫码成功开口数回读 | `D6606` | | `1线-主PLC` | `1线-上扫码器` | 重新扫码成功开口数回读 | `D6607` | 示例二:汇川 AM/AC 系列,1线-上扫码器关联1线-主PLC | PLC | 扫码器 | 操作类型 | PLC端口/地址 | | --- | --- | --- | --- | | `1线-主PLC` | `1线-上扫码器` | 扫码失败 | `MW10000` | | `1线-主PLC` | `1线-上扫码器` | 扫码超过最大次数 | `MW10001` | | `1线-主PLC` | `1线-上扫码器` | 扫码成功 | `MW10002` | | `1线-主PLC` | `1线-上扫码器` | 重新扫码超过最大次数 | `MW10003` | | `1线-主PLC` | `1线-上扫码器` | 重新扫码成功 | `MW10004` | | `1线-主PLC` | `1线-上扫码器` | 心跳 | `MW10005` | | `1线-主PLC` | `1线-上扫码器` | 扫码成功开口数回读 | `MW10006` | | `1线-主PLC` | `1线-上扫码器` | 重新扫码成功开口数回读 | `MW10007` | 示例三:西门子 S7-1200/S7-1500,1线-上扫码器关联1线-主PLC | PLC | 扫码器 | 操作类型 | PLC端口/地址 | | --- | --- | --- | --- | | `1线-主PLC` | `1线-上扫码器` | 扫码失败 | `DB100.DBW0` | | `1线-主PLC` | `1线-上扫码器` | 扫码超过最大次数 | `DB100.DBW2` | | `1线-主PLC` | `1线-上扫码器` | 扫码成功 | `DB100.DBW4` | | `1线-主PLC` | `1线-上扫码器` | 重新扫码超过最大次数 | `DB100.DBW6` | | `1线-主PLC` | `1线-上扫码器` | 重新扫码成功 | `DB100.DBW8` | | `1线-主PLC` | `1线-上扫码器` | 心跳 | `DB100.DBW10` | | `1线-主PLC` | `1线-上扫码器` | 扫码成功开口数回读 | `DB100.DBW12` | | `1线-主PLC` | `1线-上扫码器` | 重新扫码成功开口数回读 | `DB100.DBW14` | DB100 在 TIA Portal 中应关闭“优化的块访问”,上述变量均声明为 `INT`。PLC 消费写入值 `1` 后应主动清零;扫码成功类通知写入成功后,系统会立即读取对应开口数地址,因此 PLC 应持续维护最新开口数。 如果同一 PLC 下还有“1线-下扫码器”,可以继续使用同一个 PLC,但扫码器要换成“1线-下扫码器”,地址也应换成另一组互不冲突的 PLC 地址。建议每个扫码器预留 32 字节,例如第二个扫码器从 `DB100.DBW32` 开始。 ## 五、配置完成后的验证 配置完成后,建议按以下顺序验证: 1. 启动或重启后端后,等待其完成启动:后端会自动读取并连接全部已配置的扫码器和 PLC,无需打开运行页面。 2. 打开运行页面确认扫码器和 PLC 状态显示正常;如设备暂时离线,恢复网络后会自动重连。 3. 用一个测试二维码扫码,或在前端手动扫码。 4. 查看缓冲垫列表是否新增或次数增加。 5. 查看扫码记录是否有成功/失败/超过次数日志。 6. 确认 PLC 侧对应地址收到写入,开口数回读地址能被读取。 ## 六、运行监控与故障提示 配置完成后,日常操作以“运行监控”页面为准: - 顶部“设备状态”显示当前产线 PLC 和读码器的在线数量;点击“查看设备”可查看每台设备的 IP、端口、最近通信时间和具体错误。 - “运行告警与最近操作”显示最近20条扫码、计数和 PLC 处理结果。红色需要立即处理,黄色表示计数已完成但存在配置或设备问题,绿色表示处理成功。 - PLC 未连接、地址未配置或拒绝写入时,缓冲垫计数仍可能已经成功。应根据事件中的二维码、设备、寄存器和处理建议判断,不要因为 PLC 失败重复扫码。 - 页面通过 SSE 自动接收扫码结果、设备状态和运行事件。出现“实时消息连接中断”时会自动重连;长时间不恢复再检查后端服务和网络。 - 最近操作数据库默认只保留30天,后端每天自动清理更早的数据;扫码明细和缓冲垫主数据不受该清理规则影响。 ## 七、常见问题 ### 1. PLC地址下拉框里没有 PLC 检查“设备信息”中是否已新增 PLC,且设备类型选择的是三菱、汇川或西门子 S7 PLC。 ### 2. PLC地址下拉框里没有扫码器 检查“设备信息”中是否已新增扫码器,且设备类型选择的是“扫码器”。 ### 3. 保存 PLC 地址提示 PLC 与扫码器必须属于同一产线 进入“设备信息”,检查 PLC 和扫码器的“产线”是否一致。已经被 PLC 地址引用的设备不能直接改产线,需要先删除相关 PLC 地址配置。 ### 4. 保存 PLC 地址提示同一扫码器只能关联一个 PLC 说明该扫码器已经配置过其他 PLC。一个扫码器只能对应一个 PLC。需要先确认现场设计,如果要换 PLC,应先删除该扫码器原有 PLC 地址配置,再重新配置。 ### 5. 保存 PLC 地址提示同一扫码器的同一 PLC 操作类型不能重复配置 说明该扫码器已经配置过相同操作类型,例如已经配置过“扫码成功”。同一个扫码器同一种操作类型只能有一个地址。需要编辑原配置,或删除原配置后重新新增。 ### 6. PLC 地址格式应该填 `D`、`MW` 还是西门子 S7 地址 看“设备信息”里该 PLC 的设备类型: - 三菱PLC,且现场是 R 系列:填写 `Dxxxx`,例如 `D6600`。 - 汇川PLC,且现场是 AM/AC 系列:填写 `MWxxxx`,例如 `MW10000`。 - 西门子 S7-1200/S7-1500:写入地址填写 `DB1.DBW0`、`MW0` 或 `QW0` 等 16 位字地址;`IW0` 仅能用于开口数读取。 - 不要因为旧表里有类似地址就直接照抄到另一种 PLC 上。三菱 R 系列不能填 `MWxxxx`;汇川 AM/AC 系列不要填 `Dxxxx`。 - 如果现场 PLC 型号不在本文支持范围内,先让 PLC 工程师确认通信协议和地址模型,再决定是否需要调整后端驱动。 ### 7. 安装位置不能删除 说明该安装位置正在被设备信息引用。需要先修改或删除引用该安装位置的设备,再删除安装位置。 ### 8. 后端连接三菱 PLC 报 `Connection refused` 说明后端已经尝试连接 `PLC IP + 端口`,但 PLC 侧拒绝了 TCP 连接。这个问题发生在通信连接阶段,通常和 `D6600`、`D6605` 这类寄存器地址无关。 优先检查: - “设备信息”里的 PLC 端口是否填写 `3301`,并且 PLC 工程里也配置为 `3301`。 - GX Works3 的 `SLMP连接设备` 行里协议是否选择 `TCP`,不要选择 `UDP`。 - 是否点击过“反映设置并关闭”和“应用”。 - 是否执行过“在线 -> 写入至可编程控制器”。 - 写入后是否已 PLC 复位或断电重启。 - `3301` 是否配置在 `SLMP连接设备`,不要误配在 `MELSOFT连接设备`。 后端电脑上可以用以下命令验证端口: ```powershell Test-NetConnection 192.0.2.16 -Port 3301 ``` 如果 `TcpTestSucceeded` 为 `False`,说明后端电脑到 PLC 的 `3301` TCP 端口仍未打通,需要继续检查 PLC 侧参数或现场网络。 ### 9. 西门子 S7 端口可达但 PLC 地址读写失败 确认设备类型选择了“西门子 S7 PLC”,端口为 `102`,并检查 TIA Portal: - 已允许来自远程伙伴的 PUT/GET 通信。 - CPU 访问级别和连接权限允许外部读写。 - `DBn.DBWoffset` 对应数据块已关闭优化访问并重新下载到 PLC。 - 写入操作没有误用只读的 `IWoffset`。 - 当前 CPU 使用标准 `rack=0`、`slot=0` 连接参数。 ### 10. 设备不能删除 说明该 PLC 或扫码器正在被 PLC 地址引用。需要先删除相关 PLC 地址配置,再删除设备。 ## 八、配置检查清单 上线前建议逐项确认: ```text [ ] 缓冲垫寿命已按现场要求设置 [ ] 设备安装位置已全部配置,名称和现场一致 [ ] 每台扫码器已配置设备信息 [ ] 每台 PLC 已配置设备信息 [ ] 三菱 R 系列 PLC 已在 GX Works3 中配置 `SLMP连接设备 / SLMP / TCP / 3301` [ ] 三菱 R 系列 PLC 参数已写入并复位或断电重启 [ ] 西门子 S7-1200/S7-1500 使用 S7comm over ISO-on-TCP / TCP 102 / rack 0 / slot 0 [ ] 西门子 PLC 已允许 PUT/GET,CPU 权限允许外部读写,使用的 DB 已关闭优化访问 [ ] 同一组扫码器和 PLC 的产线一致 [ ] 每个扫码器已配置扫码成功、扫码失败、超过次数等 PLC 地址 [ ] PLC 地址格式和 PLC 型号一致:三菱使用 D,汇川使用 MW,西门子使用 DBW/MW/QW,IW 仅用于开口数读取 [ ] 每个扫码器只关联一个 PLC [ ] 同一扫码器同一操作类型没有重复地址 [ ] 运行页面设备状态正常 [ ] 运行告警与最近操作能够显示扫码和 PLC 处理结果 [ ] 测试扫码能新增/更新缓冲垫次数 [ ] PLC 侧能收到对应地址通知 ``` ## 2026-09-15 设备状态修订 扫码器默认被动接收,长期无扫码不报警,也不默认发送HeartBeat。需要确认设备支持对应协议后,再按设备ID通过后端device-health配置开启检测。PLC新增安全只读探测默认关闭,现有PLC地址表中的心跳写入保持原含义。详细配置见项目 wms-opc/docs/设备连接与通信验证分离方案.md。本次不改数据库表。