## 系统架构 系统主要包含以下组件: 1. **硬件控制模块** - 控制继电器、变频器和重量变送器 2. **视觉识别模块** - 处理摄像头图像,识别溢料、角度和车辆对齐状态 3. **控制逻辑模块** - 实现下料流程控制和状态管理 4. **系统管理模块** - 协调各组件工作,管理线程和系统状态 ## 核心功能模块 ### 1. 下料流程控制 (FeedingProcess) `FeedingProcess` 类负责核心的下料控制逻辑: #### 主要方法: - `start_feeding()` - - 启动整个下料流程: - 检查设备连接状态 - 重置计数器 - 执行上料斗向下料斗的物料转移 - 等待模具车对齐并开始下料 - `_check_device_connectivity()` - - 检查关键设备连接状态: - 测试网络继电器连接 - 测试变频器连接 - 测试下料斗变送器连接 - `transfer_material_from_upper_to_lower()` - - 上料斗向下料斗下料: - 读取上料斗初始重量 - 控制继电器打开上料斗出砼门 - 基于重量变化控制下料过程 - 关闭上料斗出砼门并验证下料结果 - 有两次下料,可以设置下料次数,在core/state.py的upper_feeding_max修改 - `wait_for_vehicle_alignment()` - - 等待模具车对齐: - 设置系统状态为等待对齐 - 轮询检查车辆对齐状态 - 对齐后启动第一阶段下料 - `feeding_stage_one()` / `feeding_stage_two()` / `feeding_stage_three()` - - 三阶段下料控制: - 分别控制变频器以低速、中速、高速运行 - 通过重量传感器监控下料过程 - 根据重量或时间判断阶段完成 ### 2. 系统控制器 (FeedingController) `FeedingController` 类负责系统的实时控制和监控: #### 主要方法: - `check_upper_material_request()` - - 检查上料斗是否需要要料: - 读取上料斗重量 - 根据重量判断是否需要要料 - 触发要料请求 - `check_arch_blocking()` - - 检查是否需要破拱: - 监控重量变化速率 - 如果重量变化过慢,判断为堵塞 - 控制破拱继电器进行破拱操作 - `visual_control()` - - 视觉控制主逻辑: - 使用视觉系统检测溢料和出砼门角度 - 根据检测结果和状态机控制出砼门开关 - 包含四种控制模式: 1. `normal` - 正常模式,保持开门 2. `reducing` - 角度减小模式,关闭门以减小开口角度 3. `maintaining` - 维持模式,使用脉冲控制保持角度 4. `recovery` - 恢复模式,逐步打开门 判断状态机状态,执行相应的控制逻辑,首先打开夹爪,进入normal状态,当夹角>=一个阈值,并且开始堆料,进入reducing状态, 缩小过程中如果没有堆料了,回到recovery状态,如果缩小到设定角度依然堆料,进入maintaining状态,开关开关夹爪,保持低速下料,直到没有堆料,进入recovery状态 在recovery过程中产生了堆料,则进入到reducing状态 - `pulse_control_door_for_maintaining()` - - 脉冲控制维持角度: - 通过开关门的脉冲操作维持目标角度 - 通过读取传感器数据判断是否完成维持角度 ### 3. 系统主控 (FeedingControlSystem) `FeedingControlSystem` 是系统的主控制器: #### 主要方法: - `initialize()` - 初始化系统 - 配置和初始化摄像头 - 加载视觉识别模型 - 启动各监控线程 - `start_monitoring()` - 启动系统监控线程 - 监控上料请求 - 监控破拱需求 - `start_visual_control()` - 启动视觉控制线程 - 持续捕获图像并执行视觉控制逻辑 - `start_alignment_check()` - 启动对齐检查线程 - 检查模具车是否对齐 - `_monitor_loop()` / `_visual_control_loop()` / `_alignment_check_loop()` - 各线程的主循环 ## 硬件接口 ### 继电器控制器 (RelayController) 控制各种开关门操作: - 上料斗滑动门 (DOOR_UPPER) - 上料斗出砼门 (DOOR_LOWER_1) - 下料斗出砼门 (DOOR_LOWER_2) - 上料斗破拱 (BREAK_ARCH_UPPER) - 下料斗破拱 (BREAK_ARCH_LOWER) ### 变频器控制器 (InverterController) 控制下料电机的转速,实现三阶段下料速度控制。 ### 变送器控制器 (TransmitterController) 读取上料斗和下料斗的重量数据,用于控制下料过程。 ## 视觉识别系统 系统使用计算机视觉技术进行智能控制: 1. **溢料检测** - 检测出砼门是否发生溢料 2. **角度检测** - 检测出砼门的开口角度 3. **车辆对齐检测** - 检测模具车是否对齐到位 ## 运行流程 1. 系统初始化 2. 启动监控线程 3. 等待启动下料指令 4. 执行上料斗向下料斗的物料转移 5. 等待模具车对齐 6. 执行三阶段下料(低速→中速→高速) 7. 完成一轮下料后,再次上料 8. 执行第二轮三阶段下料 9. 完成整个下料过程 ## 测试 项目包含针对各个模块的单元测试,位于 `tests/` 目录下: - `hardware_controller_test.py` - 硬件控制器测试,用debug的方式逐行运行,测试各个硬件功能 参数修改: 继电器信息修改hardware/relay.py 变频器修改hardware/inverter.py 变送器修改hardware/transmitter.py 相机参数,夹角阈值,单次下料重量,变频器频率等修改cofig/settings.py