| | |
| | | modFinshTask.Status = TaskStatusEnum.Complete; |
| | | modFinshTask.FinishDate = DateTime.Now; |
| | | _db.Updateable(modFinshTask).ExecuteCommand(); |
| | | //反馈WMS系统 任务完成 |
| | | if (modFinshTask.Origin == "WMS") |
| | | { |
| | | HttpService httpService = new HttpService(); |
| | | var requestMode = new TaskRequestWMS() |
| | | { |
| | | TaskNo = modFinshTask.TaskNo, |
| | | PalletNo = modFinshTask.PalletNo, |
| | | TaskType = ((int)modFinshTask.TaskType).ToString(), |
| | | TaskStatus = ((int)TaskStatusEnum.Complete).ToString() |
| | | }; |
| | | var modResponseTask = httpService.RequestTask(requestMode).Result; |
| | | modFinshTask.IsSuccess = TaskSuccessEnum.Success; |
| | | _db.Updateable(modFinshTask).ExecuteCommand(); |
| | | HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>()); |
| | | } |
| | | } |
| | | |
| | | //判断任务是否充电任务,下发开始充电命令 |
| | |
| | | plcConn.SetDBValue(modCd.PosType, modCd.PlcPos.ToString(), "2"); |
| | | } |
| | | |
| | | //反馈WMS系统 任务完成 |
| | | //HttpService httpService = new HttpService(); |
| | | //var requestMode = new TaskRequestWMS() |
| | | //{ |
| | | // TaskNo = modFinshTask.TaskNo, |
| | | // PalletNo = modFinshTask.PalletNo, |
| | | // TaskType = ((int)modFinshTask.TaskType).ToString(), |
| | | // TaskStatus = ((int)TaskStatusEnum.Complete).ToString() |
| | | //}; |
| | | //var modResponseTask = httpService.RequestTask(requestMode).Result; |
| | | //modFinshTask.IsSuccess = TaskSuccessEnum.Success; |
| | | //_db.Updateable(modFinshTask).ExecuteCommand(); |
| | | HubUtil.PublicTask(modFinshTask.Adapt<WcsTaskOutput>()); |
| | | |
| | | } |
| | | } |
| | |
| | | } |
| | | if (listResult.All(s => s.IsSucceed)) |
| | | { |
| | | var modStart = modDevice.listStation.FirstOrDefault(s => s.Text == "启动命令"); |
| | | var result = plcConn.SetDBValue(modStart.PosType, modStart.PlcPos, "1"); |
| | | if (result.IsSucceed) |
| | | { |
| | | carTaskNext.Status = TaskStatusEnum.Doing; |
| | | carTaskNext.CarTaskNo = carTaskNo; |
| | | _db.Updateable(carTaskNext).ExecuteCommand(); |
| | | |
| | | if (modTask.TaskType == TaskTypeEnum.Out) |
| | | { |
| | | #region 输送线 写入PLC 730 |
| | |
| | | |
| | | //任务号与托盘条码 |
| | | var modPosConverTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "任务号"); |
| | | listResultcon.Add(modConn.SetPlcDBValue(modPosConverTask.PosType, modDeviceConver.DbNumber, modPosConverTask.PlcPos, modTask.TaskId.ToString())); |
| | | listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverTask.PosType, modDeviceConver.DbNumber, modPosConverTask.PlcPos, modTask.TaskId.ToString())); |
| | | var modPosConverPallet = PLCTaskAction.plcPositions.First(s => s.DeviceId == modDeviceConver.Id && s.Text == "托盘条码"); |
| | | listResultcon.Add(modConn.SetPlcDBValue(modPosConverPallet.PosType, modDeviceConver.DbNumber, modPosConverPallet.PlcPos, modTask.PalletNo.ToString())); |
| | | listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverPallet.PosType, modDeviceConver.DbNumber, modPosConverPallet.PlcPos, modTask.PalletNo.ToString())); |
| | | |
| | | // 起始工位、目的工位 |
| | | var modPosConverStrLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "起始工位"); |
| | | listResultcon.Add(modConn.SetPlcDBValue(modPosConverStrLocat.PosType, modDeviceConver.DbNumber, modPosConverStrLocat.PlcPos, modDeviceConver.StationNum)); |
| | | listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverStrLocat.PosType, modDeviceConver.DbNumber, modPosConverStrLocat.PlcPos, modDeviceConver.StationNum)); |
| | | var modPosConverEndLocat = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDeviceConver.Id && s.Text == "目的工位"); |
| | | listResultcon.Add(modConn.SetPlcDBValue(modPosConverEndLocat.PosType, modDeviceConver.DbNumber, modPosConverEndLocat.PlcPos, modTask.EndLocate)); |
| | | listResultcon.Add(modConn.SetPlcDBValueRepeat(modPosConverEndLocat.PosType, modDeviceConver.DbNumber, modPosConverEndLocat.PlcPos, modTask.EndLocate)); |
| | | |
| | | if (listResultcon.All(s => s.IsSucceed)) |
| | | { |
| | |
| | | |
| | | #endregion |
| | | } |
| | | |
| | | var modStart = modDevice.listStation.FirstOrDefault(s => s.Text == "启动命令"); |
| | | var result = plcConn.SetDBValue(modStart.PosType, modStart.PlcPos, "1"); |
| | | if (result.IsSucceed) |
| | | { |
| | | carTaskNext.Status = TaskStatusEnum.Doing; |
| | | carTaskNext.CarTaskNo = carTaskNo; |
| | | _db.Updateable(carTaskNext).ExecuteCommand(); |
| | | |
| | | |
| | | |
| | | //清除小车空闲时间 |
| | | var carTimeClear = _db.Queryable<WcsCarTime>().First(m=>m.IsDelete == false && m.CarIp == modDevice.PlcIdIP); |
| | |
| | | } |
| | | |
| | | // 写入输送线退回指令 |
| | | var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); |
| | | var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); |
| | | if (ret.IsSucceed) |
| | | { |
| | | plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350"); |
| | |
| | | } |
| | | |
| | | // 写入输送线退回指令 |
| | | var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); |
| | | var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); |
| | | if (ret.IsSucceed) |
| | | { |
| | | plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350"); |
| | |
| | | } |
| | | |
| | | // 写入输送线退回指令 |
| | | var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); |
| | | var ret = plcConn.SetPlcDBValueRepeat(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); |
| | | if (ret.IsSucceed) |
| | | { |
| | | plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350"); |
| | |
| | | var listResult = new List<Result>(); |
| | | // 任务号、任务类型、托盘号 |
| | | var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskId.ToString())); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskId.ToString())); |
| | | var modPosTaskType = modDevice.listStation.FirstOrDefault(s => s.Text == "任务类型"); |
| | | var taskTypeStr = (int)modTask.TaskType; |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, modDevice.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTaskType.PosType, modDevice.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); |
| | | var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "托盘条码"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | // 起始工位、目的工位 |
| | | var modPosStrLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "起始工位"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosStrLocat.PosType, modDevice.DbNumber, modPosStrLocat.PlcPos, modDevice.StationNum)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosStrLocat.PosType, modDevice.DbNumber, modPosStrLocat.PlcPos, modDevice.StationNum)); |
| | | var modPosEndLocat = modDevice.listStation.FirstOrDefault(s => s.Text == "目的工位"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosEndLocat.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, endLocatVlue)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndLocat.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, endLocatVlue)); |
| | | |
| | | |
| | | if (listResult.All(s => s.IsSucceed)) |
| | |
| | | var (res3, starVal) = plcConn.GetPlcDBValue(modPosStarStationNum.PosType, modDevice.DbNumber, modPosStarStationNum.PlcPos); |
| | | |
| | | int taskNoVal = Convert.ToInt32(taskVal); |
| | | var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskId == taskNoVal); |
| | | var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskId == taskNoVal && w.TaskType == TaskTypeEnum.Out); |
| | | if (taskInfo == null) |
| | | { |
| | | Log.Error(string.Format("输送线430:未找到对应的任务。")); |
| | | break; |
| | | } |
| | | // 改变任务状态 |
| | | taskInfo.Status = TaskStatusEnum.Complete; |
| | | taskInfo.FinishDate = DateTime.Now; |
| | | //modTask.Levels = 999; |
| | | _db.Updateable(taskInfo).ExecuteCommand(); |
| | | HubUtil.PublicTask(taskInfo.Adapt<WcsTaskOutput>()); |
| | | // 插入任务明细 |
| | | var modInsertTaskMonitor = new WcsTaskMonitor() |
| | | { |
| | |
| | | StartLocat = Convert.ToString(starVal), |
| | | EndLocat = modDevice.StationNum, |
| | | }; |
| | | if (taskInfo.Origin == "WMS") |
| | | { |
| | | // 反馈WMS |
| | | var requestMode = new TaskRequestWMS() |
| | | { |
| | | TaskNo = taskInfo.TaskNo, |
| | | PalletNo = taskInfo.PalletNo, |
| | | TaskType = ((int)taskInfo.TaskType).ToString(), |
| | | TaskStatus = ((int)TaskStatusEnum.Complete).ToString() |
| | | }; |
| | | HttpService httpService = new HttpService(); |
| | | var modResponseTask = httpService.RequestTask(requestMode).Result; |
| | | if (modResponseTask.StatusCode == 0) |
| | | { |
| | | modInsertTaskMonitor.InteractiveMsg += ",返回给WMS任务完成"; |
| | | } |
| | | else |
| | | { |
| | | Log.Error(string.Format("任务反馈失败:StatusCode:{0};Msg:{1}", modResponseTask.StatusCode, modResponseTask.Msg)); |
| | | } |
| | | } |
| | | |
| | | // 插入交互日志 |
| | | _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); |
| | |
| | | |
| | | |
| | | int tasknoVal = Convert.ToInt32(taskVal); |
| | | var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.IsDelete == false && m.TaskId == tasknoVal); |
| | | var modTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.TaskId == tasknoVal); |
| | | if (modTask == null) |
| | | { |
| | | Log.Error(string.Format("输送线440:未找到对应的任务。")); |
| | | break; |
| | | } |
| | | // 改变任务状态 |
| | | modTask.Status = TaskStatusEnum.Complete; |
| | | modTask.FinishDate = DateTime.Now; |
| | | //modTask.Levels = 999; |
| | | _db.Updateable(modTask).ExecuteCommand(); |
| | | HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); |
| | | |
| | | // 插入任务明细 |
| | | var modInsertTaskMonitor = new WcsTaskMonitor() |
| | | { |
| | | TaskNo = modTask.TaskNo, |
| | | PlcId = modDevice.Id, |
| | | PlcName = modDevice.Text, |
| | | InteractiveMsg = $"写入指令450:{modDevice.StationNum}出库完成", |
| | | InteractiveMsg = $"写入指令450:{modDevice.StationNum}托盘离开工位", |
| | | PalletNo = palletVal, |
| | | Status = TaskStatusEnum.Complete, |
| | | StartLocat = starVal.ToString(), |
| | | EndLocat = modDevice.StationNum, |
| | | }; |
| | | if (modTask.Origin == "WMS") |
| | | { |
| | | //// 反馈WMS |
| | | //var requestMode = new TaskRequestWMS() |
| | | //{ |
| | | // TaskNo = modTask.TaskNo + modTask.EndLocate, |
| | | // PalletNo = modTask.PalletNo, |
| | | // TaskType = ((int)TaskTypeEnum.Out).ToString(), |
| | | // TaskStatus = ((int)TaskStatusEnum.Complete).ToString() |
| | | //}; |
| | | //HttpService httpService = new HttpService(); |
| | | //var modResponseTask = httpService.RequestTask(requestMode).Result; |
| | | //if (modResponseTask.StatusCode == 0) |
| | | //{ |
| | | // modInsertTaskMonitor.InteractiveMsg += ",返回给WMS任务完成"; |
| | | //} |
| | | //else |
| | | //{ |
| | | // Log.Error(string.Format("任务反馈失败:StatusCode:{0};Msg:{1}", modResponseTask.StatusCode, modResponseTask.Msg)); |
| | | //} |
| | | } |
| | | |
| | | // 插入交互日志 |
| | | _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); |
| | | |
| | | // 通知任务界面任务已存在更新 请更新界面 |
| | | HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>()); |
| | | // led显示内容 |
| | | var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId); |
| | | |
| | | ledText += $"出库完成\n\n"; |
| | | ledText += $"任务号:{modTask.TaskNo}\n"; |
| | | ledText += $"托盘号:{modTask.PalletNo}\n\n"; |
| | | ledText += $"起始位:{modTask.StartRoadway + " " + modTask.StartLocate}\n"; |
| | | ledText += $"目标位:{modTask.EndRoadway + " " + modTask.EndLocate}"; |
| | | LedDisplay(ledDevice.LedIP, ledText); |
| | | } |
| | | #endregion |
| | | } |
| | |
| | | } |
| | | }; |
| | | var response = new HttpService().GenAgvSendTask(taskModel).Result; |
| | | if (response.code == "0") |
| | | if (response.code == "SUCCESS") |
| | | { |
| | | modTask.Status = TaskStatusEnum.Doing; |
| | | _db.Updateable(modTask).ExecuteCommand(); |