林豪 左 1 рік тому
батько
коміт
f442ce868e

+ 8 - 1
WCS.Core/DataBlock.cs

@@ -17,7 +17,7 @@ namespace WCS.Core
         public ushort Start { get; private set; }
         public ushort Length { get; private set; }
         public World World { get; private set; }
-        public bool Failed { get; private set; }
+        public bool Failed { get; private set; } = true;
         private byte[] Data = new byte[0];
         private int id = 0;
 
@@ -44,6 +44,12 @@ namespace WCS.Core
                 {
                     if (!plc.Ping)
                     {
+                        if (Entity.PLCInfo.IP != "1")
+                        {
+                            Console.ForegroundColor = ConsoleColor.Red;
+                            Console.WriteLine($"{Entity.PLCInfo.IP}无法访问");
+                            Console.ResetColor();
+                        }
                         throw new Exception($"{Entity.PLCInfo.IP}无法访问");
                     }
                 }
@@ -80,6 +86,7 @@ namespace WCS.Core
             catch (Exception ex)
             {
                 Failed = true;
+
                 throw;
             }
         }

+ 1 - 1
WCS.Core/PLC.cs

@@ -33,7 +33,7 @@ namespace WCS.Core
 
         public IPLCAccessor Accessor { get; private set; }
 
-        private bool ping(int timeout = 100)
+        private bool ping(int timeout = 300)
         {
             var p = new Ping();
             if (Entity.IP == "1") return false;

+ 6 - 0
业务工程/分拣库/WCS.WorkEngineering/Extensions/DeviceExtension.cs

@@ -273,6 +273,12 @@ namespace WCS.WorkEngineering.Extensions
                 "2S" => "SRM4",
                 "3N" => "SRM5",
                 "3S" => "SRM6",
+                "1NR" => "SRM1",
+                "1SR" => "SRM2",
+                "2NR" => "SRM3",
+                "2SR" => "SRM4",
+                "3NR" => "SRM5",
+                "3SR" => "SRM6",
                 _ => "Error"
             };
         }

+ 80 - 74
业务工程/分拣库/WCS.WorkEngineering/Systems/分拣主线/满轮主线预写入目标地址.cs

@@ -27,86 +27,92 @@ namespace WCS.WorkEngineering.Systems
 
         public override void Do(Device<IStation523, IBCR83, IStation525> obj)
         {
-            var devCode = obj.Entity.Code switch
+            try
             {
-                "18" => "22",
-                "38" => "41",
-                "58" => "61",
-                "118" => "122",
-                "138" => "141",
-                "158" => "161",
-                _ => throw new ArgumentOutOfRangeException()
-            };
-            var dev = new Device<IStation520>(Device.All.First(x => x.Code == devCode), World);
-            dev.Data.Mode = StationMode.Automatic;
-            //从DB83中获取待处理条码组
-            var pendingBcrList = obj.Data2.GetBcrCodeList().Where(x => !x.IsNullOrEmpty());
-            //从DB525获取已处理条码组
-            var cacheBcrList = obj.Data3.GetBcrCodeList();
-            //筛选出未处理条码组
-            var codes = pendingBcrList.Where(x => !cacheBcrList.Contains(x));
-            World.Log($"扫码器:{JsonConvert.SerializeObject(pendingBcrList)}");
-            World.Log($"缓存信息:{JsonConvert.SerializeObject(cacheBcrList)}");
-            //循环处理所有缓存条码组中没有的条码
-            foreach (var bcrCode in codes)
-            {
-                ////取出预分配地址,并计算相关信息
-                //var key = $"AllocationWarehouseSort:{bcrCode}";
-                //var value = RedisHub.WMS.Get(key);
-                //if (value == null)
-                //{
-                //    World.Log($"{bcrCode}:找不到分库记录", LogLevelEnum.High);
-                //    continue;
-                //}
-                //var mainlineDiversion = JsonConvert.DeserializeObject<MainlineDiversion>(value);
-
-                WCS_TaskInfo taskInfo = null;
-
-                try
+                var devCode = obj.Entity.Code switch
                 {
-                    SqlSugarHelper.Do(_db =>
+                    "18" => "22",
+                    "38" => "41",
+                    "58" => "61",
+                    "118" => "122",
+                    "138" => "141",
+                    "158" => "161",
+                    _ => throw new ArgumentOutOfRangeException()
+                };
+                var dev = new Device<IStation520>(Device.All.First(x => x.Code == devCode), World);
+                dev.Data.Mode = StationMode.Automatic;
+                //从DB83中获取待处理条码组
+                var pendingBcrList = obj.Data2.GetBcrCodeList().Where(x => !x.IsNullOrEmpty());
+                //从DB525获取已处理条码组
+                var cacheBcrList = obj.Data3.GetBcrCodeList();
+                //筛选出未处理条码组
+                var codes = pendingBcrList.Where(x => !cacheBcrList.Contains(x));
+                World.Log($"扫码器:{JsonConvert.SerializeObject(pendingBcrList)}");
+                World.Log($"缓存信息:{JsonConvert.SerializeObject(cacheBcrList)}");
+                //循环处理所有缓存条码组中没有的条码
+                foreach (var bcrCode in codes)
+                {
+                    WCS_TaskInfo taskInfo = null;
+
+                    try
                     {
-                        var db = _db.Default;
-                        var task = db.Queryable<WCS_TaskInfo>().NoLock().Single(x => x.BarCode == bcrCode && x.Status == TaskStatus.NewBuild);
-                        if (task == null)
+                        SqlSugarHelper.Do(_db =>
                         {
-                            World.Log($"{bcrCode}:找不到匹配的新建任务", LogLevelEnum.High);
-                            return;
-                        }
-                        taskInfo = task;
-                    });
-                }
-                catch (Exception e)
-                {
-                    World.Log($"{bcrCode}:----{e.Message}", LogLevelEnum.High);
-                    continue;
-                }
-                var srmCode = taskInfo.WarehouseCode.WarehouseToSrm();
-                var path = DevicePath.GetPath(obj.Entity.Code, srmCode);
-                if (path == null || path is { Points.Count: < 2 })
-                {
-                    World.Log($"{bcrCode}:路径错误,当前位置{obj.Entity.Code},目标位置:{srmCode}", LogLevelEnum.High);
-                    continue;
-                }
-                var next = path.Points[1].Code;
-                if (taskInfo == null) continue;
-                //开始赋值
-                obj.Data3.GetType().GetProperty($"BcrCode{obj.Data3.NextIndex}").SetValue(obj.Data3, bcrCode);
-                obj.Data3.GetType().GetProperty($"BcrCode{obj.Data3.NextIndex}").SetValue(obj.Data3, bcrCode);
-                obj.Data3.GetType().GetProperty($"TaskNumber{obj.Data3.NextIndex}").SetValue(obj.Data3, taskInfo.ID);
-                obj.Data3.GetType().GetProperty($"TaskNumber{obj.Data3.NextIndex}").SetValue(obj.Data3, taskInfo.ID);
-                obj.Data3.GetType().GetProperty($"GoodsEnd{obj.Data3.NextIndex}").SetValue(obj.Data3, next.ToShort());
-                obj.Data3.GetType().GetProperty($"GoodsEnd{obj.Data3.NextIndex}").SetValue(obj.Data3, next.ToShort());
-                if (obj.Data3.NextIndex >= 49)
-                {
-                    obj.Data3.NextIndex = 0;
-                }
-                else
-                {
-                    obj.Data3.NextIndex++;
+                            var db = _db.Default;
+                            var task = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.BarCode == bcrCode && x.Status == TaskStatus.NewBuild);
+                            if (task == null)
+                            {
+                                World.Log($"{bcrCode}:找不到匹配的任务", LogLevelEnum.High);
+                                return;
+                            }
+
+                            taskInfo = task;
+                        });
+                    }
+                    catch (Exception e)
+                    {
+                        World.Log($"{bcrCode}:----{e.Message}", LogLevelEnum.High);
+                        continue;
+                    }
+
+                    var srmCode = taskInfo.WarehouseCode.WarehouseToSrm();
+                    var path = DevicePath.GetPath(obj.Entity.Code, srmCode);
+                    if (path == null || path is { Points.Count: < 2 })
+                    {
+                        World.Log($"{bcrCode}:路径错误,当前位置{obj.Entity.Code},目标位置:{srmCode}", LogLevelEnum.High);
+                        continue;
+                    }
+
+                    var next = path.Points[1].Code;
+                    if (taskInfo == null) continue;
+                    //开始赋值
+                    obj.Data3.GetType().GetProperty($"BcrCode{obj.Data3.NextIndex}").SetValue(obj.Data3, bcrCode);
+                    obj.Data3.GetType().GetProperty($"BcrCode{obj.Data3.NextIndex}").SetValue(obj.Data3, bcrCode);
+                    obj.Data3.GetType().GetProperty($"TaskNumber{obj.Data3.NextIndex}")
+                        .SetValue(obj.Data3, taskInfo.ID);
+                    obj.Data3.GetType().GetProperty($"TaskNumber{obj.Data3.NextIndex}")
+                        .SetValue(obj.Data3, taskInfo.ID);
+                    obj.Data3.GetType().GetProperty($"GoodsEnd{obj.Data3.NextIndex}")
+                        .SetValue(obj.Data3, next.ToShort());
+                    obj.Data3.GetType().GetProperty($"GoodsEnd{obj.Data3.NextIndex}")
+                        .SetValue(obj.Data3, next.ToShort());
+                    if (obj.Data3.NextIndex >= 49)
+                    {
+                        obj.Data3.NextIndex = 0;
+                    }
+                    else
+                    {
+                        obj.Data3.NextIndex++;
+                    }
                 }
+
+                dev.Data.Mode = StationMode.Automatic;
+            }
+            catch (Exception e)
+            {
+                World.Log($"{e.Message}:---{e.StackTrace}", LogLevelEnum.High);
+                throw;
             }
-            dev.Data.Mode = StationMode.Automatic;
         }
 
         public override bool Select(Device dev)

+ 1 - 1
业务工程/分拣库/WCS.WorkEngineering/Systems/桁架码垛/桁架.cs

@@ -241,7 +241,7 @@ namespace WCS.WorkEngineering.Systems
                     .Where(v => !v.Finish).Any(w =>
                     {
                         return cacheLines.Any(a => a.MatCodeList == w.MatCodeList && (a.Quantity == w.QtyMaxCount || (a.AddTime < DateTime.Now.AddHours(-6) && a.Quantity <= w.QtyMaxCount)) && a.WarehouseCode == w.WarehouseCode);
-                    })).ToList();
+                    })).OrderBy(x => x.AddTime).ToList();
                 if (!palletizingLsit.Any())
                 {
                     World.Log($"没有可用取货点,码垛信息是否正常");