2f263d548dc8b9e270f5f5663e80f9d4f5880b10..96f2053a1a93193dc5f4eb064aaf455b2d692f0c
1 天以前 wxw
优化入库流程
96f205 对比 | 目录
3 天以前 wxw
修改问题
423911 对比 | 目录
1个文件已修改
66 ■■■■■ 已修改文件
Admin.NET/WCS.Application/PLC/PLCService.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -22,6 +22,7 @@
{
    private static readonly object OLock = new object();
    private static readonly object RuKuLock = new object();
    private static readonly object OutLock = new object();
    private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
    private static decimal weight94 = 0;
@@ -109,7 +110,7 @@
                        {
                            #region 跨跺机任务处理     ###########
                            // 判断目标位置是否是跨跺机出库工位
                            if (modTask.EndLocate == "266" && modTask.StartRoadway != "R05")
                            if (modTask.EndLocate == "266")// && modTask.StartRoadway != "R05"
                            {
                                // 判断入库工位是否存在未完成的入库任务
                                var modInTask = _db.Queryable<WcsTask>().OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime, OrderByType.Asc)
@@ -134,17 +135,19 @@
                                        break;
                                    }
                                }
                                string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1");  // 获取1楼中专工位号
                                taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP;
                                taskInfo.EndPai = "2";
                                taskInfo.EndLie = "60";
                                taskInfo.EndCeng = "1";
                                taskInfo.EndStation = aaa;
                                if (modTask.StartRoadway != "R05")
                                {
                                    string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1");  // 获取1楼中专工位号
                                    taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP;
                                    taskInfo.EndPai = "2";
                                    taskInfo.EndLie = "60";
                                    taskInfo.EndCeng = "1";
                                    taskInfo.EndStation = aaa;
                                }
                            }
                            if (modTask.EndLocate == "265" && modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06")
                            if (modTask.EndLocate == "265") // && modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06"
                            {
                                // 判断入库工位是否存在未完成的入库任务
                                var modInTask = _db.Queryable<WcsTask>().OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime, OrderByType.Asc)
@@ -169,13 +172,15 @@
                                        break;
                                    }
                                }
                                string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1");  // 获取1楼中专工位号
                                taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP;
                                taskInfo.EndPai = "2";
                                taskInfo.EndLie = "60";
                                taskInfo.EndCeng = "1";
                                taskInfo.EndStation = aaa;
                                if (modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06")
                                {
                                    string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1");  // 获取1楼中专工位号
                                    taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP;
                                    taskInfo.EndPai = "2";
                                    taskInfo.EndLie = "60";
                                    taskInfo.EndCeng = "1";
                                    taskInfo.EndStation = aaa;
                                }
                            }
                            // 写入放货工位固定地址
@@ -379,6 +384,14 @@
                                        var retc = plcConveyorConn.SetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos, "640");
                                        if (retc.IsSucceed)
                                        {
                                            // 再次读取wcs控制字,确保写入成功640
                                            var (ress2, va1s2) = plcConveyorConn.GetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos);
                                            if (va1s2.ToString() == "630")//还是等于630说明640没有写入成功,再次写入640
                                            {
                                                retc = plcConveyorConn.SetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos, "640");
                                                Log.Information($"840垛机取货完成写入640失败后再次写入,DbNumber:{ConveyorMod.DbNumber}");
                                            }
                                            modcTaskMonitor.InteractiveMsg = string.Format("工位:{0},写入取货完成:640", startStationVal);
                                            // 插入交互日志
                                            _db.Insertable(modcTaskMonitor).ExecuteCommand();
@@ -2392,15 +2405,18 @@
                                TaskType = ((int)TaskTypeEnum.Out).ToString(),
                                TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
                            };
                            HttpService httpService = new HttpService();
                            var modResponseTask = httpService.RequestTask(requestMode).Result;
                            if (modResponseTask.StatusCode == 0)
                            {
                                modInsertTaskMonitor.InteractiveMsg += ",返回给WMS任务完成";
                            }
                            else
                            {
                                Log.Error(string.Format("任务反馈失败:StatusCode:{0};Msg:{1}", modResponseTask.StatusCode, modResponseTask.Msg));
                            lock(OutLock)
                            {
                                HttpService httpService = new HttpService();
                                var modResponseTask = httpService.RequestTask(requestMode).Result;
                                if (modResponseTask.StatusCode == 0)
                                {
                                    modInsertTaskMonitor.InteractiveMsg += ",返回给WMS任务完成";
                                }
                                else
                                {
                                    Log.Error(string.Format("任务反馈失败:StatusCode:{0};Msg:{1}", modResponseTask.StatusCode, modResponseTask.Msg));
                                }
                            }
                        }