wk 4 年之前
父節點
當前提交
7bb604b2df
共有 6 個文件被更改,包括 307 次插入506 次删除
  1. 72 66
      dispatch/carrier.cpp
  2. 64 73
      dispatch/catcher.cpp
  3. 2 0
      dispatch/dispatch_manager.cpp
  4. 35 28
      dispatch/dispatch_process.cpp
  5. 132 132
      dispatch/passageway.cpp
  6. 2 207
      main.cpp

+ 72 - 66
dispatch/carrier.cpp

@@ -160,83 +160,86 @@ Error_manager Carrier::update_device_communication()
 	Dispatch_communication::Carrier_status_from_plc_to_dispatch *tp_carrier_status_from_plc_to_dispatch =
 	& Dispatch_communication::get_instance_references().m_carrier_status_from_plc_to_dispatch[m_device_id];
 
-	//	int heartbeat = tp_carrier_status_from_plc_to_dispatch->m_heartbeat;
-	//	std::cout << " huli test :::: " << " heartbeat = " << heartbeat << std::endl;
-
-	//通过心跳帧来判断通信是否正常
-	if ( m_last_heartbeat != tp_carrier_status_from_plc_to_dispatch->m_heartbeat )
+	//设备异常  //注注注注注注注注意了, ==的优先级比&要高.
+	if ( (tp_carrier_status_from_plc_to_dispatch->m_safe_status & 0x02) == 0 )
 	{
-		m_last_heartbeat = tp_carrier_status_from_plc_to_dispatch->m_heartbeat;
-		m_status_updata_time = std::chrono::system_clock::now();
-
-//		int safe_status = tp_carrier_status_from_plc_to_dispatch->m_safe_status;
-//		std::cout << " huli test :::: " << " m_safe_status = " << safe_status << std::endl;
-//		int work_status = tp_carrier_status_from_plc_to_dispatch->m_work_status;
-//		std::cout << " huli test :::: " << " m_work_status = " << work_status << std::endl;
-
-		//设备异常  //注注注注注注注注意了, ==的优先级比&要高.
-		if ( (tp_carrier_status_from_plc_to_dispatch->m_safe_status & 0x02) == 0 )
-		{
-			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_EMERGENCY_STOP;
-			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
-		}
-		else if ( (tp_carrier_status_from_plc_to_dispatch->m_safe_status & 0x01) == 0 )
+		m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_EMERGENCY_STOP;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
+	}
+	else if ( (tp_carrier_status_from_plc_to_dispatch->m_safe_status & 0x01) == 0 )
+	{
+		m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_FAULT;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
+	}
+	else if ( (tp_carrier_status_from_plc_to_dispatch->m_safe_status & 0x08) == 0 )
+	{
+		m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_COLLISION;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
+	}
+		//正常状态
+	else
+	{
+		if (tp_carrier_status_from_plc_to_dispatch->m_work_status == 1)
 		{
-			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_FAULT;
-			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
+			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_WORKING;
 		}
-		else if ( (tp_carrier_status_from_plc_to_dispatch->m_safe_status & 0x08) == 0 )
+		else if(tp_carrier_status_from_plc_to_dispatch->m_work_status == 2)
 		{
-			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_COLLISION;
-			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
+			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_READY;
 		}
-			//正常状态
-		else
+		else if(tp_carrier_status_from_plc_to_dispatch->m_work_status == 0)
 		{
-			if (tp_carrier_status_from_plc_to_dispatch->m_work_status == 1)
-			{
-				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_WORKING;
-			}
-			else if(tp_carrier_status_from_plc_to_dispatch->m_work_status == 2)
-			{
-				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_READY;
-			}
-			else if(tp_carrier_status_from_plc_to_dispatch->m_work_status == 0)
-			{
-				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_UNKNOWN;
-			}
-
-			//故障恢复之后   E_FAULT  ->>  E_THREE_LEVEL_WORK
-			if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_FAULT )
-			{
-				m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
-			}
-			//else 流程状态维持不变
+			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_UNKNOWN;
 		}
 
-		m_actual_load_status = (Dispatch_device_base::Load_status)tp_carrier_status_from_plc_to_dispatch->m_actual_load_status;
-		m_actual_x = tp_carrier_status_from_plc_to_dispatch->m_actual_x;
-		m_actual_y = tp_carrier_status_from_plc_to_dispatch->m_actual_y;
-		if ( m_device_id == 2 )
+		//故障恢复之后   E_FAULT  ->>  E_THREE_LEVEL_WORK
+		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_FAULT )
 		{
-			m_actual_z = Dispatch_coordinates::get_instance_references().m_carrier_3th_floor_z;
-		}
-		else
-		{
-			m_actual_z = tp_carrier_status_from_plc_to_dispatch->m_actual_z;
+			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
 		}
-		m_actual_y1 = tp_carrier_status_from_plc_to_dispatch->m_actual_y1;
-		m_actual_y2 = tp_carrier_status_from_plc_to_dispatch->m_actual_y2;
-		m_actual_clamp_motion1 = (Dispatch_device_base::Clamp_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_clamp_motion1;
-		m_actual_clamp_motion2 = (Dispatch_device_base::Clamp_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_clamp_motion2;
-		m_actual_small_sports_car_motion = (Dispatch_device_base::Small_sports_car_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_small_sports_car_motion;
-		m_actual_joint_motion_x1 = (Dispatch_device_base::Joint_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_joint_motion_x1;
-		m_actual_joint_motion_x2 = (Dispatch_device_base::Joint_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_joint_motion_x2;
-		memcpy(m_actual_error_code, tp_carrier_status_from_plc_to_dispatch->m_actual_error_code, 50);
-		memcpy(m_actual_warning_code, tp_carrier_status_from_plc_to_dispatch->m_actual_warning_code, 50);
-		m_actual_error_description = (char*)(tp_carrier_status_from_plc_to_dispatch->m_actual_error_description-2);
-		update_actual_coordinates_id();
+		//else 流程状态维持不变
+	}
+
+	m_actual_load_status = (Dispatch_device_base::Load_status)tp_carrier_status_from_plc_to_dispatch->m_actual_load_status;
+	m_actual_x = tp_carrier_status_from_plc_to_dispatch->m_actual_x;
+	m_actual_y = tp_carrier_status_from_plc_to_dispatch->m_actual_y;
+	if ( m_device_id == 2 )
+	{
+		m_actual_z = Dispatch_coordinates::get_instance_references().m_carrier_3th_floor_z;
+	}
+	else
+	{
+		m_actual_z = tp_carrier_status_from_plc_to_dispatch->m_actual_z;
+	}
+	m_actual_y1 = tp_carrier_status_from_plc_to_dispatch->m_actual_y1;
+	m_actual_y2 = tp_carrier_status_from_plc_to_dispatch->m_actual_y2;
+	m_actual_clamp_motion1 = (Dispatch_device_base::Clamp_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_clamp_motion1;
+	m_actual_clamp_motion2 = (Dispatch_device_base::Clamp_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_clamp_motion2;
+	m_actual_small_sports_car_motion = (Dispatch_device_base::Small_sports_car_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_small_sports_car_motion;
+	m_actual_joint_motion_x1 = (Dispatch_device_base::Joint_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_joint_motion_x1;
+	m_actual_joint_motion_x2 = (Dispatch_device_base::Joint_motion)tp_carrier_status_from_plc_to_dispatch->m_actual_joint_motion_x2;
+	memcpy(m_actual_error_code, tp_carrier_status_from_plc_to_dispatch->m_actual_error_code, 50);
+	memcpy(m_actual_warning_code, tp_carrier_status_from_plc_to_dispatch->m_actual_warning_code, 50);
+	m_actual_error_description = (char*)(tp_carrier_status_from_plc_to_dispatch->m_actual_error_description-2);
+	update_actual_coordinates_id();
+
+
+	//通过心跳帧来判断通信是否正常
+	if ( m_last_heartbeat != tp_carrier_status_from_plc_to_dispatch->m_heartbeat )
+	{
+		m_last_heartbeat = tp_carrier_status_from_plc_to_dispatch->m_heartbeat;
+		m_status_updata_time = std::chrono::system_clock::now();
 
+//		std::cout << " 111111111111111111111111111 = " << 123 << std::endl;
+//		std::cout << " tp_carrier_request_from_dispatch_to_plc_for_key->m_request_key = " << tp_carrier_request_from_dispatch_to_plc_for_key->m_request_key << std::endl;
+//		std::cout << " tp_carrier_response_from_plc_to_dispatch->m_respons_key = " << tp_carrier_response_from_plc_to_dispatch->m_respons_key << std::endl;
+//		int a = tp_carrier_status_from_plc_to_dispatch->m_work_status;
+//		std::cout << " tp_carrier_status_from_plc_to_dispatch->m_work_status = " << a << std::endl;
+//		std::cout << " m_request_key = " << m_request_key << std::endl;
+//		std::cout << " m_respons_key = " << m_respons_key << std::endl;
+//		std::cout << " m_actual_device_status = " << m_actual_device_status << std::endl;
+//		std::cout << " 111111111111111111111111111 = " << 456 << std::endl;
+		
 		//重连之后,搬运器状态   E_DISCONNECT  ->>  E_THREE_LEVEL_WORK
 		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT )
 		{
@@ -312,6 +315,7 @@ Error_manager Carrier::check_and_read_memory_to_task(std::shared_ptr<Task_Base>
 			std::cout << " huli test :::: " << " m_request_wheelbase = " << m_request_wheelbase << std::endl;
 			std::cout << " huli test :::: " << " m_request_y1 = " << m_request_y1 << std::endl;
 			std::cout << " huli test :::: " << " m_request_y2 = " << m_request_y2 << std::endl;
+			std::cout << " m_request_joint_motion_x = " << m_request_joint_motion_x << std::endl;
 
 			std::cout << " huli test :::: " << " m_respons_key = " << m_respons_key << std::endl;
 			std::cout << " huli test :::: " << " m_respons_status = " << m_respons_status << std::endl;
@@ -322,7 +326,9 @@ Error_manager Carrier::check_and_read_memory_to_task(std::shared_ptr<Task_Base>
 			std::cout << " huli test :::: " << " m_respons_wheelbase = " << m_respons_wheelbase << std::endl;
 			std::cout << " huli test :::: " << " m_respons_y1 = " << m_respons_y1 << std::endl;
 			std::cout << " huli test :::: " << " m_respons_y2 = " << m_respons_y2 << std::endl;
+			std::cout << " m_respons_joint_motion_x = " << m_respons_joint_motion_x << std::endl;
 
+			std::cout << " m_actual_device_status = " << m_actual_device_status << std::endl;
 			std::cout << " huli test :::: " << " m_actual_x = " << m_actual_x << std::endl;
 			std::cout << " huli test :::: " << " m_actual_y = " << m_actual_y << std::endl;
 			std::cout << " huli test :::: " << " m_actual_z = " << m_actual_z << std::endl;

+ 64 - 73
dispatch/catcher.cpp

@@ -148,91 +148,82 @@ Error_manager Catcher::update_device_communication()
 	Dispatch_communication::Catcher_status_from_plc_to_dispatch *tp_catcher_status_from_plc_to_dispatch =
 	& Dispatch_communication::get_instance_references().m_catcher_status_from_plc_to_dispatch[m_device_id];
 
-//	int heartbeat = tp_catcher_status_from_plc_to_dispatch->m_heartbeat;
-//	std::cout << " huli test :::: " << " heartbeat = " << heartbeat << std::endl;
-
-	//通过心跳帧来判断通信是否正常
-	if ( m_last_heartbeat != tp_catcher_status_from_plc_to_dispatch->m_heartbeat )
+	//设备异常  //注注注注注注注注意了, ==的优先级比&要高.
+	if ( (tp_catcher_status_from_plc_to_dispatch->m_safe_status & 0x02) == 0 )
 	{
-		m_last_heartbeat = tp_catcher_status_from_plc_to_dispatch->m_heartbeat;
-		m_status_updata_time = std::chrono::system_clock::now();
-
-//		int safe_status = tp_catcher_status_from_plc_to_dispatch->m_safe_status;
-//		std::cout << " huli test :::: " << " m_safe_status = " << safe_status << std::endl;
-//		int work_status = tp_catcher_status_from_plc_to_dispatch->m_work_status;
-//		std::cout << " huli test :::: " << " m_work_status = " << work_status << std::endl;
-
-		//设备异常  //注注注注注注注注意了, ==的优先级比&要高.
-		if ( (tp_catcher_status_from_plc_to_dispatch->m_safe_status & 0x02) == 0 )
-		{
-			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_EMERGENCY_STOP;
-			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
-		}
-		else if ( (tp_catcher_status_from_plc_to_dispatch->m_safe_status & 0x01) == 0 )
-		{
-			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_FAULT;
-			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
-		}
-		else if ( (tp_catcher_status_from_plc_to_dispatch->m_safe_status & 0x08) == 0 )
-		{
-			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_COLLISION;
-			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
-		}
+		m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_EMERGENCY_STOP;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
+	}
+	else if ( (tp_catcher_status_from_plc_to_dispatch->m_safe_status & 0x01) == 0 )
+	{
+		m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_FAULT;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
+	}
+	else if ( (tp_catcher_status_from_plc_to_dispatch->m_safe_status & 0x08) == 0 )
+	{
+		m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_COLLISION;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
+	}
 		//正常状态
-		else
+	else
+	{
+		if (tp_catcher_status_from_plc_to_dispatch->m_work_status == 1)
 		{
-			if (tp_catcher_status_from_plc_to_dispatch->m_work_status == 1)
-			{
-				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_WORKING;
-			}
-			else if(tp_catcher_status_from_plc_to_dispatch->m_work_status == 2)
-			{
-				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_READY;
-			}
-			else if(tp_catcher_status_from_plc_to_dispatch->m_work_status == 0)
-			{
-				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_UNKNOWN;
-			}
-
-			//故障恢复之后   E_FAULT  ->>  E_THREE_LEVEL_WORK
-			if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_FAULT )
-			{
-				m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
-			}
-			//else 流程状态维持不变
+			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_WORKING;
 		}
-
-		m_actual_load_status = (Dispatch_device_base::Load_status)tp_catcher_status_from_plc_to_dispatch->m_actual_load_status;
-		m_actual_x = tp_catcher_status_from_plc_to_dispatch->m_actual_x;
-		m_actual_y = tp_catcher_status_from_plc_to_dispatch->m_actual_y;
-		m_actual_b = tp_catcher_status_from_plc_to_dispatch->m_actual_b;
-		m_actual_z = tp_catcher_status_from_plc_to_dispatch->m_actual_z;
-		m_actual_d1 = tp_catcher_status_from_plc_to_dispatch->m_actual_d1;
-		m_actual_d2 = tp_catcher_status_from_plc_to_dispatch->m_actual_d2;
-		m_actual_clamp_motion1 = (Dispatch_device_base::Clamp_motion)tp_catcher_status_from_plc_to_dispatch->m_actual_clamp_motion1;
-		m_actual_clamp_motion2 = (Dispatch_device_base::Clamp_motion)tp_catcher_status_from_plc_to_dispatch->m_actual_clamp_motion2;
-		m_actual_clamp_motion3 = (Dispatch_device_base::Clamp_motion)tp_catcher_status_from_plc_to_dispatch->m_actual_clamp_motion3;
-		m_actual_clamp_motion4 = (Dispatch_device_base::Clamp_motion)tp_catcher_status_from_plc_to_dispatch->m_actual_clamp_motion4;
-		memcpy(m_actual_error_code, tp_catcher_status_from_plc_to_dispatch->m_actual_error_code, 50);
-		memcpy(m_actual_warning_code, tp_catcher_status_from_plc_to_dispatch->m_actual_warning_code, 50);
-		m_actual_error_description = (char*)(tp_catcher_status_from_plc_to_dispatch->m_actual_error_description-2);
-		update_actual_coordinates_id();
-
-		//机器手朝向
-		if ( m_actual_b >= CATCHER_DIRECTION_POSITIVE_MIN && m_actual_b <= CATCHER_DIRECTION_POSITIVE_MAX )
+		else if(tp_catcher_status_from_plc_to_dispatch->m_work_status == 2)
 		{
-			m_catcher_direction = CATCHER_DIRECTION_POSITIVE;
+			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_READY;
 		}
-		else if ( m_actual_b >= CATCHER_DIRECTION_NEGATIVE_MIN && m_actual_b <= CATCHER_DIRECTION_NEGATIVE_MAX )
+		else if(tp_catcher_status_from_plc_to_dispatch->m_work_status == 0)
 		{
-			m_catcher_direction = CATCHER_DIRECTION_NEGATIVE;
+			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_UNKNOWN;
 		}
-		else
+
+		//故障恢复之后   E_FAULT  ->>  E_THREE_LEVEL_WORK
+		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_FAULT )
 		{
-			m_catcher_direction = CATCHER_DIRECTION_UNKNOW;
+			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
 		}
+		//else 流程状态维持不变
+	}
+
+	m_actual_load_status = (Dispatch_device_base::Load_status)tp_catcher_status_from_plc_to_dispatch->m_actual_load_status;
+	m_actual_x = tp_catcher_status_from_plc_to_dispatch->m_actual_x;
+	m_actual_y = tp_catcher_status_from_plc_to_dispatch->m_actual_y;
+	m_actual_b = tp_catcher_status_from_plc_to_dispatch->m_actual_b;
+	m_actual_z = tp_catcher_status_from_plc_to_dispatch->m_actual_z;
+	m_actual_d1 = tp_catcher_status_from_plc_to_dispatch->m_actual_d1;
+	m_actual_d2 = tp_catcher_status_from_plc_to_dispatch->m_actual_d2;
+	m_actual_clamp_motion1 = (Dispatch_device_base::Clamp_motion)tp_catcher_status_from_plc_to_dispatch->m_actual_clamp_motion1;
+	m_actual_clamp_motion2 = (Dispatch_device_base::Clamp_motion)tp_catcher_status_from_plc_to_dispatch->m_actual_clamp_motion2;
+	m_actual_clamp_motion3 = (Dispatch_device_base::Clamp_motion)tp_catcher_status_from_plc_to_dispatch->m_actual_clamp_motion3;
+	m_actual_clamp_motion4 = (Dispatch_device_base::Clamp_motion)tp_catcher_status_from_plc_to_dispatch->m_actual_clamp_motion4;
+	memcpy(m_actual_error_code, tp_catcher_status_from_plc_to_dispatch->m_actual_error_code, 50);
+	memcpy(m_actual_warning_code, tp_catcher_status_from_plc_to_dispatch->m_actual_warning_code, 50);
+	m_actual_error_description = (char*)(tp_catcher_status_from_plc_to_dispatch->m_actual_error_description-2);
+	update_actual_coordinates_id();
+
+	//机器手朝向
+	if ( m_actual_b >= CATCHER_DIRECTION_POSITIVE_MIN && m_actual_b <= CATCHER_DIRECTION_POSITIVE_MAX )
+	{
+		m_catcher_direction = CATCHER_DIRECTION_POSITIVE;
+	}
+	else if ( m_actual_b >= CATCHER_DIRECTION_NEGATIVE_MIN && m_actual_b <= CATCHER_DIRECTION_NEGATIVE_MAX )
+	{
+		m_catcher_direction = CATCHER_DIRECTION_NEGATIVE;
+	}
+	else
+	{
+		m_catcher_direction = CATCHER_DIRECTION_UNKNOW;
+	}
 
 
+	//通过心跳帧来判断通信是否正常
+	if ( m_last_heartbeat != tp_catcher_status_from_plc_to_dispatch->m_heartbeat )
+	{
+		m_last_heartbeat = tp_catcher_status_from_plc_to_dispatch->m_heartbeat;
+		m_status_updata_time = std::chrono::system_clock::now();
 
 		//重连之后,搬运器状态   E_DISCONNECT  ->>  E_THREE_LEVEL_WORK
 		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT )

+ 2 - 0
dispatch/dispatch_manager.cpp

@@ -342,6 +342,7 @@ Error_manager Dispatch_manager::execute_for_dispatch_control_request_msg(message
 			{
 				Dispatch_process::Dispatch_control_node t_dispatch_control_node;
 				iter->second->m_dispatch_control_node_map[t_dispatch_device_type] = t_dispatch_control_node;
+				iter->second->m_dispatch_control_node_map[t_dispatch_device_type].m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_READY;
 			}
 			iter->second->m_dispatch_control_node_map[t_dispatch_device_type].m_dispatch_control_request_msg = dispatch_control_request_msg;
 //			iter->second->m_dispatch_control_node_map[t_dispatch_device_type].m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_READY;
@@ -364,6 +365,7 @@ Error_manager Dispatch_manager::execute_for_dispatch_control_request_msg(message
 			{
 				Dispatch_process::Dispatch_control_node t_dispatch_control_node;
 				iter->second->m_dispatch_control_node_map[t_dispatch_device_type] = t_dispatch_control_node;
+				iter->second->m_dispatch_control_node_map[t_dispatch_device_type].m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_READY;
 			}
 			iter->second->m_dispatch_control_node_map[t_dispatch_device_type].m_dispatch_control_request_msg = dispatch_control_request_msg;
 //			iter->second->m_dispatch_control_node_map[t_dispatch_device_type].m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_READY;

+ 35 - 28
dispatch/dispatch_process.cpp

@@ -77,12 +77,12 @@ Error_manager Dispatch_process::Dispatch_process_uninit()
 	std::unique_lock<std::mutex> t_lock(m_lock);
 	for (auto iter = m_dispatch_control_node_map.begin(); iter != m_dispatch_control_node_map.end(); ++iter)
 	{
-	    if ( iter->second.mp_dispatch_task.get() != NULL )
-	    {
+		if ( iter->second.mp_dispatch_task.get() != NULL )
+		{
 			iter->second.mp_dispatch_task->set_task_statu(Task_Base::Task_statu::TASK_WITHDRAW);
 			iter->second.mp_dispatch_task.reset();
 			iter->second.mp_dispatch_device.reset();
-	    }
+		}
 	}
 	return Error_code::SUCCESS;
 }
@@ -94,12 +94,12 @@ Error_manager Dispatch_process::check_process_ready()
 
 	if ( m_dispatch_process_status == DISPATCH_PROCESS_READY )
 	{
-	    return Error_code::SUCCESS;
+		return Error_code::SUCCESS;
 	}
 	else
 	{
-	    return Error_manager(Error_code::DISPATCH_PROCESS_IS_NOT_READY, Error_level::MINOR_ERROR,
-	    					" Dispatch_process::check_process_ready() fun error ");
+		return Error_manager(Error_code::DISPATCH_PROCESS_IS_NOT_READY, Error_level::MINOR_ERROR,
+							 " Dispatch_process::check_process_ready() fun error ");
 	}
 }
 
@@ -260,7 +260,7 @@ Error_manager Dispatch_process::dispatch_control_motion()
 				break;
 			}
 			case DISPATCH_CONTROL_CONNECT_DEVICE:
-		    {
+			{
 				//连接调度设备
 				t_error = connect_dispatch_device(iter->first, iter->second);
 				if ( t_error !=Error_code::SUCCESS)
@@ -275,9 +275,9 @@ Error_manager Dispatch_process::dispatch_control_motion()
 					iter->second.m_time_to_send_control_response = std::chrono::system_clock::now();
 				}
 				break;
-		    }
-		    case DISPATCH_CONTROL_WORKING:
-		    {
+			}
+			case DISPATCH_CONTROL_WORKING:
+			{
 				//执行调度控制指令, 并根据完成情况给答复
 				t_error = excute_dispatch_control(iter->first, iter->second);
 				if ( t_error == Error_code::NODATA )
@@ -299,7 +299,7 @@ Error_manager Dispatch_process::dispatch_control_motion()
 					iter->second.m_dispatch_control_status = DISPATCH_CONTROL_TASK_WITHDRAW;
 				}
 				break;
-		    }
+			}
 			case DISPATCH_CONTROL_TASK_WITHDRAW://流程 收回任务单
 			{
 				//发送调度控制答复, 发给调度控制的
@@ -330,10 +330,10 @@ Error_manager Dispatch_process::dispatch_control_motion()
 
 				break;
 			}
-		    default:
-		    {
-		        break;   
-		    }    
+			default:
+			{
+				break;
+			}
 		}
 	}
 	return Error_code::SUCCESS;
@@ -350,7 +350,7 @@ Error_manager Dispatch_process::wait_dispatch_control_request_msg(int dispatch_d
 	}
 	else
 	{
-	    return Error_code::NODATA;
+		return Error_code::NODATA;
 	}
 	return Error_code::SUCCESS;
 }
@@ -362,7 +362,7 @@ Error_manager Dispatch_process::connect_dispatch_device(int dispatch_device_type
 	Error_manager t_error;
 
 	if ( dispatch_device_type == message::Dispatch_device_type::ROBOT_1 ||
-	dispatch_device_type == message::Dispatch_device_type::ROBOT_2 )
+		 dispatch_device_type == message::Dispatch_device_type::ROBOT_2 )
 	{
 		//找到对应的设备
 		if ( dispatch_device_type == message::Dispatch_device_type::ROBOT_1 )
@@ -409,8 +409,11 @@ Error_manager Dispatch_process::connect_dispatch_device(int dispatch_device_type
 			std::cout << " huli test :::: " << " tp_catcher->m_actual_device_status = " << tp_catcher->m_actual_device_status << std::endl;
 
 			char buf[1000] = {0};
-			sprintf(buf, "tp_catcher->m_actual_device_status device_status error, tp_catcher->check_status() = %s, tp_catcher->m_actual_device_status = %d", tp_catcher->check_status().to_string().c_str(), tp_catcher->m_actual_device_status);
-
+			sprintf(buf, "tp_catcher->m_actual_device_status device_status error, tp_catcher->check_status() = %s, tp_catcher->m_actual_device_status = %d, tp_catcher->m_request_key = %s, tp_catcher->m_respons_key = %s",
+					tp_catcher->check_status().to_string().c_str(),
+					tp_catcher->m_actual_device_status,
+					tp_catcher->m_request_key.c_str(),
+					tp_catcher->m_respons_key.c_str());
 
 			t_error = Error_manager(Error_code::DISPATCH_PROCESS_DEVICE_STATUS_ERROR, Error_level::MINOR_ERROR,
 									buf);
@@ -430,10 +433,10 @@ Error_manager Dispatch_process::connect_dispatch_device(int dispatch_device_type
 		std::cout << " huli test :::: " << " dispatch_control_node.m_destination_coordinates.z = " << dispatch_control_node.m_destination_coordinates.z << std::endl;
 		std::cout << " huli test :::: " << "*******************************************" << 123 << std::endl;
 	}
-	//搬运器的配置 准备工作
+		//搬运器的配置 准备工作
 	else if ( dispatch_device_type == message::Dispatch_device_type::CARRIER_1 ||
-		 dispatch_device_type == message::Dispatch_device_type::CARRIER_2 ||
-		 dispatch_device_type == message::Dispatch_device_type::CARRIER_3  )
+			  dispatch_device_type == message::Dispatch_device_type::CARRIER_2 ||
+			  dispatch_device_type == message::Dispatch_device_type::CARRIER_3  )
 	{
 		//找到对应的设备
 		if ( dispatch_device_type == message::Dispatch_device_type::CARRIER_1 )
@@ -488,7 +491,11 @@ Error_manager Dispatch_process::connect_dispatch_device(int dispatch_device_type
 			std::cout << " huli test :::: " << " tp_carrier->m_actual_device_status = " << tp_carrier->m_actual_device_status << std::endl;
 
 			char buf[1000] = {0};
-			sprintf(buf, "tp_carrier->m_actual_device_status device_status error, tp_carrier->check_status() = %s, tp_carrier->m_actual_device_status = %d", tp_carrier->check_status().to_string().c_str(), tp_carrier->m_actual_device_status);
+			sprintf(buf, "tp_carrier->m_actual_device_status device_status error, tp_carrier->check_status() = %s, tp_carrier->m_actual_device_status = %d, tp_carrier->m_request_key = %s, tp_carrier->m_respons_key = %s",
+					tp_carrier->check_status().to_string().c_str(),
+					tp_carrier->m_actual_device_status,
+					tp_carrier->m_request_key.c_str(),
+					tp_carrier->m_respons_key.c_str());
 
 			t_error = Error_manager(Error_code::DISPATCH_PROCESS_DEVICE_STATUS_ERROR, Error_level::MINOR_ERROR,
 									buf);
@@ -571,8 +578,8 @@ Error_manager Dispatch_process::excute_dispatch_control(int dispatch_device_type
 
 			default:
 			{
-			return Error_manager(Error_code::DISPATCH_PROCESS_TASK_STATUS_ERROR, Error_level::MINOR_ERROR,
-								 "Dispatch_process::excute_dispatch_control() fun error ");
+				return Error_manager(Error_code::DISPATCH_PROCESS_TASK_STATUS_ERROR, Error_level::MINOR_ERROR,
+									 "Dispatch_process::excute_dispatch_control() fun error ");
 				break;
 			}
 		}
@@ -702,7 +709,7 @@ Error_manager Dispatch_process::disconnect_dispatch_device(int dispatch_device_t
 		}
 		else
 		{
-		    return Error_code::NODATA;
+			return Error_code::NODATA;
 		}
 	}
 	return Error_code::SUCCESS;
@@ -2658,8 +2665,8 @@ Error_manager Dispatch_process::check_task_ex(std::shared_ptr<Task_Base> p_task,
 			return p_task->get_task_error_manager();
 		}
 		else if ( p_task->get_task_statu() == Task_Base::Task_statu::TASK_WORKING ||
-		p_task->get_task_statu() == Task_Base::Task_statu::TASK_SIGNED ||
-		p_task->get_task_statu() == Task_Base::Task_statu::TASK_CREATED)
+				  p_task->get_task_statu() == Task_Base::Task_statu::TASK_SIGNED ||
+				  p_task->get_task_statu() == Task_Base::Task_statu::TASK_CREATED)
 		{
 			//继续等待任务, 直到状态改变
 			return Error_code::NODATA;

+ 132 - 132
dispatch/passageway.cpp

@@ -117,152 +117,152 @@ Error_manager Passageway::update_device_communication()
 	//状态消息, plc->调度
 	Dispatch_communication::Passageway_status_from_plc_to_dispatch *tp_passageway_status_from_plc_to_dispatch =
 	& Dispatch_communication::get_instance_references().m_passageway_status_from_plc_to_dispatch[m_device_id];
-	//通过心跳帧来判断通信是否正常
-	if ( m_last_heartbeat != tp_passageway_status_from_plc_to_dispatch->m_heartbeat )
+	//设备异常  //注注注注注注注注意了, ==的优先级比&要高.
+	if ( (tp_passageway_status_from_plc_to_dispatch->m_safe_status & 0x02) == 0 )
 	{
-		m_last_heartbeat = tp_passageway_status_from_plc_to_dispatch->m_heartbeat;
-		m_status_updata_time = std::chrono::system_clock::now();
-
-		//设备异常  //注注注注注注注注意了, ==的优先级比&要高.
-		if ( (tp_passageway_status_from_plc_to_dispatch->m_safe_status & 0x02) == 0 )
-		{
-			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_EMERGENCY_STOP;
-			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
-		}
-		else if ( (tp_passageway_status_from_plc_to_dispatch->m_safe_status & 0x01) == 0 )
-		{
-			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_FAULT;
-			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
-		}
-		else//正常状态
-		{
-			if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x20)== 1)
-			{
-				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_WORKING;
-			}
-			else if( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x20)== 0)
-			{
-				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_READY;
-			}
-			else
-			{
-				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_UNKNOWN;
-			}
-
-
-			//故障恢复之后   E_FAULT  ->>  E_THREE_LEVEL_WORK
-			if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_FAULT )
-			{
-				m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
-			}
-			//else 流程状态维持不变
-		}
-
-		//数据解析
-		if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x01)== 1)
-		{
-			m_actual_inside_load_status = Dispatch_device_base::HAVE_CAR;
-		}
-		else
-		{
-			m_actual_inside_load_status = Dispatch_device_base::NO_CAR;
-		}
-		if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x02)== 1)
-		{
-			m_actual_outside_load_status = Dispatch_device_base::HAVE_CAR;
-		}
-		else
-		{
-			m_actual_outside_load_status = Dispatch_device_base::NO_CAR;
-		}
-		if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x04)== 1)
-		{
-			m_actual_front_overstep_the_boundary = Dispatch_device_base::BOUNDARY_OVERSTEP;
-		}
-		else
-		{
-			m_actual_front_overstep_the_boundary = Dispatch_device_base::BOUNDARY_NORMAL;
-		}
-		if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x08)== 1)
-		{
-			m_actual_back_overstep_the_boundary = Dispatch_device_base::BOUNDARY_OVERSTEP;
-		}
-		else
-		{
-			m_actual_back_overstep_the_boundary = Dispatch_device_base::BOUNDARY_NORMAL;
-		}
-		if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x10)== 1)
-		{
-			m_actual_height_overstep_the_boundary = Dispatch_device_base::BOUNDARY_OVERSTEP;
-		}
-		else
+		m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_EMERGENCY_STOP;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
+	}
+	else if ( (tp_passageway_status_from_plc_to_dispatch->m_safe_status & 0x01) == 0 )
+	{
+		m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_FAULT;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
+	}
+	else//正常状态
+	{
+		if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x20)== 1)
 		{
-			m_actual_height_overstep_the_boundary = Dispatch_device_base::BOUNDARY_NORMAL;
+			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_WORKING;
 		}
-		if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x20)== 1)
+		else if( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x20)== 0)
 		{
-			m_actual_outside_door_sensor = Dispatch_device_base::HAVE_CAR;
+			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_READY;
 		}
 		else
 		{
-			m_actual_outside_door_sensor = Dispatch_device_base::NO_CAR;
+			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_UNKNOWN;
 		}
 
-		if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x40)== 1 &&
-			 (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x80)== 0)
-		{
-			m_actual_inside_door_motion = Dispatch_device_base::DOOR_OPEN;
-		}
-		else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x40)== 0 &&
-				  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x80)== 1)
-		{
-			m_actual_inside_door_motion = Dispatch_device_base::DOOR_CLOSE;
-		}
-		else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x40)== 1 &&
-				  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x80)== 1)
-		{
-			m_actual_inside_door_motion = Dispatch_device_base::DOOR_ERROR;
-		}
-		else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x40)== 0 &&
-				  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x80)== 0)
-		{
-			m_actual_inside_door_motion = Dispatch_device_base::DOOR_UNKNOWN;
-		}
 
-		if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x01)== 1 &&
-			 (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x02)== 0)
+		//故障恢复之后   E_FAULT  ->>  E_THREE_LEVEL_WORK
+		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_FAULT )
 		{
-			m_actual_outside_door_motion = Dispatch_device_base::DOOR_OPEN;
-		}
-		else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x01)== 0 &&
-				  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x02)== 1)
-		{
-			m_actual_outside_door_motion = Dispatch_device_base::DOOR_CLOSE;
-		}
-		else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x01)== 1 &&
-				  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x02)== 1)
-		{
-			m_actual_outside_door_motion = Dispatch_device_base::DOOR_ERROR;
-		}
-		else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x01)== 0 &&
-				  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x02)== 0)
-		{
-			m_actual_outside_door_motion = Dispatch_device_base::DOOR_UNKNOWN;
+			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
 		}
+		//else 流程状态维持不变
+	}
 
-		if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x03)== 1)
-		{
-			m_actual_turntable_load_status = Dispatch_device_base::HAVE_CAR;
-		}
-		else
-		{
-			m_actual_turntable_load_status = Dispatch_device_base::NO_CAR;
-		}
+	//数据解析
+	if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x01)== 1)
+	{
+		m_actual_inside_load_status = Dispatch_device_base::HAVE_CAR;
+	}
+	else
+	{
+		m_actual_inside_load_status = Dispatch_device_base::NO_CAR;
+	}
+	if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x02)== 1)
+	{
+		m_actual_outside_load_status = Dispatch_device_base::HAVE_CAR;
+	}
+	else
+	{
+		m_actual_outside_load_status = Dispatch_device_base::NO_CAR;
+	}
+	if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x04)== 1)
+	{
+		m_actual_front_overstep_the_boundary = Dispatch_device_base::BOUNDARY_OVERSTEP;
+	}
+	else
+	{
+		m_actual_front_overstep_the_boundary = Dispatch_device_base::BOUNDARY_NORMAL;
+	}
+	if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x08)== 1)
+	{
+		m_actual_back_overstep_the_boundary = Dispatch_device_base::BOUNDARY_OVERSTEP;
+	}
+	else
+	{
+		m_actual_back_overstep_the_boundary = Dispatch_device_base::BOUNDARY_NORMAL;
+	}
+	if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x10)== 1)
+	{
+		m_actual_height_overstep_the_boundary = Dispatch_device_base::BOUNDARY_OVERSTEP;
+	}
+	else
+	{
+		m_actual_height_overstep_the_boundary = Dispatch_device_base::BOUNDARY_NORMAL;
+	}
+	if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x20)== 1)
+	{
+		m_actual_outside_door_sensor = Dispatch_device_base::HAVE_CAR;
+	}
+	else
+	{
+		m_actual_outside_door_sensor = Dispatch_device_base::NO_CAR;
+	}
+
+	if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x40)== 1 &&
+		 (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x80)== 0)
+	{
+		m_actual_inside_door_motion = Dispatch_device_base::DOOR_OPEN;
+	}
+	else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x40)== 0 &&
+			  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x80)== 1)
+	{
+		m_actual_inside_door_motion = Dispatch_device_base::DOOR_CLOSE;
+	}
+	else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x40)== 1 &&
+			  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x80)== 1)
+	{
+		m_actual_inside_door_motion = Dispatch_device_base::DOOR_ERROR;
+	}
+	else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x40)== 0 &&
+			  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status1 & 0x80)== 0)
+	{
+		m_actual_inside_door_motion = Dispatch_device_base::DOOR_UNKNOWN;
+	}
+
+	if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x01)== 1 &&
+		 (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x02)== 0)
+	{
+		m_actual_outside_door_motion = Dispatch_device_base::DOOR_OPEN;
+	}
+	else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x01)== 0 &&
+			  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x02)== 1)
+	{
+		m_actual_outside_door_motion = Dispatch_device_base::DOOR_CLOSE;
+	}
+	else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x01)== 1 &&
+			  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x02)== 1)
+	{
+		m_actual_outside_door_motion = Dispatch_device_base::DOOR_ERROR;
+	}
+	else if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x01)== 0 &&
+			  (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x02)== 0)
+	{
+		m_actual_outside_door_motion = Dispatch_device_base::DOOR_UNKNOWN;
+	}
+
+	if ( (tp_passageway_status_from_plc_to_dispatch->m_sensor_status2 & 0x03)== 1)
+	{
+		m_actual_turntable_load_status = Dispatch_device_base::HAVE_CAR;
+	}
+	else
+	{
+		m_actual_turntable_load_status = Dispatch_device_base::NO_CAR;
+	}
 
-		m_actual_turntable_direction = (Dispatch_device_base::Turntable_direction)tp_passageway_status_from_plc_to_dispatch->m_actual_turntable_direction;
-		memcpy(m_actual_error_code, tp_passageway_status_from_plc_to_dispatch->m_actual_error_code, 50);
-		memcpy(m_actual_warning_code, tp_passageway_status_from_plc_to_dispatch->m_actual_warning_code, 50);
-		m_actual_error_description = (char*)(tp_passageway_status_from_plc_to_dispatch->m_actual_error_description-2);
+	m_actual_turntable_direction = (Dispatch_device_base::Turntable_direction)tp_passageway_status_from_plc_to_dispatch->m_actual_turntable_direction;
+	memcpy(m_actual_error_code, tp_passageway_status_from_plc_to_dispatch->m_actual_error_code, 50);
+	memcpy(m_actual_warning_code, tp_passageway_status_from_plc_to_dispatch->m_actual_warning_code, 50);
+	m_actual_error_description = (char*)(tp_passageway_status_from_plc_to_dispatch->m_actual_error_description-2);
+
+	//通过心跳帧来判断通信是否正常
+	if ( m_last_heartbeat != tp_passageway_status_from_plc_to_dispatch->m_heartbeat )
+	{
+		m_last_heartbeat = tp_passageway_status_from_plc_to_dispatch->m_heartbeat;
+		m_status_updata_time = std::chrono::system_clock::now();
 
 		//重连之后,搬运器状态   E_DISCONNECT  ->>  E_THREE_LEVEL_WORK
 		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT )

+ 2 - 207
main.cpp

@@ -93,7 +93,7 @@ int main(int argc,char* argv[])
 
 	while (1)
 	{
-
+		std::this_thread::sleep_for(std::chrono::seconds(11111111));
 	}
 	return 0;
 #endif
@@ -152,72 +152,6 @@ int main(int argc,char* argv[])
 	std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
 	std::cout << " ---------------------------------------------------" << std::endl;
 
-	/*
-	char zxczxcxzc1 ;
-	std::cin >> zxczxcxzc1 ;
-	while ( 1 )
-	{
-		std::cout << " huli test :::: " << "  ===================================== "   << std::endl;
-		std::cout << " huli test :::: " << " tp_catcher_task->get_task_statu = " << tp_catcher_task->get_task_statu() << std::endl;
-		std::cout << " huli test :::: " << " tp_catcher_task->m_respons_status = " << tp_catcher_task->m_respons_status << std::endl;
-
-		std::cout << " huli test :::: " << " m_respons_key = " << tp_catcher_task->m_respons_key << std::endl;
-		std::cout << " huli test :::: " << " m_respons_status = " << tp_catcher_task->m_respons_status << std::endl;
-		std::cout << " huli test :::: " << " m_respons_x = " << tp_catcher_task->m_respons_x << std::endl;
-		std::cout << " huli test :::: " << " m_respons_y = " << tp_catcher_task->m_respons_y << std::endl;
-		std::cout << " huli test :::: " << " m_respons_b = " << tp_catcher_task->m_respons_b << std::endl;
-		std::cout << " huli test :::: " << " m_respons_z = " << tp_catcher_task->m_respons_z << std::endl;
-		std::cout << " huli test :::: " << " m_respons_d1 = " << tp_catcher_task->m_respons_d1 << std::endl;
-		std::cout << " huli test :::: " << " m_respons_d2 = " << tp_catcher_task->m_respons_d2 << std::endl;
-		std::cout << " huli test :::: " << " m_respons_wheelbase = " << tp_catcher_task->m_respons_wheelbase << std::endl;
-		std::cout << " huli test :::: " << " m_respons_clamp_motion = " << tp_catcher_task->m_respons_clamp_motion << std::endl;
-		std::cout << " ---------------------------------------------------" << std::endl;
-
-
-
-
-		std::cout << " huli test :::: " << " *********************************************** = " << std::endl;
-		std::cout << " huli test :::: " << " t_carrier_base.get_carrier_status() = " << t_catcher.get_dispatch_device_status() << std::endl;
-		int heat = t_catcher.m_last_heartbeat;
-		std::cout << " huli test :::: " << " m_last_heartbeat = " << heat << std::endl;
-		std::cout << " huli test :::: " << " m_actual_device_status = " << t_catcher.m_actual_device_status << std::endl;
-		std::cout << " huli test :::: " << " m_actual_load_status = " << t_catcher.m_actual_load_status << std::endl;
-		std::cout << " huli test :::: " << " m_actual_x = " << t_catcher.m_actual_x << std::endl;
-		std::cout << " huli test :::: " << " m_actual_y = " << t_catcher.m_actual_y << std::endl;
-		std::cout << " huli test :::: " << " m_actual_b = " << t_catcher.m_actual_b << std::endl;
-		std::cout << " huli test :::: " << " m_actual_z = " << t_catcher.m_actual_z << std::endl;
-		std::cout << " huli test :::: " << " m_actual_d1 = " << t_catcher.m_actual_d1 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_d2 = " << t_catcher.m_actual_d2 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_clamp_motion1 = " << t_catcher.m_actual_clamp_motion1 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_clamp_motion2 = " << t_catcher.m_actual_clamp_motion2 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_clamp_motion3 = " << t_catcher.m_actual_clamp_motion3 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_clamp_motion4 = " << t_catcher.m_actual_clamp_motion4 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_error_code = " <<  std::endl;
-		for (int i = 0; i < 50; ++i)
-		{
-			printf("0x%x ", t_catcher.m_actual_error_code[i]);
-		}
-		std::cout <<  std::endl;
-
-		std::cout << " huli test :::: " << " m_actual_warning_code = " <<  std::endl;
-		for (int i = 0; i < 50; ++i)
-		{
-			printf("0x%x ", t_catcher.m_actual_warning_code[i]);
-		}
-		std::cout <<  std::endl;
-		std::cout << " huli test :::: " << " m_actual_error_description = " << t_catcher.m_actual_error_description << std::endl;
-
-		std::cout << " huli test :::: " << " *********************************************** = " << std::endl;
-
-
-
-
-		std::this_thread::sleep_for(std::chrono::milliseconds(1000));
-
-	}
-*/
-
-
 
 
 
@@ -231,7 +165,6 @@ int main(int argc,char* argv[])
 	tp_carrier_task20->task_init(NULL,std::chrono::milliseconds(15000));
 	tp_carrier_task20->m_request_key = "x23456789012345678901234567890c0";
 	tp_carrier_task20->m_request_x = 1;
-//	tp_carrier_task20->m_request_x = 32600;
 	tp_carrier_task20->m_request_y = 3000;
 	tp_carrier_task20->m_request_z = 2525;
 	tp_carrier_task20->m_request_y1 = 4500;
@@ -247,75 +180,6 @@ int main(int argc,char* argv[])
 	std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
 	std::cout << " ---------------------------------------------------" << std::endl;
 
-	/*
-	char zxczxcxzc20 ;
-	std::cin >> zxczxcxzc20 ;
-	while ( 1 )
-	{
-		std::cout << " huli test :::: " << "  ===================================== "   << std::endl;
-		std::cout << " huli test :::: " << " tp_carrier_task->get_task_statu = " << tp_carrier_task->get_task_statu() << std::endl;
-		std::cout << " huli test :::: " << " tp_carrier_task->m_respons_status = " << tp_carrier_task->m_respons_status << std::endl;
-
-
-		std::cout << " huli test :::: " << " m_respons_key = " << tp_carrier_task->m_respons_key << std::endl;
-		std::cout << " huli test :::: " << " m_respons_status = " << tp_carrier_task->m_respons_status << std::endl;
-		std::cout << " huli test :::: " << " m_respons_x = " << tp_carrier_task->m_respons_x << std::endl;
-		std::cout << " huli test :::: " << " m_respons_y = " << tp_carrier_task->m_respons_y << std::endl;
-		std::cout << " huli test :::: " << " m_respons_z = " << tp_carrier_task->m_respons_z << std::endl;
-		std::cout << " huli test :::: " << " m_respons_y1 = " << tp_carrier_task->m_respons_y1 << std::endl;
-		std::cout << " huli test :::: " << " m_respons_y2 = " << tp_carrier_task->m_respons_y2 << std::endl;
-		std::cout << " huli test :::: " << " m_respons_clamp_motion = " << tp_carrier_task->m_respons_clamp_motion << std::endl;
-		std::cout << " huli test :::: " << " m_respons_joint_motion_x = " << tp_carrier_task->m_respons_joint_motion_x << std::endl;
-		std::cout << " huli test :::: " << " m_respons_joint_motion_y = " << tp_carrier_task->m_respons_joint_motion_y << std::endl;
-		std::cout << " huli test :::: " << " m_respons_space_id = " << tp_carrier_task->m_respons_space_id << std::endl;
-		std::cout << " huli test :::: " << " m_respons_floor_id = " << tp_carrier_task->m_respons_floor_id << std::endl;
-		std::cout << " huli test :::: " << " m_respons_wheelbase = " << tp_carrier_task->m_respons_wheelbase << std::endl;
-		std::cout << " ---------------------------------------------------" << std::endl;
-
-
-
-
-
-		std::cout << " huli test :::: " << " *********************************************** = " << std::endl;
-		std::cout << " huli test :::: " << " t_carrier_base.get_carrier_status() = " << t_carrier.get_dispatch_device_status() << std::endl;
-		int heat = t_carrier.m_last_heartbeat;
-		std::cout << " huli test :::: " << " m_last_heartbeat = " << heat << std::endl;
-		std::cout << " huli test :::: " << " m_actual_device_status = " << t_carrier.m_actual_device_status << std::endl;
-		std::cout << " huli test :::: " << " m_actual_load_status = " << t_carrier.m_actual_load_status << std::endl;
-		std::cout << " huli test :::: " << " m_actual_x = " << t_carrier.m_actual_x << std::endl;
-		std::cout << " huli test :::: " << " m_actual_y = " << t_carrier.m_actual_y << std::endl;
-		std::cout << " huli test :::: " << " m_actual_z = " << t_carrier.m_actual_z << std::endl;
-		std::cout << " huli test :::: " << " m_actual_y1 = " << t_carrier.m_actual_y1 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_y2 = " << t_carrier.m_actual_y2 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_clamp_motion1 = " << t_carrier.m_actual_clamp_motion1 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_clamp_motion2 = " << t_carrier.m_actual_clamp_motion2 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_small_sports_car_motion = " << t_carrier.m_actual_small_sports_car_motion << std::endl;
-		std::cout << " huli test :::: " << " m_actual_joint_motion_x1 = " << t_carrier.m_actual_joint_motion_x1 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_joint_motion_x2 = " << t_carrier.m_actual_joint_motion_x2 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_error_code = " <<  std::endl;
-		for (int i = 0; i < 50; ++i)
-		{
-			printf("0x%x ", t_carrier.m_actual_error_code[i]);
-		}
-		std::cout <<  std::endl;
-
-		std::cout << " huli test :::: " << " m_actual_warning_code = " <<  std::endl;
-		for (int i = 0; i < 50; ++i)
-		{
-			printf("0x%x ", t_carrier.m_actual_warning_code[i]);
-		}
-		std::cout <<  std::endl;
-		std::cout << " huli test :::: " << " m_actual_error_description = " << t_carrier.m_actual_error_description << std::endl;
-
-		std::cout << " huli test :::: " << " *********************************************** = " << std::endl;
-
-
-
-		std::this_thread::sleep_for(std::chrono::milliseconds(1000));
-
-	}
-*/
-
 
 	Carrier t_carrier21;
 	t_error = t_carrier21.dispatch_device_base_init(1);
@@ -326,7 +190,6 @@ int main(int argc,char* argv[])
 	Carrier_task * tp_carrier_task21 = (Carrier_task *)tp_task_Base21.get();
 	tp_carrier_task21->task_init(NULL,std::chrono::milliseconds(15000));
 	tp_carrier_task21->m_request_key = "x23456789012345678901234567890c1";
-//	tp_carrier_task21->m_request_x = 1;
 	tp_carrier_task21->m_request_x = 32600;
 	tp_carrier_task21->m_request_y = 3000;
 	tp_carrier_task21->m_request_z = 2525;
@@ -343,75 +206,6 @@ int main(int argc,char* argv[])
 	std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
 	std::cout << " ---------------------------------------------------" << std::endl;
 
-	/*
-	char zxczxcxzc21 ;
-	std::cin >> zxczxcxzc21 ;
-	while ( 1 )
-	{
-		std::cout << " huli test :::: " << "  ===================================== "   << std::endl;
-		std::cout << " huli test :::: " << " tp_carrier_task->get_task_statu = " << tp_carrier_task->get_task_statu() << std::endl;
-		std::cout << " huli test :::: " << " tp_carrier_task->m_respons_status = " << tp_carrier_task->m_respons_status << std::endl;
-
-
-		std::cout << " huli test :::: " << " m_respons_key = " << tp_carrier_task->m_respons_key << std::endl;
-		std::cout << " huli test :::: " << " m_respons_status = " << tp_carrier_task->m_respons_status << std::endl;
-		std::cout << " huli test :::: " << " m_respons_x = " << tp_carrier_task->m_respons_x << std::endl;
-		std::cout << " huli test :::: " << " m_respons_y = " << tp_carrier_task->m_respons_y << std::endl;
-		std::cout << " huli test :::: " << " m_respons_z = " << tp_carrier_task->m_respons_z << std::endl;
-		std::cout << " huli test :::: " << " m_respons_y1 = " << tp_carrier_task->m_respons_y1 << std::endl;
-		std::cout << " huli test :::: " << " m_respons_y2 = " << tp_carrier_task->m_respons_y2 << std::endl;
-		std::cout << " huli test :::: " << " m_respons_clamp_motion = " << tp_carrier_task->m_respons_clamp_motion << std::endl;
-		std::cout << " huli test :::: " << " m_respons_joint_motion_x = " << tp_carrier_task->m_respons_joint_motion_x << std::endl;
-		std::cout << " huli test :::: " << " m_respons_joint_motion_y = " << tp_carrier_task->m_respons_joint_motion_y << std::endl;
-		std::cout << " huli test :::: " << " m_respons_space_id = " << tp_carrier_task->m_respons_space_id << std::endl;
-		std::cout << " huli test :::: " << " m_respons_floor_id = " << tp_carrier_task->m_respons_floor_id << std::endl;
-		std::cout << " huli test :::: " << " m_respons_wheelbase = " << tp_carrier_task->m_respons_wheelbase << std::endl;
-		std::cout << " ---------------------------------------------------" << std::endl;
-
-
-
-
-
-		std::cout << " huli test :::: " << " *********************************************** = " << std::endl;
-		std::cout << " huli test :::: " << " t_carrier_base.get_carrier_status() = " << t_carrier.get_dispatch_device_status() << std::endl;
-		int heat = t_carrier.m_last_heartbeat;
-		std::cout << " huli test :::: " << " m_last_heartbeat = " << heat << std::endl;
-		std::cout << " huli test :::: " << " m_actual_device_status = " << t_carrier.m_actual_device_status << std::endl;
-		std::cout << " huli test :::: " << " m_actual_load_status = " << t_carrier.m_actual_load_status << std::endl;
-		std::cout << " huli test :::: " << " m_actual_x = " << t_carrier.m_actual_x << std::endl;
-		std::cout << " huli test :::: " << " m_actual_y = " << t_carrier.m_actual_y << std::endl;
-		std::cout << " huli test :::: " << " m_actual_z = " << t_carrier.m_actual_z << std::endl;
-		std::cout << " huli test :::: " << " m_actual_y1 = " << t_carrier.m_actual_y1 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_y2 = " << t_carrier.m_actual_y2 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_clamp_motion1 = " << t_carrier.m_actual_clamp_motion1 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_clamp_motion2 = " << t_carrier.m_actual_clamp_motion2 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_small_sports_car_motion = " << t_carrier.m_actual_small_sports_car_motion << std::endl;
-		std::cout << " huli test :::: " << " m_actual_joint_motion_x1 = " << t_carrier.m_actual_joint_motion_x1 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_joint_motion_x2 = " << t_carrier.m_actual_joint_motion_x2 << std::endl;
-		std::cout << " huli test :::: " << " m_actual_error_code = " <<  std::endl;
-		for (int i = 0; i < 50; ++i)
-		{
-			printf("0x%x ", t_carrier.m_actual_error_code[i]);
-		}
-		std::cout <<  std::endl;
-
-		std::cout << " huli test :::: " << " m_actual_warning_code = " <<  std::endl;
-		for (int i = 0; i < 50; ++i)
-		{
-			printf("0x%x ", t_carrier.m_actual_warning_code[i]);
-		}
-		std::cout <<  std::endl;
-		std::cout << " huli test :::: " << " m_actual_error_description = " << t_carrier.m_actual_error_description << std::endl;
-
-		std::cout << " huli test :::: " << " *********************************************** = " << std::endl;
-
-
-
-		std::this_thread::sleep_for(std::chrono::milliseconds(1000));
-
-	}
-*/
-
 
 	Carrier t_carrier22;
 	t_error = t_carrier22.dispatch_device_base_init(2);
@@ -439,6 +233,7 @@ int main(int argc,char* argv[])
 	std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
 	std::cout << " ---------------------------------------------------" << std::endl;
 
+
 	/*
 	char zxczxcxzc22 ;
 	std::cin >> zxczxcxzc22 ;