communication.proto 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. syntax = "proto2";
  2. import "enum_type.proto";
  3. /*测量信息*/
  4. message measure_info {
  5. required float cx=1; // 车辆中心坐标x
  6. required float cy=2; // 车辆中心坐标y
  7. required float theta=3; // 车身偏转角度(相对于y轴,左正右负)
  8. required float length=4; // 车身长度(厦门四个雷达,含有该值,楚天两个雷达,该值为0)
  9. required float width=5; // 车身宽度(左右两侧轮子最大宽度)
  10. optional float height=6; // 车身高度
  11. required float wheelbase=7; // 车辆前后轴距
  12. required float front_theta=8; // 车辆前轮偏转角度
  13. required int32 border_statu=9; // 超界状态, 位运算
  14. required MeasureStatu ground_status=10; // 测量状态,0=正常, 1=空, 2=测量失败, 3=超界, 4=终端超界, 5=雷达断连
  15. required int32 is_stop=11; // <是否可停> 1为可停,0为不可停
  16. required int32 motion_statu=12; // 运动状态,0=运动, 1=静止(只有三秒内都是静止才会写1,只要瞬间触发运动就会写0)
  17. required float move_distance=13; // 前进距离
  18. }
  19. message PlcOffsetInfo {
  20. optional float x = 1 [default = 0];
  21. optional float y = 2 [default = 0];
  22. optional float theta = 3 [default = 0];
  23. optional float width = 4 [default = 0];
  24. optional float wheelbase = 5 [default = 0];
  25. }
  26. message outOfRangeInfo {
  27. required float border_minx = 1; // 最小边界x,左超界提示
  28. required float border_maxx = 2; // 最大边界x,右超界提示
  29. required float plc_border_miny = 3;// plc后夹持y方向极限值
  30. required float plc_border_maxy = 4;// plc后夹持y方向极限值
  31. required float car_min_width = 5; // 最小车宽
  32. required float car_max_width = 6; // 最大车宽
  33. required float car_min_wheelbase = 7; // 最小轴距
  34. required float car_max_wheelbase = 8; // 最大轴距
  35. required float turnplate_angle_limit_min_clockwise = 9; // 转盘逆时针角度极限
  36. required float turnplate_angle_limit_max_clockwise = 10; // 转盘顺时针角度极限
  37. }
  38. message CommunicationManagerConfig {
  39. optional bool rabbitmq_enable = 1 [default = true];
  40. optional string rabbitmq_config_file = 2 [default = "/rabbitmq.prototxt"]; // 安装目录下的路径,并非绝对路径或者bin文件开始的相对路径
  41. optional bool grpc_enable = 3 [default = true];
  42. optional string grpc_server_ip = 4 [default = "127.0.0.1"];
  43. optional int32 grpc_server_port = 5 [default = 9876];
  44. optional bool mqtt_enable = 6 [default = true];
  45. optional string mqtt_config_file = 7 [default = "/mqtt.json"]; // 安装目录下的路径,并非绝对路径或者bin文件开始的相对路径
  46. optional PlcOffsetInfo offset = 8;
  47. optional outOfRangeInfo plc_out_info = 9;
  48. optional outOfRangeInfo display_out_info = 10;
  49. }
  50. /*分配的车位信息*/
  51. message parkspace_info{
  52. required int32 id=1;
  53. required int32 serial_id=2; //排序id
  54. required int32 table_id=3; //标签id
  55. required int32 unit_id=4; //单元号
  56. required int32 floor=5; //楼层号
  57. required int32 room_id=6; //同层编号
  58. required float height=7; //车高档位
  59. }
  60. //任务表单状态
  61. enum STATU{
  62. eNormal=0; // 正常
  63. eWarning=1; // 警告
  64. eError=2; // 错误
  65. eCritical=3; // 严重错误
  66. }
  67. //表单流程模式
  68. enum Table_process_mode
  69. {
  70. PROCESS_NORMAL = 0; // 0:正常模式, 检查节点会向收费系统发送请求,收费系统的答复 通过后,再向调度发送请求
  71. PROCESS_ONLY_TO_DISPATCH = 1; // 1:强制存取车,检查节点会向收费系统发送请求,忽略收费系统的答复,直接向调度发送请求。
  72. PROCESS_ONLY_TO_PAY = 2; // 2:虚拟存取车, 检查节点会向收费系统发送请求,忽略收费系统的答复。
  73. }
  74. /*
  75. 表单执行状态
  76. */
  77. message table_statu{
  78. required STATU execute_statu=1; // 执行状态
  79. required string statu_description=2; // 状态描述
  80. required Table_process_mode table_process_mod=3; // 表单流程模式
  81. }
  82. /*
  83. 号牌信息
  84. */
  85. message plate_number_info
  86. {
  87. required string plate_number = 1; // 号牌
  88. required string plate_color = 2; // 号牌颜色
  89. required string plate_type = 3; // 号牌类型, 车辆类型
  90. required int32 plate_confidence = 4; // 号牌可信度, 1-100 值越高可信度越高
  91. required string recognition_time = 5; // 识别时间点, yyyyMMddHHmmss
  92. required string plate_full_image = 6; // 号牌全景图, base64编码
  93. required string plate_clip_image = 7; // 号牌特写图, base64编码
  94. }
  95. /*
  96. 停车表单
  97. */
  98. message park_table{
  99. required table_statu statu=1; //表单状态
  100. required int32 queue_id=2; //指令排队编号
  101. required string car_number=3;
  102. required int32 unit_id=4;
  103. required int32 terminal_id=5;
  104. required string primary_key=6;
  105. required measure_buffer entrance_measure_info=7; // 入口测量信息
  106. required parkspace_info allocated_space_info=8; // 分配的车位信息
  107. required measure_buffer actually_measure_info=9; // 实际测量信息或者叫二次测量信息
  108. required parkspace_info actually_space_info=10; // 实际停放的车位
  109. required int32 import_id =11; // 入口id, 1~2
  110. required plate_number_info car_number_info = 12; // 车牌号信息
  111. }
  112. /*
  113. 取车表单
  114. */
  115. message pick_table{
  116. required table_statu statu=1; // 表单状态
  117. required int32 queue_id=2; // 指令排队编号
  118. required string car_number=3;
  119. required int32 unit_id=4;
  120. required int32 terminal_id=5;
  121. required string primary_key=6;
  122. required parkspace_info actually_space_info=7; // 实际停放的车位信息
  123. required measure_buffer actually_measure_info=8; // 存车时的实际测量信息(轴距)
  124. required int32 export_id=9; // 出口id, 3~4
  125. required bool is_leaved=10; // 是否离开
  126. required plate_number_info car_number_info = 11; // 车牌号信息
  127. }
  128. /*
  129. 以下是状态消息
  130. */
  131. /*
  132. 单片机节点状态
  133. */
  134. message out_mcpu_statu{ //数值+1后
  135. required int32 door_statu=1; //外门状态 0无效, 1无效, 2开到位, 3 关到位, 4开关中, 5 故障
  136. required int32 outside_safety=2; //是否有车 0无效, 1无车, 2有车
  137. }
  138. message in_mcpu_statu{ //数值+1后
  139. required int32 door_statu=1; //外门状态 0无效, 1无效, 2开到位, 3 关到位, 4开关中, 5 故障
  140. required int32 back_io=2; //后超界 0无效, 1后超界, 2正常
  141. required int32 is_occupy=3; //是否有车 0无效, 1无车, 2有车
  142. required int32 heighth=4; //车高状态 0无效, 1无效, 2小车, 3中车, 4大车, 5故障, 6故障
  143. }
  144. /*
  145. 测量节点状态
  146. */
  147. message measure_buffer{
  148. required measure_info measure_info_to_plc_forward=1; //雷达数据给plc,正向
  149. required measure_info measure_info_to_plc_reverse=2; //雷达数据给plc,反向
  150. required measure_info measure_info_to_terminal=3; //雷达数据给终端,边界较小
  151. }
  152. //搬运器状态枚举
  153. enum CarrierStatu{
  154. eIdle=0;
  155. eBusy=1;
  156. eFault=2;
  157. }
  158. //plc出入口状态结构体
  159. message dispatch_plc_passway_status
  160. {
  161. required int32 car_height = 1; //车高 0=无车 1=小车 2=中车 3=大车 4=超高车
  162. required int32 outside_door_status = 2; //外门状态 0=无状态 1=开到位 2=关到位
  163. required int32 inside_door_status = 3; //内门状态 0=无状态 1=开到位 2=关到位
  164. required int32 comb_body_status = 4; //梳体状态 0=无状态 1=上到位 2=下到位, AB特有
  165. required float turnplate_angle_min = 5; //转盘角度最小值, C特有, 负值, 例如 -5度
  166. required float turnplate_angle_max = 6; //转盘角度最大值, C特有, 正值, 例如 +5度
  167. required int32 sensor_1 = 7; //传感器状态的集合1
  168. //0 bit, 地感 0=无车 1=有车
  169. //1 bit, 移动检测 0=运动 1=静止
  170. //2 bit, 动态超限 0=遮挡 1=正常
  171. //3 bit, 后超界 0=遮挡 1=正常
  172. //4 bit, 前超界 0=遮挡 1=正常
  173. //5 bit, 左超界 0=遮挡 1=正常
  174. //6 bit, 右超界 0=遮挡 1=正常
  175. //7 bit, 车高小车, 0=遮挡 1=正常,AB单元为1480, C单元为1780,
  176. required int32 sensor_2 = 8; //传感器状态的集合1
  177. //0 bit, 车高中车, 0=遮挡 1=正常,AB单元为1500, C单元为1800,
  178. //1 bit, 车高大车, 0=遮挡 1=正常,AB单元为2050, C单元为2050,
  179. //2 bit, 有车检测 0=无车 1=有车
  180. //3 bit, 车轮1检测 0=无车 1=有车, AB特有
  181. //4 bit, 车轮2检测 0=无车 1=有车, AB特有
  182. //5 bit, 预留
  183. //6 bit, 预留
  184. //7 bit, 预留
  185. required int32 plc_passway_enable=9; //出入口 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车
  186. }
  187. //厦门搬运器状态消息
  188. message dispatch_node_statu{
  189. required CarrierStatu statu=1;
  190. required int32 idle_stop_floor=2; //空闲时停留位置
  191. required park_table running_pack_info=3; //正在执行的停车表单
  192. required pick_table running_pick_info=4; //正在执行的取车表单
  193. required int32 unit_id = 5; //单元号, 1~3
  194. required int32 plc_heartbeat = 6; //plc心跳信息
  195. required int32 plc_mode_status = 7; //plc状态的集合
  196. //0 bit, 手动模式, 维修模式
  197. //1 bit, 自动模式
  198. //2 bit, 自动运行中
  199. //3 bit, 复位
  200. //4 bit, 预留
  201. //5 bit, 预留
  202. //6 bit, 预留
  203. //7 bit, 预留
  204. required int32 plc_passway_status = 8; //plc 出入口状态
  205. //0 bit, 入口1 可进车
  206. //1 bit, 入口1 维护
  207. //2 bit, 入口2 可进车
  208. //3 bit, 入口2 维护
  209. //4 bit, 出口1 可出车
  210. //5 bit, 出口1 维护
  211. //6 bit, 出口2 可出车
  212. //7 bit, 出口2 维护
  213. required int32 plc_carrier_status = 9; //搬运器状态 0=故障 1=存车 2=取车 3=空闲 4=维护
  214. required int32 plc_inlet_1_status = 10; //入口1 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车
  215. required int32 plc_inlet_2_status = 11; //入口2 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车
  216. required int32 plc_outlet_3_status = 12; //出口3 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车
  217. required int32 plc_outlet_4_status = 13; //出口4 0=不可进车, 1=可进车, 2=维护不可进车, 3=维护可进车
  218. repeated dispatch_plc_passway_status dispatch_plc_passway_status_vector = 14; //plc出入口状态结构体, 数组下标0~1是入口, 数组下标2~3是出口
  219. }
  220. message terminal_node_statu{
  221. required int32 terminal_id = 1;
  222. required int32 import_id = 2;
  223. required string car_number = 3;
  224. }