syntax = "proto3"; enum Range_status { Range_correct = 0x0000; // 未超界 Range_front = 0x0001; //前超界 Range_back = 0x0002; //后超界 Range_left = 0x0004; // 左超界 Range_right = 0x0008; // 右超界 Range_bottom = 0x0010; //底盘超界 Range_top = 0x0020; // 车顶超界 Range_car_width = 0x0040; // 车宽超界 Range_car_wheelbase = 0x0080; // 轴距超界 Range_angle_anti_clock = 0x0100; // 左(逆时针)旋转超界 Range_angle_clock = 0x0200; // 右(顺时针)旋转超界 Range_steering_wheel_nozero = 0x0400; // 方向盘未回正 Range_car_moving = 0x0800; // 车辆移动为1,静止为0 } enum MeasureStatu { Measure_OK = 0; // 测量完成 Measure_Empty_Clouds = 1; // 测量结果:测量区域数据为空 Measure_Failture = 2; // 测量结果:测量区域数据无法检测出车辆 Measure_Border = 3; // 测量结果:对于PLC, 车辆存在超界,具体超界状态对比Range_status Measure_Terminal_Border = 4; // 测量结果:对于终端, 车辆存在超界,具体超界状态对比Range_status Lidar_Disconnect = 5; // 测量雷达:失去连接 Measure_Statu_Max = 6; } /*测量信息*/ message measure_info { float cx=1; // 车辆中心坐标x float cy=2; // 车辆中心坐标y float theta=3; // 车身偏转角度(相对于y轴,左正右负) float length=4; // 车身长度(厦门四个雷达,含有该值,楚天两个雷达,该值为0) float width=5; // 车身宽度(左右两侧轮子最大宽度) float height=6; // 车身高度 float wheelbase=7; // 车辆前后轴距 float front_theta=8; // 车辆前轮偏转角度 int32 border_statu=9; // 超界状态, 位运算 MeasureStatu ground_status=10; // 测量状态,0=正常, 1=空, 2=测量失败, 3=超界, 4=终端超界, 5=雷达断连 int32 is_stop=11; // <是否可停> 1为可停,0为不可停 int32 motion_statu=12; // 运动状态,0=运动, 1=静止(只有三秒内都是静止才会写1,只要瞬间触发运动就会写0) float move_distance=13; // 汽车需要往前移动的距离。 } /*分配的车位信息*/ message parkspace_info{ int32 id=1; int32 serial_id=2; //排序id int32 table_id=3; //标签id int32 unit_id=4; //单元号 int32 floor=5; //楼层号 int32 room_id=6; //同层编号 float height=7; //车高档位 } //任务表单状态 enum STATU{ eNormal=0; // 正常 eWarning=1; // 警告 eError=2; // 错误 eCritical=3; // 严重错误 } //表单流程模式 enum Table_process_mode { PROCESS_NORMAL = 0; // 0:正常模式, 检查节点会向收费系统发送请求,收费系统的答复 通过后,再向调度发送请求 PROCESS_ONLY_TO_DISPATCH = 1; // 1:强制存取车,检查节点会向收费系统发送请求,忽略收费系统的答复,直接向调度发送请求。 PROCESS_ONLY_TO_PAY = 2; // 2:虚拟存取车, 检查节点会向收费系统发送请求,忽略收费系统的答复。 } /* 表单执行状态 */ message table_statu{ STATU execute_statu=1; // 执行状态 string statu_description=2; // 状态描述 Table_process_mode table_process_mod=3; // 表单流程模式 } /* 号牌信息 */ message plate_number_info { string plate_number = 1; // 号牌 string plate_color = 2; // 号牌颜色 string plate_type = 3; // 号牌类型, 车辆类型 int32 plate_confidence = 4; // 号牌可信度, 1-100 值越高可信度越高 string recognition_time = 5; // 识别时间点, yyyyMMddHHmmss string plate_full_image = 6; // 号牌全景图, base64编码 string plate_clip_image = 7; // 号牌特写图, base64编码 } /* 停车表单 */ message park_table{ table_statu statu=1; //表单状态 int32 queue_id=2; //指令排队编号 string car_number=3; int32 unit_id=4; int32 terminal_id=5; string primary_key=6; measure_buffer entrance_measure_info=7; // 入口测量信息 parkspace_info allocated_space_info=8; // 分配的车位信息 measure_buffer actually_measure_info=9; // 实际测量信息或者叫二次测量信息 parkspace_info actually_space_info=10; // 实际停放的车位 int32 import_id =11; // 入口id, 1~2 plate_number_info car_number_info = 12; // 车牌号信息 } /* 预约车位的表单 */ message apply_table { string car_number=1; //车牌号 string apply_end_time=2; //预约结束时间 int32 operation_type=3; //操作类型, 0:新增预约 1:取消预约 } /* 取车表单 */ message pick_table{ table_statu statu=1; // 表单状态 int32 queue_id=2; // 指令排队编号 string car_number=3; int32 unit_id=4; int32 terminal_id=5; string primary_key=6; parkspace_info actually_space_info=7; // 实际停放的车位信息 measure_buffer actually_measure_info=8; // 存车时的实际测量信息(轴距) int32 export_id=9; // 出口id, 3~4 bool is_leaved=10; // 是否离开 plate_number_info car_number_info = 11; // 车牌号信息 } /* 以下是状态消息 */ /* 单片机节点状态 */ message out_mcpu_statu{ //数值+1后 int32 door_statu=1; //外门状态 0无效, 1无效, 2开到位, 3 关到位, 4开关中, 5 故障 int32 outside_safety=2; //是否有车 0无效, 1无车, 2有车 } message in_mcpu_statu{ //数值+1后 int32 door_statu=1; //外门状态 0无效, 1无效, 2开到位, 3 关到位, 4开关中, 5 故障 int32 back_io=2; //后超界 0无效, 1后超界, 2正常 int32 is_occupy=3; //是否有车 0无效, 1无车, 2有车 int32 heighth=4; //车高状态 0无效, 1无效, 2小车, 3中车, 4大车, 5故障, 6故障 } /* 测量节点状态 */ message measure_buffer{ measure_info measure_info_to_plc_forward=1; //雷达数据给plc,正向 measure_info measure_info_to_plc_reverse=2; //雷达数据给plc,反向 measure_info measure_info_to_terminal=3; //雷达数据给终端,边界较小 } //搬运器状态枚举 enum CarrierStatu{ eIdle=0; eBusy=1; eFault=2; } /* //楚天调度入口汽车范围的修正信息 message dispatch_region_info { int32 terminal_id=1; //入口终端编号, 1~6 float turnplate_angle_min=2; //转盘角度最小值, 负值, 例如 -5度 float turnplate_angle_max=3; //转盘角度最大值, 正值, 例如 +5度 } //楚天搬运器状态消息 message dispatch_node_statu{ CarrierStatu statu=1; int32 idle_stop_floor=2; //空闲时停留位置 park_table running_pack_info=3; //正在执行的停车表单 pick_table running_pick_info=4; //正在执行的取车表单 int32 unit_id = 5; //单元号, 1~3 int32 plc_heartbeat = 6; //plc心跳信息 int32 plc_status_info = 7; //plc状态的集合 //0 bit, 手动模式 //1 bit, 自动模式 //2 bit, 自动运行中 //3 bit, 复位 //4 bit, 1号口可以进车 //5 bit, 2号口可以进车 //6 bit, 预留 //7 bit, 预留 repeated dispatch_region_info dispatch_region_info_vector = 8; //调度入口汽车范围的修正信息 } */ //plc出入口状态结构体 message dispatch_plc_passway_status { int32 car_height = 1; //车高 0=无车 1=小车 2=中车 3=大车 4=超高车 int32 outside_door_status = 2; //外门状态 0=无状态 1=开到位 2=关到位 int32 inside_door_status = 3; //内门状态 0=无状态 1=开到位 2=关到位 int32 comb_body_status = 4; //梳体状态 0=无状态 1=上到位 2=下到位, AB特有, 中科新苑无效 float turnplate_angle_min = 5; //转盘角度最小值, C特有, 负值, 例如 -5度, 中科新苑无效 float turnplate_angle_max = 6; //转盘角度最大值, C特有, 正值, 例如 +5度, 中科新苑无效 int32 sensor_1 = 7; //传感器状态的集合1 //0 bit, 地感 0=无车 1=有车 //1 bit, 移动检测 0=运动 1=静止, 中科新苑无效 //2 bit, 动态超限 0=遮挡 1=正常, 中科新苑无效 //3 bit, 后超界 0=遮挡 1=正常 //4 bit, 前超界 0=遮挡 1=正常 //5 bit, 左超界 0=遮挡 1=正常, 中科新苑无效 //6 bit, 右超界 0=遮挡 1=正常, 中科新苑无效 //7 bit, 中科新苑无效 int32 sensor_2 = 8; //传感器状态的集合1 //0 bit, 有车检测, 0=遮挡 1=正常 //1 bit, 有车检测, 0=遮挡 1=正常 //2 bit, 车高1550, 0=遮挡 1=正常 //3 bit, 车高1550, 0=遮挡 1=正常 //4 bit, 车高1750, 0=遮挡 1=正常 //5 bit, 车高1750, 0=遮挡 1=正常 //6 bit, 预留 //7 bit, 预留 int32 plc_passway_enable=9; //出入口 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车 } //载车板状态 message dispatch_carry_board_status{ int32 space_table_id = 1; //车位id, 101~160 int32 carry_board_mode = 2; //carry_board_mode 0是无效, 1是上升, 2是下降 } //厦门搬运器状态消息 message dispatch_node_statu{ CarrierStatu statu=1; int32 idle_stop_floor=2; //空闲时停留位置 park_table running_pack_info=3; //正在执行的停车表单 pick_table running_pick_info=4; //正在执行的取车表单 int32 unit_id = 5; //单元号, int32 plc_heartbeat = 6; //plc心跳信息 int32 plc_mode_status = 7; //plc状态的集合 //0 bit, 手动模式, 维修模式 //1 bit, 自动模式 //2 bit, 自动运行中 //3 bit, 复位 //4 bit, 预留 //5 bit, 预留 //6 bit, 预留 //7 bit, 预留 int32 plc_passway_status = 8; //plc 出入口状态 //0 bit, 入口1 可进车 //1 bit, 入口1 维护 //2 bit, 入口2 可进车 //3 bit, 入口2 维护 //4 bit, 出口1 可出车, 中科新苑无效 //5 bit, 出口1 维护, 中科新苑无效 //6 bit, 出口2 可出车, 中科新苑无效 //7 bit, 出口2 维护, 中科新苑无效 int32 plc_carrier_status = 9; //搬运器状态 0=故障 1=存车 2=取车 3=空闲 4=维护 5=小故障 6=大故障 7=月度保养 int32 plc_inlet_1_status = 10; //入口1 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车 int32 plc_inlet_2_status = 11; //入口2 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车 int32 plc_outlet_3_status = 12; //出口3 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车 int32 plc_outlet_4_status = 13; //出口4 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车 repeated dispatch_plc_passway_status dispatch_plc_passway_status_vector = 14; //plc出入口状态结构体, 数组下标0~1是入口, 数组下标2~3是出口 repeated dispatch_carry_board_status dispatch_carry_board_status_vector = 15; //载车板状态, 数组下标0~59 对应 车位id的101~160 } message terminal_node_statu{ int32 terminal_id = 1; int32 import_id = 2; string car_number = 3; } //厦门C单元夹车杆 //夹车杆数据 message Clamp_lidar_info { int32 has_wheel_flag=1; //是否检测到车轮 float distance_y=2; //轮子中心和夹车杆中心的距离y,修正小Y,对比前后轴距 float distance_x=3; //轮子中心和夹车杆中心的距离x,修正轿厢x,对比2个大Y的左右偏差 int32 has_clamp_flag=4; //夹车杆是否夹到位 } //plc给夹车杆雷达, plc把大小Y伸出后,在夹车之前,会把9070复制到9071,从而保存一份数据 message Clamp_lidar_buffer { repeated Clamp_lidar_info clamp_lidar_info_vector=1; }