| | |
| | | case PLCTypeEnum.PalletMachine: |
| | | PalletMachine(mod); |
| | | break; |
| | | case PLCTypeEnum.StackingRobot: |
| | | PalletMachine(mod); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | |
| | | private static void ConveyorLine(WcsDeviceDto modDevice) |
| | | { |
| | | var plcConn = modDevice.PLCUtil; |
| | | // 获取楼层数 |
| | | // 获取楼层数ceshi |
| | | var louCeng = PLCCommon.GetRoadwayByStationNew(modDevice.StationNum); |
| | | switch (modDevice.Value.ToString()) |
| | | { |
| | |
| | | // 获取工位托盘码信息 |
| | | var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "托盘码"); |
| | | var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos); |
| | | if (!res.IsSucceed) |
| | | { |
| | | break; |
| | | } |
| | | var http = new HttpService(); |
| | | string TaskNo = "", EndLocate = ""; |
| | | strMsg = http.RequestRoadWay(palletVal, modDevice.StationNum, taskModel, louCeng, ref EndLocate, ref TaskNo); |
| | |
| | | // 获取工位托盘码信息 |
| | | var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "托盘码"); |
| | | var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos); |
| | | if (!res.IsSucceed) |
| | | { |
| | | break; |
| | | } |
| | | string pallet = palletVal.ToString(); |
| | | // 获取任务信息 |
| | | var modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.PalletNo == pallet && (s.Status == TaskStatusEnum.Wait || s.Status == TaskStatusEnum.Doing) && s.TaskType == TaskTypeEnum.In && s.StartRoadway == modDevice.StationNum); |
| | | var modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.PalletNo == pallet && (s.Status == TaskStatusEnum.Wait || s.Status == TaskStatusEnum.Doing) && s.TaskType == TaskTypeEnum.In); |
| | | if (modTask == null) |
| | | { |
| | | // 此托盘没有对应的转移任务 led显示 |
| | |
| | | // 任务号、任务类型、托盘号 |
| | | var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | var modPosTaskType = modDevice.listStation.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, modDevice.DbNumber, modPosTaskType.PlcPos, modTask.TaskType.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())); |
| | | var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "托盘码"); |
| | | listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | // 起始工位、目的工位 |
| | |
| | | // 获取工位托盘码信息 |
| | | var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "托盘码"); |
| | | var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos); |
| | | if (!res.IsSucceed) |
| | | { |
| | | break; |
| | | } |
| | | var http = new HttpService(); |
| | | string TaskNo = ""; |
| | | // 向WMS申请储位信息 |
| | |
| | | // 获取工位托盘码信息 |
| | | var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "托盘码"); |
| | | var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos); |
| | | // 获取工位托盘码信息 |
| | | // 获取工位任务号信息 |
| | | var modPosTaskNo = modDevice.listStation.FirstOrDefault(m => m.Text == "任务号"); |
| | | var (taskRes, taskNoVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosTaskNo.PlcPos); |
| | | if (!res.IsSucceed || !taskRes.IsSucceed ) |
| | | { |
| | | break; |
| | | } |
| | | string pallet = palletVal.ToString(); |
| | | string taskNo = taskNoVal.ToString(); |
| | | // 获取任务信息 |
| | |
| | | var sInfo = PLCCommon.GetStokePlc(modTask.EndRoadway, louCeng); |
| | | if (string.IsNullOrWhiteSpace(sInfo.Ip)) |
| | | { |
| | | throw new Exception("根据巷道获取跺机IP失败,请联系管理员"); |
| | | //需加上LED显示 |
| | | Log.Error(string.Format($"根据巷道获取跺机IP失败,请联系管理员")); |
| | | break; |
| | | } |
| | | // 跺机连接 |
| | | var plcStackeConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == sInfo.Ip); |
| | |
| | | |
| | | var djMod = PLCTaskAction.plcDevices.First(m => m.StationNum == modTask.EndRoadway |
| | | && m.DeviceType == DeviceTypeEnum.Business && m.IsDelete == false); |
| | | var djInfos = PLCTaskAction.plcStation.Where(m => m.IsDelete == false && m.DeviceId == djMod.Id).ToList(); |
| | | var djInfos = PLCTaskAction.plcPositions.Where(m => m.IsDelete == false && m.DeviceId == djMod.Id).ToList(); |
| | | var djInfo = djInfos.First(m => m.Text == "PLC流程字"); |
| | | |
| | | // 获取跺机当前状态 |
| | | var (djRes, djVal) = plcStackeConn.GetPlcDBValue(djMod.PosType, djMod.DbNumber, djMod.PlcPos); |
| | | if (djVal != "820") |
| | | |
| | | if (!djRes.IsSucceed || djVal != "820") |
| | | { |
| | | // 跺机非空闲等待 |
| | | break; |
| | |
| | | var modPosTask = djInfos.FirstOrDefault(s => s.Text == "任务号"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosTask.PosType, djMod.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); |
| | | var modPosTaskType = djInfos.FirstOrDefault(s => s.Text == "任务类型"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, modTask.TaskType.ToString())); |
| | | var taskTypeStr = (int)modTask.TaskType; |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosTaskType.PosType, djMod.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString())); |
| | | var modPosPalletNo = djInfos.FirstOrDefault(s => s.Text == "托盘号"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosPallet.PosType, djMod.DbNumber, modPosPallet.PlcPos, modTask.PalletNo)); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosPalletNo.PosType, djMod.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); |
| | | |
| | | //起始工位 |
| | | var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "取货排"); |
| | | var modPosStrStationNum = djInfos.FirstOrDefault(s => s.Text == "起始工位"); |
| | | listResult.Add(plcStackeConn.SetPlcDBValue(modPosStrStationNum.PosType, djMod.DbNumber, modPosStrStationNum.PlcPos, modDevice.StationNum)); |
| | | |
| | | //取货排、列、层 |
| | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 拆垛机器人业务处理 |
| | | /// </summary> |
| | | /// <param name="modDevice"></param> |
| | | private static void StackingRobot(WcsDeviceDto modDevice) |
| | | { |
| | | var plcConn = modDevice.PLCUtil; |
| | | switch (modDevice.Value.ToString()) |
| | | { |
| | | case "0": |
| | | { |
| | | // 若拆垛工位为空闲,查询任务表是否有未绑定的出库任务,做绑定操作 |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | |
| | | private static void Test(WcsDeviceDto modDevice) |
| | | { |
| | | //写死测试读string |