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; * //} */ }
/// <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); }
/// <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); } }