Exemple #1
0
        /// <summary>
        /// 检查任务进程
        /// </summary>
        /// <param name="index"></param>
        /// <param name="magic"></param>
        private void CheckMagic(NDCItem item, Message_s s)
        {
            int index = item._mTask.NDCINDEX;

            switch (item.Magic)
            {
            case 2:    //确定生成任务
                item._mTask.NDCLOADSITE   = s.Magic2 + "";
                item._mTask.NDCUNLOADSITE = s.Magic3 + "";
                break;

            case 5:
                #region 小车到达接货点
                if (item.DirectStatus != NDCItemStatus.HasDirectInfo)
                {
                    item.DirectStatus = NDCItemStatus.CanRedirect;
                }
                if (!ReDirectList.Contains(item._mTask.NDCINDEX))
                {
                    ReDirectList.Add(item._mTask.NDCINDEX);
                }

                //准备好装货了
                item.PLCStatus = NDCPlcStatus.LoadReady;
                #endregion
                break;

            case 6:
                #region 小车接货完成
                if (item.DirectStatus == NDCItemStatus.CanRedirect || item.DirectStatus == NDCItemStatus.Init)
                {
                    if (item.HadDirectInfo)
                    {
                        item.DirectStatus = NDCItemStatus.HasDirectInfo;
                    }
                    else
                    {
                        item.DirectStatus = NDCItemStatus.NeedRedirect;
                    }
                }

                if (!ReDirectList.Contains(item._mTask.NDCINDEX))
                {
                    ReDirectList.Add(item._mTask.NDCINDEX);
                }

                //装货完成
                item.PLCStatus      = NDCPlcStatus.Loaded;
                item._mTask.HADLOAD = true;

                if (item.DirectStatus == NDCItemStatus.NeedRedirect)
                {
                    _NoticeRedirect(item);
                }
                #endregion
                break;

            case 254:    //重新定位成功
                item.DirectStatus = NDCItemStatus.Redirected;
                ReDirectList.Remove(item._mTask.NDCINDEX);
                break;

            case 9:    //到达卸货点

                //准备好卸货了
                item.PLCStatus = NDCPlcStatus.UnloadReady;
                break;

            case 10:    //卸货完成

                item.PLCStatus        = NDCPlcStatus.Unloaded;
                item._mTask.HADUNLOAD = true;
                break;

            case 255:                       //取消任务
            case 48:                        //取消任务
                if (!item.CancleFromSystem) //Carwash
                {
                    item._mTask.PAUSE = true;
                }
                break;

            case 11:    //任务完成
                if (item.PLCStatus != NDCPlcStatus.Unloaded && item._mTask.PAUSE)
                {
                    item.IsFinish = false;
                    //装货前 取消任务不用恢复,只需重新呼叫AGV
                    if (!item._mTask.HADLOAD && !item._mTask.HADUNLOAD)
                    {
                        item.BeforeReCall(Ikey++);
                        DoStartOrder(item);
                        log.LOG(item._mTask.TASKID + ":任务车出现问题,现在重新呼叫AGV");
                    }
                }
                else
                {
                    item.IsFinish   = true;
                    item.finishTime = DateTime.Now;
                }
                break;

            default:
                break;
            }
            MatchTempInfo(item);
        }
Exemple #2
0
        /// <summary>
        /// 检查任务进程
        /// </summary>
        /// <param name="index"></param>
        /// <param name="magic"></param>
        private void CheckMagic(NDCItem item, Message_s s)
        {
            int index = item._mTask.ORDERINDEX;

            switch (item.Magic)
            {
            case 2:    //确定生成任务
                item._mTask.NDCLOADSITE   = item.s.Magic2 + "";
                item._mTask.NDCUNLOADSITE = item.s.Magic3 + "";
                break;

            case 4:     //小车到达接货点
                if (item.DirectStatus != NDCItemStatus.HasDirectInfo)
                {
                    item.DirectStatus = NDCItemStatus.CanRedirect;
                }
                if (!ReDirectList.Contains(item._mTask.ORDERINDEX))
                {
                    ReDirectList.Add(item._mTask.ORDERINDEX);
                }
                //TODO 告诉WCS 车已经到达

                //准备好装货了
                item.PLCStatus = NDCPlcStatus.LoadReady;
                break;

            case 6:     //小车接货完成
                if (item.DirectStatus == NDCItemStatus.CanRedirect || item.DirectStatus == NDCItemStatus.Init)
                {
                    if (item.HadDirectInfo)
                    {
                        item.DirectStatus = NDCItemStatus.HasDirectInfo;
                    }
                    else
                    {
                        item.DirectStatus = NDCItemStatus.NeedRedirect;
                    }
                }

                if (!ReDirectList.Contains(item._mTask.ORDERINDEX))
                {
                    ReDirectList.Add(item._mTask.ORDERINDEX);
                }

                //装货完成
                item.PLCStatus      = NDCPlcStatus.Loaded;
                item._mTask.HADLOAD = true;

                if (item.DirectStatus == NDCItemStatus.NeedRedirect)
                {
                    NoticeRedirect?.Invoke(item);
                }
                break;

            case 254:    //重新定位成功
                item.DirectStatus = NDCItemStatus.Redirected;
                ReDirectList.Remove(item._mTask.ORDERINDEX);
                break;

            case 8:    //到达卸货点

                //准备好卸货了
                item.PLCStatus = NDCPlcStatus.UnloadReady;
                break;

            case 10:    //卸货完成

                //卸货完成
                item.PLCStatus        = NDCPlcStatus.Unloaded;
                item._mTask.HADUNLOAD = true;
                break;

            case 11:    //任务完成
                item.IsFinish   = true;
                item.finishTime = DateTime.Now;
                break;

            default:
                break;
            }
            GetTempInfo(item);
        }