/// <summary> /// 检测调度状态 /// </summary> private void CheckDispatch() { WcfMainHelper.InitPara(_severIp, "", ""); List <DispatchBackMember> result = WcfMainHelper.GetDispatchList(); if (result != null) { foreach (var item in result) { if (item.TaskImf == _clientMark && item.OrderStatue == ResultTypeEnum.Suc) { WcfMainHelper.CtrDispatch(item.DisGuid, DisOrderCtrTypeEnum.Stop); } } if (_callingTask != null) { if (result.Find(c => { return(c.DisGuid == _callingTask.DisGuid); }) == null) { _callingTask = null; } } } if (_callingTask == null) { _isCalling = false; } }
/// <summary> /// 发生故障、离线的车,清除其相应的任务 /// </summary> public void ClearTask() { while (true) { Thread.Sleep(5000); List <F_AGV> agvs = F_DataCenter.MDev.ErrorOrFalse(); List <FDispatchBackImf> dispatchList = WcfMainHelper.GetDispatchList(); if (dispatchList != null && agvs != null && dispatchList.Count > 0) { foreach (var agv in agvs) { foreach (var dispatch in dispatchList) { // 有故障的车是否对应任务的设备ID if (agv.Id == dispatch.Dev) { if (dic.ContainsKey(agv.Id)) { int count = 0; dic.TryGetValue(agv.Id, out count); if (count >= 10) { // 终止该任务 WcfMainHelper.CtrDispatch(dispatch.Id, EnumCtrType.Stop); sendServerLog("终止异常的 " + agv.Id + "正在执行的任务"); //LogFactory.LogRunning("终止异常的 " + agv.Id + "正在执行的任务"); FLog.Log("终止异常的 " + agv.Id + "正在执行的任务"); count = 0; //异常终止的任务释放AGV F_AGV.AgvRelease(agv.Id); } else { count++; sendServerLog("异常的 " + agv.Id + "已等待处理 " + count + " 次"); //LogFactory.LogRunning("异常的 " + agv.Id + "已等待处理 " + count + " 次"); FLog.Log("异常的 " + agv.Id + "已等待处理 " + count + " 次"); } dic.Remove(agv.Id); dic.Add(agv.Id, count); } else { dic.Add(agv.Id, 0); } } } } } else { dic.Clear(); } } }
/// <summary> /// 任务完成 /// </summary> public void ISetTaskSuc() { if (_taskDispatch != null) { if (WcfMainHelper.CtrDispatch(_taskDispatch.Id, EnumCtrType.Stop)) { _isSuc = true; } } FLog.Log(_taskDispatch.Id + "任务完成"); }
/// <summary> /// 任务完成 /// </summary> public void ISetTaskSuc() { //if (_plc != null) //{ // _plc.IsLock = false; //} //if (_agv != null) { F_AGV.AgvRelease(_agv.Id); } if (_taskDispatch != null) { if (WcfMainHelper.CtrDispatch(_taskDispatch.Id, EnumCtrType.Stop)) { _isSuc = true; } } }