✨ feat(*): 添加扫码枪启动探活、全局退出助手及 README
- 添加扫码枪串口启动探活,检测端口占用并更新 UI 状态 - 新增 ShutdownHelper 安全停止 Host 扩展方法 - 新增 README.md 项目说明文档 - 更新 WorkflowHostedService 启动探活逻辑 - 补充 ShutdownHelper 与 WorkflowHostedService 单元测试 - 优化 DashboardPage 与 SystemSettingsPage 界面布局 - 调整 ModbusTcpPlcService 监控镜像读取逻辑
This commit is contained in:
@@ -444,10 +444,9 @@
|
||||
### 8.2 点位设计原则
|
||||
|
||||
- 输入点和输出点职责分离
|
||||
- 过程状态位与最终结果码同时保留
|
||||
- 对 PLC 需要快速判断的信号,优先给单独布尔位
|
||||
- 对上位机 UI 和日志需要详细表达的结果,使用数值结果码补充
|
||||
- 放行信号使用脉冲,忙碌位和完成位可使用保持方式
|
||||
- 只保留流程闭环必需的少量点位
|
||||
- 详细错误原因由上位机日志与界面表达,不强依赖 PLC 点位细分
|
||||
- 放行信号使用脉冲,忙碌位使用保持方式
|
||||
- 本文档采用**PLC -> 上位机为 Discrete Input、上位机 -> PLC 为 Coil** 的常规表达方式;若现场 PLC 地址区定义不同,可在实施阶段做地址映射,不改变信号语义
|
||||
|
||||
### 8.3 PLC -> 上位机点位(建议)
|
||||
@@ -456,19 +455,16 @@
|
||||
|
||||
| 序号 | 地址类型 | 地址 | 点位名称 | 方向 | 说明 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 1 | Discrete Input | 10001 | PlcReady | PLC -> PC | PLC 就绪,允许上位机参与流程 |
|
||||
| 2 | Discrete Input | 10002 | PcbArrived | PLC -> PC | PCB 已到位,请求上位机处理 |
|
||||
| 3 | Discrete Input | 10003 | PlcReset | PLC -> PC | PLC 请求上位机清状态/复位 |
|
||||
| 4 | Discrete Input | 10004 | PlcAckRelease | PLC -> PC | PLC 已接收到放行信号 |
|
||||
| 5 | Discrete Input | 10005 | AutoMode | PLC -> PC | 设备当前处于自动模式 |
|
||||
| 6 | Discrete Input | 10006 | StationEnable | PLC -> PC | 当前工位使能 |
|
||||
| 1 | Discrete Input | 10001 | PcbArrived | PLC -> PC | PCB 已到位,请求上位机处理 |
|
||||
| 2 | Discrete Input | 10002 | PlcReset | PLC -> PC | PLC 请求上位机清状态/复位 |
|
||||
| 3 | Discrete Input | 10003 | PlcAckRelease | PLC -> PC | PLC 已接收到放行信号,可选 |
|
||||
|
||||
说明:
|
||||
|
||||
- `PcbArrived` 为本流程主触发点
|
||||
- `PlcAckRelease` 为可选应答点,若 PLC 侧不需要可取消
|
||||
- `PlcReset` 用于人工清故障、恢复空闲态或清除保持位
|
||||
- `10007 ~ 10050` 预留给后续 PLC -> 上位机扩展信号
|
||||
- `10004 ~ 10050` 预留给后续 PLC -> 上位机扩展信号
|
||||
|
||||
### 8.4 上位机 -> PLC 点位(建议)
|
||||
|
||||
@@ -476,83 +472,42 @@
|
||||
|
||||
| 序号 | 地址类型 | 地址 | 点位名称 | 方向 | 说明 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 1 | Coil | 00051 | PcOnline | PC -> PLC | 上位机在线心跳位 |
|
||||
| 2 | Coil | 00052 | PcBusy | PC -> PLC | 上位机正在处理当前 PCB |
|
||||
| 3 | Coil | 00053 | ScanOk | PC -> PLC | 本次最终扫码成功 |
|
||||
| 4 | Coil | 00054 | ScanNg | PC -> PLC | 本次最终扫码失败 |
|
||||
| 5 | Coil | 00055 | FileFound | PC -> PLC | 最终找到对应 SFTP 文件 |
|
||||
| 6 | Coil | 00056 | FileNotFound | PC -> PLC | 到达重试上限后仍未找到文件 |
|
||||
| 7 | Coil | 00057 | AlarmRaised | PC -> PLC | 本次流程已触发安灯报警 |
|
||||
| 8 | Coil | 00058 | ReleasePermit | PC -> PLC | 放行脉冲信号 |
|
||||
| 9 | Coil | 00059 | ProcessDone | PC -> PLC | 本次流程已结束,结果码稳定 |
|
||||
| 10 | Coil | 00060 | SystemFault | PC -> PLC | 上位机系统故障 |
|
||||
| 1 | Coil | 00051 | PcBusy | PC -> PLC | 上位机正在处理当前 PCB |
|
||||
| 2 | Coil | 00052 | ReleasePermit | PC -> PLC | 放行脉冲信号 |
|
||||
|
||||
说明:
|
||||
|
||||
- `ScanOk/ScanNg` 互斥
|
||||
- `FileFound/FileNotFound` 互斥
|
||||
- `ReleasePermit` 采用脉冲输出,不建议长时间保持
|
||||
- `ProcessDone = 1` 表示寄存器中的结果值已经稳定,PLC 可以在此时读取 `ResultCode`
|
||||
- `AlarmRaised` 建议保持到下一板开始或收到 `PlcReset` 后再清除
|
||||
- `SystemFault` 用于表示上位机自身流程无法继续,例如 PLC 断连、串口异常、配置缺失、SFTP 连接异常等系统级故障
|
||||
- `PcBusy = 1` 表示当前板卡流程尚未结束
|
||||
- `ResultCode` 在流程进行中和结束后都可读取,不依赖额外完成位
|
||||
|
||||
### 8.5 心跳建议
|
||||
### 8.5 结果寄存器设计(建议)
|
||||
|
||||
- `PcOnline` 不建议常亮,建议采用**翻转心跳**方式
|
||||
- 上位机每 **500ms** 翻转一次 `PcOnline`
|
||||
- PLC 若在 **3 秒** 内未检测到该位变化,则可判定上位机离线或通信异常
|
||||
|
||||
### 8.6 结果寄存器设计(建议)
|
||||
|
||||
建议额外使用 Holding Register 表达结果码和统计值。
|
||||
建议仅保留一个 Holding Register 表达最终结果。
|
||||
|
||||
| 序号 | 地址类型 | 地址 | 名称 | 说明 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 1 | Holding Register | 40001 | ResultCode | 本次最终结果代码 |
|
||||
| 2 | Holding Register | 40002 | ScanTryCount | 本次扫码尝试次数 |
|
||||
| 3 | Holding Register | 40003 | SftpTryCount | 本次 SFTP 查询次数 |
|
||||
| 4 | Holding Register | 40004 | AlarmCode | 本次报警代码,未报警时为 0 |
|
||||
| 5 | Holding Register | 40005 | FlowStateCode | 当前流程状态码 |
|
||||
|
||||
### 8.7 推荐结果代码定义
|
||||
### 8.6 推荐结果代码定义
|
||||
|
||||
| 代码 | 含义 |
|
||||
| --- | --- |
|
||||
| 0 | Idle / 无结果 |
|
||||
| 1 | 处理中 |
|
||||
| 10 | 扫码成功,文件存在,正常放行 |
|
||||
| 20 | 扫码失败 3 次后放行 |
|
||||
| 30 | 扫码成功,文件未找到超时放行 |
|
||||
| 40 | PLC 通信异常 |
|
||||
| 41 | 串口异常 |
|
||||
| 42 | SFTP 连接或认证异常 |
|
||||
| 43 | 安灯接口调用异常 |
|
||||
| 44 | 配置异常 |
|
||||
| 20 | 本次处理结果 NG,但按规则放行 |
|
||||
| 90 | 系统故障 |
|
||||
|
||||
### 8.8 推荐流程状态码定义
|
||||
|
||||
| 代码 | 含义 |
|
||||
| --- | --- |
|
||||
| 0 | Idle |
|
||||
| 1 | Triggered |
|
||||
| 2 | Scanning |
|
||||
| 3 | ScanRetrying |
|
||||
| 4 | CheckingSftp |
|
||||
| 5 | WaitingSftpRetry |
|
||||
| 6 | Releasing |
|
||||
| 7 | Completed |
|
||||
| 8 | Faulted |
|
||||
|
||||
### 8.9 点位清理策略
|
||||
### 8.7 点位清理策略
|
||||
|
||||
建议按如下规则清理点位:
|
||||
|
||||
- 新板开始前清理:`ScanOk`、`ScanNg`、`FileFound`、`FileNotFound`、`AlarmRaised`、`ProcessDone`
|
||||
- 新板开始前清理:`PcBusy`、`ReleasePermit`、`ResultCode`
|
||||
- 流程处理中保持:`PcBusy`
|
||||
- 放行时脉冲输出:`ReleasePermit`
|
||||
- 流程结束后清理:`PcBusy`
|
||||
- `PcOnline` 由心跳任务周期性翻转
|
||||
- `SystemFault` 在故障解除且收到人工复位或 `PlcReset` 后清除
|
||||
- 故障恢复后在人工复位或 `PlcReset` 时清理 `ResultCode`
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user