| | |
| | | public static class PLCService |
| | | { |
| | | private static readonly object OLock = new object(); |
| | | private static readonly object RuKuLock = new object(); |
| | | |
| | | private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId); |
| | | private static decimal weight94 = 0; |
| | | private static decimal weight160 = 0; |
| | | private static decimal weight155 = 0; |
| | | private static decimal weight152 = 0; |
| | | private static decimal weight153 = 0; |
| | | |
| | | public static void OnChangeEvent(object sender, EventArgs e) |
| | | { |
| | |
| | | var listResult = new List<Result>(); |
| | | // 任务号托盘号 |
| | | var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | 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 modPosRow = modDevice.listStation.FirstOrDefault(s => s.Text == "取货排"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, startTaskInfo.EndPai)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, startTaskInfo.EndPai)); |
| | | var modPosColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "取货列"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, startTaskInfo.EndLie)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, startTaskInfo.EndLie)); |
| | | var modPosStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "取货层"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, startTaskInfo.EndCeng)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, startTaskInfo.EndCeng)); |
| | | |
| | | if (modTask.TaskType == TaskTypeEnum.Out) |
| | | { |
| | | var modEndNo = modDevice.listStation.FirstOrDefault(s => s.Text == "目的工位"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modEndNo.PosType, modDevice.DbNumber, modEndNo.PlcPos, taskInfo.EndStation)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modEndNo.PosType, modDevice.DbNumber, modEndNo.PlcPos, taskInfo.EndStation)); |
| | | } |
| | | |
| | | // 目标放货工位(固定排列层) |
| | | var modPosEndRow = modDevice.listStation.FirstOrDefault(s => s.Text == "放货排"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, taskInfo.EndPai)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, taskInfo.EndPai)); |
| | | var modPosEndColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "放货列"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, taskInfo.EndLie)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, taskInfo.EndLie)); |
| | | var modPosEndStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "放货层"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, taskInfo.EndCeng)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, taskInfo.EndCeng)); |
| | | |
| | | // 是否写入成功 |
| | | if (listResult.All(s => s.IsSucceed)) |
| | |
| | | } |
| | | |
| | | modInsertTaskMonitor.InteractiveMsg = string.Format("储位地址:{0}取货完成", modTask.StartLocate); |
| | | modInsertTaskMonitor.EndLocat = endStation; // 目标储位 |
| | | modInsertTaskMonitor.EndLocat = endStation.ToString(); // 目标储位 |
| | | |
| | | // 插入交互日志 |
| | | _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); |
| | |
| | | |
| | | //任务号 |
| | | var modPosTask = listPos.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcCconn.SetPlcDBValue(modPosTask.PosType, wcsDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | listResult.Add(plcCconn.SetPlcDBValueRepeat(modPosTask.PosType, wcsDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | //任务类型 |
| | | var modPosTaskType = listPos.FirstOrDefault(s => s.Text == "任务类型"); |
| | | listResult.Add(plcCconn.SetPlcDBValue(modPosTaskType.PosType, wcsDevice.DbNumber, modPosTaskType.PlcPos, ((int)modTask.TaskType).ToString())); |
| | | listResult.Add(plcCconn.SetPlcDBValueRepeat(modPosTaskType.PosType, wcsDevice.DbNumber, modPosTaskType.PlcPos, ((int)modTask.TaskType).ToString())); |
| | | //托盘号 |
| | | var modPosPalletNo = listPos.FirstOrDefault(s => s.Text == "托盘码"); |
| | | listResult.Add(plcCconn.SetPlcDBValue(modPosPalletNo.PosType, wcsDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | listResult.Add(plcCconn.SetPlcDBValueRepeat(modPosPalletNo.PosType, wcsDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | //起始工位 |
| | | var modPosLocatNo = listPos.FirstOrDefault(s => s.Text == "起始工位"); |
| | | listResult.Add(plcCconn.SetPlcDBValue(modPosLocatNo.PosType, wcsDevice.DbNumber, modPosLocatNo.PlcPos, endValStr)); |
| | | listResult.Add(plcCconn.SetPlcDBValueRepeat(modPosLocatNo.PosType, wcsDevice.DbNumber, modPosLocatNo.PlcPos, endValStr)); |
| | | // 目标工位 |
| | | var modPosEndLocatNo = listPos.FirstOrDefault(s => s.Text == "目的工位"); |
| | | listResult.Add(plcCconn.SetPlcDBValue(modPosEndLocatNo.PosType, wcsDevice.DbNumber, modPosEndLocatNo.PlcPos, inVal)); |
| | | listResult.Add(plcCconn.SetPlcDBValueRepeat(modPosEndLocatNo.PosType, wcsDevice.DbNumber, modPosEndLocatNo.PlcPos, inVal)); |
| | | |
| | | // 是否写入成功 |
| | | if (listResult.All(s => s.IsSucceed)) |
| | |
| | | var listResult = new List<Result>(); |
| | | //任务号 |
| | | var modPosTask = listPos.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcConveyorConn.SetPlcDBValue(modPosTask.PosType, wcsDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | listResult.Add(plcConveyorConn.SetPlcDBValueRepeat(modPosTask.PosType, wcsDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | //任务类型 |
| | | var modPosTaskType = listPos.FirstOrDefault(s => s.Text == "任务类型"); |
| | | listResult.Add(plcConveyorConn.SetPlcDBValue(modPosTaskType.PosType, wcsDevice.DbNumber, modPosTaskType.PlcPos, ((int)modTask.TaskType).ToString())); |
| | | listResult.Add(plcConveyorConn.SetPlcDBValueRepeat(modPosTaskType.PosType, wcsDevice.DbNumber, modPosTaskType.PlcPos, ((int)modTask.TaskType).ToString())); |
| | | //托盘号 |
| | | var modPosPalletNo = listPos.FirstOrDefault(s => s.Text == "托盘码"); |
| | | listResult.Add(plcConveyorConn.SetPlcDBValue(modPosPalletNo.PosType, wcsDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | listResult.Add(plcConveyorConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, wcsDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | //起始工位 |
| | | var modPosLocatNo = listPos.FirstOrDefault(s => s.Text == "起始工位"); |
| | | listResult.Add(plcConveyorConn.SetPlcDBValue(modPosLocatNo.PosType, wcsDevice.DbNumber, modPosLocatNo.PlcPos, stationNumstr)); |
| | | listResult.Add(plcConveyorConn.SetPlcDBValueRepeat(modPosLocatNo.PosType, wcsDevice.DbNumber, modPosLocatNo.PlcPos, stationNumstr)); |
| | | // 目标工位 |
| | | var modPosEndLocatNo = listPos.FirstOrDefault(s => s.Text == "目的工位"); |
| | | listResult.Add(plcConveyorConn.SetPlcDBValue(modPosEndLocatNo.PosType, wcsDevice.DbNumber, modPosEndLocatNo.PlcPos, outCode)); |
| | | listResult.Add(plcConveyorConn.SetPlcDBValueRepeat(modPosEndLocatNo.PosType, wcsDevice.DbNumber, modPosEndLocatNo.PlcPos, outCode)); |
| | | |
| | | // 是否写入成功 |
| | | if (listResult.All(s => s.IsSucceed)) |
| | |
| | | case TaskTypeEnum.Move: // 移库任务 |
| | | { |
| | | var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "任务号"); |
| | | var result = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo); |
| | | var result = plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo); |
| | | if (!result.IsSucceed) |
| | | { |
| | | Log.Error($"{modDevice.Text}写入任务号失败"); |
| | |
| | | // 给PLC写入任务数据 |
| | | var listResult = new List<Result>(); |
| | | // 任务号托盘号 |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | // 起始排列层 |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, "2")); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, "100")); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, "1")); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, row)); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, column)); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, storey)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, "2")); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, "100")); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, "1")); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, row)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, column)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, storey)); |
| | | // 是否写入成功 |
| | | if (listResult.All(s => s.IsSucceed)) |
| | | { |
| | |
| | | var listResult = new List<Result>(); |
| | | // 任务号托盘号 |
| | | var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | 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 modPosRow = modDevice.listStation.FirstOrDefault(s => s.Text == "取货排"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, startTaskInfo.EndPai)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, startTaskInfo.EndPai)); |
| | | var modPosColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "取货列"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, startTaskInfo.EndLie)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, startTaskInfo.EndLie)); |
| | | var modPosStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "取货层"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, startTaskInfo.EndCeng)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, startTaskInfo.EndCeng)); |
| | | // 目标放货工位(固定排列层) |
| | | PlcTaskInfo taskInfo = PLCCommon.GetCTaskInfo(modTask.EndLocate, ((int)modTask.TaskType).ToString(), |
| | | modTask.StartRoadway, modTask.EndRoadway); |
| | | var modPosEndRow = modDevice.listStation.FirstOrDefault(s => s.Text == "放货排"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, taskInfo.EndPai)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, taskInfo.EndPai)); |
| | | var modPosEndColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "放货列"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, taskInfo.EndLie)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, taskInfo.EndLie)); |
| | | var modPosEndStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "放货层"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, taskInfo.EndCeng)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, taskInfo.EndCeng)); |
| | | |
| | | // 是否写入成功 |
| | | if (listResult.All(s => s.IsSucceed)) |
| | |
| | | { |
| | | return; |
| | | } |
| | | |
| | | #region#实时显示重量到LED屏幕 |
| | | var modPosPalletWeightIng = modDevice.listStation.FirstOrDefault(m => m.Text == "实际重量"); |
| | | if (modPosPalletWeightIng != null) |
| | | { |
| | | var (resPalletWeightIng, palletWeightValIng) = plcConn.GetPlcDBValue(modPosPalletWeightIng.PosType, modDevice.DbNumber, modPosPalletWeightIng.PlcPos); |
| | | switch (modDevice.StationNum) |
| | | { |
| | | case "094": |
| | | { |
| | | if (Convert.ToDecimal(palletWeightValIng) != weight94) |
| | | { |
| | | LedDisplay(modDevice.LedIP, $"当前重量(KG):{Convert.ToDecimal(palletWeightValIng)}"); |
| | | weight94 = Convert.ToDecimal(palletWeightValIng); |
| | | } |
| | | } |
| | | break; |
| | | case "160": |
| | | { |
| | | if (Convert.ToDecimal(palletWeightValIng) != weight160) |
| | | { |
| | | LedDisplay(modDevice.LedIP, $"当前重量(KG):{Convert.ToDecimal(palletWeightValIng)}"); |
| | | weight160 = Convert.ToDecimal(palletWeightValIng); |
| | | } |
| | | } |
| | | break; |
| | | case "155": |
| | | { |
| | | if (Convert.ToDecimal(palletWeightValIng) != weight155) |
| | | { |
| | | LedDisplay(modDevice.LedIP, $"当前重量(KG):{Convert.ToDecimal(palletWeightValIng)}"); |
| | | weight155 = Convert.ToDecimal(palletWeightValIng); |
| | | } |
| | | } |
| | | break; |
| | | case "152": |
| | | { |
| | | if (Convert.ToDecimal(palletWeightValIng) != weight152) |
| | | { |
| | | LedDisplay(modDevice.LedIP, $"当前重量(KG):{Convert.ToDecimal(palletWeightValIng)}"); |
| | | weight152 = Convert.ToDecimal(palletWeightValIng); |
| | | } |
| | | } |
| | | break; |
| | | case "153": |
| | | { |
| | | if (Convert.ToDecimal(palletWeightValIng) != weight153) |
| | | { |
| | | LedDisplay(modDevice.LedIP, $"当前重量(KG):{Convert.ToDecimal(palletWeightValIng)}"); |
| | | weight153 = Convert.ToDecimal(palletWeightValIng); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | var ledText = ""; |
| | | switch (modDevice.Value.ToString()) |
| | | { |
| | |
| | | case "155": |
| | | dbStr = "2383"; |
| | | break; |
| | | |
| | | case "152": |
| | | dbStr = "2401"; |
| | | break; |
| | | |
| | | case "153": |
| | | dbStr = "2403"; |
| | | break; |
| | | } |
| | | |
| | | string errorStr = "异常信息:"; |
| | | string errorStr = string.Empty; |
| | | //将异常信息显示到LED屏幕上 |
| | | var (errorRes0, errorVal0) = plcConn.GetPlcDBValue(PLCDataTypeEnum.Bit, $"M{dbStr}.0", ""); |
| | | if (errorRes0.IsSucceed && errorVal0 == true) |
| | |
| | | { |
| | | errorStr += " 扫码仪通讯报警"; |
| | | } |
| | | ledText += $"申请入库失败\n\n"; |
| | | ledText += $"{errorStr}"; |
| | | LedDisplay(modDevice.LedIP, ledText); |
| | | |
| | | if (!string.IsNullOrEmpty(errorStr)) |
| | | { |
| | | errorStr = "异常信息:" + errorStr; |
| | | |
| | | ledText += $"申请入库失败\n\n"; |
| | | ledText += $"{errorStr}"; |
| | | LedDisplay(modDevice.LedIP, ledText); |
| | | } |
| | | } |
| | | break; |
| | | case "320": |
| | |
| | | } |
| | | |
| | | // 写入输送线退回指令 |
| | | 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 http = new HttpService(); |
| | | string TaskNo = "", EndLocate = ""; |
| | | |
| | | //根据工位判断是否为叠托机工位申请空托盘跺入库,是:向WMS申请空托盘跺组托 |
| | | string groupMsg = ""; |
| | | if (modDevice.StationNum == "72") |
| | | { |
| | | groupMsg = http.BindNullPalletWcs(10, palletVal); |
| | | |
| | | if (groupMsg.Contains("-1")) |
| | | { |
| | | // 写入输送线退回指令 |
| | | var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosEndLocat.PlcPos, modDevice.StationNum); |
| | | if (ret.IsSucceed) |
| | | { |
| | | plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "350"); |
| | | } |
| | | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | //向WMS申请巷道 |
| | | strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo, (int)palletHeightVal); |
| | | |
| | | if (!strMsg.Contains("-1")) |
| | |
| | | } |
| | | |
| | | // 写入输送线退回指令 |
| | | 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 modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | 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)) |
| | | { |
| | | { |
| | | Log.Information($"写入340,任务号:{modTask.TaskNo},任务类型:{taskTypeStr.ToString()},托盘码:{modTask.PalletNo},起始工位:{modDevice.StationNum},目的工位:{endLocatVlue}"); |
| | | |
| | | // 将任务状态变更为正在执行 |
| | | _db.Updateable<WcsTask>() |
| | | .SetColumns(s => s.Status == TaskStatusEnum.Doing) |
| | |
| | | #endregion |
| | | |
| | | var http = new HttpService(); |
| | | string TaskNo = ""; |
| | | // 向WMS申请储位信息 |
| | | strMsg = http.RequestLocate(palletVal, modDevice.StationNum, taskModel, roadway, ref TaskNo, (int)taskInfo2.PalletQty); |
| | | string TaskNo = ""; |
| | | lock (RuKuLock) |
| | | { |
| | | // 向WMS申请储位信息 |
| | | strMsg = http.RequestLocate(palletVal, modDevice.StationNum, taskModel, roadway, ref TaskNo, (int)taskInfo2.PalletQty); |
| | | } |
| | | |
| | | // 根据任务号获取起始工位地址,根据起始工位地址获取LEDIP 推送到LED屏幕。 |
| | | var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskNo == TaskNo); |
| | |
| | | |
| | | // 任务号、任务类型、托盘号 |
| | | var modPosTask = djInfos.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | var modPosTaskType = djInfos.FirstOrDefault(s => s.Text == "任务类型"); |
| | | var taskTypeStr = (int)modTask.TaskType; |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); |
| | | var modPosPalletNo = djInfos.FirstOrDefault(s => s.Text == "托盘码"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | |
| | | //起始工位 |
| | | var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "起始工位"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum)); |
| | | |
| | | // 目的工位 |
| | | var modPosendStationNum = djInfos.FirstOrDefault(s => s.Text == "目的工位"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosendStationNum.PosType, djMod.DbNumber, modPosendStationNum.PlcPos, endStationNum)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosendStationNum.PosType, djMod.DbNumber, modPosendStationNum.PlcPos, endStationNum)); |
| | | |
| | | //取货排、列、层 |
| | | var modPosStrPai = djInfos.FirstOrDefault(s => s.Text == "取货排"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, sInfo.Pai)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, sInfo.Pai)); |
| | | var modPosStrLie = djInfos.FirstOrDefault(s => s.Text == "取货列"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, sInfo.Lie)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, sInfo.Lie)); |
| | | var modPosStrCeng = djInfos.FirstOrDefault(s => s.Text == "取货层"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, sInfo.Ceng)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, sInfo.Ceng)); |
| | | //放货排、列、层 |
| | | var modPosEndPai = djInfos.FirstOrDefault(s => s.Text == "放货排"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, "2")); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, "2")); |
| | | var modPosEndLie = djInfos.FirstOrDefault(s => s.Text == "放货列"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, "60")); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, "60")); |
| | | var modPosEndCeng = djInfos.FirstOrDefault(s => s.Text == "放货层"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, "1")); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, "1")); |
| | | if (listResult.All(s => s.IsSucceed)) |
| | | { |
| | | // 写入跺机 830 |
| | |
| | | |
| | | // 任务号、任务类型、托盘号 |
| | | var modPosTask = djInfos.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | var modPosTaskType = djInfos.FirstOrDefault(s => s.Text == "任务类型"); |
| | | var taskTypeStr = (int)modTask.TaskType; |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); |
| | | var modPosPalletNo = djInfos.FirstOrDefault(s => s.Text == "托盘码"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | |
| | | //起始工位 |
| | | var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "起始工位"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum)); |
| | | //目的工位 |
| | | if (modTask.EndLocate == "266") |
| | | { |
| | |
| | | } |
| | | |
| | | var modPosStrend = djInfos.FirstOrDefault(s => s.Text == "目的工位"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosStrend.PosType, djMod.DbNumber, modPosStrend.PlcPos, modTask.EndLocate)); // 此处现在存的是出库口266。 |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrend.PosType, djMod.DbNumber, modPosStrend.PlcPos, modTask.EndLocate)); // 此处现在存的是出库口266。 |
| | | |
| | | //取货排、列、层 |
| | | var modPosStrPai = djInfos.FirstOrDefault(s => s.Text == "取货排"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, "3")); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, "3")); |
| | | var modPosStrLie = djInfos.FirstOrDefault(s => s.Text == "取货列"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, "60")); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, "60")); |
| | | var modPosStrCeng = djInfos.FirstOrDefault(s => s.Text == "取货层"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, "1")); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, "1")); |
| | | //放货排、列、层 |
| | | var modPosEndPai = djInfos.FirstOrDefault(s => s.Text == "放货排"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, sInfo1.Pai)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, sInfo1.Pai)); |
| | | var modPosEndLie = djInfos.FirstOrDefault(s => s.Text == "放货列"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, sInfo1.Lie)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, sInfo1.Lie)); |
| | | var modPosEndCeng = djInfos.FirstOrDefault(s => s.Text == "放货层"); |
| | | listResult.Add(plcSConn.SetPlcDBValue(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, sInfo1.Ceng)); |
| | | listResult.Add(plcSConn.SetPlcDBValueRepeat(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, sInfo1.Ceng)); |
| | | if (listResult.All(s => s.IsSucceed)) |
| | | { |
| | | // 写入跺机 830 |
| | |
| | | |
| | | // 任务号、任务类型、托盘号 |
| | | var modPosTask = djInfos.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | var modPosTaskType = djInfos.FirstOrDefault(s => s.Text == "任务类型"); |
| | | var taskTypeStr = (int)modTask.TaskType; |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); |
| | | var modPosPalletNo = djInfos.FirstOrDefault(s => s.Text == "托盘码"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | |
| | | //起始工位 |
| | | var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "起始工位"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum)); |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum)); |
| | | |
| | | //目的工位 |
| | | var modPosendStationNum = djInfos.FirstOrDefault(s => s.Text == "目的工位"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosendStationNum.PlcPos, modDevice.StationNum)); // 此处现在是139 应该为0 |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosStrStationNum.PosType, djMod.DbNumber, modPosendStationNum.PlcPos, modDevice.StationNum)); // 此处现在是139 应该为0 |
| | | |
| | | //取货排、列、层 |
| | | var modPosStrPai = djInfos.FirstOrDefault(s => s.Text == "取货排"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, sInfo.Pai)); |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosStrPai.PosType, djMod.DbNumber, modPosStrPai.PlcPos, sInfo.Pai)); |
| | | var modPosStrLie = djInfos.FirstOrDefault(s => s.Text == "取货列"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, sInfo.Lie)); |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosStrLie.PosType, djMod.DbNumber, modPosStrLie.PlcPos, sInfo.Lie)); |
| | | var modPosStrCeng = djInfos.FirstOrDefault(s => s.Text == "取货层"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, sInfo.Ceng)); |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosStrCeng.PosType, djMod.DbNumber, modPosStrCeng.PlcPos, sInfo.Ceng)); |
| | | //放货排、列、层 |
| | | var modPosEndPai = djInfos.FirstOrDefault(s => s.Text == "放货排"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, pai)); |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosEndPai.PosType, djMod.DbNumber, modPosEndPai.PlcPos, pai)); |
| | | var modPosEndLie = djInfos.FirstOrDefault(s => s.Text == "放货列"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, lie)); |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosEndLie.PosType, djMod.DbNumber, modPosEndLie.PlcPos, lie)); |
| | | var modPosEndCeng = djInfos.FirstOrDefault(s => s.Text == "放货层"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, ceng)); |
| | | listResult.Add(plcStackeConn.SetPlcDBValueRepeat(modPosEndCeng.PosType, djMod.DbNumber, modPosEndCeng.PlcPos, ceng)); |
| | | |
| | | if (listResult.All(s => s.IsSucceed)) |
| | | { |
| | |
| | | //托盘达到拆垛工位,WCS写入品种号并写入530 |
| | | { |
| | | // 获取托盘条码配置 |
| | | var modPalletNo = modDevice.listStation.FirstOrDefault(m => m.Text == "托盘条码" && m.IsDelete == false); |
| | | var modPalletNo = modDevice.listStation.FirstOrDefault(m => m.Text == "托盘码" && m.IsDelete == false); |
| | | // 读取PLC托盘条码号 |
| | | var (res, palletVal) = plcConn.GetPlcDBValue(modPalletNo.PosType, modDevice.DbNumber, modPalletNo.PlcPos); |
| | | string palletNo = palletVal.ToString(); |
| | |
| | | { |
| | | var modAddCode = modDevice.listStation.FirstOrDefault(m => m.Text == "品种" && m.IsDelete == false); |
| | | // 写入拆垛品种 |
| | | var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, pzNo); |
| | | var retVal = plcConn.SetPlcDBValueRepeat(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, pzNo); |
| | | if (retVal.IsSucceed) |
| | | { |
| | | plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "530"); |
| | |
| | | var listResult = new List<Result>(); |
| | | //批次号 |
| | | var modPosLotNo = modDevice.listStation.FirstOrDefault(m => m.Text == "批次号" && m.IsDelete == false); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosLotNo.PosType, modDevice.DbNumber, modPosLotNo.PlcPos, boxInfo.LotNo)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosLotNo.PosType, modDevice.DbNumber, modPosLotNo.PlcPos, boxInfo.LotNo)); |
| | | //品种 |
| | | var modPosPZ = modDevice.listStation.FirstOrDefault(m => m.Text == "品种" && m.IsDelete == false); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosPZ.PosType, modDevice.DbNumber, modPosPZ.PlcPos, checkTaskInfo.PZNo)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosPZ.PosType, modDevice.DbNumber, modPosPZ.PlcPos, checkTaskInfo.PZNo)); |
| | | //是否尾箱 |
| | | var modPosIsEndBox = modDevice.listStation.FirstOrDefault(m => m.Text == "是否尾箱" && m.IsDelete == false); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosIsEndBox.PosType, modDevice.DbNumber, modPosIsEndBox.PlcPos, boxInfo.EndLotFlag)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosIsEndBox.PosType, modDevice.DbNumber, modPosIsEndBox.PlcPos, boxInfo.EndLotFlag)); |
| | | //写入箱码 |
| | | var modPosBox = modDevice.listStation.FirstOrDefault(m => m.Text == "写入箱码" && m.IsDelete == false); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosBox.PosType, modDevice.DbNumber, modPosBox.PlcPos, boxInfo.BoxNo)); |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(modPosBox.PosType, modDevice.DbNumber, modPosBox.PlcPos, boxInfo.BoxNo)); |
| | | |
| | | // 是否写入成功 |
| | | if (listResult.All(s => s.IsSucceed)) |
| | |
| | | } |
| | | } |
| | | |
| | | private static void LedDisplay(string ip,string text) |
| | | private static void LedDisplay(string ip,string text,int type=0) |
| | | { |
| | | try |
| | | { |
| | | LedDll Led = new LedDll(); |
| | | Led.ConsoleLeds(ip, text); |
| | | if (type == 0) |
| | | { |
| | | Led.ConsoleLeds(ip, text); |
| | | } |
| | | else |
| | | { |
| | | Led.LEDstr(ip, text); |
| | | } |
| | | |
| | | // 设置实例 |
| | | //Led.ConsoleLeds("10.18.51.238", $"任务类型:{TaskTypeEnum.Move.GetDescription()}\n\n任务号:TK2024102100001\n托盘号:LN000145\n\n起始位:033\n目标位:R01-02010102"); |
| | | } |
| | |
| | | { |
| | | #region#给PLC写入结批批次号 |
| | | var listResult = new List<Result>(); |
| | | listResult.Add(plcConn.SetPlcDBValue(item.PosType, item.DbNumber, item.PlcPos, "0"));//品种号 |
| | | listResult.Add(plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, ""));//批次号 |
| | | listResult.Add(plcConn.SetPlcDBValue(item.PosTypeStatus, item.DbNumber, item.PosStatus, "0"));//绑定状态 0:未绑定 1:已绑定 |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(item.PosType, item.DbNumber, item.PlcPos, "0"));//品种号 |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(item.PosTypeLot, item.DbNumber, item.PosLot, ""));//批次号 |
| | | listResult.Add(plcConn.SetPlcDBValueRepeat(item.PosTypeStatus, item.DbNumber, item.PosStatus, "0"));//绑定状态 0:未绑定 1:已绑定 |
| | | if (listResult.All(s => s.IsSucceed)) |
| | | { |
| | | // 写入组托回复流程字 |