From 84c580cccb118f5ec4a039d0009255935c3c2490 Mon Sep 17 00:00:00 2001
From: cjs <2216046164@qq.com>
Date: 星期二, 17 六月 2025 17:31:40 +0800
Subject: [PATCH] 111

---
 ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs |  205 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 147 insertions(+), 58 deletions(-)

diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
index 596065b..afa5106 100644
--- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
+++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs
@@ -503,8 +503,8 @@
                 data = num,//鍘熷厛鏄�,鍗曚釜鍐欏叆
                 port = plc.port
             });
-            CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓�.");
-            Console.WriteLine($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓�.");
+            CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(num)}.");
+            Console.WriteLine($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(num)}.");
             ///灏忚溅鍜屽绉颁綅瀵规帴
             //灏忚溅璇锋眰杩涙枡锛屽苟涓旀煡璇㈣澶囨槸鍚﹀厑璁窤GV杩涘叆
             var readRes = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
@@ -766,6 +766,7 @@
                     }
 
                     if (result.result[0] == 3 && result.result[2] == 1)
+                    //if (result.result[2] == 1)
                     {
                         CMMLog.Info($"SecondWeightActionOne:鍑嗗鐢熸垚澶嶇О鍏ョ紦瀛樻灦浠诲姟锛屽紑濮嬬‘瀹氭墭鐩樺彿:{model.ext2}");
                         if(plc.deviceType == "22")
@@ -958,17 +959,18 @@
                 var writeRes1 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
                 {
                     host = plc.ip,
-                    addr = plc.writeAddr + 3,// + 4
+                    addr = plc.writeAddr,
+                    data = 0,
+                    port = plc.port
+                });
+
+                writeRes1 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                {
+                    host = plc.ip,
+                    addr = plc.writeAddr + 3,
                     data = 1,
                     port = plc.port
                 });
-                //var writeRes1 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
-                //{
-                //    host = plc.ip,
-                //    addr = plc.writeAddr + 3,
-                //    data = 1,
-                //    port = plc.port
-                //});
             }
         }
 
@@ -1468,19 +1470,25 @@
         /// </summary>
         /// <param name="ip"></param>
         /// <param name="taskNo"></param>
-        internal static void CacheStackingMouth6(Settings.PlcInfo plc)
+        internal static void CacheStackingMouth6(Settings.PlcInfo plc, string taskNo)
         {
-            //var readres = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
-            //{
-            //    dataNum = 2,
-            //    addr = plc.readAddr + 1,
-            //    host = plc.ip,
-            //    port = plc.port
-            //});
-            //if (readres != null)
-            //{
-
-            //}
+            var taskInfo = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), "TN_I_TASK_MST");
+            MongoDBSingleton.Instance.Remove<WMSInfo>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), RemoveFlags.Single);
+            var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+            {
+                addr = plc.writeAddr + 1,
+                data = 3,
+                host = plc.ip,
+                port = plc.port
+            });
+            Thread.Sleep(2000);
+            wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+            {
+                addr = plc.writeAddr + 1,
+                data = 0,
+                host = plc.ip,
+                port = plc.port
+            });
         }
 
         /// <summary>
@@ -1743,6 +1751,7 @@
                     host = plc.ip,
                     port = plc.port
                 });
+                CMMLog.Info($"鍙犵洏涓嬬嚎璇诲彇閫氶亾{plc.ip}锛宲ort锛歿plc.port},鍦板潃锛歿plc.readAddr + 1}鐨勫�涓簕JsonConvert.SerializeObject(result)}");
                 if (result != null && result.errCode == 0)
                 {
                     //1.婊℃墭涓嬬嚎
@@ -1754,7 +1763,14 @@
                             string wmstaskno = "";
                             string traycode = "";
                             string trayType = "";
-                            if(plc.deviceType == "25") trayType = result.result[1] == 1 ? "宸濆瓧鎵� : "鐢板瓧鎵�;
+                            if (plc.deviceType == "25")
+                            {
+                                trayType = result.result[1] == 1 ? "宸濆瓧鎵� : result.result[1] == 2 ? "鐢板瓧鎵� : "";
+                                if (string.IsNullOrEmpty(trayType))
+                                {
+                                    return;
+                                }
+                            }
                             bool req = WMSHelper.WMSIn(plc.location, "", ref wmstaskno, ref traycode,"","",false, trayType);
                             if (req)
                             {
@@ -2050,9 +2066,9 @@
                                 if (timecuo != null)
                                 {
                                     string timeStamp = timecuo.TimeCuo;
-                                    string employeeId = timecuo.employeeId1;
-                                    // ERP鍙樻洿-璋冪敤ERP鎺ュ彛浼犺緭鐩稿叧鏁版嵁
-                                    WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeStamp, timeStamp, employeeId,true);
+                                    //string employeeId = timecuo.employeeId1;
+                                    //// ERP鍙樻洿-璋冪敤ERP鎺ュ彛浼犺緭鐩稿叧鏁版嵁
+                                    //WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeStamp, timeStamp, employeeId,true);
                                 }
                                 else CMMLog.Info($"鏃堕棿鎴虫帴鍙h繑鍥炲�涓虹┖锛�);
                             }
@@ -3731,12 +3747,26 @@
                                                             CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氬憳宸ョ紪鐮侊細{employeeId}");
                                                             // 鍒ゆ柇褰撳墠銆愬憳宸ョ紪鍙枫�閫氶亾淇℃伅璇诲嚭鏉ョ殑鍛樺伐缂栧彿鏄惁宸茬粡瀛樺湪浜庢垜浠殑鍛樺伐淇℃伅琛�ERPEmployeeTable(鏌ヨ瀛楁-employee_id)
                                                             var erpEmployeeInfo = MongoDBSingleton.Instance.FindOne<ERPEmployeeTable>(Query.EQ("employee_id", employeeId), "ERPEmployeeTable");
-                                                            if (erpEmployeeInfo == null) IsContLaterCode = false;
+                                                            var erpItemInfo = MongoDBSingleton.Instance.FindOne<ERPItemTable>(Query.EQ("item_code", tray.materialCode), "ERPItemTable");
+                                                            if (string.IsNullOrEmpty(tray.empCode) || string.IsNullOrEmpty(tray.materialCode) || erpEmployeeInfo == null || erpEmployeeInfo == null)
+                                                            {
+                                                                CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氫汉鍛樿〃鎴栬�鐗╂枡琛ㄦ湭鎵惧埌璇ユ暟鎹紝鍛樺伐缂栧彿锛歿employeeId}锛岀墿鏂欑紪鐮侊細{tray.materialCode}锛�);
+                                                                IsContLaterCode = false;
+                                                            }
                                                             else CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氬憳宸ョ紪鐮佹煡璇㈡垚鍔�);
                                                         }
 
                                                         if (IsContLaterCode)
                                                         {
+                                                            //妫�储鍛樺伐淇℃伅鎴愬姛
+                                                            var wirteall01 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                                                            {
+                                                                addr = pmInfo.writeAddr,
+                                                                host = pmInfo.ip,
+                                                                port = pmInfo.port,
+                                                                data = 4
+                                                            });
+
                                                             //string timeStamp = ProcessHelper.GetTimeStamp(31, 1, 1);
                                                             //tray.trayCode = "VW" + timeStamp;
                                                             //MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("_id", tray._id), Update.Set("trayCode", tray.trayCode), UpdateFlags.None);
@@ -3955,7 +3985,7 @@
                 if (result != null && result.errCode == 0)
                 {
                     //3锛氫汉宸ュ彨绌烘墭鐩�宸濆瓧)  4:浜哄伐鍙┖鎵樼洏(鐢板瓧)
-                    if (result.result[0] == 3 || result.result[0] == 4)
+                    if ((pmInfo.deviceType == "1" && result.result[0] == 3)|| (pmInfo.deviceType == "21" &&(result.result[0] == 3 || result.result[0] == 4)))
                     {
                         //鍖呰绾胯ˉ绌烘祦绋�                         //鍒ゆ柇绌烘墭缂撳瓨鐐癸紙5 瀵�2锛夋槸鍚︽湁绌烘墭锛屾湁绌烘墭鍒ゆ柇鏄惁鏈変换鍔★紝鏈変换鍔″垯鍒ゆ柇鍙︿竴涓偣浣�@@ -3968,9 +3998,9 @@
                             {
                                 CMMLog.Info($"鍛ㄨ浆鎵樼洏浣嶏細{a}");
                                 var ddInfo = Settings.GetDDSiteList().Where(b => b.ddLoc == a && b.Enable == 1).FirstOrDefault();
-                                if(ddInfo != null)
+                                if (ddInfo != null)
                                 {
-                                    if(ddInfo.trayType == result.result[0] - 2)
+                                    if (ddInfo.trayType == result.result[0] - 2)
                                     {
                                         if (ProcessHelper.PickUpEndFree(pmInfo.location) && ProcessHelper.PickUpStartFree(a))
                                         {
@@ -3995,21 +4025,6 @@
                             CMMLog.Info("閰嶇疆鏂囦欢鏈厤缃寘瑁呮満绌烘墭缂撳瓨鐐�);
                         }
                     }
-                    //娴佺▼鏈鎺ュソ锛屾槸鍚﹁繖鏍蜂娇鐢�寰呭畾
-                    //if (result.result[0] == 4)
-                    //{
-                    //    //璋冪敤wms鍑哄簱鎺ュ彛
-                    //    var tasks = MongoDBSingleton.Instance.Find<TN_I_TASK_MST>(Query.EQ("CN_S_END_BIT", pmInfo.location), "TN_I_TASK_MST");
-                    //    //鍒ゆ柇涓�笅褰撳墠鍙犳墭鐐规槸鍚︽湁浠诲姟鍗犵敤
-                    //    if (ProcessHelper.CheckEndFree(pmInfo.location) && tasks.Count == 0)
-                    //    {
-                    //        //鍙互鐢熸垚浠诲姟锛岃皟WMS鎺ュ彛鑾峰彇浠诲姟淇℃伅
-                    //        bool req = WMSHelper.WMSOut(pmInfo.location, "");
-                    //        if (req) CMMLog.Debug($"璋冪敤WMS鑾峰彇杈呮潗鍑哄簱鐢熸垚浠诲姟鎴愬姛锛�);//鐜板湪浠诲姟鐢盬MS鑷繁涓嬪彂锛孉MS鍋氭嫤鎴鐞嗭紙鏌ヨext1閲岄潰瀵瑰簲鐨勪换鍔$被鍨嬶紝骞舵洿鏀逛换鍔$被鍨嬶級
-                    //        else CMMLog.Debug($"璋冪敤WMS鑾峰彇杈呮潗鍑哄簱鐢熸垚浠诲姟澶辫触锛�);
-                    //    }
-                    //    else CMMLog.Debug($"妫�煡褰撳墠鍙犳墭鐐规槸鍚︽湁浠诲姟鍗犵敤锛屾垨鑰匨ST涓昏〃涓湁缂撳瓨鏋跺叆鍙犵洏鏈虹殑浠诲姟锛�);
-                    //}
                 }
                 else
                 {
@@ -4025,7 +4040,7 @@
             {
                 if (action)
                 {
-                    int[] num = new int[3] {1,1,1};
+                    int[] num = new int[3] {1,0,1};
                     var writeRes = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
                     {
                         host = plc.ip,
@@ -4049,14 +4064,24 @@
                         {
                             //鎺ㄩ�灏忚溅杩涘叆
                             TSHelper.GoToAGV(taskNo, 10, 3);
-                            writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+
+                            int[] num1 = new int[2] { 1, 2};
+                            writeRes = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
                             {
                                 host = plc.ip,
-                                addr = plc.writeAddr + 2,
-                                data = 2,
+                                addr = plc.writeAddr + 1,
+                                data = num1,
                                 port = plc.port
                             });
-                            CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 2}閲岄潰鏁版嵁涓�.");
+
+                            //writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                            //{
+                            //    host = plc.ip,
+                            //    addr = plc.writeAddr + 2,
+                            //    data = 2,
+                            //    port = plc.port
+                            //});
+                            CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 1}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(num1)}.");
                         }
                     }
                 }
@@ -4081,17 +4106,28 @@
             {
                 if (action)
                 {
-                    int[] num = new int[4] { 2, 0, 0, 1 };
-                    var writeRes = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
+                    var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                     {
+                        dataNum = 1,
+                        addr = plc.readAddr + 3,
                         host = plc.ip,
-                        addr = plc.writeAddr,
-                        data = num,
                         port = plc.port
                     });
-                    CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(num)}.");
+                    CMMLog.Debug($"鏌ヨ璁惧{plc.location}閫氶亾{plc.readAddr + 3}閲岄潰鏁版嵁涓簕result.result[0]}.");
+                    if (result.result[0] == 1)
+                    {
+                        int[] num = new int[4] { 2, 0, 0, 1 };
+                        var writeRes = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti
+                        {
+                            host = plc.ip,
+                            addr = plc.writeAddr,
+                            data = num,
+                            port = plc.port
+                        });
+                        CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(num)}.");
+                    }
 
-                    var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+                    result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
                     {
                         dataNum = 4,
                         addr = plc.readAddr,
@@ -4104,8 +4140,8 @@
                         if (result.result[0] == 2 && result.result[1] == 2 && result.result[3] == 2)
                         {
                             //鎺ㄩ�灏忚溅杩涘叆
-                            TSHelper.GoToAGV(taskNo, 10, 3);
-                            writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                            TSHelper.GoToAGV(taskNo, 10, 1);
+                            var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
                             {
                                 host = plc.ip,
                                 addr = plc.writeAddr + 3,
@@ -4161,6 +4197,59 @@
             }
             Thread.Sleep(100000);
         }
+
+        internal static void CheckPackingLineFullThree(Settings.PlcInfo plc)
+        {
+            var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+            {
+                dataNum = 25,
+                addr = plc.readAddr,
+                host = plc.ip,
+                port = plc.port
+            });
+            if(result != null && result.errCode == 0)
+            {
+                if (result.result[0] == 1)
+                {
+                    //鑾峰彇鐗╂枡淇℃伅 鏍规嵁鎵樼洏鐮佸尯鍒�+                    string trayCode = RemoveNull(GetTrayCode(result.result.Skip(6).Take(3).ToArray()));//鎵樼洏鐮�+
+
+                    var infoPack = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.And(Query.EQ("trayCode", trayCode)), "TimeCuoInfoComTwo");
+                    if (infoPack != null)
+                    {
+                        string empCode = RemoveNull(GetTrayCode(result.result.Skip(1).Take(5).ToArray()));//鍛樺伐缂栫爜
+                        string machineCode = RemoveNull(GetTrayCode(result.result.Skip(9).Take(1).ToArray()));//鍖呰鏈哄彿
+                        int needWeight = Convert.ToInt32(Completion(result.result[10]) + Completion(result.result[11]), 2);//浜у搧闇�眰閲嶉噺
+                        int oneWeight = Convert.ToInt32(Completion(result.result[12]) + Completion(result.result[13]), 2);//鍗曟墭姣涢噸
+                        int readWeight = Convert.ToInt32(Completion(result.result[14]) + Completion(result.result[15]), 2);//鍗曟墭鍑�噸
+                        int fcWeight = Convert.ToInt32(Completion(result.result[16]) + Completion(result.result[17]), 2);//鍗曟墭澶嶇О閲嶉噺
+                        int trayType = Convert.ToInt32(Completion(result.result[18]), 2);//鎵樼洏绫诲瀷
+                        int addState = Convert.ToInt32(Completion(result.result[19]), 2);//鍙犲寘灞傛暟
+                        int bagNumber = Convert.ToInt32(Completion(result.result[20]), 2);//琚嬪彿
+                        int productTime = Convert.ToInt32(Completion(result.result[21]) + Completion(result.result[22]), 2);//鐢熶骇鏃ユ湡
+                        string timeCuoTwo = Convert.ToInt32(Completion(result.result[23]) + Completion(result.result[24]), 2).ToString(); //鏃堕棿鎴�+
+                        UpdateBuilder updateBuilder = Update.Set("employeeId", empCode).Set("trayCode", trayCode).Set("packingMachineNumber", machineCode).Set("needWeight", needWeight)
+                                                .Set("oneWeight", oneWeight).Set("realWeight", readWeight).Set("FCWeight", fcWeight).Set("trayType", trayType)
+                                                .Set("isFold", addState).Set("bagNumber", bagNumber).Set("productData", productTime);
+                        //浜у搧鎵规鍙� 浜у搧鍨嬪彿 鐗╂枡鍚嶇О 璁¢噺鍗曚綅鍧囧彲鍦╡rp琛ㄤ腑鏍规嵁鐗╂枡缂栫爜鑾峰彇
+
+                        result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel
+                        {
+                            dataNum = 15,
+                            addr = plc.readAddr + 131,
+                            host = plc.ip,
+                            port = plc.port
+                        });
+
+                        string materialCode = RemoveNull(GetTrayCode(result.result.Skip(0).Take(15).ToArray()).Trim().ToString());
+                        UpdateBuilder update = Update.Set("materialCode", materialCode);
+                        MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), update, UpdateFlags.None);
+                    }
+                }
+            }
+        }
         #endregion
     }
 }

--
Gitblit v1.9.1