dispatch_control.proto 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. syntax = "proto2";
  2. package message;
  3. import "message_base.proto";
  4. //调度任务的类型
  5. enum Dispatch_task_type
  6. {
  7. DISPATCH_TASK_TYPE_UNKNOW = 0;
  8. DISPATCH_PLAN_STORE = 101; //总指令, 存车
  9. DISPATCH_PLAN_PICKUP = 102; //总指令, 取车
  10. //机器手的动作
  11. ROBOT_CATCH_CAR_FROM_INLET = 1; //机器手去入口抓车(例如:机器手移动到2号入口上方,然后下降到一楼抓车,最后上升到最上方)
  12. ROBOT_PUT_CAR_TO_CARRIER = 2; //机器手把车放到中跑车上面(例如:机器手下降到中跑车上放车,最后上升到最上方)(通过目标点 指定放到哪一个中跑车上)
  13. ROBOT_CATCH_CAR_FROM_CARRIER = 3; //机器手去中跑车上抓车(例如:机器手移动到1号中跑车上方,然后下降到中跑车抓车,最后上升到最上方)
  14. ROBOT_PUT_CAR_TO_OUTLET = 4; //机器手去出口放车(例如:机器手移动到3号出口上方,然后下降到一楼放车,最后上升到最上方)
  15. ROBOT_MOVE = 5; //机器手的自由移动(例如:机器手移动到6号出入口的上方4楼处,给其他设备避让)(不进行抓车和放车的操作)
  16. //搬运器的动作(升降电梯 中跑车 小跑车 三合一为搬运器)
  17. CARRIER_RECEIVE_CAR_FROM_ROBOT = 11; //搬运器从机器手上接车(例如:搬运器移动到2号入口的上方,然后等待机器手把车放到中跑车上,小跑车保持松夹杆状态)
  18. CARRIER_STORE_CAR_TO_PARKINGSPACE = 12; //搬运器把车存到停车位上(例如:小跑车夹车后,搬运器移动到56号停车位,然后小跑车将车存入车位,之后搬运器退回至电梯井)
  19. CARRIER_STORE_CAR_TO_PARKINGSPACE_EX = 122; //搬运器把车存到停车位上(例如:小跑车夹车后,搬运器移动到56号停车位,然后小跑车将车存入车位,之后搬运器退回至56车位外面即可)
  20. CARRIER_PICKUP_CAR_FROM_PARKINGSPACE = 13; //搬运器从停车位上取车(例如:搬运器移动到56号停车位,然后小跑车将车从车位取出,之后搬运器退回至电梯井)
  21. CARRIER_PICKUP_CAR_FROM_PARKINGSPACE_EX = 133; //搬运器从停车位上取车(例如:搬运器移动到56号停车位,然后小跑车将车从车位取出,之后搬运器退回至56车位外面即可)
  22. CARRIER_DELIVER_CAR_TO_ROBOT = 14; //搬运器把车交付给机器手(例如:搬运器移动到3号入口的上方,小跑车松夹杆,然后等待机器手把车从中跑车上取走)
  23. CARRIER_MOVE = 15; //搬运器的自由移动(可以提前到2楼来准备接车,或者为了避让就退回至电梯井)(小跑车不进行取车和存车)
  24. //通道口的动作(1楼出入口的动作)
  25. PASSAGEWAY_OPEN_OUTSIDE_DOOR = 21; //通道口开外侧大门(0~7号出入口都有)
  26. PASSAGEWAY_CLOSE_OUTSIDE_DOOR = 22; //通道口关外侧大门(0~7号出入口都有)
  27. PASSAGEWAY_OPEN_INSIDE_DOOR = 23; //通道口开内侧大门(0号和7号出入口特有的指令)
  28. PASSAGEWAY_CLOSE_INSIDE_DOOR = 24; //通道口关内侧大门(0号和7号出入口特有的指令)
  29. PASSAGEWAY_ROTATE_TURNTABLE_TO_CARRIER = 25; //通道口旋转转盘到搬运器(对接小跑车)
  30. PASSAGEWAY_ROTATE_TURNTABLE_TO_OUTLET = 26; //通道口旋转转盘到出口
  31. //结束指令
  32. DISPATCH_FINISH = 30; //整个调度流程完成, 正常完成(之后调度向总控汇报 正常完成任务)
  33. DISPATCH_CANCEL = 31; //整个调度流程取消, 异常完成(之后调度向总控汇报 异常完成任务, 并把错误码往上报)
  34. DISPATCH_PAUSE = 40; //调度暂停, 可以指定某一个设备暂时 停止动作,直接进入空闲状态(之后再次发送上面的正常指令,可以让其执行新的动作)
  35. DISPATCH_RESERVED = 50; //预留
  36. //存车顺序 (1和15) ->11->2->12
  37. //1~6取车顺序 13-> (14和5) ->3->15->4
  38. //7取车顺序 13->12
  39. //3楼存车 (5和15) ->1->15 -> (5和11) ->2->12
  40. //3楼取车 (5和15) ->13->14->3-> (15和5) ->4->15
  41. //例如:机器手和3楼搬运器在2号入口上方, 执行存车指令 4号入口 -> 3楼27号车位.
  42. //同时抢占 搬运器和机器手的资源
  43. //5和15 机器手去1404 搬运器去1303
  44. //1 机器手去1104抓车, 并返回最高点
  45. //15 搬运器去1304
  46. //5和11 机器手去42 搬运器去27准备接车
  47. //2 机器手把车放到中跑车上27
  48. //12 搬运器把车存入27号车位
  49. //同时释放 搬运器和机器手的资源
  50. //例如:机器手和3楼搬运器在2号入口上方, 执行取车指令 3楼27号车位 -> 4号出口.
  51. //同时抢占 搬运器和机器手的资源
  52. //5和15 机器手去42 搬运器去27
  53. //13 搬运器去27号车位取车
  54. //14 搬运器去27号车位 把车交给机器手
  55. //3 机器手去27号 抓车
  56. //5和15 机器手去1404 搬运器去1305
  57. //4 机器手把车放到1104出口, 并返回最高点
  58. //15 搬运器去1304
  59. //同时释放 搬运器和机器手的资源
  60. }
  61. //调度设备的类型
  62. enum Dispatch_device_type
  63. {
  64. ROBOT_1 = 101; //一号出口的专用机器手(只能负责1号出口的取车)(目前没有安装,暂时不考虑)
  65. ROBOT_2 = 102; //中间的大型机器手 (可以负责1~6号出入口的停车和取车)
  66. CARRIER_1 = 200; //左侧0号电梯井的搬运器(升降电梯 中跑车 小跑车 三合一为搬运器)
  67. CARRIER_2 = 207; //右侧7号电梯井的搬运器(升降电梯 中跑车 小跑车 三合一为搬运器)
  68. CARRIER_3 = 203; //中间3楼的搬运器(中跑车 小跑车 二合一为搬运器)(没有电梯, 只能在3楼活动)
  69. PASSAGEWAY_0 = 300; //0号出口(在左侧电梯井, 只能取车)(暂时不存在)
  70. PASSAGEWAY_1 = 301; //1号出入口
  71. PASSAGEWAY_2 = 302; //2号出入口
  72. PASSAGEWAY_3 = 303; //3号出入口
  73. PASSAGEWAY_4 = 304; //4号出入口
  74. PASSAGEWAY_5 = 305; //5号出入口
  75. PASSAGEWAY_6 = 306; //6号出入口
  76. PASSAGEWAY_7 = 307; //7号出口(在右侧电梯井, 只能取车)
  77. }
  78. //调度设备的目标状态, 设备完成 调度控制的任务请求 之后 将设备状态改为这个
  79. enum Dispatch_device_target_status
  80. {
  81. E_TARGET_STATUS_UNKNOW = 0; //未知
  82. E_TARGET_STATUS_IDLE = 1; //空闲
  83. E_TARGET_STATUS_BUSY = 2; //工作正忙
  84. E_TARGET_STATUS_READY = 3; //准备就绪
  85. E_TARGET_STATUS_WAIT = 4; //等待
  86. }
  87. //调度设备的任务状态
  88. enum Dispatch_device_task_status
  89. {
  90. E_TASK_CREATED = 0; //任务创建; 发送方
  91. E_TASK_ISSUE = 1; //任务下发; 发送方
  92. E_TASK_SIGNED = 2; //已签收; 接收方
  93. E_TASK_WORKING = 3; //处理中; 接收方
  94. E_TASK_OVER = 4; //已结束; 接收方
  95. E_TASK_STOP = 5; //任务暂停; 接收方
  96. E_TASK_ERROR = 11; //任务错误; 接收方
  97. E_TASK_CANCEL = 21; //任务取消; 发送方
  98. E_TASK_DEAD = 22; //任务死亡; 接收方
  99. E_TASK_WITHDRAW = 31; //任务收回; 发送方
  100. E_TASK_FREE = 32; //任务释放; 接收方
  101. //发送方 写 E_TASK_CREATED
  102. //接收方 收到之后 写 E_TASK_WORKING
  103. //接受方每隔1秒 周期性反馈消息
  104. //接受方完成任务后, 最后一次发送 E_TASK_OVER
  105. }
  106. //调度总规划的请求, 用于启动整个调度算法(调度管理->调度算法)
  107. message Dispatch_plan_request_msg
  108. {
  109. required Base_info base_info=1; //消息类型
  110. required string command_key=2; //指令唯一标识符id
  111. optional Dispatch_task_type dispatch_task_type=3; //调度任务的类型
  112. optional int32 dispatch_source=4; //调度的起点,源头(暂时不写)(留给以后使用)
  113. optional int32 dispatch_destination=5; //调度的终点,目的地(一般必须写, 特殊指令可以不写)
  114. optional Error_manager error_manager = 6; //错误码,也是任务的完成结果(如果为0,则表示成功完成任务,非0则任务失败)
  115. }
  116. //调度总规划的答复(调度算法->调度管理)
  117. message Dispatch_plan_response_msg
  118. {
  119. required Base_info base_info=1; //消息类型
  120. required string command_key=2; //指令唯一标识符id
  121. optional Dispatch_task_type dispatch_task_type=3; //调度任务的类型
  122. optional int32 dispatch_source=4; //调度的起点,源头(可以不写)
  123. optional int32 dispatch_destination=5; //调度的终点,目的地(必写,如果不写 任务就不会执行)
  124. optional Error_manager error_manager = 6; //错误码,也是任务的完成结果(如果为0,则表示成功完成任务,非0则任务失败)
  125. }
  126. //调度控制的任务请求(调度算法->调度管理)
  127. message Dispatch_control_request_msg
  128. {
  129. required Base_info base_info=1; //消息类型
  130. required string command_key=2; //指令唯一标识符id
  131. required Dispatch_task_type dispatch_task_type=3; //调度任务的类型
  132. optional Dispatch_device_type dispatch_device_type=4; //调度设备的类型
  133. optional int32 dispatch_source=5; //调度的起点,源头(暂时不写)(留给以后使用)
  134. optional int32 dispatch_destination=6; //调度的终点,目的地(一般必须写, 特殊指令可以不写)
  135. optional Error_manager error_manager = 7; //错误码,也是任务的完成结果(如果为0,则表示成功完成任务,非0则任务失败)
  136. optional Dispatch_device_target_status dispatch_device_target_status = 8; //调度设备的目标状态
  137. optional Dispatch_device_task_status dispatch_device_task_status = 9;//调度设备的任务状态
  138. }
  139. //调度控制的任务答复(调度管理->调度算法)
  140. message Dispatch_control_response_msg
  141. {
  142. required Base_info base_info=1; //消息类型
  143. required string command_key=2; //指令唯一标识符id
  144. optional Dispatch_task_type dispatch_task_type=3; //调度任务的类型
  145. optional Dispatch_device_type dispatch_device_type=4; //调度设备
  146. optional int32 dispatch_source=5; //调度的起点,源头(可以不写)
  147. optional int32 dispatch_destination=6; //调度的终DISPATCH_FINISH点,目的地(必写,如果不写 任务就不会执行)
  148. optional Error_manager error_manager = 7; //错误码,也是任务的完成结果(如果为0,则表示成功完成任务,非0则任务失败)
  149. optional Dispatch_device_target_status dispatch_device_target_status = 8; //调度设备的目标状态
  150. optional Dispatch_device_task_status dispatch_device_task_status = 9;//调度设备的任务状态
  151. }
  152. /*
  153. dispatch_source 和 dispatch_destination 的表示含义
  154. 1~165 2楼~12楼的停车位
  155. 1100 0号出口(在一楼)(目前没有)
  156. 1101~1106 1~6号出入口 (在一楼)
  157. 1107 7号出口(在一楼)
  158. 1201~1206 1~6号出入口上方2楼处
  159. 1301~1306 1~6号出入口上方3楼处
  160. 1401~1406 1~6号出入口上方4楼处
  161. 2101~2112 左侧电梯井(1楼~12楼)(一号搬运器的待机点)
  162. 2201~2212 右侧电梯井(1楼~12楼)(二号搬运器的待机点)
  163. */