| | |
| | | var plcConn = modDevice.modbusUtil; |
| | | string station = "B" + modDevice.StationNum; |
| | | string value = Convert.ToString(modDevice.Value); |
| | | if (value == "1") |
| | | if (value == "1"||value == "2") |
| | | { |
| | | if (modDevice.Level == DeviceLevelEnum.DB) |
| | | { |
| | |
| | | { |
| | | var modPosPallet = modDevice.listStation.First(s => s.Text == "托盘条码"); |
| | | //todo:这里读码器老读不到条码信息 先写死 读码器问题解决了可以注释掉 |
| | | plcConn.SetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos, "T2400001"); |
| | | //plcConn.SetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos, "T2400001"); |
| | | var (res, palletNo) = plcConn.GetPlcDBValue(modPosPallet.PosType, modDevice.DbNumber, modPosPallet.PlcPos, modPosPallet.StringLength); |
| | | if (!res.IsSucceed || palletNo == "") |
| | | { |
| | |
| | | TaskNo = _taskService.GetTaskCode(), |
| | | TaskType = TaskTypeEnum.Move, |
| | | Type = PLCTypeEnum.AGV, |
| | | StartLocate = AGVStaionEnum.A2.ToString(), |
| | | StartLocate = AGVStaionEnum.A1.ToString(), |
| | | EndLocate = AGVStaionEnum.F1.ToString(), |
| | | PalletNo = modTask.PalletNo, |
| | | Status = TaskStatusEnum.Wait, |
| | |
| | | TaskNo = _taskService.GetTaskCode(), |
| | | TaskType = TaskTypeEnum.Move, |
| | | Type = PLCTypeEnum.AGV, |
| | | StartLocate = AGVStaionEnum.A2.ToString(), |
| | | StartLocate = AGVStaionEnum.A1.ToString(), |
| | | EndLocate = AGVStorageUtil.GetPalletInStorage(), |
| | | PalletNo = modTask.PalletNo, |
| | | Status = TaskStatusEnum.Wait, |
| | |
| | | //如果拉托盘去成品工位,先检查有没有缺托 |
| | | 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()) |