更新时序图
This commit is contained in:
@@ -27,7 +27,6 @@ sequenceDiagram
|
|||||||
participant 调度车
|
participant 调度车
|
||||||
participant 上位机Go
|
participant 上位机Go
|
||||||
participant 下位机PLC
|
participant 下位机PLC
|
||||||
participant 视觉算法C#
|
|
||||||
|
|
||||||
box rgb(173, 216, 230) 硬件调度系统
|
box rgb(173, 216, 230) 硬件调度系统
|
||||||
participant 调度车
|
participant 调度车
|
||||||
@@ -36,50 +35,52 @@ sequenceDiagram
|
|||||||
participant 上位机Go
|
participant 上位机Go
|
||||||
participant 下位机PLC
|
participant 下位机PLC
|
||||||
end
|
end
|
||||||
box rgb(152, 251, 152) 算法系统
|
box rgb(152, 251, 152) 视觉算法系统
|
||||||
participant 视觉算法C#
|
participant 视觉算法
|
||||||
end
|
end
|
||||||
|
Note over 调度车,视觉算法: 系统初始化阶段
|
||||||
Note over 调度车,视觉算法C#: 系统初始化阶段
|
|
||||||
调度车->>上位机Go: 托料完成(M42上升沿)
|
调度车->>上位机Go: 托料完成(M42上升沿)
|
||||||
上位机Go->>上位机Go: 生成WoodID、推送LED面板
|
上位机Go->>上位机Go: 生成WoodID、推送LED面板
|
||||||
|
|
||||||
Note over 调度车,视觉算法C#: 视觉定位阶段(对中拍照)
|
Note over 调度车,视觉算法: 视觉定位阶段(对中拍照)
|
||||||
上位机Go->>下位机PLC: M809触发 + D2130=2630验证
|
上位机Go->>下位机PLC: M809触发 + D2130=2630验证
|
||||||
上位机Go->>上位机Go: 打开红外测距仪、等待读数稳定
|
上位机Go->>上位机Go: 打开红外测距仪、等待读数稳定
|
||||||
上位机Go->>下位机PLC: 写入D2152/D2154调整坐标、M119调整拍照位
|
上位机Go->>下位机PLC: 写入D2152/D2154调整坐标、M119调整拍照位
|
||||||
上位机Go->>下位机PLC: M810就位 → 关闭红外、M130触发坐标调整
|
上位机Go->>下位机PLC: M810就位 → 关闭红外、M130触发坐标调整
|
||||||
上位机Go->>上位机Go: M120就位 → 监控激光传感器读数
|
上位机Go->>上位机Go: M120就位 → 监控激光传感器读数
|
||||||
上位机Go->>视觉算法C#: center_photo_taking(wood_id+左右相机坐标)
|
上位机Go->>视觉算法: center_photo_taking(wood_id+左右相机物理拍照坐标)
|
||||||
视觉算法C#-->>上位机Go: ACK: center_scanning
|
视觉算法-->>上位机Go: ACK: center_scanning
|
||||||
视觉算法C#->>视觉算法C#: 异步拍照+端面中心计算
|
视觉算法->>视觉算法: 异步拍照+端面中心计算
|
||||||
视觉算法C#->>上位机Go: center_photo_result(顶针目标坐标+直径)
|
视觉算法->>上位机Go: center_photo_result(顶针目标坐标+直径)
|
||||||
上位机Go->>上位机Go: 设置原木直径、触发托料装置升高
|
上位机Go->>上位机Go: 设置原木直径、触发托料装置升高
|
||||||
上位机Go->>下位机PLC: 写入D2024/D2026/D2028/D2030顶针坐标
|
上位机Go->>下位机PLC: 写入D2024/D2026/D2028/D2030顶针坐标
|
||||||
上位机Go->>下位机PLC: 写入D2168/D2170轨道目标坐标
|
上位机Go->>下位机PLC: 写入D2168/D2170轨道目标坐标
|
||||||
上位机Go->>下位机PLC: M49启动顶料
|
上位机Go->>下位机PLC: M49启动顶料
|
||||||
|
|
||||||
Note over 调度车,视觉算法C#: 视觉扫描阶段
|
Note over 调度车,视觉算法: 视觉扫描阶段
|
||||||
上位机Go->>上位机Go: M50上升沿 + D2130<1600 + D2042>=2300
|
上位机Go->>上位机Go: M50上升沿 + D2130<1600 + D2042>=2300
|
||||||
上位机Go->>视觉算法C#: start_vision_algorithm(wood_id)
|
上位机Go->>视觉算法: start_vision_algorithm(wood_id)
|
||||||
视觉算法C#-->>上位机Go: ACK: vision_scanning
|
视觉算法-->>上位机Go: ACK: vision_scanning
|
||||||
视觉算法C#->>视觉算法C#: 异步启动相机采集
|
视觉算法->>视觉算法: 异步启动相机采集
|
||||||
视觉算法C#->>上位机Go: capture_ready(status=ready)
|
视觉算法->>上位机Go: capture_ready(status=ready)
|
||||||
上位机Go->>下位机PLC: 写入M103启动扫描轨道
|
上位机Go->>下位机PLC: 写入M103启动扫描轨道
|
||||||
上位机Go->>上位机Go: 启动M104监控(等待工单推送触发)
|
上位机Go->>上位机Go: 启动M104监控(等待工单推送触发)
|
||||||
下位机PLC->>下位机PLC: 扫描轨道运行、编码器触发采集
|
下位机PLC->>下位机PLC: 扫描轨道运行、编码器触发采集
|
||||||
|
|
||||||
Note over 调度车,视觉算法C#: 工单推送与算法处理阶段
|
Note over 调度车,视觉算法: 工单推送与算法处理阶段
|
||||||
上位机Go->>上位机Go: M104上升沿 + M42=true
|
上位机Go->>上位机Go: M104上升沿 + M42=true
|
||||||
上位机Go->>上位机Go: 读取D2134计算原木长度
|
上位机Go->>上位机Go: 读取D2134计算原木长度
|
||||||
上位机Go->>视觉算法C#: order_info(工单信息+规格+长度)
|
上位机Go->>视觉算法: order_info(工单信息+规格+长度)
|
||||||
视觉算法C#-->>上位机Go: ACK: algorithm_coordinates_run(status=processing)
|
视觉算法-->>上位机Go: ACK: algorithm_coordinates_run(status=processing)
|
||||||
视觉算法C#->>视觉算法C#: 停止采集→建模→顶针裁剪→多规格切割优化
|
视觉算法->>视觉算法: 等待帧就绪→停止采集
|
||||||
视觉算法C#->>上位机Go: algorithm_coordinates(切割坐标+旋转角度+材积)
|
视觉算法->>视觉算法: 配对融合→体素降采样
|
||||||
视觉算法C#->>上位机Go: board_split_yield_result(板材拆分出材率)
|
视觉算法->>视觉算法: Y轴归一化→顶针裁剪
|
||||||
|
视觉算法->>视觉算法: 多规格切割算法优化
|
||||||
|
视觉算法->>上位机Go: algorithm_coordinates(切割坐标+旋转角度+材积)
|
||||||
|
视觉算法->>上位机Go: board_split_yield_result(板材拆分出材率)
|
||||||
|
|
||||||
Note over 调度车,视觉算法C#: 旋转与调度执行阶段
|
Note over 调度车,视觉算法: 旋转与调度执行阶段
|
||||||
上位机Go->>上位机Go: 保存视觉数据到数据库+推送LED面板
|
上位机Go->>上位机Go: 保存视觉数据到数据库+推送出材率等关键信息至LED面板
|
||||||
上位机Go->>下位机PLC: 写入D2038旋转角度
|
上位机Go->>下位机PLC: 写入D2038旋转角度
|
||||||
上位机Go->>下位机PLC: M45执行旋转
|
上位机Go->>下位机PLC: M45执行旋转
|
||||||
上位机Go->>下位机PLC: 写入D2136原木直径
|
上位机Go->>下位机PLC: 写入D2136原木直径
|
||||||
@@ -115,7 +116,7 @@ sequenceDiagram
|
|||||||
- **M104上升沿**: 扫描结束触发,同时验证M42=true
|
- **M104上升沿**: 扫描结束触发,同时验证M42=true
|
||||||
- **读取原木长度**: 从D2134寄存器读取长度值,减去315mm得到实际原木长度
|
- **读取原木长度**: 从D2134寄存器读取长度值,减去315mm得到实际原木长度
|
||||||
- **推送工单信息**: Go发送`order_info`,包含工单规格、副规格、锯路厚度等参数
|
- **推送工单信息**: Go发送`order_info`,包含工单规格、副规格、锯路厚度等参数
|
||||||
- **异步算法处理**: C#端依次执行:停止采集→等待帧就绪→点云融合建模→Y轴归一化→顶针裁剪→多规格切割优化
|
- **异步算法处理**: C#端(`ProcessScanAndOptimizeAsync`)依次执行:等待所有相机帧就绪(最多10秒)→停止采集→时间窗口配对转同步帧→多相机融合建模(含体素降采样+Y轴归一化)→顶针裁剪→材积报告→多规格切割优化(含板材拆分择优)
|
||||||
- **推送算法结果**: C#推送`algorithm_coordinates`(切割坐标+旋转角度+材积+出材率)
|
- **推送算法结果**: C#推送`algorithm_coordinates`(切割坐标+旋转角度+材积+出材率)
|
||||||
- **推送板材拆分**: C#异步推送`board_split_yield_result`(板材拆分出材率)
|
- **推送板材拆分**: C#异步推送`board_split_yield_result`(板材拆分出材率)
|
||||||
|
|
||||||
@@ -135,7 +136,8 @@ sequenceDiagram
|
|||||||
- **顶针裁剪**: 根据扫描方向(left/right)从点云两端裁剪固定长度,移除机械顶针和过渡区点云
|
- **顶针裁剪**: 根据扫描方向(left/right)从点云两端裁剪固定长度,移除机械顶针和过渡区点云
|
||||||
- **Y轴归一化**: scan_start="right"时翻转Y轴,确保Y=0始终对应同一物理端
|
- **Y轴归一化**: scan_start="right"时翻转Y轴,确保Y=0始终对应同一物理端
|
||||||
- **寄存器回读验证**: 关键寄存器(D2038角度值、D2024-D2030顶针坐标)写入后立即回读验证
|
- **寄存器回读验证**: 关键寄存器(D2038角度值、D2024-D2030顶针坐标)写入后立即回读验证
|
||||||
- **材积基准统一**: TotalVolume使用middle Y截面R计算,与AvailableVolume同源,消除出材率偏高
|
- **体素降采样**: 融合后点云超过100万点时自动触发体素网格降采样,加速后续建模与优化计算
|
||||||
|
- **材积基准统一**: 出材率由`BoardSplitYieldService.ComputeEffectiveBoardYield`全局统一计算(旋转点云→构建板区间→Z方向木方规划→有效板材木方材积/原木总材积πR²L),结果覆盖`algorithm_coordinates`的AvailableVolume/TotalVolume/YieldRate
|
||||||
|
|
||||||
## 注意事项
|
## 注意事项
|
||||||
|
|
||||||
@@ -451,7 +453,7 @@ sequenceDiagram
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
> **说明:** `order_info`代表扫描结束,C#收到后立即响应ACK,然后异步执行:停止采集→等待帧就绪→点云融合→建模→顶针裁剪→多规格切割优化→推送结果。
|
> **说明:** `order_info`代表扫描结束,C#收到后立即响应ACK,然后异步执行(`ProcessScanAndOptimizeAsync`):等待所有相机帧就绪→停止采集→时间窗口配对转同步帧→多相机融合建模(体素降采样+Y轴归一化)→顶针裁剪→材积报告→多规格切割优化(含板材拆分择优评估)→推送algorithm_coordinates→异步推送board_split_yield_result。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user