|
@@ -125,6 +125,13 @@ Error_manager Exception_solver::waitfor_manual_operate_msg(Process_task* task,me
|
|
|
*/
|
|
|
Error_manager Exception_solver::solve_exception(Error_manager code,Process_task* task)
|
|
|
{
|
|
|
+ //致命故障,系统急停,取消当前流程.
|
|
|
+ if(code.get_error_level()==CRITICAL_ERROR)
|
|
|
+ {
|
|
|
+ Command_manager::get_instance_pointer()->pause_system();
|
|
|
+ task->Cancel();
|
|
|
+ return SUCCESS;
|
|
|
+ }
|
|
|
|
|
|
Error_manager code_operate;
|
|
|
|
|
@@ -133,9 +140,33 @@ Error_manager Exception_solver::solve_exception(Error_manager code,Process_task*
|
|
|
switch (task->current_step_statu())
|
|
|
{
|
|
|
case message::eAlloc_step :
|
|
|
+ {
|
|
|
+
|
|
|
+ switch(code.get_error_code())
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ //重新执行
|
|
|
+ return code;
|
|
|
+ case 1:
|
|
|
+ //异常无法处理,回退
|
|
|
+ task->next_step();
|
|
|
+ return code;
|
|
|
+ case 2:
|
|
|
+ //.....handle
|
|
|
+ //异常已经处理,且恢复
|
|
|
+ return SUCCESS;
|
|
|
+ case 3:
|
|
|
+ task->Cancel();
|
|
|
+ return code;
|
|
|
+ }
|
|
|
+ return SUCCESS;
|
|
|
+ }
|
|
|
case message::eMeasure_step :
|
|
|
case message::eCompare_step :
|
|
|
case message::eDispatch_step :
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
case message::eConfirm_step :
|
|
|
case message::eComplete :
|
|
|
case message::eBackConfirm_step :
|
|
@@ -184,6 +215,9 @@ Error_manager Exception_solver::solve_exception(Error_manager code,Process_task*
|
|
|
{
|
|
|
case message::eSearch_step :
|
|
|
case message::eDispatch_step :
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
case message::eWait_step :
|
|
|
case message::eRelease_step :
|
|
|
case message::eComplete :
|
|
@@ -194,7 +228,7 @@ Error_manager Exception_solver::solve_exception(Error_manager code,Process_task*
|
|
|
case message::eBackComplete :
|
|
|
{
|
|
|
Command_manager::get_instance_pointer()->pause_export(task->terminal_id(),true);
|
|
|
- LOG(ERROR)<<"关闭出口:"<<task->terminal_id()<<" 四级故障 !!!!!! 等待手动操作 ...";
|
|
|
+ LOG(ERROR)<<"关闭出口:"<<task->terminal_id()<<" 故障 !!!!!! 等待手动操作 ...";
|
|
|
message::Process_manual_operation_msg operate_msg;
|
|
|
code_operate=waitfor_manual_operate_msg(task,operate_msg);
|
|
|
if(code_operate!=SUCCESS)
|