IPC-610
2024-09-26 fdab33a6b12d09c898606f15e40178b44e174721
码垛交互流程
3个文件已修改
60 ■■■■ 已修改文件
Admin.NET/WCS.Application/Hub/PlcHub.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/PLC/PLCService.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/PLC/PLCTaskAction.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/Hub/PlcHub.cs
@@ -99,7 +99,23 @@
                var ret = plcStackeConn.SetPlcDBValue(PLCDataTypeEnum.Bit, "DB119", "0", PLCTaskAction.boDemo == true ? "1" : "0");
                if (ret.IsSucceed)
                {
                    await _sysConfigService.UpdateConfigValue("sys_demo", context.BoDemo.Value);
                    if (PLCTaskAction.boDemo)
                    {
                        // 写入plc抓箱品种
                        var rett = plcStackeConn.SetPlcDBValue(PLCDataTypeEnum.Short, "DB111", "0", "1");
                        if (rett.IsSucceed)
                        {
                            await _sysConfigService.UpdateConfigValue("sys_demo", context.BoDemo.Value);
                        }
                    }
                    else
                    {
                        var rett = plcStackeConn.SetPlcDBValue(PLCDataTypeEnum.Short, "DB111", "0", "0");
                        if (rett.IsSucceed)
                        {
                            await _sysConfigService.UpdateConfigValue("sys_demo", context.BoDemo.Value);
                        }
                    }
                }
                else
                {
Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -1217,8 +1217,8 @@
                    #endregion
                }
                break;
            #region 出库交互
            #region 出库交互
            case "420":
                {
                    #region 托盘到达拣选工位/出库口
@@ -1345,6 +1345,20 @@
            #endregion
            case "50":
                // plc申请空托
                {
                    // 调用WMS空托出库接口,返回出库任务存入出库表
                    // 写入
                }
                break;
            case "80":
                // 空托盘跺已到位
                {
                }
                break;
            default: break;
        }
@@ -1415,7 +1429,7 @@
                            {
                                // 写入流程控制字 2
                                var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
                                if (retVal.IsSucceed)
                                if (!retVal.IsSucceed)
                                {
                                    Log.Error("演示模式写入分道号失败!");
                                    break;
@@ -1614,9 +1628,9 @@
                    {
                        // 根据工位号,获取托盘号
                        var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
                        // 根据工位号获取托盘线该工位号的配置信息
                        var numModel = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
                        var posModel = PLCTaskAction.plcPositions.First(m => m.DeviceId == numModel.Id && m.Text == "目标工位" && m.IsDelete == false);
                        // 根据工位号获取 托盘线该工位号的配置信息
                        var numModel = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId != modDevice.PlcId);
                        var posModel = PLCTaskAction.plcPositions.First(m => m.DeviceId == numModel.Id && m.Text == "目的工位" && m.IsDelete == false);
                        if (checkTaskMedel == null)
                        {
                            Log.Error(string.Format("组托失败根据码垛工位{0},获取托盘号失败!", modDevice.StationNum));
@@ -1634,13 +1648,14 @@
                        // 码垛工位托盘号
                        string palletNo = checkTaskMedel.PalletNo;
                        // 是否演示模式
                        if (PLCTaskAction.boDemo)
                        {
                            // 直接箱wms申请巷道
                            var http = new HttpService();
                            string TaskNo = "", EndLocate = "";
                            string strMsg = http.RequestRoadWay(palletNo, modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo);
                            if (!strMsg.Contains("-1"))
                            if (strMsg.Contains("-1"))
                            {
                                Log.Error(string.Format("申请巷道失败,码垛工位{0};原因{1}", modDevice.StationNum, strMsg));
                                break;
@@ -1651,13 +1666,14 @@
                                var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait);
                                if (taskModel != null) 
                                {
                                    // 写入码垛工位目标工位,写入交互流程组托成功 执行入库
                                    string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");     // 获取入库取货工位
                                    // 获取入库取货工位
                                    string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");
                                    // 写入托盘输送线码垛工位 目的工位,写入交互流程组托成功 执行入库{若需要可以写入任务号等等其他信息}
                                    var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue);
                                    if (retVal.IsSucceed)
                                    {
                                        // 写入组托回复流程字
                                        // 写入码垛交互-组托回复流程字
                                        retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
                                        // 将入库任务由正在执行改为正在执行
@@ -1707,8 +1723,10 @@
                                var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait);
                                if (taskModel != null)
                                {
                                    // 写入码垛工位目标工位,写入交互流程组托成功 执行入库
                                    string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");     // 获取入库取货工位
                                    // 获取入库取货工位
                                    string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");
                                    // 写入托盘输送线码垛工位 目的工位,写入交互流程组托成功 执行入库{若需要可以写入任务号等等其他信息}
                                    var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue);
                                    if (retVal.IsSucceed)
                                    {
Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -153,7 +153,7 @@
                            {
                                //Console.WriteLine($"{modPlc.IP}读取{modDevice.DbNumber}.{modDevice.PlcPos}的值为:{value}");
                                //无流程跳出
                                if (value == 0  && modPlc.Type != PLCTypeEnum.BoxConveyorLine)
                                if (value == 0 )// && modPlc.Type!= PLCTypeEnum.BoxConveyorLine
                                    continue;
                                var dto = modDevice.Adapt<WcsDeviceDto>();
                                dto.Value = value;