Ver código fonte

20210421, 新建调度B方案2

huli 4 anos atrás
pai
commit
7cb19bed12

+ 15 - 15
dispatch/carrier.cpp

@@ -33,7 +33,7 @@ Carrier::Carrier()
 
 	m_status_updata_time = std::chrono::system_clock::now();
 	m_last_heartbeat = 0;			//上一次的心跳
-	m_actual_device_status = DEVICE_UNKNOWN;			//搬运器的硬件设备状态
+	m_actual_device_status = HARDWARE_DEVICE_UNKNOWN;			//搬运器的硬件设备状态
 	m_actual_load_status = LOAD_UNKNOWN;				//搬运器的负载状态, 小跑车上面是否有车.
 	m_actual_x = 0;					//搬运器坐标x轴,
 	m_actual_y = 0;					//搬运器坐标y轴,
@@ -177,39 +177,39 @@ Error_manager Carrier::update_device_communication()
 		//设备异常  //注注注注注注注注意了, ==的优先级比&要高.
 		if ( (tp_carrier_status_from_plc_to_dispatch->m_safe_status & 0x02) == 0 )
 		{
-			m_actual_device_status = Dispatch_device_base::DEVICE_EMERGENCY_STOP;
-			m_dispatch_device_status = Dispatch_device_base::E_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_carrier_status_from_plc_to_dispatch->m_safe_status & 0x01) == 0 )
 		{
-			m_actual_device_status = Dispatch_device_base::DEVICE_FAULT;
-			m_dispatch_device_status = Dispatch_device_base::E_FAULT;
+			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::DEVICE_COLLISION;
-			m_dispatch_device_status = Dispatch_device_base::E_FAULT;
+			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::DEVICE_WORKING;
+				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::DEVICE_READY;
+				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::DEVICE_UNKNOWN;
+				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_UNKNOWN;
 			}
 
 			//故障恢复之后   E_FAULT  ->>  E_THREE_LEVEL_WORK
-			if ( m_dispatch_device_status == Dispatch_device_base::E_FAULT )
+			if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_FAULT )
 			{
-				m_dispatch_device_status = Dispatch_device_base::E_THREE_LEVEL_WORK;
+				m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
 			}
 			//else 流程状态维持不变
 		}
@@ -238,14 +238,14 @@ Error_manager Carrier::update_device_communication()
 		update_actual_coordinates_id();
 
 		//重连之后,搬运器状态   E_DISCONNECT  ->>  E_THREE_LEVEL_WORK
-		if ( m_dispatch_device_status == Dispatch_device_base::E_DISCONNECT )
+		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT )
 		{
-			m_dispatch_device_status = Dispatch_device_base::E_THREE_LEVEL_WORK;
+			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
 		}
 	}
 	else if(std::chrono::system_clock::now() - m_status_updata_time > std::chrono::milliseconds(COMMUNICATION_OVER_TIME_MS))
 	{
-		m_dispatch_device_status = Dispatch_device_base::E_DISCONNECT;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT;
 	}
 	//else 继续等待,直到消息刷新或者超时.
 

+ 0 - 853
dispatch/carrier_base.cpp

@@ -1,853 +0,0 @@
-//
-// Created by huli on 2020/7/20.
-//
-
-#include "carrier_base.h"
-#include "dispatch_communication.h"
-/*
-Carrier_base::Carrier_base()
-{
-	m_carrier_status = E_UNKNOW;
-	m_carrier_id = -1;
-
-	m_request_x = 0;				//搬运器坐标x轴, 中跑车控制横向移动
-	m_request_y = 0;				//搬运器坐标y轴, 小跑车控制纵向移动
-	m_request_z = 0;				//搬运器坐标z轴, 电梯控制上下移动
-	m_request_space_id = 0;			//搬运器空间位置的id.
-	m_request_y1 = 0;				//搬运器坐标y1轴, 小跑车控制纵向移动(前轮抓杆)
-	m_request_y2 = 0;				//搬运器坐标y2轴, 小跑车控制纵向移动(后轮抓杆)
-	m_request_wheelbase = 0;		//搬运器小跑车的抓车杆前后轮距.
-	m_request_clamp_motion = E_CLAMP_NO_ACTION;		//小跑车夹车杆. 0=无动作,1=夹紧,2=松开
-	m_request_joint_motion = E_JOINT_NO_ACTION;		//电梯与X轴的横向轨道对接,0=无动作,
-
-	m_respons_status = RESPONS_WORKING;
-	m_respons_x = 0;				//搬运器坐标x轴, 中跑车控制横向移动
-	m_respons_y = 0;				//搬运器坐标y轴, 小跑车控制纵向移动
-	m_respons_z = 0;				//搬运器坐标z轴, 电梯控制上下移动
-	m_respons_space_id = 0;			//搬运器空间位置的id.
-	m_respons_y1 = 0;				//搬运器坐标y1轴, 小跑车控制纵向移动(前轮抓杆)
-	m_respons_y2 = 0;				//搬运器坐标y2轴, 小跑车控制纵向移动(后轮抓杆)
-	m_respons_wheelbase = 0;		//搬运器小跑车的抓车杆前后轮距.
-	m_respons_clamp_motion = E_CLAMP_NO_ACTION;		//小跑车夹车杆. 0=无动作,1=夹紧,2=松开
-	m_respons_joint_motion = E_JOINT_NO_ACTION;		//电梯与X轴的横向轨道对接,0=无动作,
-
-	m_status_updata_time = std::chrono::system_clock::now();
-	m_last_heartbeat = 0;
-	m_device_status = DEVICE_UNKNOWN;
-	m_load_status = LOAD_UNKNOWN;
-	m_actual_x = 0;					//搬运器坐标x轴, 中跑车控制横向移动
-	m_actual_y = 0;					//搬运器坐标y轴, 小跑车控制纵向移动
-	m_actual_z = 0;					//搬运器坐标z轴, 电梯控制上下移动
-	m_actual_y1 = 0;				//搬运器坐标y1轴, 小跑车控制纵向移动(前轮抓杆)
-	m_actual_y2 = 0;				//搬运器坐标y2轴, 小跑车控制纵向移动(后轮抓杆)
-	m_actual_clamp_motion1 = E_CLAMP_NO_ACTION;		//小跑车夹车杆. 0=无动作,1=夹紧,2=松开
-	m_actual_clamp_motion2 = E_CLAMP_NO_ACTION;		//小跑车夹车杆. 0=无动作,1=夹紧,2=松开
-	m_actual_joint_motion1 = E_JOINT_NO_ACTION;		//电梯与X轴的横向轨道对接,0=无动作,
-	m_actual_joint_motion2 = E_JOINT_NO_ACTION;		//电梯与X轴的横向轨道对接,0=无动作,
-	m_actual_small_sports_car_motion = E_SMALL_SPORTS_NO_ACTION;	//小跑车的位置,是否在中跑车上面
-
-	memset(m_carrier_error_code, 0, 50);	//搬运器设备的报警信息位
-	memset(m_carrier_warning_code, 0, 50);	//升降机设备的报警信息位
-
-	mp_execute_thread = NULL;
-
-}
-
-Carrier_base::~Carrier_base()
-{
-	carrier_base_uninit();
-}
-
-
-//搬运器 初始化
-Error_manager Carrier_base::carrier_base_init()
-{
-//	线程默认开启
-	m_execute_condition.reset(false, true, false);
-	mp_execute_thread = new std::thread(&Carrier_base::execute_thread_fun, this);
-
-	m_carrier_status = E_READY;
-	return Error_code::SUCCESS;
-}
-//搬运器 反初始化
-Error_manager Carrier_base::carrier_base_uninit()
-{
-	if (mp_execute_thread)
-	{
-		m_execute_condition.kill_all();
-	}
-	if (mp_execute_thread)
-	{
-		mp_execute_thread->join();
-		delete mp_execute_thread;
-		mp_execute_thread = NULL;
-	}
-
-	m_carrier_status = E_UNKNOW;
-
-	return Error_code::SUCCESS;
-}
-
-
-
-
-//处理一级任务, 普通任务
-Error_manager Carrier_base::execute_one_level_task(std::shared_ptr<Carrier_task> p_carrier_task)
-{
-	Error_manager t_error;
-	Error_manager t_result;
-
-	//检查指针
-	if (p_carrier_task == NULL) {
-		return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
-							 "Carrier_base::execute_one_level_task failed, POINTER_IS_NULL");
-	}
-	//检查任务类型,
-	if (p_carrier_task->get_task_type() != CARRIER_TASK)
-	{
-		return Error_manager(Error_code::CARRIER_TASK_TYPE_ERROR, Error_level::MINOR_ERROR,
-							 "Carrier_base::execute_one_level_task  get_task_type() != CARRIER_TASK ");
-	}
-
-
-	//检查接收方的状态
-	t_error = check_one_level_task();
-	if ( t_error != SUCCESS )
-	{
-		t_result.compare_and_cover_error(t_error);
-	}
-	else
-	{
-		//接受任务,并将任务的状态改为TASK_SIGNED已签收
-		mp_carrier_one_level_task = p_carrier_task;
-		mp_carrier_one_level_task->set_task_statu(TASK_SIGNED);
-
-		//这里不用检查任务内容, 直接下发给底层设备
-		//启动定位管理模块,的核心工作线程
-		m_carrier_status = E_ONE_LEVEL_WORK;
-		m_execute_condition.notify_all(true);
-		//通知 thread_work 子线程启动。
-
-		//将任务的状态改为 TASK_WORKING 处理中
-		//20200225, 在线程真正的执行的时候,才改为工作中, (执行线程可能会先处理更高优先级的任务单)
-//		mp_carrier_one_level_task->set_task_statu(TASK_WORKING);
-	}
-
-	if ( t_result != Error_code::SUCCESS )
-	{
-		return t_result;
-	}
-
-	return Error_code::SUCCESS;
-}
-//处理二级任务, 插队任务
-Error_manager Carrier_base::execute_two_level_task(std::shared_ptr<Carrier_task> p_carrier_task)
-{
-	Error_manager t_error;
-	Error_manager t_result;
-
-	//检查指针
-	if (p_carrier_task == NULL) {
-		return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
-							 "Carrier_base::execute_two_level_task failed, POINTER_IS_NULL");
-	}
-	//检查任务类型,
-	if (p_carrier_task->get_task_type() != CARRIER_TASK)
-	{
-		return Error_manager(Error_code::CARRIER_TASK_TYPE_ERROR, Error_level::MINOR_ERROR,
-							 "Carrier_base::execute_two_level_task  get_task_type() != CARRIER_TASK ");
-	}
-
-
-	//检查接收方的状态
-	t_error = check_two_level_task();
-	if ( t_error != SUCCESS )
-	{
-		t_result.compare_and_cover_error(t_error);
-	}
-	else
-	{
-		//接受任务,并将任务的状态改为TASK_SIGNED已签收
-		mp_carrier_two_level_task = p_carrier_task;
-		mp_carrier_two_level_task->set_task_statu(TASK_SIGNED);
-
-		//这里不用检查任务内容, 直接下发给底层设备
-		//启动定位管理模块,的核心工作线程
-		m_carrier_status = E_TWO_LEVEL_WORK;
-		m_execute_condition.notify_all(true);
-		//通知 thread_work 子线程启动。
-
-		//将任务的状态改为 TASK_WORKING 处理中
-		//20200225, 在线程真正的执行的时候,才改为工作中, (执行线程可能会先处理更高优先级的任务单)
-//		mp_carrier_two_level_task->set_task_statu(TASK_WORKING);
-	}
-
-	if ( t_result != Error_code::SUCCESS )
-	{
-		return t_result;
-	}
-
-	return Error_code::SUCCESS;
-}
-//处理三级任务, 核心任务
-Error_manager Carrier_base::execute_three_level_task(std::shared_ptr<Carrier_task> p_carrier_task)
-{
-	Error_manager t_error;
-	Error_manager t_result;
-
-	//检查指针
-	if (p_carrier_task == NULL) {
-		return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
-							 "Carrier_base::execute_three_level_task failed, POINTER_IS_NULL");
-	}
-	//检查任务类型,
-	if (p_carrier_task->get_task_type() != CARRIER_TASK)
-	{
-		return Error_manager(Error_code::CARRIER_TASK_TYPE_ERROR, Error_level::MINOR_ERROR,
-							 "Carrier_base::execute_three_level_task  get_task_type() != CARRIER_TASK ");
-	}
-
-
-	//检查接收方的状态
-	t_error = check_three_level_task();
-	if ( t_error != SUCCESS )
-	{
-		t_result.compare_and_cover_error(t_error);
-	}
-	else
-	{
-		//接受任务,并将任务的状态改为TASK_SIGNED已签收
-		mp_carrier_three_level_task = p_carrier_task;
-		mp_carrier_three_level_task->set_task_statu(TASK_SIGNED);
-
-		//这里不用检查任务内容, 直接下发给底层设备
-		//启动定位管理模块,的核心工作线程
-		m_carrier_status = E_THREE_LEVEL_WORK;
-		m_execute_condition.notify_all(true);
-		//通知 thread_work 子线程启动。
-
-		//将任务的状态改为 TASK_WORKING 处理中
-		//20200225, 在线程真正的执行的时候,才改为工作中, (执行线程可能会先处理更高优先级的任务单)
-//		mp_carrier_three_level_task->set_task_statu(TASK_WORKING);
-	}
-
-	if ( t_result != Error_code::SUCCESS )
-	{
-		return t_result;
-	}
-
-	return Error_code::SUCCESS;
-}
-
-//检查状态,是否正常运行
-Error_manager Carrier_base::check_status()
-{
-	if ( m_carrier_status == E_READY )
-	{
-		return Error_code::SUCCESS;
-	}
-	else if ( m_carrier_status >= E_BUSY && m_carrier_status <= E_THREE_LEVEL_OVER)
-	{
-		return Error_manager(Error_code::CARRIER_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
-							 " Carrier_base::check_status is busy ");
-	}
-	else
-	{
-		return Error_manager(Error_code::CARRIER_STATUS_ERROR, Error_level::MINOR_ERROR,
-							 " Carrier_base::check_status error ");
-	}
-	return Error_code::SUCCESS;
-}
-
-//判断能否执行一级任务
-Error_manager	Carrier_base::check_one_level_task()
-{
-	if ( m_carrier_status == E_READY )
-	{
-		return Error_code::SUCCESS;
-	}
-	else if ( m_carrier_status >= E_BUSY && m_carrier_status <= E_THREE_LEVEL_OVER)
-	{
-		return Error_manager(Error_code::CARRIER_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
-							 " Carrier_base::check_status is busy ");
-	}
-	else
-	{
-		return Error_manager(Error_code::CARRIER_STATUS_ERROR, Error_level::MINOR_ERROR,
-							 " Carrier_base::check_status error ");
-	}
-	return Error_code::SUCCESS;
-}
-//判断能否执行二级任务
-Error_manager	Carrier_base::check_two_level_task()
-{
-	if ( m_carrier_status == E_READY ||
-		 m_carrier_status == E_ONE_LEVEL_WORK ||
-		 m_carrier_status == E_ONE_LEVEL_OVER )
-	{
-		return Error_code::SUCCESS;
-	}
-	else if ( m_carrier_status >= E_TWO_LEVEL_WORK && m_carrier_status <= E_THREE_LEVEL_OVER)
-	{
-		return Error_manager(Error_code::CARRIER_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
-							 " Carrier_base::check_status is busy ");
-	}
-	else
-	{
-		return Error_manager(Error_code::CARRIER_STATUS_ERROR, Error_level::MINOR_ERROR,
-							 " Carrier_base::check_status error ");
-	}
-	return Error_code::SUCCESS;
-}
-//判断能否执行三级任务
-Error_manager	Carrier_base::check_three_level_task()
-{
-	if ( m_carrier_status == E_READY ||
-		 m_carrier_status == E_ONE_LEVEL_WORK ||
-		 m_carrier_status == E_ONE_LEVEL_OVER )
-	{
-		return Error_code::SUCCESS;
-	}
-	else if ( m_carrier_status >= E_TWO_LEVEL_WORK && m_carrier_status <= E_THREE_LEVEL_OVER)
-	{
-		return Error_manager(Error_code::CARRIER_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
-							 " Carrier_base::check_status is busy ");
-	}
-	else
-	{
-		return Error_manager(Error_code::CARRIER_STATUS_ERROR, Error_level::MINOR_ERROR,
-							 " Carrier_base::check_status error ");
-	}
-	return Error_code::SUCCESS;
-}
-
-//结束任务单,里面会根据任务的故障等级修正 任务单的状态
-Error_manager Carrier_base::end_task(std::shared_ptr<Carrier_task> carrier_task)
-{
-	LOG(INFO) << " ---Carrier_base::end_task run---"<< this;
-
-//	carrier_task->m_respons_status = (Carrier_task::Respons_status)m_respons_status;
-
-	//注:这里只修改任务单的状态, 搬运器的状态不管
-	//在结束任务单时,将雷达任务状态改为 TASK_OVER 已结束
-	//判断任务单的错误等级,
-	if ( carrier_task->get_task_error_manager().get_error_level() < Error_level::MINOR_ERROR)
-	{
-		//强制改为TASK_OVER,不管它当前在做什么。
-		carrier_task->set_task_statu(TASK_OVER);
-	}
-	else
-	{
-		//强制改为 TASK_ERROR,不管它当前在做什么。
-		carrier_task->set_task_statu(TASK_ERROR);
-	}
-
-
-	return Error_code::SUCCESS;
-}
-
-//取消任务单,由发送方提前取消任务单
-Error_manager Carrier_base::cancel_task(std::shared_ptr<Carrier_task> carrier_task)
-{
-	//找到对应的任务单
-	if ( carrier_task->get_task_id() == mp_carrier_one_level_task->get_task_id() )
-	{
-		if ( m_carrier_status == E_ONE_LEVEL_WORK || m_carrier_status == E_ONE_LEVEL_OVER )
-		{
-			//如果正在执行一级任务, 那么取消当前指令, 然后降级
-			m_execute_condition.notify_all(false);
-			//确保内部线程已经停下
-			while (m_execute_condition.is_working())
-			{
-
-			}
-			cancel_command();
-			mp_carrier_one_level_task.reset();
-			m_carrier_status = E_READY;
-			m_execute_condition.notify_all(true);
-		}
-		else
-		{
-			//否则直接销毁任务单
-			mp_carrier_one_level_task.reset();
-		}
-	}
-	else if ( carrier_task->get_task_id() == mp_carrier_two_level_task->get_task_id() )
-	{
-		if ( m_carrier_status == E_TWO_LEVEL_WORK || m_carrier_status == E_TWO_LEVEL_OVER )
-		{
-			//如果正在执行二级任务, 那么取消当前指令, 然后降级
-			m_execute_condition.notify_all(false);
-			//确保内部线程已经停下
-			while (m_execute_condition.is_working())
-			{
-
-			}
-			cancel_command();
-			mp_carrier_two_level_task.reset();
-			m_carrier_status = E_ONE_LEVEL_WORK;
-			m_execute_condition.notify_all(true);
-		}
-		else
-		{
-			//否则直接销毁任务单
-			mp_carrier_two_level_task.reset();
-		}
-	}
-	else if ( carrier_task->get_task_id() == mp_carrier_three_level_task->get_task_id() )
-	{
-		if ( m_carrier_status == E_THREE_LEVEL_WORK || m_carrier_status == E_THREE_LEVEL_OVER )
-		{
-			//如果正在执行三级任务, 那么取消当前指令, 然后降级
-			m_execute_condition.notify_all(false);
-			//确保内部线程已经停下
-			while (m_execute_condition.is_working())
-			{
-
-			}
-			cancel_command();
-			mp_carrier_three_level_task.reset();
-			m_carrier_status = E_TWO_LEVEL_WORK;
-			m_execute_condition.notify_all(true);
-		}
-		else
-		{
-			//否则直接销毁任务单
-			mp_carrier_two_level_task.reset();
-		}
-	}
-	else
-	{
-		return Error_manager(Error_code::CARRIER_TASK_NOTHINGNESS, Error_level::MINOR_ERROR,
-							 " carrier_task->get_task_id() is nothingness ");
-	}
-
-	carrier_task->set_task_statu(TASK_DEAD);
-	return Error_code::SUCCESS;
-}
-
-
-//判断是否为待机,如果已经准备好,则可以执行任务。
-bool Carrier_base::is_ready()
-{
-	return (m_carrier_status == E_READY);
-}
-
-Carrier_base::Carrier_status Carrier_base::get_carrier_status()
-{
-	return m_carrier_status;
-}
-
-
-//执行外界任务的执行函数
-void Carrier_base::execute_thread_fun()
-{
-	LOG(INFO) << " execute_thread_fun start "<< this;
-
-//	while (1);
-
-	Error_manager t_error;
-
-	while (m_execute_condition.is_alive())
-	{
-		m_execute_condition.wait();
-		if ( m_execute_condition.is_alive() )
-		{
-			std::this_thread::sleep_for(std::chrono::microseconds(1));
-			std::this_thread::yield();
-
-			switch ( (Carrier_status)m_carrier_status )
-			{
-				//核心任务, (三级任务)
-				case E_THREE_LEVEL_WORK:
-				{
-					if ( mp_carrier_three_level_task.get() != NULL )
-					{
-						mp_carrier_three_level_task->set_task_statu(TASK_WORKING);
-						//执行三级任务
-						std::unique_lock<std::mutex> t_lock(mp_carrier_three_level_task->m_lock);
-						m_request_key = mp_carrier_three_level_task->m_request_key;
-						m_request_x = mp_carrier_three_level_task->m_request_x;
-						m_request_y = mp_carrier_three_level_task->m_request_y;
-						m_request_z = mp_carrier_three_level_task->m_request_z;
-						m_request_space_id = mp_carrier_three_level_task->m_request_space_id;
-						m_request_y1 = mp_carrier_three_level_task->m_request_y1;
-						m_request_y2 = mp_carrier_three_level_task->m_request_y2;
-						m_request_wheelbase = mp_carrier_three_level_task->m_request_wheelbase;
-						m_request_clamp_motion = (Carrier_base::Clamp_motion)mp_carrier_three_level_task->m_request_clamp_motion;
-						m_request_joint_motion = (Carrier_base::Joint_motion)mp_carrier_three_level_task->m_request_joint_motion;
-
-						//更新通信
-						update_device_communication();
-
-						//检查plc的答复状态
-						if ( m_respons_key == m_request_key && m_respons_status != RESPONS_WORKING )
-						{
-							mp_carrier_three_level_task->m_respons_key = m_respons_key;
-							mp_carrier_three_level_task->m_respons_status = (Carrier_task::Respons_status)m_respons_status;
-							mp_carrier_three_level_task->m_respons_x = m_respons_x;
-							mp_carrier_three_level_task->m_respons_y = m_respons_y;
-							mp_carrier_three_level_task->m_respons_z = m_respons_z;
-							mp_carrier_three_level_task->m_respons_space_id = m_respons_space_id;
-							mp_carrier_three_level_task->m_respons_y1 = m_respons_y1;
-							mp_carrier_three_level_task->m_respons_y2 = m_respons_y2;
-							mp_carrier_three_level_task->m_respons_wheelbase = m_respons_wheelbase;
-							mp_carrier_three_level_task->m_respons_clamp_motion = (Carrier_task::Clamp_motion)m_respons_clamp_motion;
-							mp_carrier_three_level_task->m_respons_joint_motion = (Carrier_task::Joint_motion)m_respons_joint_motion;
-
-							//如果故障,则添加错误码
-							if ( m_respons_status == RESPONS_MINOR_ERROR || m_respons_status == RESPONS_CRITICAL_ERROR )
-							{
-								//添加错误码
-								Error_manager t_error(CARRIER_RESPONS_ERROR, MINOR_ERROR, "m_respons_status is error");
-								mp_carrier_three_level_task->set_task_error_manager(t_error);
-							}
-
-							end_task(mp_carrier_three_level_task);
-							m_carrier_status = E_THREE_LEVEL_OVER;
-						}
-						else
-						{
-							//设备正常运行
-							//延时1ms, snap7的通信效率偏慢, 不需要高频率检查
-							std::this_thread::sleep_for(std::chrono::milliseconds(1));
-						}
-						//else继续等待,直到任务完成
-					}
-					else
-					{
-						//直接降级
-						m_carrier_status = E_TWO_LEVEL_WORK;
-					}
-					break;
-				}
-				case E_THREE_LEVEL_OVER:
-				{
-					if ( mp_carrier_three_level_task.get() != NULL )
-					{
-						//检查任务状态,
-						//在 E_THREE_LEVEL_WORK 里面, 已经 设为 TASK_OVER 了.
-						//等待发送方的新指令, (发送方会把状态改为回收, 表示这个任务结束)
-						if ( mp_carrier_three_level_task->get_task_statu() == TASK_WITHDRAW )
-						{
-							//这里会通知任务已经释放, 然后销毁任务单,  并降级
-							mp_carrier_three_level_task->set_task_statu(TASK_FREE);
-							mp_carrier_three_level_task.reset();
-							m_carrier_status = E_TWO_LEVEL_WORK;
-						}
-							//任务单重新创建, 调度创建的新的任务,那么回去继续工作
-						else if (  mp_carrier_three_level_task->get_task_statu() == TASK_CREATED )
-						{
-							mp_carrier_three_level_task->set_task_statu(TASK_SIGNED);
-							m_carrier_status = E_THREE_LEVEL_WORK;
-						}
-						//else //保持不动, 直到发送方给定新的任务,
-					}
-					else
-					{
-						//直接降级
-						m_carrier_status = E_TWO_LEVEL_WORK;
-					}
-					break;
-				}
-				case E_TWO_LEVEL_WORK:
-				{
-					if ( mp_carrier_two_level_task.get() != NULL )
-					{
-						mp_carrier_two_level_task->set_task_statu(TASK_WORKING);
-						//执行二级任务
-						std::unique_lock<std::mutex> t_lock(mp_carrier_two_level_task->m_lock);
-						m_request_key = mp_carrier_two_level_task->m_request_key;
-						m_request_x = mp_carrier_two_level_task->m_request_x;
-						m_request_y = mp_carrier_two_level_task->m_request_y;
-						m_request_z = mp_carrier_two_level_task->m_request_z;
-						m_request_space_id = mp_carrier_two_level_task->m_request_space_id;
-						m_request_y1 = mp_carrier_two_level_task->m_request_y1;
-						m_request_y2 = mp_carrier_two_level_task->m_request_y2;
-						m_request_wheelbase = mp_carrier_two_level_task->m_request_wheelbase;
-						m_request_clamp_motion = (Carrier_base::Clamp_motion)mp_carrier_two_level_task->m_request_clamp_motion;
-						m_request_joint_motion = (Carrier_base::Joint_motion)mp_carrier_two_level_task->m_request_joint_motion;
-
-						//更新通信
-						update_device_communication();
-
-						//检查plc的答复状态
-						if ( m_respons_key == m_request_key && m_respons_status != RESPONS_WORKING )
-						{
-							mp_carrier_two_level_task->m_respons_key = m_respons_key;
-							mp_carrier_two_level_task->m_respons_status = (Carrier_task::Respons_status)m_respons_status;
-							mp_carrier_two_level_task->m_respons_x = m_respons_x;
-							mp_carrier_two_level_task->m_respons_y = m_respons_y;
-							mp_carrier_two_level_task->m_respons_z = m_respons_z;
-							mp_carrier_two_level_task->m_respons_space_id = m_respons_space_id;
-							mp_carrier_two_level_task->m_respons_y1 = m_respons_y1;
-							mp_carrier_two_level_task->m_respons_y2 = m_respons_y2;
-							mp_carrier_two_level_task->m_respons_wheelbase = m_respons_wheelbase;
-							mp_carrier_two_level_task->m_respons_clamp_motion = (Carrier_task::Clamp_motion)m_respons_clamp_motion;
-							mp_carrier_two_level_task->m_respons_joint_motion = (Carrier_task::Joint_motion)m_respons_joint_motion;
-
-							//如果故障,则添加错误码
-							if ( m_respons_status == RESPONS_MINOR_ERROR || m_respons_status == RESPONS_CRITICAL_ERROR )
-							{
-								//添加错误码
-								Error_manager t_error(CARRIER_RESPONS_ERROR, MINOR_ERROR, "m_respons_status is error");
-								mp_carrier_two_level_task->set_task_error_manager(t_error);
-							}
-
-							end_task(mp_carrier_two_level_task);
-							m_carrier_status = E_THREE_LEVEL_OVER;
-						}
-						else
-						{
-							//设备正常运行
-							//延时1ms, snap7的通信效率偏慢, 不需要高频率检查
-							std::this_thread::sleep_for(std::chrono::milliseconds(1));
-						}
-						//else继续等待,直到任务完成
-					}
-					else
-					{
-						//直接降级
-						m_carrier_status = E_ONE_LEVEL_WORK;
-					}
-					break;
-				}
-				case E_TWO_LEVEL_OVER:
-				{
-					if ( mp_carrier_two_level_task.get() != NULL )
-					{
-						//检查任务状态,
-						//在 E_TWO_LEVEL_WORK 里面, 已经 设为 TASK_OVER 了.
-						//等待发送方的新指令, (发送方会把状态改为回收, 表示这个任务结束)
-						if ( mp_carrier_two_level_task->get_task_statu() == TASK_WITHDRAW )
-						{
-							//这里会通知任务已经释放, 然后销毁任务单,  并降级
-							mp_carrier_two_level_task->set_task_statu(TASK_FREE);
-							mp_carrier_two_level_task.reset();
-							m_carrier_status = E_ONE_LEVEL_WORK;
-						}
-							//任务单重新创建, 调度创建的新的任务,那么回去继续工作
-						else if (  mp_carrier_two_level_task->get_task_statu() == TASK_CREATED )
-						{
-							mp_carrier_two_level_task->set_task_statu(TASK_SIGNED);
-							m_carrier_status = E_TWO_LEVEL_WORK;
-						}
-						//else //保持不动, 直到发送方给定新的任务,
-					}
-					else
-					{
-						//直接降级
-						m_carrier_status = E_ONE_LEVEL_WORK;
-					}
-					break;
-				}
-				case E_ONE_LEVEL_WORK:
-				{
-					if ( mp_carrier_one_level_task.get() != NULL )
-					{
-						mp_carrier_one_level_task->set_task_statu(TASK_WORKING);
-						//执行一级任务,
-						std::unique_lock<std::mutex> t_lock(mp_carrier_one_level_task->m_lock);
-						m_request_key = mp_carrier_one_level_task->m_request_key;
-						m_request_x = mp_carrier_one_level_task->m_request_x;
-						m_request_y = mp_carrier_one_level_task->m_request_y;
-						m_request_z = mp_carrier_one_level_task->m_request_z;
-						m_request_space_id = mp_carrier_one_level_task->m_request_space_id;
-						m_request_y1 = mp_carrier_one_level_task->m_request_y1;
-						m_request_y2 = mp_carrier_one_level_task->m_request_y2;
-						m_request_wheelbase = mp_carrier_one_level_task->m_request_wheelbase;
-						m_request_clamp_motion = (Carrier_base::Clamp_motion)mp_carrier_one_level_task->m_request_clamp_motion;
-						m_request_joint_motion = (Carrier_base::Joint_motion)mp_carrier_one_level_task->m_request_joint_motion;
-
-						//更新通信
-						update_device_communication();
-
-						//检查plc的答复状态
-						if ( m_respons_key == m_request_key && m_respons_status != RESPONS_WORKING )
-						{
-							mp_carrier_one_level_task->m_respons_x = m_respons_x;
-							mp_carrier_one_level_task->m_respons_y = m_respons_y;
-							mp_carrier_one_level_task->m_respons_z = m_respons_z;
-							mp_carrier_one_level_task->m_respons_space_id = m_respons_space_id;
-							mp_carrier_one_level_task->m_respons_y1 = m_respons_y1;
-							mp_carrier_one_level_task->m_respons_y2 = m_respons_y2;
-							mp_carrier_one_level_task->m_respons_wheelbase = m_respons_wheelbase;
-							mp_carrier_one_level_task->m_respons_clamp_motion = (Carrier_task::Clamp_motion)m_respons_clamp_motion;
-							mp_carrier_one_level_task->m_respons_joint_motion = (Carrier_task::Joint_motion)m_respons_joint_motion;
-
-							//如果故障,则添加错误码
-							if ( m_respons_status == RESPONS_MINOR_ERROR || m_respons_status == RESPONS_CRITICAL_ERROR )
-							{
-								//添加错误码
-								Error_manager t_error(CARRIER_RESPONS_ERROR, MINOR_ERROR, "m_respons_status is error");
-								mp_carrier_one_level_task->set_task_error_manager(t_error);
-							}
-
-							end_task(mp_carrier_one_level_task);
-							m_carrier_status = E_ONE_LEVEL_OVER;
-
-						}
-						else
-						{
-							//设备正常运行
-							//延时1ms, snap7的通信效率偏慢, 不需要高频率检查
-							std::this_thread::sleep_for(std::chrono::milliseconds(1));
-						}
-						//else继续等待,直到任务完成
-					}
-					else
-					{
-						//直接降级
-						m_carrier_status = E_READY;
-					}
-					break;
-				}
-				case E_ONE_LEVEL_OVER:
-				{
-					if ( mp_carrier_one_level_task.get() != NULL )
-					{
-						//检查任务状态,
-						//在 E_ONE_LEVEL_WORK 里面, 已经 设为 TASK_OVER 了.
-						//等待发送方的新指令, (发送方会把状态改为回收, 表示这个任务结束)
-						if ( mp_carrier_one_level_task->get_task_statu() == TASK_WITHDRAW )
-						{
-							//这里会通知任务已经释放, 然后销毁任务单,  并降级
-							mp_carrier_one_level_task->set_task_statu(TASK_FREE);
-							mp_carrier_one_level_task.reset();
-							m_carrier_status = E_READY;
-						}
-						//任务单重新创建, 调度创建的新的任务,那么回去继续工作
-						else if (  mp_carrier_one_level_task->get_task_statu() == TASK_CREATED )
-						{
-							mp_carrier_one_level_task->set_task_statu(TASK_SIGNED);
-							m_carrier_status = E_ONE_LEVEL_WORK;
-						}
-						//else //保持不动, 直到发送方给定新的任务,
-					}
-					else
-					{
-						//直接降级
-						m_carrier_status = E_READY;
-					}
-					break;
-				}
-				case E_FAULT:
-				{
-					//更新通信
-					update_device_communication();
-
-					//所有任务报错, 并销毁任务.
-					if ( mp_carrier_one_level_task.get() != NULL )
-					{
-						//添加错误码
-						Error_manager t_error(CARRIER_STATUS_ERROR, MINOR_ERROR, "m_respons_status is error");
-						mp_carrier_one_level_task->set_task_error_manager(t_error);
-						end_task(mp_carrier_one_level_task);
-						mp_carrier_one_level_task.reset();
-					}
-					if ( mp_carrier_two_level_task.get() != NULL )
-					{
-						//添加错误码
-						Error_manager t_error(CARRIER_STATUS_ERROR, MINOR_ERROR, "m_respons_status is error");
-						mp_carrier_two_level_task->set_task_error_manager(t_error);
-						end_task(mp_carrier_two_level_task);
-						mp_carrier_two_level_task.reset();
-					}
-					if ( mp_carrier_three_level_task.get() != NULL )
-					{
-						//添加错误码
-						Error_manager t_error(CARRIER_STATUS_ERROR, MINOR_ERROR, "m_respons_status is error");
-						mp_carrier_three_level_task->set_task_error_manager(t_error);
-						end_task(mp_carrier_three_level_task);
-						mp_carrier_three_level_task.reset();
-					}
-
-
-					break;
-				}
-				case E_DISCONNECT:
-				{
-					//更新通信
-					update_device_communication();
-					//所有任务报错, 并销毁任务.
-					if ( mp_carrier_one_level_task.get() != NULL )
-					{
-						//添加错误码
-						Error_manager t_error(CARRIER_STATUS_DISCONNECT, MINOR_ERROR, "m_respons_status is error");
-						mp_carrier_one_level_task->set_task_error_manager(t_error);
-						end_task(mp_carrier_one_level_task);
-						mp_carrier_one_level_task.reset();
-					}
-					if ( mp_carrier_two_level_task.get() != NULL )
-					{
-						//添加错误码
-						Error_manager t_error(CARRIER_STATUS_DISCONNECT, MINOR_ERROR, "m_respons_status is error");
-						mp_carrier_two_level_task->set_task_error_manager(t_error);
-						end_task(mp_carrier_two_level_task);
-						mp_carrier_two_level_task.reset();
-					}
-					if ( mp_carrier_three_level_task.get() != NULL )
-					{
-						//添加错误码
-						Error_manager t_error(CARRIER_STATUS_DISCONNECT, MINOR_ERROR, "m_respons_status is error");
-						mp_carrier_three_level_task->set_task_error_manager(t_error);
-						end_task(mp_carrier_three_level_task);
-						mp_carrier_three_level_task.reset();
-					}
-
-
-					break;
-				}
-				case E_READY:
-				{
-					//更新通信
-					update_device_communication();
-					break;
-				}
-				default:
-				{
-
-					break;
-				}
-			}
-
-
-
-		}
-	}
-	LOG(INFO) << " execute_thread_fun end "<< this;
-	return;
-}
-
-//执行线程工作函数, 正在执行任务单.
-Error_manager Carrier_base::execute_thread_working(std::shared_ptr<Carrier_task> p_carrier_task, Carrier_status & carrier_status)
-{
-	return Error_code::SUCCESS;
-}
-//执行线程工作函数, 已经完成任务单. 等待新的指令
-Error_manager Carrier_base::execute_thread_over(std::shared_ptr<Carrier_task> p_carrier_task, Carrier_status & carrier_status)
-{
-	return Error_code::SUCCESS;
-}
-
-//更新设备底层通信数据
-Error_manager Carrier_base::update_device_communication()
-{
-
-	return Error_code::SUCCESS;
-}
-
-//取消下发的指令
-Error_manager Carrier_base::cancel_command()
-{
-	//以后再写 need programe
-	//目前调度和plc的通信指令做的很简单,没有暂停和急停 复位等操作.
-	//这里先空着,以后再写.
-	//调度模块单方面销毁任务, 不管底层plc的执行情况, 也不去告知plc任务取消.
-
-	return Error_code::SUCCESS;
-}
-
-
-*/
-

+ 0 - 236
dispatch/carrier_base.h

@@ -1,236 +0,0 @@
-//
-// Created by huli on 2020/7/20.
-//
-
-#ifndef NNXX_TESTS_CARRIER_BASE_H
-#define NNXX_TESTS_CARRIER_BASE_H
-
-#include "../error_code/error_code.h"
-#include <glog/logging.h>
-#include <thread>
-#include <mutex>
-#include "../tool/thread_condition.h"
-#include "../dispatch/carrier_task.h"
-
-
-//搬运器的基类, 普爱项目就是 电梯和中跑车和小跑车 三合一
-class Carrier_base
-{
-public:
-	//搬运器底层通信延时5000ms
-#define	CARRIER_COMMUNICATION_OVER_TIME_MS	5000
-
-	//搬运器状态,这个类的总状态,这里指工作任务流程
-	enum Carrier_status
-	{
-		E_UNKNOW               	= 0,    //未知
-		E_READY               	= 1,    //准备,待机
-		E_BUSY					= 2, 	//工作正忙
-
-		E_ONE_LEVEL_WORK		= 3,	//一级工作状态, 就是普通的移动任务
-		E_ONE_LEVEL_OVER		= 4, 	//一级工作完成,
-		E_TWO_LEVEL_WORK		= 5,	//二级工作状态, 就是紧急避让, 插队任务(会在执行一级任务的过程中, 插队并优先执行二级任务)
-		E_TWO_LEVEL_OVER		= 6, 	//一级工作完成,
-		E_THREE_LEVEL_WORK		= 7,	//三级工作任务, 就是锁定硬件资源, 不让插队, (除非急停或者取消任务)
-		E_THREE_LEVEL_OVER		= 8, 	//一级工作完成,
-
-		E_FAULT					= 100,	//故障
-		E_DISCONNECT			= 101, 	//通信故障
-	};
-
-	//小跑车的夹杆
-	enum Clamp_motion
-	{
-		E_CLAMP_NO_ACTION            	= 0,    //无动作.
-	    E_CLAMP_TIGHT               	= 1,    //夹紧夹杆
-	    E_CLAMP_LOOSE					= 2,	//松开夹杆
-	};
-
-	//中跑车和平层轨道的对接
-	enum Joint_motion
-	{
-		E_JOINT_NO_ACTION            	= 0,    //无动作.
-		E_JOINT_HOLD_OUT               	= 1,    //伸出对接,之后中跑车可以x轴移动,电梯不能Z轴移动
-		E_JOINT_TAKE_BACK				= 2,	//收回对接,之后中跑车固定在电梯上不能X轴移动,电梯可以Z轴移动
-	};
-
-	//小跑车的位置,是否在中跑车上面
-	enum Small_sports_car_motion
-	{
-		E_SMALL_SPORTS_NO_ACTION		= 0,    //无动作.
-		E_SMALL_SPORTS_CAR_GET_AWAY 	= 1,    //小跑车离开中跑车
-		E_SMALL_SPORTS_CAR_GET_BACK		= 2,	//小跑车返回中跑车
-	};
-
-	
-	//指令完成状态, 搬运器答复指令, 返回任务完成的情况
-	enum Respons_status
-	{
-		RESPONS_WORKING            	= 0,    //任务进行中
-		RESPONS_OVER               	= 1,    //任务完成
-		RESPONS_MINOR_ERROR			= 100,	//一般故障, 可恢复
-		RESPONS_CRITICAL_ERROR		= 101,	//致命故障,不可恢复
-	};
-
-	//搬运器的硬件设备状态
-	enum Device_status
-	{
-		DEVICE_UNKNOWN              = 0,    //设备未知
-		DEVICE_READY                = 1,    //设备空闲(可以接受新的指令任务)
-		DEVICE_WORKING				= 2,	//设备工作中
-		DEVICE_EMERGENCY_STOP		= 3,	//设备急停
-		DEVICE_UNSAFETY				= 4,	//设备不安全
-		DEVICE_COLLISION			= 5,	//设备发生碰撞
-		DEVICE_FAULT				= 6,	//设备故障
-	};
-
-	//搬运器的负载状态, 小跑车上面是否有车.
-	enum Load_status
-	{
-		LOAD_UNKNOWN				= 0,	//负载未知
-		HAVE_CAR               		= 1,    //有车
-		NO_CAR            			= 2,    //没车
-	};
-
-
-public:
-	Carrier_base();
-	Carrier_base(const Carrier_base& other)= default;
-	Carrier_base& operator =(const Carrier_base& other)= default;
-	~Carrier_base();
-public://API functions
-	//搬运器 初始化
-	virtual Error_manager carrier_base_init();
-	//搬运器 反初始化
-	virtual Error_manager carrier_base_uninit();
-
-	//处理一级任务, 普通任务
-	virtual Error_manager execute_one_level_task(std::shared_ptr<Carrier_task> p_carrier_task);
-	//处理二级任务, 插队任务
-	virtual Error_manager execute_two_level_task(std::shared_ptr<Carrier_task> p_carrier_task);
-	//处理三级任务, 核心任务
-	virtual Error_manager execute_three_level_task(std::shared_ptr<Carrier_task> p_carrier_task);
-	//检查状态,是否正常运行
-	virtual Error_manager check_status();
-
-	//注意了, 调度任务允许同时接受多个任务
-	//判断能否执行一级任务
-	virtual Error_manager	check_one_level_task();
-	//判断能否执行二级任务
-	virtual Error_manager	check_two_level_task();
-	//判断能否执行三级任务
-	virtual Error_manager	check_three_level_task();
-
-	//结束任务单,里面会根据任务的故障等级修正 任务单的状态
-	virtual Error_manager end_task(std::shared_ptr<Carrier_task> carrier_task);
-	//取消任务单,由发送方提前取消任务单
-	virtual Error_manager cancel_task(std::shared_ptr<Carrier_task> carrier_task);
-
-	//判断是否为待机,如果已经准备好,则可以执行任务。
-	virtual bool is_ready();
-public://get or set member variable
-	Carrier_status get_carrier_status();
-
-protected://member functions
-	//执行外界任务的执行函数
-	void execute_thread_fun();
-
-	//执行线程工作函数, 正在执行任务单.
-	virtual Error_manager execute_thread_working(std::shared_ptr<Carrier_task> p_carrier_task, Carrier_status & carrier_status);
-	//执行线程工作函数, 已经完成任务单. 等待新的指令
-	virtual Error_manager execute_thread_over(std::shared_ptr<Carrier_task> p_carrier_task, Carrier_status & carrier_status);
-
-
-	//更新设备底层通信数据
-	virtual Error_manager update_device_communication();
-
-	//取消下发的指令
-	virtual Error_manager cancel_command();
-
-
-protected://member variable
-	std::atomic<Carrier_status>			m_carrier_status;			//搬运器总状态, 控制任务流程
-	int 								m_carrier_id;				//搬运器id, (楚天项目和单元号对应)
-
-
-
-
-	//调度下发到plc
-	std::string							m_request_key;				//请求唯一码, 用作识别
-	//请求的目标坐标和动作
-	float 								m_request_x;				//搬运器坐标x轴, 中跑车控制横向移动
-	float 								m_request_y;				//搬运器坐标y轴, 小跑车控制纵向移动
-	float 								m_request_z;				//搬运器坐标z轴, 电梯控制上下移动
-	int 								m_request_space_id;			//搬运器空间位置的id.
-	float 								m_request_y1;				//搬运器坐标y1轴, 小跑车控制纵向移动(前轮抓杆)
-	float 								m_request_y2;				//搬运器坐标y2轴, 小跑车控制纵向移动(后轮抓杆)
-	float 								m_request_wheelbase;		//搬运器小跑车的抓车杆前后轮距.
-	Clamp_motion						m_request_clamp_motion;		//小跑车夹车杆. 0=无动作,1=夹紧,2=松开
-	Joint_motion						m_request_joint_motion;		//电梯与X轴的横向轨道对接,0=无动作,
-	//1=进行对接,之后中跑车可以x轴移动,电梯不能Z轴移动
-	//2=松开对接,之后中跑车固定在电梯上不能X轴移动,电梯可以Z轴移动
-
-
-
-	//plc反馈给调度
-	std::string							m_respons_key;				//应答的唯一码, 用作识别
-	Respons_status						m_respons_status;			//指令完成状态, 搬运器答复指令, 返回任务完成的情况
-	//答复的实际坐标和动作
-	float 								m_respons_x;				//搬运器坐标x轴, 中跑车控制横向移动
-	float 								m_respons_y;				//搬运器坐标y轴, 小跑车控制纵向移动
-	float 								m_respons_z;				//搬运器坐标z轴, 电梯控制上下移动
-	int 								m_respons_space_id;			//搬运器空间位置的id.
-	float 								m_respons_y1;				//搬运器坐标y1轴, 小跑车控制纵向移动(前轮抓杆)
-	float 								m_respons_y2;				//搬运器坐标y2轴, 小跑车控制纵向移动(后轮抓杆)
-	float 								m_respons_wheelbase;		//搬运器小跑车的抓车杆前后轮距.
-	Clamp_motion						m_respons_clamp_motion;		//小跑车夹车杆. 0=无动作,1=夹紧,2=松开
-	Joint_motion						m_respons_joint_motion;		//电梯与X轴的横向轨道对接,0=无动作,
-	//1=进行对接,之后中跑车可以x轴移动,电梯不能Z轴移动
-	//2=松开对接,之后中跑车固定在电梯上不能X轴移动,电梯可以Z轴移动
-
-
-
-
-	//硬件状态, 目前只做显示判断
-	std::chrono::system_clock::time_point	m_status_updata_time;	//状态更新时间点
-	unsigned char						m_last_heartbeat;			//上一次的心跳
-	//搬运器的设备状态数据,
-	Device_status						m_device_status;			//搬运器的硬件设备状态
-	Load_status							m_load_status;				//搬运器的负载状态, 小跑车上面是否有车.
-	//搬运器的真实状态, 可能是路径中间的坐标
-	float 								m_actual_x;					//搬运器坐标x轴, 中跑车控制横向移动
-	float 								m_actual_y;					//搬运器坐标y轴, 小跑车控制纵向移动
-	float 								m_actual_z;					//搬运器坐标z轴, 电梯控制上下移动
-	float 								m_actual_y1;				//搬运器坐标y1轴, 小跑车控制纵向移动(前轮抓杆)
-	float 								m_actual_y2;				//搬运器坐标y2轴, 小跑车控制纵向移动(后轮抓杆)
-	Clamp_motion						m_actual_clamp_motion1;		//小跑车夹车杆. 0=无动作,1=夹紧,2=松开
-	Clamp_motion						m_actual_clamp_motion2;		//小跑车夹车杆. 0=无动作,1=夹紧,2=松开
-	Joint_motion						m_actual_joint_motion1;		//电梯与X轴的横向轨道对接,0=无动作,
-	Joint_motion						m_actual_joint_motion2;		//电梯与X轴的横向轨道对接,0=无动作,
-	Small_sports_car_motion				m_actual_small_sports_car_motion;	//小跑车的位置,是否在中跑车上面
-	//搬运器设备的错误码
-	unsigned char						m_carrier_error_code[50];	//搬运器设备的故障信息位
-	unsigned char						m_carrier_warning_code[50];	//搬运器设备的警告信息位
-	std::string							m_carrier_error_description;//搬运器设备的错误描述
-
-
-
-
-
-
-	//任务执行线程
-	std::thread*        				mp_execute_thread;   			//执行的线程指针,内存由本类管理
-	Thread_condition					m_execute_condition;			//执行的条件变量
-
-	std::shared_ptr<Carrier_task>		mp_carrier_one_level_task;		//搬运器的普通任务, (一般移动和等待指令, 允许被打断)
-	std::shared_ptr<Carrier_task>		mp_carrier_two_level_task;		//搬运器的优先任务, (紧急避让和插队指令, 允许打断普通任务)
-	std::shared_ptr<Carrier_task>		mp_carrier_three_level_task;	//搬运器的核心任务, (锁定位置进行抓车和放车, 最高任务, 不允许打断和被打断)
-
-
-
-private:
-
-};
-
-
-#endif //NNXX_TESTS_CARRIER_BASE_H

+ 15 - 15
dispatch/catcher.cpp

@@ -29,7 +29,7 @@ Catcher::Catcher()
 
 	m_status_updata_time = std::chrono::system_clock::now();
 	m_last_heartbeat = 0;			//上一次的心跳
-	m_actual_device_status = DEVICE_UNKNOWN;			//机器人的硬件设备状态
+	m_actual_device_status = HARDWARE_DEVICE_UNKNOWN;			//机器人的硬件设备状态
 	m_actual_load_status = LOAD_UNKNOWN;				//机器人的负载状态, 小跑车上面是否有车.
 	m_actual_x = 0;					//机器人坐标x轴,
 	m_actual_y = 0;					//机器人坐标y轴,
@@ -165,39 +165,39 @@ Error_manager Catcher::update_device_communication()
 		//设备异常  //注注注注注注注注意了, ==的优先级比&要高.
 		if ( (tp_catcher_status_from_plc_to_dispatch->m_safe_status & 0x02) == 0 )
 		{
-			m_actual_device_status = Dispatch_device_base::DEVICE_EMERGENCY_STOP;
-			m_dispatch_device_status = Dispatch_device_base::E_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::DEVICE_FAULT;
-			m_dispatch_device_status = Dispatch_device_base::E_FAULT;
+			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::DEVICE_COLLISION;
-			m_dispatch_device_status = Dispatch_device_base::E_FAULT;
+			m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_COLLISION;
+			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_FAULT;
 		}
 		//正常状态
 		else
 		{
 			if (tp_catcher_status_from_plc_to_dispatch->m_work_status == 1)
 			{
-				m_actual_device_status = Dispatch_device_base::DEVICE_WORKING;
+				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::DEVICE_READY;
+				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::DEVICE_UNKNOWN;
+				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_UNKNOWN;
 			}
 
 			//故障恢复之后   E_FAULT  ->>  E_THREE_LEVEL_WORK
-			if ( m_dispatch_device_status == Dispatch_device_base::E_FAULT )
+			if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_FAULT )
 			{
-				m_dispatch_device_status = Dispatch_device_base::E_THREE_LEVEL_WORK;
+				m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
 			}
 			//else 流程状态维持不变
 		}
@@ -235,14 +235,14 @@ Error_manager Catcher::update_device_communication()
 
 
 		//重连之后,搬运器状态   E_DISCONNECT  ->>  E_THREE_LEVEL_WORK
-		if ( m_dispatch_device_status == Dispatch_device_base::E_DISCONNECT )
+		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT )
 		{
-			m_dispatch_device_status = Dispatch_device_base::E_THREE_LEVEL_WORK;
+			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
 		}
 	}
 	else if(std::chrono::system_clock::now() - m_status_updata_time > std::chrono::milliseconds(COMMUNICATION_OVER_TIME_MS))
 	{
-		m_dispatch_device_status = Dispatch_device_base::E_DISCONNECT;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT;
 	}
 	//else 继续等待,直到消息刷新或者超时.
 

+ 54 - 54
dispatch/dispatch_device_base.cpp

@@ -6,7 +6,7 @@
 
 Dispatch_device_base::Dispatch_device_base()
 {
-	m_dispatch_device_status = E_UNKNOW;
+	m_dispatch_device_status = DISPATCH_DEVICE_UNKNOW;
 	m_device_id = -1;
 
 	mp_execute_thread = NULL;
@@ -25,7 +25,7 @@ Error_manager Dispatch_device_base::dispatch_device_base_init(int device_id)
 	m_execute_condition.reset(false, true, false);
 	mp_execute_thread = new std::thread(&Dispatch_device_base::execute_thread_fun, this);
 
-	m_dispatch_device_status = E_READY;
+	m_dispatch_device_status = DISPATCH_DEVICE_READY;
 	return Error_code::SUCCESS;
 }
 //设备 反初始化
@@ -42,7 +42,7 @@ Error_manager Dispatch_device_base::dispatch_device_base_uninit()
 		mp_execute_thread = NULL;
 	}
 
-	m_dispatch_device_status = E_UNKNOW;
+	m_dispatch_device_status = DISPATCH_DEVICE_UNKNOW;
 
 	return Error_code::SUCCESS;
 }
@@ -86,7 +86,7 @@ Error_manager Dispatch_device_base::execute_task(std::shared_ptr<Task_Base> p_ta
 		//这里不用检查任务内容, 直接下发给底层设备
 		//永远启动到三级任务工作状态.
 		// 启动定位管理模块,的核心工作线程
-		m_dispatch_device_status = E_THREE_LEVEL_WORK;
+		m_dispatch_device_status = DISPATCH_DEVICE_THREE_LEVEL_WORK;
 		m_execute_condition.notify_all(true);
 		//通知 thread_work 子线程启动。
 
@@ -121,32 +121,32 @@ Error_manager Dispatch_device_base::check_task_level(Dispatch_task_level dispatc
 	//加锁
 	std::unique_lock<std::mutex> t_lock(m_lock);
 	//只有当状态 不是正在执行当前等级的任务,并且当前等级的任务为空. 此时返回成功, 才能接受新的任务
-	if ( m_dispatch_device_status >= E_READY && m_dispatch_device_status <= E_THREE_LEVEL_WORK )
+	if ( m_dispatch_device_status >= DISPATCH_DEVICE_READY && m_dispatch_device_status <= DISPATCH_DEVICE_THREE_LEVEL_WORK )
 	{
 		switch ( dispatch_task_level )
 		{
-			case E_ONE_LEVEL:
+			case DISPATCH_TASK_ONE_LEVEL:
 			{
-				if ( ( m_dispatch_device_status == E_READY ) && mp_device_one_level_task.get() == NULL)
+				if ( ( m_dispatch_device_status == DISPATCH_DEVICE_READY ) && mp_device_one_level_task.get() == NULL)
 				{
 				    return Error_code::SUCCESS;
 				}
 				break;
 			}
-			case E_TWO_LEVEL:
+			case DISPATCH_TASK_TWO_LEVEL:
 			{
-				if ( ( m_dispatch_device_status == E_READY ||
-					 m_dispatch_device_status == E_ONE_LEVEL_WORK ||
-					 m_dispatch_device_status == E_ONE_LEVEL_OVER ) && mp_device_two_level_task.get() == NULL)
+				if ( ( m_dispatch_device_status == DISPATCH_DEVICE_READY ||
+					 m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_WORK ||
+					 m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_OVER ) && mp_device_two_level_task.get() == NULL)
 				{
 					return Error_code::SUCCESS;
 				}
 				break;
 			}
-			case E_THREE_LEVEL:
+			case DISPATCH_TASK_THREE_LEVEL:
 			{
-				if ( ( m_dispatch_device_status == E_READY ||
-					 m_dispatch_device_status == E_ONE_LEVEL_OVER ) && mp_device_three_level_task.get() == NULL)
+				if ( ( m_dispatch_device_status == DISPATCH_DEVICE_READY ||
+					 m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_OVER ) && mp_device_three_level_task.get() == NULL)
 				{
 					return Error_code::SUCCESS;
 				}
@@ -180,19 +180,19 @@ Error_manager Dispatch_device_base::sign_for_task(std::shared_ptr<Task_Base> p_t
 	std::unique_lock<std::mutex> t_lock(m_lock);
 	switch ( dispatch_task_level )
 	{
-		case E_ONE_LEVEL:
+		case DISPATCH_TASK_ONE_LEVEL:
 		{
 			mp_device_one_level_task = p_task;
 			mp_device_one_level_task->set_task_statu(Task_Base::Task_statu::TASK_SIGNED);
 			break;
 		}
-		case E_TWO_LEVEL:
+		case DISPATCH_TASK_TWO_LEVEL:
 		{
 			mp_device_two_level_task = p_task;
 			mp_device_two_level_task->set_task_statu(Task_Base::Task_statu::TASK_SIGNED);
 			break;
 		}
-		case E_THREE_LEVEL:
+		case DISPATCH_TASK_THREE_LEVEL:
 		{
 			mp_device_three_level_task = p_task;
 			mp_device_three_level_task->set_task_statu(Task_Base::Task_statu::TASK_SIGNED);
@@ -211,11 +211,11 @@ Error_manager Dispatch_device_base::sign_for_task(std::shared_ptr<Task_Base> p_t
 //检查状态,是否正常运行. (工作状态 和 是否能接受对应的任务无关)
 Error_manager Dispatch_device_base::check_status()
 {
-	if ( m_dispatch_device_status == E_READY )
+	if ( m_dispatch_device_status == DISPATCH_DEVICE_READY )
 	{
 		return Error_code::SUCCESS;
 	}
-	else if ( m_dispatch_device_status >= E_BUSY && m_dispatch_device_status <= E_THREE_LEVEL_WORK)
+	else if ( m_dispatch_device_status >= DISPATCH_DEVICE_BUSY && m_dispatch_device_status <= DISPATCH_DEVICE_THREE_LEVEL_WORK)
 	{
 		return Error_manager(Error_code::DISPATCH_DEVICE_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
 							 " Dispatch_device_base::check_status is busy ");
@@ -231,7 +231,7 @@ Error_manager Dispatch_device_base::check_status()
 //判断是否为待机,如果已经准备好,则可以执行任务。
 bool Dispatch_device_base::is_ready()
 {
-	return (m_dispatch_device_status == E_READY);
+	return (m_dispatch_device_status == DISPATCH_DEVICE_READY);
 }
 
 
@@ -262,9 +262,9 @@ Error_manager Dispatch_device_base::cancel_task(std::shared_ptr<Task_Base> p_tas
 	//找到对应的任务单
 	switch ( dispatch_task_level )
 	{
-		case E_ONE_LEVEL:
+		case DISPATCH_TASK_ONE_LEVEL:
 		{
-			if ( m_dispatch_device_status == E_ONE_LEVEL_WORK || m_dispatch_device_status == E_ONE_LEVEL_OVER )
+			if ( m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_WORK || m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_OVER )
 			{
 				//如果正在执行一级任务, 那么取消当前指令, 然后降级
 				m_execute_condition.notify_all(false);
@@ -277,7 +277,7 @@ Error_manager Dispatch_device_base::cancel_task(std::shared_ptr<Task_Base> p_tas
 				{
 					std::unique_lock<std::mutex> t_lock(m_lock);
 					mp_device_one_level_task.reset();
-					m_dispatch_device_status = E_READY;
+					m_dispatch_device_status = DISPATCH_DEVICE_READY;
 				}
 
 				m_execute_condition.notify_all(true);
@@ -290,9 +290,9 @@ Error_manager Dispatch_device_base::cancel_task(std::shared_ptr<Task_Base> p_tas
 			}
 			break;
 		}
-		case E_TWO_LEVEL:
+		case DISPATCH_TASK_TWO_LEVEL:
 		{
-			if ( m_dispatch_device_status == E_TWO_LEVEL_WORK || m_dispatch_device_status == E_TWO_LEVEL_OVER )
+			if ( m_dispatch_device_status == DISPATCH_DEVICE_TWO_LEVEL_WORK || m_dispatch_device_status == DISPATCH_DEVICE_TWO_LEVEL_OVER )
 			{
 				//如果正在执行一级任务, 那么取消当前指令, 然后降级
 				m_execute_condition.notify_all(false);
@@ -305,7 +305,7 @@ Error_manager Dispatch_device_base::cancel_task(std::shared_ptr<Task_Base> p_tas
 				{
 					std::unique_lock<std::mutex> t_lock(m_lock);
 					mp_device_two_level_task.reset();
-					m_dispatch_device_status = E_ONE_LEVEL_WORK;
+					m_dispatch_device_status = DISPATCH_DEVICE_ONE_LEVEL_WORK;
 				}
 				m_execute_condition.notify_all(true);
 			}
@@ -317,9 +317,9 @@ Error_manager Dispatch_device_base::cancel_task(std::shared_ptr<Task_Base> p_tas
 			}
 			break;
 		}
-		case E_THREE_LEVEL:
+		case DISPATCH_TASK_THREE_LEVEL:
 		{
-			if ( m_dispatch_device_status == E_THREE_LEVEL_WORK || m_dispatch_device_status == E_THREE_LEVEL_OVER )
+			if ( m_dispatch_device_status == DISPATCH_DEVICE_THREE_LEVEL_WORK || m_dispatch_device_status == DISPATCH_DEVICE_THREE_LEVEL_OVER )
 			{
 				//如果正在执行一级任务, 那么取消当前指令, 然后降级
 				m_execute_condition.notify_all(false);
@@ -332,7 +332,7 @@ Error_manager Dispatch_device_base::cancel_task(std::shared_ptr<Task_Base> p_tas
 				{
 					std::unique_lock<std::mutex> t_lock(m_lock);
 					mp_device_three_level_task.reset();
-					m_dispatch_device_status = E_TWO_LEVEL_WORK;
+					m_dispatch_device_status = DISPATCH_DEVICE_TWO_LEVEL_WORK;
 				}
 				m_execute_condition.notify_all(true);
 			}
@@ -364,7 +364,7 @@ Dispatch_device_base::Dispatch_device_status Dispatch_device_base::get_dispatch_
 //获取硬件设备的状态, 必须子类继承
 Dispatch_device_base::Hardware_device_status Dispatch_device_base::get_actual_device_status()
 {
-	return DEVICE_UNKNOWN;
+	return HARDWARE_DEVICE_UNKNOWN;
 }
 
 int Dispatch_device_base::get_device_id()
@@ -398,7 +398,7 @@ void Dispatch_device_base::execute_thread_fun()
 			switch ( (Dispatch_device_status)m_dispatch_device_status )
 			{
 				//核心任务, (三级任务)
-				case E_THREE_LEVEL_WORK:
+				case DISPATCH_DEVICE_THREE_LEVEL_WORK:
 				{
 					if ( mp_device_three_level_task.get() != NULL )
 					{
@@ -423,17 +423,17 @@ void Dispatch_device_base::execute_thread_fun()
 								mp_device_three_level_task->set_task_error_manager(t_error);
 							}
 							end_task(mp_device_three_level_task);
-							m_dispatch_device_status = E_THREE_LEVEL_OVER;
+							m_dispatch_device_status = DISPATCH_DEVICE_THREE_LEVEL_OVER;
 						}
 					}
 					else
 					{
 						//直接降级
-						m_dispatch_device_status = E_TWO_LEVEL_WORK;
+						m_dispatch_device_status = DISPATCH_DEVICE_TWO_LEVEL_WORK;
 					}
 					break;
 				}
-				case E_THREE_LEVEL_OVER:
+				case DISPATCH_DEVICE_THREE_LEVEL_OVER:
 				{
 					//更新通信
 					update_device_communication();
@@ -447,24 +447,24 @@ void Dispatch_device_base::execute_thread_fun()
 							//这里会通知任务已经释放, 然后销毁任务单,  并降级
 							mp_device_three_level_task->set_task_statu(Task_Base::Task_statu::TASK_FREE);
 							mp_device_three_level_task.reset();
-							m_dispatch_device_status = E_TWO_LEVEL_WORK;
+							m_dispatch_device_status = DISPATCH_DEVICE_TWO_LEVEL_WORK;
 						}
 							//任务单重新创建, 调度创建的新的任务,那么回去继续工作
 						else if (  mp_device_three_level_task->get_task_statu() == Task_Base::Task_statu::TASK_CREATED )
 						{
 							mp_device_three_level_task->set_task_statu(Task_Base::Task_statu::TASK_SIGNED);
-							m_dispatch_device_status = E_THREE_LEVEL_WORK;
+							m_dispatch_device_status = DISPATCH_DEVICE_THREE_LEVEL_WORK;
 						}
 						//else //保持不动, 直到发送方给定新的任务,
 					}
 					else
 					{
 						//直接降级
-						m_dispatch_device_status = E_TWO_LEVEL_WORK;
+						m_dispatch_device_status = DISPATCH_DEVICE_TWO_LEVEL_WORK;
 					}
 					break;
 				}
-				case E_TWO_LEVEL_WORK:
+				case DISPATCH_DEVICE_TWO_LEVEL_WORK:
 				{
 					if ( mp_device_two_level_task.get() != NULL )
 					{
@@ -489,17 +489,17 @@ void Dispatch_device_base::execute_thread_fun()
 								mp_device_two_level_task->set_task_error_manager(t_error);
 							}
 							end_task(mp_device_two_level_task);
-							m_dispatch_device_status = E_TWO_LEVEL_OVER;
+							m_dispatch_device_status = DISPATCH_DEVICE_TWO_LEVEL_OVER;
 						}
 					}
 					else
 					{
 						//直接降级
-						m_dispatch_device_status = E_ONE_LEVEL_WORK;
+						m_dispatch_device_status = DISPATCH_DEVICE_ONE_LEVEL_WORK;
 					}
 					break;
 				}
-				case E_TWO_LEVEL_OVER:
+				case DISPATCH_DEVICE_TWO_LEVEL_OVER:
 				{
 					//更新通信
 					update_device_communication();
@@ -513,24 +513,24 @@ void Dispatch_device_base::execute_thread_fun()
 							//这里会通知任务已经释放, 然后销毁任务单,  并降级
 							mp_device_two_level_task->set_task_statu(Task_Base::Task_statu::TASK_FREE);
 							mp_device_two_level_task.reset();
-							m_dispatch_device_status = E_ONE_LEVEL_WORK;
+							m_dispatch_device_status = DISPATCH_DEVICE_ONE_LEVEL_WORK;
 						}
 							//任务单重新创建, 调度创建的新的任务,那么回去继续工作
 						else if (  mp_device_two_level_task->get_task_statu() == Task_Base::Task_statu::TASK_CREATED )
 						{
 							mp_device_two_level_task->set_task_statu(Task_Base::Task_statu::TASK_SIGNED);
-							m_dispatch_device_status = E_TWO_LEVEL_WORK;
+							m_dispatch_device_status = DISPATCH_DEVICE_TWO_LEVEL_WORK;
 						}
 						//else //保持不动, 直到发送方给定新的任务,
 					}
 					else
 					{
 						//直接降级
-						m_dispatch_device_status = E_ONE_LEVEL_WORK;
+						m_dispatch_device_status = DISPATCH_DEVICE_ONE_LEVEL_WORK;
 					}
 					break;
 				}
-				case E_ONE_LEVEL_WORK:
+				case DISPATCH_DEVICE_ONE_LEVEL_WORK:
 				{
 					if ( mp_device_one_level_task.get() != NULL )
 					{
@@ -561,17 +561,17 @@ void Dispatch_device_base::execute_thread_fun()
 								mp_device_one_level_task->set_task_error_manager(t_error);
 							}
 							end_task(mp_device_one_level_task);
-							m_dispatch_device_status = E_ONE_LEVEL_OVER;
+							m_dispatch_device_status = DISPATCH_DEVICE_ONE_LEVEL_OVER;
 						}
 					}
 					else
 					{
 						//直接降级
-						m_dispatch_device_status = E_READY;
+						m_dispatch_device_status = DISPATCH_DEVICE_READY;
 					}
 					break;
 				}
-				case E_ONE_LEVEL_OVER:
+				case DISPATCH_DEVICE_ONE_LEVEL_OVER:
 				{
 					//更新通信
 					update_device_communication();
@@ -585,24 +585,24 @@ void Dispatch_device_base::execute_thread_fun()
 							//这里会通知任务已经释放, 然后销毁任务单,  并降级
 							mp_device_one_level_task->set_task_statu(Task_Base::Task_statu::TASK_FREE);
 							mp_device_one_level_task.reset();
-							m_dispatch_device_status = E_READY;
+							m_dispatch_device_status = DISPATCH_DEVICE_READY;
 						}
 							//任务单重新创建, 调度创建的新的任务,那么回去继续工作
 						else if (  mp_device_one_level_task->get_task_statu() == Task_Base::Task_statu::TASK_CREATED )
 						{
 							mp_device_one_level_task->set_task_statu(Task_Base::Task_statu::TASK_SIGNED);
-							m_dispatch_device_status = E_ONE_LEVEL_WORK;
+							m_dispatch_device_status = DISPATCH_DEVICE_ONE_LEVEL_WORK;
 						}
 						//else //保持不动, 直到发送方给定新的任务,
 					}
 					else
 					{
 						//直接降级
-						m_dispatch_device_status = E_READY;
+						m_dispatch_device_status = DISPATCH_DEVICE_READY;
 					}
 					break;
 				}
-				case E_FAULT:
+				case DISPATCH_DEVICE_FAULT:
 				{
 					//更新通信
 					update_device_communication();
@@ -636,7 +636,7 @@ void Dispatch_device_base::execute_thread_fun()
 
 					break;
 				}
-				case E_DISCONNECT:
+				case DISPATCH_DEVICE_DISCONNECT:
 				{
 					//更新通信
 					update_device_communication();
@@ -669,7 +669,7 @@ void Dispatch_device_base::execute_thread_fun()
 
 					break;
 				}
-				case E_READY:
+				case DISPATCH_DEVICE_READY:
 				{
 					//更新通信
 					update_device_communication();

+ 24 - 24
dispatch/dispatch_device_base.h

@@ -25,28 +25,28 @@ public:
 	//设备状态,这个类的总状态,这里指工作任务流程
 	enum Dispatch_device_status
 	{
-		E_UNKNOW               	= 0,    //未知
-		E_READY               	= 1,    //准备,待机
-		E_BUSY					= 2, 	//工作正忙
-
-		E_ONE_LEVEL_OVER		= 3, 	//一级工作完成,
-		E_ONE_LEVEL_WORK		= 4,	//一级工作状态, 就是普通的移动任务
-		E_TWO_LEVEL_OVER		= 5, 	//一级工作完成,
-		E_TWO_LEVEL_WORK		= 6,	//二级工作状态, 就是紧急避让, 插队任务(会在执行一级任务的过程中, 插队并优先执行二级任务)
-		E_THREE_LEVEL_OVER		= 7, 	//一级工作完成,
-		E_THREE_LEVEL_WORK		= 8,	//三级工作任务, 就是锁定硬件资源, 不让插队, (除非急停或者取消任务)
-
-		E_FAULT					= 100,	//故障
-		E_DISCONNECT			= 101, 	//通信故障
+		DISPATCH_DEVICE_UNKNOW               	= 0,    //未知
+		DISPATCH_DEVICE_READY               	= 1,    //准备,待机
+		DISPATCH_DEVICE_BUSY					= 2, 	//工作正忙
+
+		DISPATCH_DEVICE_ONE_LEVEL_OVER		= 3, 	//一级工作完成,
+		DISPATCH_DEVICE_ONE_LEVEL_WORK		= 4,	//一级工作状态, 就是普通的移动任务
+		DISPATCH_DEVICE_TWO_LEVEL_OVER		= 5, 	//一级工作完成,
+		DISPATCH_DEVICE_TWO_LEVEL_WORK		= 6,	//二级工作状态, 就是紧急避让, 插队任务(会在执行一级任务的过程中, 插队并优先执行二级任务)
+		DISPATCH_DEVICE_THREE_LEVEL_OVER		= 7, 	//一级工作完成,
+		DISPATCH_DEVICE_THREE_LEVEL_WORK		= 8,	//三级工作任务, 就是锁定硬件资源, 不让插队, (除非急停或者取消任务)
+
+		DISPATCH_DEVICE_FAULT					= 100,	//故障
+		DISPATCH_DEVICE_DISCONNECT			= 101, 	//通信故障
 	};
 	
 	//调度任务的等级
 	enum Dispatch_task_level
 	{
-//	    E_UNKNOW_LEVEL          = 0,    //无效任务
-		E_ONE_LEVEL             = 1,    //一级任务
-		E_TWO_LEVEL				= 2,	//二级任务
-		E_THREE_LEVEL			= 3,	//三级任务	    
+//	    DISPATCH_TASK_UNKNOW_LEVEL          = 0,    //无效任务
+		DISPATCH_TASK_ONE_LEVEL             = 1,    //一级任务
+		DISPATCH_TASK_TWO_LEVEL				= 2,	//二级任务
+		DISPATCH_TASK_THREE_LEVEL			= 3,	//三级任务
 	};
 
 	//抓车的夹杆
@@ -86,13 +86,13 @@ public:
 	//设备的硬件设备状态
 	enum Hardware_device_status
 	{
-		DEVICE_UNKNOWN              = 0,    //设备未知
-		DEVICE_READY                = 1,    //设备空闲(可以接受新的指令任务)
-		DEVICE_WORKING				= 2,	//设备工作中
-		DEVICE_EMERGENCY_STOP		= 3,	//设备急停
-		DEVICE_UNSAFETY				= 4,	//设备不安全(暂时不考虑是否处于安全位置)
-		DEVICE_COLLISION			= 5,	//设备发生碰撞
-		DEVICE_FAULT				= 6,	//设备故障
+		HARDWARE_DEVICE_UNKNOWN              = 0,    //设备未知
+		HARDWARE_DEVICE_READY                = 1,    //设备空闲(可以接受新的指令任务)
+		HARDWARE_DEVICE_WORKING				= 2,	//设备工作中
+		HARDWARE_DEVICE_EMERGENCY_STOP		= 3,	//设备急停
+		HARDWARE_DEVICE_UNSAFETY				= 4,	//设备不安全(暂时不考虑是否处于安全位置)
+		HARDWARE_DEVICE_COLLISION			= 5,	//设备发生碰撞
+		HARDWARE_DEVICE_FAULT				= 6,	//设备故障
 	};
 
 	//设备的负载状态, 小跑车上面是否有车.

+ 4 - 4
dispatch/dispatch_process.cpp

@@ -364,7 +364,7 @@ Error_manager Dispatch_process::connect_dispatch_device(int dispatch_device_type
 		Catcher* tp_catcher = (Catcher*)dispatch_control_node.mp_dispatch_device.get();
 		//检查设备状态
 		if ( tp_catcher->check_status() == Error_code::SUCCESS &&
-			 tp_catcher->m_actual_device_status == Dispatch_device_base::DEVICE_READY )
+			 tp_catcher->m_actual_device_status == Dispatch_device_base::HARDWARE_DEVICE_READY )
 		{
 			//创建任务单
 			dispatch_control_node.mp_dispatch_task = std::shared_ptr<Task_Base>(new Catcher_task);
@@ -382,7 +382,7 @@ Error_manager Dispatch_process::connect_dispatch_device(int dispatch_device_type
 			tp_catcher_task->m_request_wheelbase = Dispatch_coordinates::get_instance_references().m_default_wheelbase;
 			tp_catcher_task->m_request_clamp_motion = (Catcher_task::Clamp_motion)tp_catcher->m_actual_clamp_motion1;
 
-			t_error = tp_catcher->execute_task(dispatch_control_node.mp_dispatch_task, Dispatch_device_base::E_ONE_LEVEL);
+			t_error = tp_catcher->execute_task(dispatch_control_node.mp_dispatch_task, Dispatch_device_base::DISPATCH_TASK_ONE_LEVEL);
 			if ( t_error != Error_code::SUCCESS )
 			{
 				dispatch_control_node.m_error = t_error;
@@ -431,7 +431,7 @@ Error_manager Dispatch_process::connect_dispatch_device(int dispatch_device_type
 		Carrier* tp_carrier = (Carrier*)dispatch_control_node.mp_dispatch_device.get();
 		//检查设备状态
 		if ( tp_carrier->check_status() == Error_code::SUCCESS &&
-			 tp_carrier->m_actual_device_status == Dispatch_device_base::DEVICE_READY )
+			 tp_carrier->m_actual_device_status == Dispatch_device_base::HARDWARE_DEVICE_READY )
 		{
 			//创建任务单
 			dispatch_control_node.mp_dispatch_task = std::shared_ptr<Task_Base>(new Carrier_task);
@@ -453,7 +453,7 @@ Error_manager Dispatch_process::connect_dispatch_device(int dispatch_device_type
 			tp_carrier_task->m_request_floor_id = 0;
 			tp_carrier_task->m_request_wheelbase = Dispatch_coordinates::get_instance_references().m_default_wheelbase;
 
-			t_error = tp_carrier->execute_task(dispatch_control_node.mp_dispatch_task, Dispatch_device_base::E_ONE_LEVEL);
+			t_error = tp_carrier->execute_task(dispatch_control_node.mp_dispatch_task, Dispatch_device_base::DISPATCH_TASK_ONE_LEVEL);
 			if ( t_error != Error_code::SUCCESS )
 			{
 				dispatch_control_node.m_error = t_error;

+ 13 - 13
dispatch/passageway.cpp

@@ -18,7 +18,7 @@ Passageway::Passageway()
 
 	m_status_updata_time = std::chrono::system_clock::now();
 	m_last_heartbeat = 0;			//上一次的心跳
-	m_actual_device_status = DEVICE_UNKNOWN;			//通道口的硬件设备状态
+	m_actual_device_status = HARDWARE_DEVICE_UNKNOWN;			//通道口的硬件设备状态
 	m_actual_inside_load_status = LOAD_UNKNOWN;	//通道口的内部负载状态, 门内地感是否有车.
 	m_actual_outside_load_status = LOAD_UNKNOWN;	//通道口的外部负载状态, 门外地感是否有车.
 	m_actual_front_overstep_the_boundary = BOUNDARY_NORMAL;	//通道口 汽车前边界
@@ -126,34 +126,34 @@ Error_manager Passageway::update_device_communication()
 		//设备异常  //注注注注注注注注意了, ==的优先级比&要高.
 		if ( (tp_passageway_status_from_plc_to_dispatch->m_safe_status & 0x02) == 0 )
 		{
-			m_actual_device_status = Dispatch_device_base::DEVICE_EMERGENCY_STOP;
-			m_dispatch_device_status = Dispatch_device_base::E_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_passageway_status_from_plc_to_dispatch->m_safe_status & 0x01) == 0 )
 		{
-			m_actual_device_status = Dispatch_device_base::DEVICE_FAULT;
-			m_dispatch_device_status = Dispatch_device_base::E_FAULT;
+			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::DEVICE_WORKING;
+				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::DEVICE_READY;
+				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_READY;
 			}
 			else
 			{
-				m_actual_device_status = Dispatch_device_base::DEVICE_UNKNOWN;
+				m_actual_device_status = Dispatch_device_base::HARDWARE_DEVICE_UNKNOWN;
 			}
 
 
 			//故障恢复之后   E_FAULT  ->>  E_THREE_LEVEL_WORK
-			if ( m_dispatch_device_status == Dispatch_device_base::E_FAULT )
+			if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_FAULT )
 			{
-				m_dispatch_device_status = Dispatch_device_base::E_THREE_LEVEL_WORK;
+				m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
 			}
 			//else 流程状态维持不变
 		}
@@ -265,14 +265,14 @@ Error_manager Passageway::update_device_communication()
 		m_actual_error_description = (char*)(tp_passageway_status_from_plc_to_dispatch->m_actual_error_description-2);
 
 		//重连之后,搬运器状态   E_DISCONNECT  ->>  E_THREE_LEVEL_WORK
-		if ( m_dispatch_device_status == Dispatch_device_base::E_DISCONNECT )
+		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT )
 		{
-			m_dispatch_device_status = Dispatch_device_base::E_THREE_LEVEL_WORK;
+			m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_THREE_LEVEL_WORK;
 		}
 	}
 	else if(std::chrono::system_clock::now() - m_status_updata_time > std::chrono::milliseconds(COMMUNICATION_OVER_TIME_MS))
 	{
-		m_dispatch_device_status = Dispatch_device_base::E_DISCONNECT;
+		m_dispatch_device_status = Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT;
 	}
 	//else 继续等待,直到消息刷新或者超时.
 

+ 5 - 5
main.cpp

@@ -1,6 +1,6 @@
 //
 // huli  test   20200223
-//zxc123...
+//
 
 #include <iostream>
 #include "./error_code/error_code.h"
@@ -148,7 +148,7 @@ int main(int argc,char* argv[])
 	tp_catcher_task1->m_request_d2 = 455;
 	tp_catcher_task1->m_request_wheelbase = 2800;
 	tp_catcher_task1->m_request_clamp_motion = Catcher_task::E_CLAMP_LOOSE;
-	t_error = t_catcher.execute_task(tp_task_Base1, Dispatch_device_base::E_ONE_LEVEL);
+	t_error = t_catcher.execute_task(tp_task_Base1, Dispatch_device_base::DISPATCH_TASK_ONE_LEVEL);
 	std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
 	std::cout << " ---------------------------------------------------" << std::endl;
 
@@ -243,7 +243,7 @@ int main(int argc,char* argv[])
 	tp_carrier_task20->m_request_floor_id = 555;
 	tp_carrier_task20->m_request_wheelbase = 555;
 
-	t_error = t_carrier20.execute_task(tp_task_Base20, Dispatch_device_base::E_ONE_LEVEL);
+	t_error = t_carrier20.execute_task(tp_task_Base20, Dispatch_device_base::DISPATCH_TASK_ONE_LEVEL);
 	std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
 	std::cout << " ---------------------------------------------------" << std::endl;
 
@@ -339,7 +339,7 @@ int main(int argc,char* argv[])
 	tp_carrier_task21->m_request_floor_id = 555;
 	tp_carrier_task21->m_request_wheelbase = 555;
 
-	t_error = t_carrier21.execute_task(tp_task_Base21, Dispatch_device_base::E_ONE_LEVEL);
+	t_error = t_carrier21.execute_task(tp_task_Base21, Dispatch_device_base::DISPATCH_TASK_ONE_LEVEL);
 	std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
 	std::cout << " ---------------------------------------------------" << std::endl;
 
@@ -435,7 +435,7 @@ int main(int argc,char* argv[])
 	tp_carrier_task22->m_request_floor_id = 555;
 	tp_carrier_task22->m_request_wheelbase = 555;
 
-	t_error = t_carrier22.execute_task(tp_task_Base22, Dispatch_device_base::E_ONE_LEVEL);
+	t_error = t_carrier22.execute_task(tp_task_Base22, Dispatch_device_base::DISPATCH_TASK_ONE_LEVEL);
 	std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
 	std::cout << " ---------------------------------------------------" << std::endl;
 

+ 36 - 32
message/dispatch_message.pb.cc

@@ -480,40 +480,44 @@ void AddDescriptorsImpl() {
       "W\020\000\022\034\n\030E_DISPATCH_MANAGER_READY\020\001\022\034\n\030E_D"
       "ISPATCH_MANAGER_STORE\020\002\022\035\n\031E_DISPATCH_MA"
       "NAGER_PICKUP\020\003\022\034\n\030E_DISPATCH_MANAGER_FAU"
-      "LT\020d*\346\001\n\026Dispatch_device_status\022\014\n\010E_UNK"
-      "NOW\020\000\022\013\n\007E_READY\020\001\022\n\n\006E_BUSY\020\002\022\024\n\020E_ONE_"
-      "LEVEL_OVER\020\003\022\024\n\020E_ONE_LEVEL_WORK\020\004\022\024\n\020E_"
-      "TWO_LEVEL_OVER\020\005\022\024\n\020E_TWO_LEVEL_WORK\020\006\022\026"
-      "\n\022E_THREE_LEVEL_OVER\020\007\022\026\n\022E_THREE_LEVEL_"
-      "WORK\020\010\022\013\n\007E_FAULT\020d\022\020\n\014E_DISCONNECT\020e*J\n"
-      "\023Dispatch_task_level\022\017\n\013E_ONE_LEVEL\020\001\022\017\n"
-      "\013E_TWO_LEVEL\020\002\022\021\n\rE_THREE_LEVEL\020\003*K\n\014Cla"
-      "mp_motion\022\025\n\021E_CLAMP_NO_ACTION\020\000\022\021\n\rE_CL"
-      "AMP_TIGHT\020\001\022\021\n\rE_CLAMP_LOOSE\020\002*R\n\014Joint_"
-      "motion\022\025\n\021E_JOINT_NO_ACTION\020\000\022\024\n\020E_JOINT"
-      "_HOLD_OUT\020\001\022\025\n\021E_JOINT_TAKE_BACK\020\002*y\n\027Sm"
-      "all_sports_car_motion\022\034\n\030E_SMALL_SPORTS_"
-      "NO_ACTION\020\000\022\037\n\033E_SMALL_SPORTS_CAR_GET_AW"
-      "AY\020\001\022\037\n\033E_SMALL_SPORTS_CAR_GET_BACK\020\002*l\n"
-      "\016Respons_status\022\023\n\017RESPONS_WORKING\020\000\022\020\n\014"
-      "RESPONS_OVER\020\001\022\027\n\023RESPONS_MINOR_ERROR\020d\022"
-      "\032\n\026RESPONS_CRITICAL_ERROR\020e*\252\001\n\026Hardware"
-      "_device_status\022\022\n\016DEVICE_UNKNOWN\020\000\022\020\n\014DE"
-      "VICE_READY\020\001\022\022\n\016DEVICE_WORKING\020\002\022\031\n\025DEVI"
-      "CE_EMERGENCY_STOP\020\003\022\023\n\017DEVICE_UNSAFETY\020\004"
-      "\022\024\n\020DEVICE_COLLISION\020\005\022\020\n\014DEVICE_FAULT\020\006"
-      "*9\n\013Load_status\022\020\n\014LOAD_UNKNOWN\020\000\022\014\n\010HAV"
-      "E_CAR\020\001\022\n\n\006NO_CAR\020\002*w\n\023Turntable_directi"
-      "on\022\037\n\033TURNTABLE_DIRECTION_UNKNOWN\020\000\022\036\n\032T"
-      "URNTABLE_DIRECTION_INSIDE\020\001\022\037\n\033TURNTABLE"
-      "_DIRECTION_OUTSIDE\020\002*N\n\013Door_motion\022\020\n\014D"
-      "OOR_UNKNOWN\020\000\022\r\n\tDOOR_OPEN\020\001\022\016\n\nDOOR_CLO"
-      "SE\020\002\022\016\n\nDOOR_ERROR\020\003*C\n\025Overstep_the_bou"
-      "ndary\022\023\n\017BOUNDARY_NORMAL\020\000\022\025\n\021BOUNDARY_O"
-      "VERSTEP\020\001"
+      "LT\020d*\200\003\n\026Dispatch_device_status\022\032\n\026DISPA"
+      "TCH_DEVICE_UNKNOW\020\000\022\031\n\025DISPATCH_DEVICE_R"
+      "EADY\020\001\022\030\n\024DISPATCH_DEVICE_BUSY\020\002\022\"\n\036DISP"
+      "ATCH_DEVICE_ONE_LEVEL_OVER\020\003\022\"\n\036DISPATCH"
+      "_DEVICE_ONE_LEVEL_WORK\020\004\022\"\n\036DISPATCH_DEV"
+      "ICE_TWO_LEVEL_OVER\020\005\022\"\n\036DISPATCH_DEVICE_"
+      "TWO_LEVEL_WORK\020\006\022$\n DISPATCH_DEVICE_THRE"
+      "E_LEVEL_OVER\020\007\022$\n DISPATCH_DEVICE_THREE_"
+      "LEVEL_WORK\020\010\022\031\n\025DISPATCH_DEVICE_FAULT\020d\022"
+      "\036\n\032DISPATCH_DEVICE_DISCONNECT\020e*n\n\023Dispa"
+      "tch_task_level\022\033\n\027DISPATCH_TASK_ONE_LEVE"
+      "L\020\001\022\033\n\027DISPATCH_TASK_TWO_LEVEL\020\002\022\035\n\031DISP"
+      "ATCH_TASK_THREE_LEVEL\020\003*K\n\014Clamp_motion\022"
+      "\025\n\021E_CLAMP_NO_ACTION\020\000\022\021\n\rE_CLAMP_TIGHT\020"
+      "\001\022\021\n\rE_CLAMP_LOOSE\020\002*R\n\014Joint_motion\022\025\n\021"
+      "E_JOINT_NO_ACTION\020\000\022\024\n\020E_JOINT_HOLD_OUT\020"
+      "\001\022\025\n\021E_JOINT_TAKE_BACK\020\002*y\n\027Small_sports"
+      "_car_motion\022\034\n\030E_SMALL_SPORTS_NO_ACTION\020"
+      "\000\022\037\n\033E_SMALL_SPORTS_CAR_GET_AWAY\020\001\022\037\n\033E_"
+      "SMALL_SPORTS_CAR_GET_BACK\020\002*l\n\016Respons_s"
+      "tatus\022\023\n\017RESPONS_WORKING\020\000\022\020\n\014RESPONS_OV"
+      "ER\020\001\022\027\n\023RESPONS_MINOR_ERROR\020d\022\032\n\026RESPONS"
+      "_CRITICAL_ERROR\020e*\252\001\n\026Hardware_device_st"
+      "atus\022\022\n\016DEVICE_UNKNOWN\020\000\022\020\n\014DEVICE_READY"
+      "\020\001\022\022\n\016DEVICE_WORKING\020\002\022\031\n\025DEVICE_EMERGEN"
+      "CY_STOP\020\003\022\023\n\017DEVICE_UNSAFETY\020\004\022\024\n\020DEVICE"
+      "_COLLISION\020\005\022\020\n\014DEVICE_FAULT\020\006*9\n\013Load_s"
+      "tatus\022\020\n\014LOAD_UNKNOWN\020\000\022\014\n\010HAVE_CAR\020\001\022\n\n"
+      "\006NO_CAR\020\002*w\n\023Turntable_direction\022\037\n\033TURN"
+      "TABLE_DIRECTION_UNKNOWN\020\000\022\036\n\032TURNTABLE_D"
+      "IRECTION_INSIDE\020\001\022\037\n\033TURNTABLE_DIRECTION"
+      "_OUTSIDE\020\002*N\n\013Door_motion\022\020\n\014DOOR_UNKNOW"
+      "N\020\000\022\r\n\tDOOR_OPEN\020\001\022\016\n\nDOOR_CLOSE\020\002\022\016\n\nDO"
+      "OR_ERROR\020\003*C\n\025Overstep_the_boundary\022\023\n\017B"
+      "OUNDARY_NORMAL\020\000\022\025\n\021BOUNDARY_OVERSTEP\020\001"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 4129);
+      descriptor, 4319);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "dispatch_message.proto", &protobuf_RegisterTypes);
   ::protobuf_message_5fbase_2eproto::AddDescriptors();

+ 18 - 18
message/dispatch_message.pb.h

@@ -178,21 +178,21 @@ inline bool Dispatch_manager_status_Parse(
     Dispatch_manager_status_descriptor(), name, value);
 }
 enum Dispatch_device_status {
-  E_UNKNOW = 0,
-  E_READY = 1,
-  E_BUSY = 2,
-  E_ONE_LEVEL_OVER = 3,
-  E_ONE_LEVEL_WORK = 4,
-  E_TWO_LEVEL_OVER = 5,
-  E_TWO_LEVEL_WORK = 6,
-  E_THREE_LEVEL_OVER = 7,
-  E_THREE_LEVEL_WORK = 8,
-  E_FAULT = 100,
-  E_DISCONNECT = 101
+  DISPATCH_DEVICE_UNKNOW = 0,
+  DISPATCH_DEVICE_READY = 1,
+  DISPATCH_DEVICE_BUSY = 2,
+  DISPATCH_DEVICE_ONE_LEVEL_OVER = 3,
+  DISPATCH_DEVICE_ONE_LEVEL_WORK = 4,
+  DISPATCH_DEVICE_TWO_LEVEL_OVER = 5,
+  DISPATCH_DEVICE_TWO_LEVEL_WORK = 6,
+  DISPATCH_DEVICE_THREE_LEVEL_OVER = 7,
+  DISPATCH_DEVICE_THREE_LEVEL_WORK = 8,
+  DISPATCH_DEVICE_FAULT = 100,
+  DISPATCH_DEVICE_DISCONNECT = 101
 };
 bool Dispatch_device_status_IsValid(int value);
-const Dispatch_device_status Dispatch_device_status_MIN = E_UNKNOW;
-const Dispatch_device_status Dispatch_device_status_MAX = E_DISCONNECT;
+const Dispatch_device_status Dispatch_device_status_MIN = DISPATCH_DEVICE_UNKNOW;
+const Dispatch_device_status Dispatch_device_status_MAX = DISPATCH_DEVICE_DISCONNECT;
 const int Dispatch_device_status_ARRAYSIZE = Dispatch_device_status_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* Dispatch_device_status_descriptor();
@@ -206,13 +206,13 @@ inline bool Dispatch_device_status_Parse(
     Dispatch_device_status_descriptor(), name, value);
 }
 enum Dispatch_task_level {
-  E_ONE_LEVEL = 1,
-  E_TWO_LEVEL = 2,
-  E_THREE_LEVEL = 3
+  DISPATCH_TASK_ONE_LEVEL = 1,
+  DISPATCH_TASK_TWO_LEVEL = 2,
+  DISPATCH_TASK_THREE_LEVEL = 3
 };
 bool Dispatch_task_level_IsValid(int value);
-const Dispatch_task_level Dispatch_task_level_MIN = E_ONE_LEVEL;
-const Dispatch_task_level Dispatch_task_level_MAX = E_THREE_LEVEL;
+const Dispatch_task_level Dispatch_task_level_MIN = DISPATCH_TASK_ONE_LEVEL;
+const Dispatch_task_level Dispatch_task_level_MAX = DISPATCH_TASK_THREE_LEVEL;
 const int Dispatch_task_level_ARRAYSIZE = Dispatch_task_level_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* Dispatch_task_level_descriptor();

+ 17 - 17
message/dispatch_message.proto

@@ -91,28 +91,28 @@ enum Dispatch_manager_status
 //设备状态,这个类的总状态,这里指工作任务流程
 	enum Dispatch_device_status
 	{
-		E_UNKNOW               	= 0;    //未知
-		E_READY               	= 1;    //准备,待机
-		E_BUSY					= 2; 	//工作正忙
-
-		E_ONE_LEVEL_OVER		= 3; 	//一级工作完成,
-		E_ONE_LEVEL_WORK		= 4;	//一级工作状态, 就是普通的移动任务
-		E_TWO_LEVEL_OVER		= 5; 	//一级工作完成,
-		E_TWO_LEVEL_WORK		= 6;	//二级工作状态, 就是紧急避让, 插队任务(会在执行一级任务的过程中, 插队并优先执行二级任务)
-		E_THREE_LEVEL_OVER		= 7; 	//一级工作完成,
-		E_THREE_LEVEL_WORK		= 8;	//三级工作任务, 就是锁定硬件资源, 不让插队, (除非急停或者取消任务)
-
-		E_FAULT					= 100;	//故障
-		E_DISCONNECT			= 101; 	//通信故障
+	    DISPATCH_DEVICE_UNKNOW               	= 0;    //未知
+    	DISPATCH_DEVICE_READY               	= 1;    //准备,待机
+    	DISPATCH_DEVICE_BUSY					= 2; 	//工作正忙
+
+    	DISPATCH_DEVICE_ONE_LEVEL_OVER		= 3; 	//一级工作完成;
+    	DISPATCH_DEVICE_ONE_LEVEL_WORK		= 4;	//一级工作状态; 就是普通的移动任务
+    	DISPATCH_DEVICE_TWO_LEVEL_OVER		= 5; 	//一级工作完成;
+    	DISPATCH_DEVICE_TWO_LEVEL_WORK		= 6;	//二级工作状态; 就是紧急避让; 插队任务(会在执行一级任务的过程中; 插队并优先执行二级任务)
+    	DISPATCH_DEVICE_THREE_LEVEL_OVER		= 7; 	//一级工作完成;
+    	DISPATCH_DEVICE_THREE_LEVEL_WORK		= 8;	//三级工作任务; 就是锁定硬件资源; 不让插队; (除非急停或者取消任务)
+
+       	DISPATCH_DEVICE_FAULT					= 100;	//故障
+    	DISPATCH_DEVICE_DISCONNECT			= 101; 	//通信故障
 	};
 
 	//调度任务的等级
 	enum Dispatch_task_level
 	{
-//	    E_UNKNOW_LEVEL          = 0;    //无效任务
-		E_ONE_LEVEL             = 1;    //一级任务
-		E_TWO_LEVEL				= 2;	//二级任务
-		E_THREE_LEVEL			= 3;	//三级任务
+//	    DISPATCH_TASK_UNKNOW_LEVEL          = 0;    //无效任务
+		DISPATCH_TASK_ONE_LEVEL             = 1;    //一级任务
+		DISPATCH_TASK_TWO_LEVEL				= 2;	//二级任务
+		DISPATCH_TASK_THREE_LEVEL			= 3;	//三级任务
 	};
 
 	//抓车的夹杆

+ 15 - 15
snap7_communication/snap7_communication_base.cpp

@@ -7,7 +7,7 @@
 
 Snap7_communication_base::Snap7_communication_base()
 {
-	m_communication_status = E_UNKNOWN;
+	m_communication_status = SNAP7_COMMUNICATION_UNKNOWN;
 	m_communication_delay_time_ms = SNAP7_COMMUNICATION_DELAY_TIME_MS;
 	mp_communication_thread = NULL;
 }
@@ -47,11 +47,11 @@ Error_manager Snap7_communication_base::communication_init_from_protobuf(Snap7_c
 		if ( t_error != Error_code::SUCCESS )
 		{
 			//连接失败, 不要直接返回, 而是改为断连, 后面继续启动线程, (线程内部有重连功能)
-			m_communication_status = E_DISCONNECT;
+			m_communication_status = SNAP7_COMMUNICATION_DISCONNECT;
 		}
 		else
 		{
-			m_communication_status = E_READY;
+			m_communication_status = SNAP7_COMMUNICATION_READY;
 		}
 	}
 
@@ -87,7 +87,7 @@ Error_manager Snap7_communication_base::communication_uninit()
 	}
 
 	communication_disconnect();
-	m_communication_status = E_UNKNOWN;
+	m_communication_status = SNAP7_COMMUNICATION_UNKNOWN;
 
 	return Error_code::SUCCESS;
 }
@@ -109,7 +109,7 @@ Error_manager Snap7_communication_base::communication_stop()
 
 
 
-Snap7_communication_base::Communication_statu Snap7_communication_base::get_status()
+Snap7_communication_base::Snap7_communication_statu Snap7_communication_base::get_status()
 {
 	return m_communication_status;
 }
@@ -175,8 +175,8 @@ Error_manager t_error;
 			std::this_thread::yield();
 			switch ( m_communication_status )
 			{
-			    case E_READY:
-				case E_RECEIVE:
+			    case SNAP7_COMMUNICATION_READY:
+				case SNAP7_COMMUNICATION_RECEIVE:
 			    {
 					{
 						std::unique_lock<std::mutex> t_lock(m_receive_buf_lock);
@@ -187,7 +187,7 @@ Error_manager t_error;
 							t_error = read_data_buf(iter->second);
 							if (t_error == Error_code::SNAP7_READ_ERROR)
 							{
-								m_communication_status = E_DISCONNECT;
+								m_communication_status = SNAP7_COMMUNICATION_DISCONNECT;
 								std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
 								break;
 							}
@@ -199,10 +199,10 @@ Error_manager t_error;
 					}
 					//注:数据更新放在锁的外面, 防止重复加锁....
 					updata_receive_buf();
-					m_communication_status = E_SEND;
+					m_communication_status = SNAP7_COMMUNICATION_SEND;
 			        break;
 			    }
-			    case E_SEND:
+			    case SNAP7_COMMUNICATION_SEND:
 			    {
 					//注:数据更新放在锁的外面, 防止重复加锁....
 					updata_send_buf();
@@ -215,7 +215,7 @@ Error_manager t_error;
 							t_error = write_data_buf(iter->second);
 							if (t_error == Error_code::SNAP7_WRITE_ERROR)
 							{
-								m_communication_status = E_DISCONNECT;
+								m_communication_status = SNAP7_COMMUNICATION_DISCONNECT;
 								std::cout << " huli test :::: " << " t_error = " << t_error << std::endl;
 								break;
 							}
@@ -225,10 +225,10 @@ Error_manager t_error;
 							break;
 						}
 					}
-					m_communication_status = E_RECEIVE;
+					m_communication_status = SNAP7_COMMUNICATION_RECEIVE;
 			        break;
 			    }
-				case E_DISCONNECT:
+				case SNAP7_COMMUNICATION_DISCONNECT:
 				{
 					//重连
 					LOG(INFO) << "find plc connection error, trying to reconnect.";
@@ -238,11 +238,11 @@ Error_manager t_error;
 					if ( t_error != Error_code::SUCCESS )
 					{
 						//连接失败, 不要直接返回, 而是改为断连, 后面继续启动线程, (线程内部有重连功能)
-						m_communication_status = E_DISCONNECT;
+						m_communication_status = SNAP7_COMMUNICATION_DISCONNECT;
 					}
 					else
 					{
-						m_communication_status = E_READY;
+						m_communication_status = SNAP7_COMMUNICATION_READY;
 					}
 					std::this_thread::sleep_for(std::chrono::milliseconds(m_communication_delay_time_ms));
 

+ 9 - 9
snap7_communication/snap7_communication_base.h

@@ -24,16 +24,16 @@ public:
 //snap7的通信参数路径
 #define SNAP7_COMMUNICATION_PARAMETER_PATH	"../setting/snap7_communication.prototxt"
 	//通信状态
-	enum Communication_statu
+	enum Snap7_communication_statu
 	{
-		E_UNKNOWN		=0,	        //通信状态 未知
-		E_READY			=1,			//通信状态 正常
+		SNAP7_COMMUNICATION_UNKNOWN		=0,	        //通信状态 未知
+		SNAP7_COMMUNICATION_READY			=1,			//通信状态 正常
 
-		E_RECEIVE		=2, 		//接受
-		E_SEND			=3, 		//发送
-		E_DISCONNECT	=4, 		//断连
+		SNAP7_COMMUNICATION_RECEIVE		=2, 		//接受
+		SNAP7_COMMUNICATION_SEND			=3, 		//发送
+		SNAP7_COMMUNICATION_DISCONNECT	=4, 		//断连
 
-		E_FAULT			=10,         //通信状态 错误
+		SNAP7_COMMUNICATION_FAULT			=10,         //通信状态 错误
 	};
 public:
 	Snap7_communication_base();
@@ -56,7 +56,7 @@ public://API functions
 	virtual Error_manager communication_stop();
 
 public://get or set member variable
-	Communication_statu get_status();
+	Snap7_communication_statu get_status();
 protected://member functions
 	//通信连接
 	Error_manager communication_connect(std::string ip_string);
@@ -80,7 +80,7 @@ protected://member functions
 protected://member variable
 
 	//状态
-	Communication_statu				m_communication_status;	//通信状态
+	Snap7_communication_statu				m_communication_status;	//通信状态
 	std::string						m_ip_string;			//通信ip
 
 	//通信模块

+ 6 - 6
system/system_executor.cpp

@@ -339,10 +339,10 @@ Error_manager System_executor::encapsulate_send_dispatch_manager_status()
 		        break;
 		    }
 		}
-		if ( tp_catcher->get_dispatch_device_status() >= Dispatch_device_base::Dispatch_device_status::E_BUSY &&
-		tp_catcher->get_dispatch_device_status() <= Dispatch_device_base::Dispatch_device_status::E_THREE_LEVEL_WORK)
+		if ( tp_catcher->get_dispatch_device_status() >= Dispatch_device_base::Dispatch_device_status::DISPATCH_DEVICE_BUSY &&
+		tp_catcher->get_dispatch_device_status() <= Dispatch_device_base::Dispatch_device_status::DISPATCH_DEVICE_THREE_LEVEL_WORK)
 		{
-			tp_catcher_data->set_dispatch_device_status(message::Dispatch_device_status::E_BUSY);
+			tp_catcher_data->set_dispatch_device_status(message::Dispatch_device_status::DISPATCH_DEVICE_BUSY);
 
 		}
 		else
@@ -401,10 +401,10 @@ Error_manager System_executor::encapsulate_send_dispatch_manager_status()
 				break;
 			}
 		}
-		if ( tp_carrier->get_dispatch_device_status() >= Dispatch_device_base::Dispatch_device_status::E_BUSY &&
-		tp_carrier->get_dispatch_device_status() <= Dispatch_device_base::Dispatch_device_status::E_THREE_LEVEL_WORK)
+		if ( tp_carrier->get_dispatch_device_status() >= Dispatch_device_base::Dispatch_device_status::DISPATCH_DEVICE_BUSY &&
+		tp_carrier->get_dispatch_device_status() <= Dispatch_device_base::Dispatch_device_status::DISPATCH_DEVICE_THREE_LEVEL_WORK)
 		{
-			tp_carrier_data->set_dispatch_device_status(message::Dispatch_device_status::E_BUSY);
+			tp_carrier_data->set_dispatch_device_status(message::Dispatch_device_status::DISPATCH_DEVICE_BUSY);
 
 		}
 		else