# 1,功能描述 调度负责配合plc, 执行存车取车的指令 维护数据库 commmand_queue 指令表 space 车位表 vehicle 车辆表 接受rabbitmq 状态信息 in_mcpu_N_statu_port 入口单片机 out_mcpu_N_statu_port 出口单片机 measure_N_statu_port 感测雷达 发送rabbitmq 状态信息 dispatch_N_statu_port 调度 # 2,流程介绍: a, 周期性 查询数据库 command_queue 指令表 如果有状态为0(排队中)的指令, 选取最优解, 并执行 b1, 存车指令, 查询 space表, 找到合适的空闲车位, 并写入车牌号 表示占有该车位 将车位信息 填充到 command_queue 指令表, 并将状态改为1(工作中) 生成 park_table 存车表单 交给 plc执行 plc执行完成后, 清除存车指令 command_queue, 并保存车辆信息到 vehicle b2, 取车指令, 查询 vehicle表, 找到之前保存的感测信息, 查询空闲出口id 将感测信息和出口id 填充到 command_queue 指令表, 并将状态改为1(工作中) 生成 pick_table 取车表单 交给 plc执行 plc执行完成后, 修改 command_queue表, 指令状态写2 , 清除 车辆信息到 vehicle, 清除车位信息 space, # 3,使用平台: linux x64 / linux-arm # 4,业务逻辑 # 5,编译 cd xxx/plc调度节点 ./proto.sh mkdir ./build cd ./build cmake .. make # 6,运行 指定运行调度单元 cd xxx/plc调度节点/build 开3个终端界面 ./terminal 0 ./terminal 1 ./terminal 2 一键运行所有单元 cd xxx/plc调度节点 ./run_dispatch.sh # 7,部署 依赖三方库 rabbitmq protobuf mysql cpp connect 1.1 glog gflag snap7