ソースを参照

同步调度消息

zx 4 年 前
コミット
c6ecad3dd7

+ 14 - 7
dispatch/dispatch_communicator.cpp

@@ -111,11 +111,11 @@ Error_manager Dispatch_communicator::check_entrance_statu(int terminal_id)
     {
         return Error_manager(ERROR,MINOR_ERROR,"调度节点通讯断开");
     }
-    if(m_storing_dispatch_statu_msg_map[terminal_id].dispatch_manager_status()==message::E_DISPATCH_MANAGER_FAULT)
+    if(m_storing_dispatch_statu_msg_map[terminal_id].terminal_status()==message::E_TERMINAL_FAULT)
     {
         return Error_manager(ERROR,MINOR_ERROR,"调度节点故障");
     }
-    if(m_storing_dispatch_statu_msg_map[terminal_id].dispatch_manager_status()==message::E_DISPATCH_MANAGER_UNKNOW)
+    if(m_storing_dispatch_statu_msg_map[terminal_id].terminal_status()==message::E_TERMINAL_UNKNOW)
     {
         return Error_manager(ERROR,MINOR_ERROR,"调度节点状态未知");
     }
@@ -136,11 +136,11 @@ Error_manager Dispatch_communicator::check_export_statu(int terminal_id)
     {
         return Error_manager(ERROR,MINOR_ERROR,"调度节点通讯断开");
     }
-    if(m_picking_dispatch_statu_msg_map[terminal_id].dispatch_manager_status()==message::E_DISPATCH_MANAGER_FAULT)
+    if(m_picking_dispatch_statu_msg_map[terminal_id].terminal_status()==message::E_TERMINAL_FAULT)
     {
         return Error_manager(ERROR,MINOR_ERROR,"调度节点故障");
     }
-    if(m_picking_dispatch_statu_msg_map[terminal_id].dispatch_manager_status()==message::E_DISPATCH_MANAGER_UNKNOW)
+    if(m_picking_dispatch_statu_msg_map[terminal_id].terminal_status()==message::E_TERMINAL_UNKNOW)
     {
         return Error_manager(ERROR,MINOR_ERROR,"调度节点状态未知");
     }
@@ -201,21 +201,28 @@ Error_manager Dispatch_communicator::execute_msg(Communication_message* p_msg)
             ///测量系统状态
         case Communication_message::eDispatch_status_msg:
         {
-            message::Dispatch_status_msg statu_msg;
+            message::Dispatch_terminal_status_msg statu_msg;
             if(statu_msg.ParseFromString(p_msg->get_message_buf())==false)
             {
                 return Error_manager(ERROR,CRITICAL_ERROR,"调度模块状态消息解析失败");
             }
-            if(statu_msg.dispatch_motion_direction()==message::E_STORE_CAR)
+            if(statu_msg.passageway_direction()==message::E_INLET)
             {
                 m_storing_dispatch_statu_msg_map[statu_msg.terminal_id()]=statu_msg;
                 m_storing_dispatch_statu_time_map[statu_msg.terminal_id()]=std::chrono::system_clock::now();
             }
-            if(statu_msg.dispatch_motion_direction()==message::E_PICKUP_CAR)
+            if(statu_msg.passageway_direction()==message::E_OUTLET)
             {
                 m_picking_dispatch_statu_msg_map[statu_msg.terminal_id()]=statu_msg;
                 m_picking_dispatch_statu_time_map[statu_msg.terminal_id()]=std::chrono::system_clock::now();
             }
+            if(statu_msg.passageway_direction()==message::E_BILATERAL)
+            {
+                m_storing_dispatch_statu_msg_map[statu_msg.terminal_id()]=statu_msg;
+                m_storing_dispatch_statu_time_map[statu_msg.terminal_id()]=std::chrono::system_clock::now();
+                m_picking_dispatch_statu_msg_map[statu_msg.terminal_id()]=statu_msg;
+                m_picking_dispatch_statu_time_map[statu_msg.terminal_id()]=std::chrono::system_clock::now();
+            }
             break;
         }
     }

+ 2 - 2
dispatch/dispatch_communicator.h

@@ -49,11 +49,11 @@ private:
     thread_safe_map<std::string,message::Dispatch_response_msg>          m_response_table;
 
     //停车调度模块状态
-    thread_safe_map<int,message::Dispatch_status_msg>                     m_storing_dispatch_statu_msg_map;
+    thread_safe_map<int,message::Dispatch_terminal_status_msg>                     m_storing_dispatch_statu_msg_map;
     thread_safe_map<int,std::chrono::system_clock::time_point>            m_storing_dispatch_statu_time_map;
 
     //取车调度模块状态
-    thread_safe_map<int,message::Dispatch_status_msg>                     m_picking_dispatch_statu_msg_map;
+    thread_safe_map<int,message::Dispatch_terminal_status_msg>                     m_picking_dispatch_statu_msg_map;
     thread_safe_map<int,std::chrono::system_clock::time_point>            m_picking_dispatch_statu_time_map;
 };
 

ファイルの差分が大きいため隠しています
+ 975 - 225
message/dispatch_message.pb.cc


ファイルの差分が大きいため隠しています
+ 700 - 149
message/dispatch_message.pb.h


+ 73 - 11
message/dispatch_message.proto

@@ -13,7 +13,18 @@ enum Dispatch_manager_status
     E_DISPATCH_MANAGER_FAULT               = 10;    //故障
 }
 
-//搬运器状态, 楚天项目就是AGV系统
+//抓车器状态, 楚天项目就是AGV系统
+enum Catcher_status
+{
+    E_CATCHER_UNKNOW               = 0;     //未知
+    E_CATCHER_READY                = 1;     //准备,待机
+    E_CATCHER_STORE                = 2;	    //正在存车
+    E_CATCHER_PICKUP               = 3;	    //正在取车
+
+    E_CATCHER_FAULT                = 10;     //故障
+}
+
+//搬运器状态, 楚天项目就是中跑车
 enum Carrier_status
 {
     E_CARRIER_UNKNOW               = 0;     //未知
@@ -24,32 +35,85 @@ enum Carrier_status
     E_CARRIER_FAULT                = 10;     //故障
 }
 
+//升降机状态, 楚天项目就是电梯
+enum Elevator_status
+{
+    E_ELEVATOR_UNKNOW               = 0;     //未知
+    E_ELEVATOR_READY                = 1;     //准备,待机
+    E_ELEVATOR_STORE                = 2;	    //正在存车
+    E_ELEVATOR_PICKUP               = 3;	    //正在取车
+
+    E_ELEVATOR_FAULT                = 10;     //故障
+}
 
-//搬运器位置. AGV或者抓取机器人的坐标
-message Carrier_position
+//通道口状态, 楚天项目就是一楼的出入口
+enum Passageway_status
+{
+    E_PASSAGEWAY_UNKNOW               = 0;     //未知
+    E_PASSAGEWAY_READY                = 1;     //准备,待机
+    E_PASSAGEWAY_STORE                = 2;	    //正在存车
+    E_PASSAGEWAY_PICKUP               = 3;	    //正在取车
+
+    E_PASSAGEWAY_FAULT                = 10;     //故障
+}
+
+//终端流程状态, 表示这个出入口到楼上停车位之间的所有设备总状态
+enum Terminal_status
+{
+    E_TERMINAL_UNKNOW               = 0;     //未知
+    E_TERMINAL_READY                = 1;     //准备,待机
+    E_TERMINAL_STORE                = 2;	    //正在存车
+    E_TERMINAL_PICKUP               = 3;	    //正在取车
+
+    E_TERMINAL_FAULT                = 10;     //故障
+}
+
+//通道口属性, 出入口的方向属性, 表示这个通道允许停车或者取车
+enum Passageway_direction
+{
+    E_INLET             =0;         //入口
+    E_OUTLET            =1;         //出口
+    E_BILATERAL         =2;         //双向口
+}
+
+//设备坐标
+message Device_position
 {
     required float x=1;             //X轴坐标
     required float y=2;             //Y轴坐标
     required float z=3;             //Z轴坐标, 楚天AGV和电梯一一对应,所以Z轴就用电梯高度表示
 }
 
-//调度方向, 停车取车
+//调度方向, 停车取车, 表示正在执行的动作
 enum Dispatch_motion_direction
 {
     E_STORE_CAR             =0;         //停车, 出入口 -> 停车位
     E_PICKUP_CAR            =1;         //取车, 停车位 -> 出入口
 }
 
-//搬运机构各个零部件状态
-message Dispatch_status_msg
+//调度管理总管理的状态
+message Dispatch_manager_status_msg
 {
     required Base_info                  base_info=1;                    //消息类型
-    required int32                      terminal_id=2;
-    required Dispatch_manager_status    dispatch_manager_status = 3;        //调度管理 的状态
-    required Dispatch_motion_direction  dispatch_motion_direction=4;        //停车口或取车口
+    required int32                      dispatch_id=2;                  //调度管理模块 id
+    required Dispatch_manager_status    dispatch_manager_status = 3;    //调度管理模块 状态
+
+    repeated Catcher_status             catcher_status = 4;             //抓车器状态, 楚天项目就是AGV系统
+    repeated Carrier_status             carrier_status = 5;             //搬运器状态, 楚天项目就是中跑车
+    repeated Elevator_status            elevator_status = 6;            //升降机状态, 楚天项目就是电梯
+    repeated Passageway_status          passageway_status = 7;          //通道口状态, 楚天项目就是一楼的出入口
+}
 
+//调度模块终端出入口的状态
+message Dispatch_terminal_status_msg
+{
+    required Base_info                  base_info=1;                    //消息类型
+    required int32                      terminal_id=2;                  //终端id
+    required Terminal_status            terminal_status = 3;            //终端流程状态, 表示这个出入口到楼上停车位之间的所有设备总状态
+    required Passageway_direction       passageway_direction = 4;       //通道口属性, 出入口的方向属性, 表示这个通道允许停车或者取车
 }
 
+
 //执行搬运请求
 message Dispatch_request_msg
 {
@@ -69,5 +133,3 @@ message Dispatch_response_msg
     required string                     command_key=2;                   //指令唯一标识符id
     required Error_manager              error_manager = 3;
 }
-
-