| | |
| | | |
| | | |
| | | |
| | | Thread.Sleep(3000); |
| | | Thread.Sleep(2000); |
| | | } |
| | | catch (OperationCanceledException) |
| | | { |
| | |
| | | |
| | | if (waitTask.TaskType == TaskTypeEnum.In ) |
| | | { |
| | | //入库任务起始巷道就是起始工位 |
| | | //入库任务起始巷道就是四向车取货工位 |
| | | if (string.IsNullOrWhiteSpace(waitTask.StartRoadway) || string.IsNullOrWhiteSpace(waitTask.EndLocate)) |
| | | { |
| | | continue; |
| | |
| | | } |
| | | else if (waitTask.TaskType == TaskTypeEnum.Out) |
| | | { |
| | | //出库任务目标巷道就是四向车放货工位 |
| | | taskceng = int.Parse(waitTask.StartLocate.Substring(4, 2)); |
| | | starLocate = waitTask.StartLocate; |
| | | endLocate = waitTask.EndRoadway; |
| | |
| | | |
| | | var text = ""; |
| | | var devStation = ""; |
| | | var ip = ""; |
| | | var carcon = new carConverModel(); |
| | | if (carcon.conveyorBei.Keys.Contains(endLocate)) |
| | | { |
| | | text = "输送线北"; |
| | | ip = "10.26.254.10"; |
| | | devStation = carcon.conveyorBei[endLocate]; |
| | | } |
| | | else if (carcon.conveyorNan.Keys.Contains(endLocate)) |
| | | { |
| | | text = "输送线南"; |
| | | ip = "10.26.254.11"; |
| | | devStation = carcon.conveyorNan[endLocate]; |
| | | } |
| | | if (text != "") |
| | | { |
| | | var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text); |
| | | var modConn = new PLCUtil(modPlc); |
| | | |
| | | //var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == text); |
| | | //var modConn = new PLCUtil(modPlc); |
| | | var modConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == ip); |
| | | var modDevice = PLCTaskAction.plcDevices.First(s => s.StationNum == devStation); |
| | | var (plcResult, palletVal) = modConn.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos); |
| | | if (!plcResult.IsSucceed || Convert.ToInt32(palletVal) != 720) |
| | | { |
| | | continue;//放货工位没有读取成功或不是空闲 |
| | | } |
| | | modConn.Close(); |
| | | } |
| | | |
| | | var gongwei = carcon.conveyorRuKu[endLocate]; |
| | | //判断任务 |
| | | var convarTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.StartLocate == gongwei && m.Type == PLCTypeEnum.ConveyorLine); |
| | | var convarTask = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.StartLocate == gongwei |
| | | && m.Type == PLCTypeEnum.ConveyorLine && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)); |
| | | if (convarTask != null) |
| | | { |
| | | continue;//放货工位有任务 |
| | |
| | | break; //暂缓分配,防止同层小车关机或失联导致阻挡路径 |
| | | } |
| | | } |
| | | var modCarPall = plcPosition.FirstOrDefault(s => s.Text == "托盘检测"); |
| | | var (resultPall, valuePall) = modbusUtil.GetDBValue(modCarPall.PosType, modCarPall.PlcPos); |
| | | //var modCarju = plcPosition.FirstOrDefault(s => s.Text == "举升位置"); |
| | | //var (resultju, valueju) = modbusUtil.GetDBValue(modCarju.PosType, modCarju.PlcPos); |
| | | //if (resultPall.IsSucceed && valuePall == 1 && resultPall.IsSucceed && valuePall != 1) //1顶货 2子通道 3主通道 |
| | | //{ |
| | | // break; //暂缓分配 |
| | | //} |
| | | if (resultPall.IsSucceed && valuePall == 1) //1有托盘 2无托盘 |
| | | { |
| | | break; //暂缓分配 |
| | | } |
| | | //小车空闲加入集合 |
| | | if (value == 1) |
| | | { |