message.proto 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. syntax = "proto3";
  2. enum Range_status {
  3. Range_correct = 0x0000; // 未超界
  4. Range_front = 0x0001; //前超界
  5. Range_back = 0x0002; //后超界
  6. Range_left = 0x0004; // 左超界
  7. Range_right = 0x0008; // 右超界
  8. Range_bottom = 0x0010; //底盘超界
  9. Range_top = 0x0020; // 车顶超界
  10. Range_car_width = 0x0040; // 车宽超界
  11. Range_car_wheelbase = 0x0080; // 轴距超界
  12. Range_angle_anti_clock = 0x0100; // 左(逆时针)旋转超界
  13. Range_angle_clock = 0x0200; // 右(顺时针)旋转超界
  14. Range_steering_wheel_nozero = 0x0400; // 方向盘未回正
  15. Range_car_moving = 0x0800; // 车辆移动为1,静止为0
  16. }
  17. enum MeasureStatu {
  18. Measure_OK = 1; // 测量完成
  19. Measure_Empty_Clouds = 2; // 测量结果:测量区域数据为空
  20. Measure_Failture = 3; // 测量结果:测量区域数据无法检测出车辆
  21. Measure_Border = 4; // 测量结果:车辆存在超界,具体超界状态对比Range_status
  22. Lidar_Disconnect = 5; // 测量雷达:失去连接
  23. Measure_Statu_Max = 6;
  24. }
  25. /*测量信息*/
  26. message measure_info {
  27. float cx=1; // 车辆中心坐标x
  28. float cy=2; // 车辆中心坐标y
  29. float theta=3; // 车身偏转角度(相对于y轴,左正右负)
  30. float length=4; // 车身长度(厦门四个雷达,含有该值,楚天两个雷达,该值为0)
  31. float width=5; // 车身宽度(左右两侧轮子最大宽度)
  32. float height=6; // 车身高度
  33. float wheelbase=7; // 车辆前后轴距
  34. float front_theta=8; // 车辆前轮偏转角度
  35. int32 border_statu=9; //超界状态, 位运算
  36. MeasureStatu ground_status=10; //雷达状态,=ok 1=nothing 2=noise 3=border, 4=fault
  37. int32 is_stop=11; //<是否可停> 1为可停,0为不可停
  38. int32 motion_statu=12; //运动状态,0=运动, 1=静止(只有三秒内都是静止才会写1,只要瞬间触发运动就会写0)
  39. }
  40. /*分配的车位信息*/
  41. message parkspace_info{
  42. int32 id=1;
  43. int32 serial_id=2; //排序id
  44. int32 table_id=3; //标签id
  45. int32 unit_id=4; //单元号
  46. int32 floor=5; //楼层号
  47. int32 room_id=6; //同层编号
  48. float height=7; //车高档位
  49. }
  50. //任务表单状态
  51. enum STATU{
  52. eNormal=0; // 正常
  53. eWarning=1; // 警告
  54. eError=2; // 错误
  55. eCritical=3; // 严重错误
  56. }
  57. //表单流程模式
  58. enum Table_process_mode
  59. {
  60. PROCESS_NORMAL = 0; // 0:正常模式, 检查节点会向收费系统发送请求,收费系统的答复 通过后,再向调度发送请求
  61. PROCESS_ONLY_TO_DISPATCH = 1; // 1:强制存取车,检查节点会向收费系统发送请求,忽略收费系统的答复,直接向调度发送请求。
  62. PROCESS_ONLY_TO_PAY = 2; // 2:虚拟存取车, 检查节点会向收费系统发送请求,忽略收费系统的答复。
  63. }
  64. /*
  65. 表单执行状态
  66. */
  67. message table_statu{
  68. STATU execute_statu=1; // 执行状态
  69. string statu_description=2; // 状态描述
  70. Table_process_mode table_process_mod=3; // 表单流程模式
  71. }
  72. /*
  73. 号牌信息
  74. */
  75. message plate_number_info
  76. {
  77. string plate_number = 1; // 号牌
  78. string plate_color = 2; // 号牌颜色
  79. string plate_type = 3; // 号牌类型, 车辆类型
  80. int32 plate_confidence = 4; // 号牌可信度, 1-100 值越高可信度越高
  81. string recognition_time = 5; // 识别时间点, yyyyMMddHHmmss
  82. string plate_full_image = 6; // 号牌全景图, base64编码
  83. string plate_clip_image = 7; // 号牌特写图, base64编码
  84. }
  85. /*
  86. 停车表单
  87. */
  88. message park_table{
  89. table_statu statu=1; //表单状态
  90. int32 queue_id=2; //指令排队编号
  91. string car_number=3;
  92. int32 unit_id=4;
  93. int32 terminal_id=5;
  94. string primary_key=6;
  95. measure_info entrance_measure_info=7; // 入口测量信息
  96. parkspace_info allocated_space_info=8; // 分配的车位信息
  97. measure_info actually_measure_info=9; // 实际测量信息或者叫二次测量信息
  98. parkspace_info actually_space_info=10; // 实际停放的车位
  99. int32 import_id =11; // 入口id, 1~2
  100. plate_number_info car_number_info = 12; // 车牌号信息
  101. }
  102. /*
  103. 取车表单
  104. */
  105. message pick_table{
  106. table_statu statu=1; // 表单状态
  107. int32 queue_id=2; // 指令排队编号
  108. string car_number=3;
  109. int32 unit_id=4;
  110. int32 terminal_id=5;
  111. string primary_key=6;
  112. parkspace_info actually_space_info=7; // 实际停放的车位信息
  113. measure_info actually_measure_info=8; // 存车时的实际测量信息(轴距)
  114. int32 export_id=9; // 出口id, 3~4
  115. bool is_leaved=10; // 是否离开
  116. plate_number_info car_number_info = 11; // 车牌号信息
  117. }
  118. /*
  119. 以下是状态消息
  120. */
  121. /*
  122. 单片机节点状态
  123. */
  124. message out_mcpu_statu{ //数值+1后
  125. int32 door_statu=1; //外门状态 0无效, 1无效, 2开到位, 3 关到位, 4开关中, 5 故障
  126. int32 outside_safety=2; //是否有车 0无效, 1无车, 2有车
  127. }
  128. message in_mcpu_statu{ //数值+1后
  129. int32 door_statu=1; //外门状态 0无效, 1无效, 2开到位, 3 关到位, 4开关中, 5 故障
  130. int32 back_io=2; //后超界 0无效, 1后超界, 2正常
  131. int32 is_occupy=3; //是否有车 0无效, 1无车, 2有车
  132. int32 heighth=4; //车高状态 0无效, 1无效, 2小车, 3中车, 4大车, 5故障, 6故障
  133. }
  134. /*
  135. 测量节点状态
  136. */
  137. message measure_statu{
  138. measure_info info=1;
  139. }
  140. //搬运器状态枚举
  141. enum CarrierStatu{
  142. eIdle=0;
  143. eBusy=1;
  144. eFault=2;
  145. }
  146. /*
  147. //楚天调度入口汽车范围的修正信息
  148. message dispatch_region_info
  149. {
  150. int32 terminal_id=1; //入口终端编号, 1~6
  151. float turnplate_angle_min=2; //转盘角度最小值, 负值, 例如 -5度
  152. float turnplate_angle_max=3; //转盘角度最大值, 正值, 例如 +5度
  153. }
  154. //楚天搬运器状态消息
  155. message dispatch_node_statu{
  156. CarrierStatu statu=1;
  157. int32 idle_stop_floor=2; //空闲时停留位置
  158. park_table running_pack_info=3; //正在执行的停车表单
  159. pick_table running_pick_info=4; //正在执行的取车表单
  160. int32 unit_id = 5; //单元号, 1~3
  161. int32 plc_heartbeat = 6; //plc心跳信息
  162. int32 plc_status_info = 7; //plc状态的集合
  163. //0 bit, 手动模式
  164. //1 bit, 自动模式
  165. //2 bit, 自动运行中
  166. //3 bit, 复位
  167. //4 bit, 1号口可以进车
  168. //5 bit, 2号口可以进车
  169. //6 bit, 预留
  170. //7 bit, 预留
  171. repeated dispatch_region_info dispatch_region_info_vector = 8; //调度入口汽车范围的修正信息
  172. }
  173. */
  174. //plc出入口状态结构体
  175. message dispatch_plc_passway_status
  176. {
  177. int32 car_height = 1; //车高 0=无车 1=小车 2=中车 3=大车 4=超高车
  178. int32 outside_door_status = 2; //外门状态 0=无状态 1=开到位 2=关到位
  179. int32 inside_door_status = 3; //内门状态 0=无状态 1=开到位 2=关到位
  180. int32 comb_body_status = 4; //梳体状态 0=无状态 1=上到位 2=下到位, AB特有
  181. float turnplate_angle_min = 5; //转盘角度最小值, C特有, 负值, 例如 -5度
  182. float turnplate_angle_max = 6; //转盘角度最大值, C特有, 正值, 例如 +5度
  183. int32 sensor_1 = 7; //传感器状态的集合1
  184. //0 bit, 地感 0=无车 1=有车
  185. //1 bit, 移动检测 0=运动 1=静止
  186. //2 bit, 动态超限 0=遮挡 1=正常
  187. //3 bit, 后超界 0=遮挡 1=正常
  188. //4 bit, 前超界 0=遮挡 1=正常
  189. //5 bit, 左超界 0=遮挡 1=正常
  190. //6 bit, 右超界 0=遮挡 1=正常
  191. //7 bit, 车高小车, 0=遮挡 1=正常,AB单元为1480, C单元为1780,
  192. int32 sensor_2 = 8; //传感器状态的集合1
  193. //0 bit, 车高中车, 0=遮挡 1=正常,AB单元为1500, C单元为1800,
  194. //1 bit, 车高大车, 0=遮挡 1=正常,AB单元为2050, C单元为2050,
  195. //2 bit, 有车检测 0=无车 1=有车
  196. //3 bit, 车轮1检测 0=无车 1=有车, AB特有
  197. //4 bit, 车轮2检测 0=无车 1=有车, AB特有
  198. //5 bit, 预留
  199. //6 bit, 预留
  200. //7 bit, 预留
  201. int32 plc_passway_enable=9; //出入口 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车
  202. }
  203. //厦门搬运器状态消息
  204. message dispatch_node_statu{
  205. CarrierStatu statu=1;
  206. int32 idle_stop_floor=2; //空闲时停留位置
  207. park_table running_pack_info=3; //正在执行的停车表单
  208. pick_table running_pick_info=4; //正在执行的取车表单
  209. int32 unit_id = 5; //单元号, 1~3
  210. int32 plc_heartbeat = 6; //plc心跳信息
  211. int32 plc_mode_status = 7; //plc状态的集合
  212. //0 bit, 手动模式, 维修模式
  213. //1 bit, 自动模式
  214. //2 bit, 自动运行中
  215. //3 bit, 复位
  216. //4 bit, 预留
  217. //5 bit, 预留
  218. //6 bit, 预留
  219. //7 bit, 预留
  220. int32 plc_passway_status = 8; //plc 出入口状态
  221. //0 bit, 入口1 可进车
  222. //1 bit, 入口1 维护
  223. //2 bit, 入口2 可进车
  224. //3 bit, 入口2 维护
  225. //4 bit, 出口1 可出车
  226. //5 bit, 出口1 维护
  227. //6 bit, 出口2 可出车
  228. //7 bit, 出口2 维护
  229. int32 plc_carrier_status = 9; //搬运器状态 0=故障 1=存车 2=取车 3=空闲 4=维护
  230. int32 plc_inlet_1_status = 10; //入口1 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车
  231. int32 plc_inlet_2_status = 11; //入口2 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车
  232. int32 plc_outlet_3_status = 12; //出口3 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车
  233. int32 plc_outlet_4_status = 13; //出口4 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车
  234. repeated dispatch_plc_passway_status dispatch_plc_passway_status_vector = 14; //plc出入口状态结构体, 数组下标0~1是入口, 数组下标2~3是出口
  235. }
  236. message terminal_node_statu{
  237. int32 terminal_id = 1;
  238. int32 import_id = 2;
  239. string car_number = 3;
  240. }