fix: FASS2 状态机与 UDP 枢纽审查项

等锁超时、全路径签名、无锁窗口不下发、Fault 终态可等待、Pass+机构不再短路、Alarm 不杀单、catch-up 停在未完成站;VehicleCode=0/重复车号拒绝注册,Hub 已运行时不抢监听口;FileLogger 空目录可写。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
黄兆尉
2026-08-26 23:04:58 +08:00
co-authored by Cursor
parent 29a06f004f
commit e4a245e644
13 changed files with 465 additions and 48 deletions
@@ -65,9 +65,9 @@
| 参数 | 示例值 | 含义 |
|------|--------|------|
| `address` | `192.168.1.100` | 车体 IP |
| `Port` | `5000` | 下发命令的目标端口 |
| `ListenPort` | `20103` | 调度监听车体上报的端口 |
| `VehicleCode` | `1` | 车体编号,须与上报帧一致 |
| `Port` | `5001`(模拟器)/ `5000`(真机常见) | 下发命令的目标端口,须等于车体监听口 |
| `ListenPort` | `20103` | 调度监听车体上报的端口;多车必须相同,不一致会告警并忽略 |
| `VehicleCode` | `1` | 车体编号,须与上报帧一致`0` 会拒绝 UDP 注册并告警 |
| `CommMode` | `Udp` | PCB/UDP 模式(推荐) |
### 步骤 3:确认在线
@@ -194,9 +194,9 @@ agv.Mag2Go(2, 5, 0.2);
|------|------|------|
| `CommMode` | `Udp` | `Udp`=PCB 被动收状态;`Tcp`=PLC 主动查询 |
| `address` | — | 车体 IP |
| `Port` | `5000` | 命令下发端口 |
| `ListenPort` | `20103` | 调度 UDP 监听端口 |
| `VehicleCode` | `0` | 必须与车体上报的 `Car` 字段一致 |
| `Port` | `5000` | 命令下发端口;联调模拟器时填 `5001`/`5002`(见 `appsettings*.json` |
| `ListenPort` | `20103` | 调度 UDP 监听端口;Hub 已启动后本车改端口不会重启监听 |
| `VehicleCode` | `0` | 必须与车体上报的 `Car` 字段一致;保持 `0` 会告警且收不到上报 |
| `UdpOfflineTimeoutMs` | `15000` | 超过此时间未收到上报视为离线 |
### 5.2 任务与状态机
@@ -208,6 +208,7 @@ agv.Mag2Go(2, 5, 0.2);
| `LockCount` | `4` | 每次 `0xB1` 滑动窗口站数(≤10 |
| `TaskResendIntervalMs` | `500` | 周期重发 `0xB1` 间隔 |
| `ActionRetryIntervalMs` | `1000` | 动作未完成时 `0xA1` 重试间隔 |
| `TrafficWaitTimeoutMs` | `180000` | 交管等锁 / 管控等待上限;超时取消任务 |
| `MoveTimeoutSeconds` | `120` | 单次移动超时(秒) |
| `StartBeforeMove` | `true` | 移动前发 `0x01` 启动 |