Kaynağa Gözat

Merge branch '新增连廊线开发' of http://120.77.11.229:3000/zuolinhao/YG-MW-WCS into 新增连廊线开发

xu.lu 2 yıl önce
ebeveyn
işleme
a84d138cc4

BIN
DLL/PLC.Siemens.dll


+ 4 - 2
Projects/永冠/WCS.Service/WebApi/WCSApi.cs

@@ -33,7 +33,8 @@ namespace WCS.Service.WebApi
                                 throw new Exception("任务号" + wmstaskid + "重复下发");
 
                             var scid = int.Parse(obj.SRMNo.Last().ToString());
-                            var tunnel = ((scid > 3 && scid < 6) ? "TM" : "TY") + obj.StartTunnel;
+                            //var tunnel = ((scid > 3 && scid < 6) ? "TM" : "TY") + obj.StartTunnel;
+                            var tunnel = "TY"  + obj.StartTunnel;
                             var task = new WCS_TASK
                             {
                                 TYPE = TaskType.移库,
@@ -58,7 +59,8 @@ namespace WCS.Service.WebApi
                                 throw new Exception("任务号" + wmstaskid + "重复下发");
 
                             var scid = int.Parse(obj.SRMNo.Last().ToString());
-                            var tunnel = ((scid > 3 && scid < 6) ? "TM" : "TY") + obj.StartTunnel;
+                            //var tunnel = ((scid > 3 && scid < 6) ? "TM" : "TY") + obj.StartTunnel;
+                            var tunnel = "TY" + obj.StartTunnel;
 
                             var task = new WCS_TASK
                             {

+ 3 - 2
Projects/永冠/WCS.Service/WebApi/WMS/WMS.cs

@@ -134,7 +134,8 @@ namespace WCS.Service
                 TaskException(devCode, res.ResMessage);
                 throw new Exception(res.ResMessage);
             }
-            var tcode = (warehouse == "mwhouseputong" ? "TM" : "TY") + res.TunnelNum;
+            var tcode = "TY" + res.TunnelNum;
+            //
 
             var tunnel = Device.Find(tcode);
             var next = tunnel.GetNext(devCode);
@@ -161,7 +162,7 @@ namespace WCS.Service
                 TaskException(position, res.ResMessage);
                 throw new Exception(res.ResMessage);
             }
-            var tcode = (warehouse == "mwhouseputong" ? "TM" : "TY") + res.TunnelNum;
+            var tcode = "TY" + res.TunnelNum;
 
             var tunnel = Device.Find(tcode);
             if (devCode == "3001")

+ 11 - 6
Projects/永冠/WCS.Service/Worker.cs

@@ -122,12 +122,17 @@ namespace WCS.Service
                 //Device.Set("LocInfo", new LocInfo(3, 0, 1, 0), "2254");
                 //Device.Set("LocInfo", new LocInfo(5, 0, 1, 0), "2252");
 
-                Device.Set("Tunnel", "TM1", "SC5", "2256", "2255", "2176", "2177");
-                Device.Set("Tunnel", "TM2", "SC4", "2254", "2253", "2174", "2175");
-                Device.Set("Tunnel", "TM3", "SC5", "2252", "2251", "2172", "2173");
-
-                Device.Set("SC", Device.Find("SC5"), v => v.Tunnel() == "TM1" || v.Tunnel() == "TM3");
-                Device.Set("SC", Device.Find("SC4"), v => v.Tunnel() == "TM2");
+                //Device.Set("Tunnel", "TM1", "SC5", "2256", "2255", "2176", "2177");
+                //Device.Set("Tunnel", "TM2", "SC4", "2254", "2253", "2174", "2175");
+                //Device.Set("Tunnel", "TM3", "SC5", "2252", "2251", "2172", "2173");
+                Device.Set("Tunnel", "TY9", "SC9", "2256", "2255", "2176", "2177");
+                Device.Set("Tunnel", "TY8", "SC8", "2254", "2253", "2174", "2175");
+                Device.Set("Tunnel", "TY7", "SC7", "2252", "2251", "2172", "2173");
+
+                //Device.Set("SC", Device.Find("SC5"), v => v.Tunnel() == "TM1" || v.Tunnel() == "TM3");
+                //Device.Set("SC", Device.Find("SC4"), v => v.Tunnel() == "TM2");
+                Device.Set("SC", Device.Find("SC5"), v => v.Tunnel() == "TY5");
+                Device.Set("SC", Device.Find("SC4"), v => v.Tunnel() == "TY4");
 
                 Device.AddFlag(DF.RGVÈ¡»õ, "2255", "2253", "2251", "2265");
                 Device.AddFlag(DF.RGV·Å»õ, "2256", "2254", "2252", "2259", "2261", "2263");

+ 18 - 5
Projects/永冠/WCS.Service/Works/Robots/RobotWork.cs

@@ -97,20 +97,33 @@ namespace WCS.Service.Works.Robots
             var target = dev.Entity.ROUTES.Where(v => v.NEXT.ProductLine() == workShop).Select(v => v.NEXT.Device<IStation521, IStation520, IRobotStation>()).FirstOrDefault();
             if (target == null) throw new Exception("机器人目标位置" + workShop + "不存在");
 
-            if (Ltc.Do(target, target => target.Data.PH_STATUS == false)) throw new Exception($"目标位置[{target}]无光电信号");
-
-            if (Ltc.Do(target, C2153, (target, C2153) => target.Data.GOODSCODE != C2153.Data.GOODSCODE)) //单号不符
+            //string tType = "";
+            //if (C2153.Data.GOODSTYPE == 4)
+            //{
+            //    tType = "母";
+            //}
+            //else if (C2153.Data.GOODSTYPE == 3)
+            //{
+            //    tType = "T2";
+            //}
+            //else if (C2153.Data.GOODSTYPE == 1)
+            //{
+            //    tType = "T9";
+            //}
+            if (Ltc.Do(target, target => target.Data.PH_STATUS == false)) throw new Exception($"目标位置[{target}]托盘未到位");
+
+            if (Ltc.Do(target, C2153, (target, C2153) => target.Data.GOODSCODE != C2153.Data.GOODSCODE) && target.Data3.Qty != target.Data.GOODSSIZE) //单号不符
             {
                 if ((Ltc.Do(target, C2153, (target, C2153) => target.Data.GOODSTYPE != 0 && C2153.Data.GOODSTYPE != 0 && target.Data.GOODSTYPE != C2153.Data.GOODSTYPE))) //托盘类型不符
                 {
                     GeneralHelper.DischargeOfTray(target);
-                    LogHelper.AddWCS_EXCEPTION($"2153:{C2153.Data.TASKNUM}与{target.Entity.CODE}单号不符,托盘有货,自动排出");
+                    LogHelper.AddWCS_EXCEPTION($"2153:{C2153.Data.TASKNUM}与{target.Entity.CODE}单号不符,托盘有货,自动排出106");
                     return;
                 }
                 if (target.Data3.Qty > 0) //有托盘
                 {
                     GeneralHelper.DischargeOfTray(target);
-                    LogHelper.AddWCS_EXCEPTION($"2153:{C2153.Data.TASKNUM}与{target.Entity.CODE}单号不符,托盘有货,自动排出");
+                    LogHelper.AddWCS_EXCEPTION($"2153:{C2153.Data.TASKNUM}与{target.Entity.CODE}单号不符,托盘有货,自动排出112");
                     return;
                 }
                 if (target.Data3.Qty == 0) //无托盘

+ 49 - 24
Projects/永冠/WCS.Service/Works/SC/SCWork.cs

@@ -33,7 +33,7 @@ namespace WCS.Service.Works
         protected override bool SelectDevice(WCS_DEVICE dev)
         {
             //return true;
-            return new string[] { "SC4", "SC5" }.Contains(dev.CODE);
+            return new string[] { "SC7" , "SC8" , "SC9" }.Contains(dev.CODE);
         }
 
         protected override void Do(Device<ISC521, ISC520, ISC537> dev)
@@ -101,6 +101,17 @@ namespace WCS.Service.Works
                         target.Data2.GOODSTYPE = task.PALLETTYPE;
                         target.Data2.GOODSEND = short.Parse(task.ADDRNEXT);
                     }
+
+                    else if (task.TYPE == TaskType.移库)
+                    {
+                        if (task.STATUS == TaskStatus.堆垛机执行)
+                        {
+                            task.STATUS = TaskStatus.已完成;
+                            task.UPDATETIME = DateTime.Now;
+                            db.Default.SaveChanges();
+                            Uploader.Upload(db);
+                        }
+                    }
                     else throw new Exception($"[{deviceCode}]任务类型错误");
 
                     dev.Data2.FinishedACK = 1;
@@ -112,10 +123,23 @@ namespace WCS.Service.Works
             Ltc.Log("开始下发任务");
 
             var tunnel = "";
-            if (dev.Entity.CODE == "SC4" || dev.Entity.CODE == "SC5")
-                tunnel = "TM" + dev.Data.Tunnel;
-            else
-                tunnel = "TY" + dev.Data.Tunnel;
+            //if (dev.Entity.CODE == "SC4" || dev.Entity.CODE == "SC5")
+            //    tunnel = "TM" + dev.Data.Tunnel;
+            //else
+
+            if (dev.Data.Tunnel == 1)
+            {
+                tunnel = "TY9";
+            }
+            else if (dev.Data.Tunnel == 2)
+            {
+                tunnel = "TY8";
+            }
+            else if (dev.Data.Tunnel == 3 )
+            {
+                tunnel = "TY7";
+            }
+
 
             if (Ltc.Do(dev, v => v.Data.Mode != SCMode.远程)) return;
             if (Ltc.Do(dev, v => v.Data.Status != SCRunStatus.空闲)) return;
@@ -283,7 +307,7 @@ namespace WCS.Service.Works
                     .Where(v => v.TYPE == TaskType.出库 && v.Priority >= 0)
                     .Where(v => !db.Default.Set<WCS_TASK>().Any(d => d.DEVICE == sc && d.STATUS == TaskStatus.堆垛机执行));
 
-                    if (dev.Entity.CODE == "SC4" || dev.Entity.CODE == "SC5")
+                    if (dev.Entity.CODE == "SC7" || dev.Entity.CODE == "SC8" || dev.Entity.CODE == "SC9")
                     {
                         //找到所有出口相同的任务
                         //一个目标位置同一时间最多只能有两个卷
@@ -292,7 +316,7 @@ namespace WCS.Service.Works
                             .Where(d => d.STATUS > TaskStatus.新建)
                             .Where(d => d.STATUS < TaskStatus.已完成 || taskidList.Contains(d.ID))
                             .Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR)
-                            .Where(d => d.DEVICE == "SC4" || d.DEVICE == "SC5")
+                            .Where(d => d.DEVICE == "SC7" || d.DEVICE == "SC8" || d.DEVICE == "SC9")
                             .Count() < 2
                       );
                     }
@@ -361,7 +385,7 @@ namespace WCS.Service.Works
         protected override bool SelectDevice(WCS_DEVICE dev)
         {
             //return true;
-            return new string[] { "SC1", "SC2", "SC3" , "SC6" }.Contains(dev.CODE);
+            return new string[] { "SC1", "SC2",  "SC3" ,"SC4", "SC6" }.Contains(dev.CODE);
         }
 
         protected override void Do(Device<ISC521, ISC520, ISC537> dev)
@@ -451,10 +475,10 @@ namespace WCS.Service.Works
             Ltc.Log("开始下发任务");
 
             var tunnel = "";
-            if (dev.Entity.CODE == "SC4" || dev.Entity.CODE == "SC5")
-                tunnel = "TM" + dev.Data.Tunnel;
-            else
-                tunnel = "TY" + dev.Data.Tunnel;
+            //if (dev.Entity.CODE == "SC4" || dev.Entity.CODE == "SC5")
+            //    tunnel = "TM" + dev.Data.Tunnel;
+            //else
+            tunnel = "TY" + dev.Data.Tunnel;
 
             if (Ltc.Do(dev, v => v.Data.Mode != SCMode.远程)) return;
 
@@ -620,18 +644,19 @@ namespace WCS.Service.Works
                     .Where(v => v.TYPE == TaskType.出库 && v.Priority >= 0)
                     .Where(v => !db.Default.Set<WCS_TASK>().Any(d => d.DEVICE == sc && d.STATUS == TaskStatus.堆垛机执行));
 
-                    if (dev.Entity.CODE == "SC4" || dev.Entity.CODE == "SC5")
-                    {
-                        q = q.Where(v =>
-                            db.Default.Set<WCS_TASK>().Where(d => d.TYPE == TaskType.出库)
-                            .Where(d => d.STATUS > TaskStatus.新建)
-                            .Where(d => d.STATUS < TaskStatus.已完成 || taskidList.Contains(d.ID))
-                            .Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR)
-                            .Where(d => d.DEVICE == "SC4" || d.DEVICE == "SC5")
-                            .Count() < 2
-                      );
-                    }
-                    else q = q.Where(v => empties.Contains(v.SCSTATION));
+                    //if (dev.Entity.CODE == "SC4" || dev.Entity.CODE == "SC5")
+                    //{
+                    //    q = q.Where(v =>
+                    //        db.Default.Set<WCS_TASK>().Where(d => d.TYPE == TaskType.出库)
+                    //        .Where(d => d.STATUS > TaskStatus.新建)
+                    //        .Where(d => d.STATUS < TaskStatus.已完成 || taskidList.Contains(d.ID))
+                    //        .Where(d => d.ADDRTO == v.ADDRTO && d.FLOOR == v.FLOOR)
+                    //        .Where(d => d.DEVICE == "SC4" || d.DEVICE == "SC5")
+                    //        .Count() < 2
+                    //  );
+                    //}
+                    //else 
+                    q = q.Where(v => empties.Contains(v.SCSTATION));
 
                     var task = q.OrderByDescending(v => v.Priority)
                                 .ThenBy(v => v.TUNNEL == tunnel ? 0 : 1)

+ 1 - 1
Projects/永冠/WCS.Service/Works/Stations/原膜巷道分配.cs

@@ -32,7 +32,7 @@ namespace WCS.Service.Works.Stations
               .OrderBy(v => v.Entity.CODE)
               .ToArray();
 
-            TunnelArr = Device.Where(v => v.IsTunnel() && v.CODE.StartsWith("TY")).Select(t =>
+            TunnelArr = Device.Where(v => v.IsTunnel() && v.CODE.StartsWith("TY") && (!(v.CODE.Contains("TY7") || v.CODE.Contains("TY8") || v.CODE.Contains("TY9")))).Select(t =>
                   {
                       var inbound = Device.Where(v => v.IsConv() && v.ROUTES.Any(d => d.NEXT.CODE == t.CODE)).Select(v => v.Device<IStation521>()).FirstOrDefault();
                       return new TunnelInfo

+ 30 - 11
Projects/永冠/WCS.Service/Works/Stations/组盘位.cs

@@ -23,7 +23,7 @@ namespace WCS.Service.Works.Stations
             if (dev.Data.RES4 && dev.Data3.Qty > 0)
             {
                 GeneralHelper.DischargeOfTray(dev);
-                LogHelper.AddWCS_EXCEPTION($"{dev.Entity.CODE}单号不符,托盘有货,自动排出");
+                LogHelper.AddWCS_EXCEPTION($"{dev.Entity.CODE}单号不符,托盘有货,自动排出26");
                 return;
             }
 
@@ -119,10 +119,25 @@ namespace WCS.Service.Works.Stations
                             UPDATETIME = DateTime.Now,
                             UPDATEUSER = "WCS",
                             WMSTASK = int.Parse(res.WMSTaskNum),
-                            HEIGHT = 1,
+                            HEIGHT = dev.Data3.MaxQty,
                             DOCID = task.DOCID,
                             //ADDRCURRENT = dev.Entity.CODE
                         };
+
+                        switch (dev.Data3.MaxQty)
+                        {
+                            case 2:
+                                task.HEIGHT = 6;
+                                break;
+
+                            case 4:
+                                task.HEIGHT = 1;
+                                break;
+
+                            default:
+                                task.HEIGHT = 2;
+                                break;
+                        }
                         db.Default.Set<WCS_TASK>().Add(task);
                         db.Default.SaveChanges();
 
@@ -147,17 +162,21 @@ namespace WCS.Service.Works.Stations
                         }
                     }
                     //else
-                    if (!move && task != null)
-                    {
-                        if (Ltc.Do(dev, task, (v, task) => v.Data.GOODSCODE != task.DOCID))
-                        {//托盘类型不匹配,挪走
-                            move = true;
-                        }
-                    }
+                    //if (!move && task != null)
+                    //{
+                    //    if (Ltc.Do(dev, task, (v, task) => v.Data.GOODSCODE != task.DOCID))
+                    //    {//托盘类型不匹配,挪走
+                    //        move = true;                    
+                    //    }
+                    //}
 
-                    if (move) GeneralHelper.DischargeOfTray(dev);
+                    if (move)
+                    {
+                        GeneralHelper.DischargeOfTray(dev);
+                        LogHelper.AddWCS_EXCEPTION($"{dev.Entity.CODE}强制排出175");
+                    }                   
                 }
             }
         }
     }
-}
+}