| | |
| | | //如果拉托盘去成品工位,先检查有没有缺托 |
| | | if (modTask.StartLocate.Substring(0, 1) == "D" && modTask.EndLocate.Substring(0, 1) == "B") |
| | | { |
| | | //判断目标位置是拆托机的任务有没有,有就跳过拆托机到成品工位的任务 |
| | | if (listTask.Any(s => s.EndLocate.Substring(0, 1) == "D")) |
| | | continue; |
| | | } |
| | | //如果目的工位是原料仓,先检查原料仓储位状态 |
| | | if (modTask.EndLocate == AGVStaionEnum.F1.ToString()) |
| | | { |
| | | if (_sysConfigService.GetConfigValue<bool>("cache_Materal").Result) |
| | |
| | | // if (!_sysConfigService.GetConfigValue<bool>("cache_Materal").Result) |
| | | // continue; |
| | | //} |
| | | |
| | | //如果起始工位是拆托机 |
| | | if (modTask.StartLocate == AGVStaionEnum.D1.ToString()) |
| | | { |
| | | //获取叠拆托机IP |
| | | var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.PalletMachine); |
| | | //获取叠拆托机工位 |
| | | var modDevice2 = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Text == "拆托机"); |
| | | //打开连接 |
| | | var modConn = new PLCUtil(modPlc); |
| | | //是否缺托信号 |
| | | //是否允许取托信号 |
| | | var modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice2.Id && s.Text == "允许取托"); |
| | | var (result, value) = modConn.GetPlcDBValue(modPos.PosType, modDevice2.DbNumber, modPos.PlcPos); |
| | | if (result.IsSucceed) |
| | |
| | | } |
| | | else |
| | | { |
| | | //不允许取托,判断是否拆托机准备完成 |
| | | modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice2.Id && s.Text == "准备完成"); |
| | | (result, value) = modConn.GetPlcDBValue(modPos.PosType, modDevice2.DbNumber, modPos.PlcPos); |
| | | if (!value) |
| | |
| | | continue; |
| | | } |
| | | } |
| | | //如果目的工位是提升机放货工位,先检查有没有托盘线的任务 |
| | | if (modTask.EndLocate == AGVStaionEnum.A1.ToString()) |
| | | { |
| | | if (_db.Queryable<WcsTask>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Status == TaskStatusEnum.Doing).Any()) |