Beispiel #1
0
        private void CheckPlc(NDCItem item, Message_vpil v)
        {
            Console.WriteLine("PLC:" + v.PlcLp1 + " Value:" + v.Value1);
            if (v.PlcLp1 == 29 && v.Value1 == 1)
            {
                //装货中
                item.PLCStatus = NDCPlcStatus.Loading;
                LoadItemList.Remove(item._mTask.ORDERINDEX);
                //通知WCS
                AGVDataUpdate?.Invoke(item._mTask.TASKID, item.CarrierId + "");
            }
            else if (v.PlcLp1 == 29 && v.Value1 == 2)
            {
                //卸货中
                item.PLCStatus = NDCPlcStatus.Unloading;
                UnLoadItemList.Remove(item._mTask.ORDERINDEX);
            }

            /*
             * //switch (v.PlcLp1)
             * //{
             * //    case 1://装货中
             * //        item.PLCStatus = NDCPlcStatus.Loading;
             * //        LoadItemList.Remove(item.OrderIndex);
             * //        DataControl._mForAGVControl.SubmitAgvLoading(item.TaskID, item.CarrierId + "");
             * //        break;
             *
             *
             * //    case 2://卸货中
             * //        item.PLCStatus = NDCPlcStatus.Unloading;
             * //        UnLoadItemList.Remove(item.OrderIndex);
             * //        break;
             * //}
             */
        }
Beispiel #2
0
        /// <summary>
        /// 根据任务ID,进行装货操作
        /// </summary>
        /// <param name="taskid"></param>
        /// <param name="carid"></param>
        /// <param name="result"></param>
        /// <returns></returns>
        //public bool DoLoad(int taskid, int carid, out string result)
        public bool DoLoad(int taskid, out string result)
        {
            //if (taskid == 0 || carid == 0)
            if (taskid == 0)
            {
                //result = "任务ID,车ID不能为零";
                result = "任务ID不能为零";
                return(false);
            }

            NDCItem item = Items.Find(c =>
            {
                //return c._mTask.TASKID == taskid && c.CARRIERID == carid;
                return(c._mTask.TASKID == taskid);
            });

            if (item == null)
            {
                //result = "找不到任务ID:" + taskid + ",小车:" + carid + "的任务.";
                result = "找不到任务ID:" + taskid + "的任务.";
                return(false);
            }


            if (item.PLCStatus == NDCPlcStatus.Loading)
            {
                LoadItemList.Remove(item._mTask.NDCINDEX);
                //通知WCS
                //NoticeWcsOnLoad?.Invoke(item._mTask.TASKID, item.CARRIERID + "");
                result = "小车已经启动辊台了";
                return(true);
            }

            if (item.PLCStatus != NDCPlcStatus.LoadReady)
            {
                if (item.CARRIERID != 0)
                {
                    // 查询状态
                    DoSelect(item.CARRIERID);
                }
                //result = "小车未准备好接货";
                result = "";
                return(false);
            }

            if (!LoadItemList.Contains(item._mTask.NDCINDEX))
            {
                LoadItemList.Add(item._mTask.NDCINDEX);
                result = "";
                return(true);
            }

            result = taskid + "的装货已经请求过了";
            return(true);
        }
Beispiel #3
0
 /// <summary>
 /// 检查AGV 棍台消息任务
 /// </summary>
 /// <param name="item"></param>
 /// <param name="v"></param>
 private void CheckPlc(NDCItem item, Message_vpil v)
 {
     Console.WriteLine("PLC:" + v.PlcLp1 + " Value:" + v.Value1);
     if (v.PlcLp1 == 29 && v.Value1 == 1)
     {
         //装货中
         item.PLCStatus = NDCPlcStatus.Loading;
         LoadItemList.Remove(item._mTask.NDCINDEX);
         //通知WCS
         _NoticeWcsLoading(item._mTask.TASKID, item.CARRIERID + "");
     }
     else if (v.PlcLp1 == 29 && v.Value1 == 2)
     {
         //卸货中
         item.PLCStatus = NDCPlcStatus.Unloading;
         UnLoadItemList.Remove(item._mTask.NDCINDEX);
     }
 }