From fae1a7742f0d847a47a0f8d3d1235e4826f5d4c6 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期三, 02 七月 2025 17:37:13 +0800 Subject: [PATCH] 1 --- ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs | 905 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 655 insertions(+), 250 deletions(-) diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs index 0b813b0..0555a24 100644 --- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs +++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs @@ -22,6 +22,9 @@ using static Hanhe.iWCS.TaizhouGEMTwoProtocol.ProtocolAnalysis; using log4net.Appender; using System.Net.Configuration; +using static System.Runtime.CompilerServices.RuntimeHelpers; +using System.Reflection.Emit; +using System.Text.RegularExpressions; namespace Hanhe.iWCS.TaizhouGEMTwoProtocol { @@ -503,8 +506,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 @@ -543,10 +546,10 @@ CMMLog.Debug($"鏀笰GV鍙傛暟锛�0锛�"); //鍒ゆ柇浠诲姟璧风偣锛屾壘鍒拌捣鐐瑰寘瑁呮満璁惧鍙凤紝鍦ㄤ腑闂磋〃MachineInfo涓煡鎵句笂涓�彴璁惧锛堝寘瑁呮満锛夌殑鏁版嵁锛岄�杩噈odbus閫氶亾浼犲叆锛堟暟鎹渶瑕佽浆鎹紝ASCII杞�6short锛屽彲鑳借繕闇�鏁版嵁鎷嗗垎锛� var taskInfo = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), "TN_I_TASK_MST"); - if (plc.deviceType == "21") + if (plc.deviceType == "22") { //鍥涢挻杞﹂棿 - var machine = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), "MachineInfo"); + var machine = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), "MachineInfoTetracobalt"); if (machine != null) { CMMLog.Debug("杩涘叆machine鍒ゆ柇"); @@ -569,8 +572,7 @@ // num[b] = Convert.ToInt32(Convert.ToString(int.Parse(taskInfo.Ext2), 2).PadLeft(32, '0').ToString().Substring(k, 16), 2); //} - CMMLog.Debug($"{num}"); - Console.WriteLine(num); + CMMLog.Debug($"{JsonConvert.SerializeObject(num)}"); var wirteall = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti { addr = plc.writeAddr + 5, @@ -735,7 +737,17 @@ }); if (result.result.Length > 0) { - MongoDBSingleton.Instance.Update<MachineInfo>(Query.EQ("trayCode", model.ext2), Update.Set("secondNg", result.result[2]), UpdateFlags.None); + if(plc.deviceType == "22") + { + var newWeight = result.result[19] + "," + result.result[20]; + MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("trayCode", model.ext2), Update.Set("secondNg", result.result[2]), UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", model.ext2), Update.Set("secondNg", result.result[2]).Set("oneTrayWeightFC",newWeight), UpdateFlags.None); + } + else + { + MongoDBSingleton.Instance.Update<MachineInfo>(Query.EQ("trayCode", model.ext2), Update.Set("secondNg", result.result[2]), UpdateFlags.None); + } + //鑾峰彇浠庡绉板钩鍙拌鍑虹殑 鏃堕棿鎴筹紝骞惰浆鎹㈠鐞嗕负 string 瀛楃涓� //string timeStamp = Convert.ToInt32(Completion(result.result[26]) + Completion(result.result[27]), 2).ToString(); string timeStamp = Convert.ToInt32(Completion(result.result[25]) + Completion(result.result[26]), 2).ToString(); @@ -757,9 +769,18 @@ } if (result.result[0] == 3 && result.result[2] == 1) + //if (result.result[2] == 1) { CMMLog.Info($"SecondWeightActionOne:鍑嗗鐢熸垚澶嶇О鍏ョ紦瀛樻灦浠诲姟锛屽紑濮嬬‘瀹氭墭鐩樺彿:{model.ext2}"); - req = WMSHelper.WMSIn(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + if(plc.deviceType == "22") + { + req = WMSHelper.WMSInTwo(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + } + else + { + req = WMSHelper.WMSIn(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + } + ERPService.updatePackageInfo(model.machince, model.ext2, result.result); //if (req) TSHelper.GoToAGV(cN_S_TASK_NO, 10, 6); //else CMMLog.Debug($"WMS杩斿洖{req}"); @@ -775,7 +796,15 @@ { //澶嶇О骞冲彴澶嶇О璐х墿NG鈥斺�杩涘叆NG澶嶇О娴佺▼ 璋冪敤WMS鎺ュ彛鍒嗛厤璐ф灦搴撲綅 //TSHelper.GoToAGV(cN_S_TASK_NO, 10, 6); - req = WMSHelper.WMSIn(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + if(plc.deviceType == "22") + { + req = WMSHelper.WMSInTwo(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + } + else + { + req = WMSHelper.WMSIn(plc.location, model.ext2, ref wmstaskno, ref traycode, timeStamp); + } + if (req) CMMLog.Info($"SecondWeightActionOne:澶嶇О鍏ョ紦瀛樻灦NG娴佺▼锛歐MS鐢熸垚浠诲姟鎴愬姛锛�); else CMMLog.Info($"SecondWeightActionOne:澶嶇О鍏ョ紦瀛樻灦NG娴佺▼锛歐MS鐢熸垚浠诲姟澶辫触锛�); var plcInfo = Settings.GetPlcInfo().Where(a => a.location == model.ext3).FirstOrDefault(); @@ -914,7 +943,7 @@ CMMLog.Debug($"涓夋ゼ鍙屽眰缂撳瓨鏋跺嵏璐т氦浜掞細trayCode:{trayCodeTask.CN_S_BATCH_NO}"); if (plc.deviceType =="22") { - MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("trayCode", trayCodeTask.CN_S_BATCH_NO), "MachineInfo", RemoveFlags.Single); + MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("trayCode", trayCodeTask.CN_S_BATCH_NO), "MachineInfoTetracobalt", RemoveFlags.Single); if (ERPService.ERPSwitch01 == "0") MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("trayCode", trayCodeTask.CN_S_BATCH_NO), "MachineInfoTetracobalt", RemoveFlags.Single); } else @@ -933,17 +962,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 - //}); } } @@ -1039,7 +1069,6 @@ WriteCacheStackingData(plc, task, machine); - var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel { addr = plc.writeAddr + 1, @@ -1065,11 +1094,12 @@ //璇诲彇閫氶亾1閲岄潰鍙傛暟鏄惁涓�锛屽垽鏂彔鐩樻満鏄惁闇�涓婃枡 var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel { - dataNum = 1, + dataNum = 2, addr = pmInfo.readAddr + 1, host = pmInfo.ip, port = pmInfo.port }); + CMMLog.Info($"鑾峰彇纰熺洏鍏ュ彛淇℃伅锛歿JsonConvert.SerializeObject(result)}"); if (result != null && result.errCode == 0) { //鍙傛暟1琛ㄧず鍙犳墭鐐圭敵璇峰叆鏂�@@ -1085,6 +1115,66 @@ else CMMLog.Debug($"璋冪敤WMS鑾峰彇纰熺洏鍑哄簱鐢熸垚浠诲姟澶辫触锛�); } else CMMLog.Debug($"妫�煡褰撳墠鍙犳墭鐐规槸鍚︽湁浠诲姟鍗犵敤锛屾垨鑰匨ST涓昏〃涓湁缂撳瓨鏋跺叆鍙犵洏鏈虹殑浠诲姟锛�); + } + if (pmInfo.deviceType == "23" && result.result[1] == 1) + { + //鍥涢挻杞﹂棿锛屼汉宸ヤ笂鏂欐ā寮�+ result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + { + dataNum = 21, + addr = pmInfo.readAddr + 120, + host = pmInfo.ip, + port = pmInfo.port + }); + CMMLog.Info($"鑾峰彇纰熺洏浜哄伐涓婃枡鍐欏叆淇℃伅锛歿JsonConvert.SerializeObject(result)}"); + if (result != null && result.errCode == 0) + { + string lotNo = RemoveNull(GetTrayCode(result.result.Skip(0).Take(20).ToArray()).Trim().ToString()); //鎵规鍙�+ string bagNumber = Convert.ToInt32(Completion(result.result[20]), 2).ToString(); + var machinInfo = MongoDBSingleton.Instance.FindOne<MachineInfoTwoTetracobalt>(Query.And(Query.EQ("lotNo", lotNo), Query.EQ("packageCode", bagNumber)), "MachineInfoTwoTetracobalt"); + if(machinInfo != null) + { + TN_I_TASK_MST task = new TN_I_TASK_MST + { + CN_S_BATCH_NO = machinInfo.trayCode + }; + WMSInfo machine = new WMSInfo + { + location = machinInfo.location, + productWeight = machinInfo.productWeight, + oneTrayWeight = machinInfo.oneTrayWeight, + addState = machinInfo.addState, + packageCode = machinInfo.packageCode, + itemCode = machinInfo.materialCode + }; + PLCControl.WriteCacheStackingData(pmInfo, task,machine); + machinInfo = MongoDBSingleton.Instance.FindOne<MachineInfoTwoTetracobalt>(Query.And(Query.EQ("lotNo", lotNo), Query.EQ("packageCode", bagNumber)), "MachineInfoTwoTetracobalt"); + if(machinInfo == null) + { + //淇℃伅鍐欏叆鎴愬姛 + var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + addr = pmInfo.writeAddr + 2, + host = pmInfo.ip, + port = pmInfo.port, + data = 1 + }); + CMMLog.Info("浜哄伐鍙犲寘淇℃伅鏌ヨ鎴愬姛锛屽啓鍏�"); + + } + } + else + { + var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + addr = pmInfo.writeAddr + 2, + host = pmInfo.ip, + port = pmInfo.port, + data = 2 + }); + CMMLog.Info("浜哄伐鍙犲寘淇℃伅鏌ヨ澶辫触锛屽啓鍏�"); + } + } } } else CMMLog.Debug($"缂撳瓨鍏ュ彔鐩樻満锛屽垱寤轰换鍔★紝result={result.errMsg}"); @@ -1135,32 +1225,6 @@ else if (readres.result[0] == 2) { TSHelper.GoToAGV(taskNo, 10, 3); - //var task = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), "TN_I_TASK_MST"); - //var machine = MongoDBSingleton.Instance.FindOne<WMSInfo>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "WMSInfo"); - //if (machine != null) - //{ - // if (Settings.cacheStackWrite == "0") - // { - // int[] num = DiePan(machine); - // - // var wirteall01 = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti - // { - // addr = plc.writeAddr + 10, - // host = plc.ip, - // port = plc.port, - // data = num - // }); - // } - // else WriteCacheStackingData(plc, task, machine); - // - // var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel - // { - // addr = plc.writeAddr + 1, - // host = plc.ip, - // port = plc.port, - // data = 2 - // }); - //} } } else CMMLog.Debug($"缂撳瓨鍏ュ彔鐩樻満锛�013锛宲lc=null!"); @@ -1171,7 +1235,7 @@ if (plc.deviceType == "23") { //鍥涢挻杞﹂棿 - var machineTwo = MongoDBSingleton.Instance.FindOne<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "MachineInfoTwo"); + var machineTwo = MongoDBSingleton.Instance.FindOne<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "MachineInfoTwoTetracobalt"); CMMLog.Info($"3妤肩紦瀛樻灦鍏ュ彔鎵�鏀跺埌淇″彿4锛屾煡璇achineInfoTwoTetracobalt琛ㄤ俊鎭細{JsonConvert.SerializeObject(machineTwo)}銆�); if (machineTwo != null) { @@ -1180,7 +1244,7 @@ CMMLog.Info($"3妤肩紦瀛樻灦鍏ュ彔鎵�鍐欏叆鏁版嵁锛歿JsonConvert.SerializeObject(num)},IPort:{plc.ip},{plc.port}"); var wirteall01 = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti { - addr = plc.writeAddr + 10, + addr = plc.writeAddr + 5, host = plc.ip, port = plc.port, data = num @@ -1188,7 +1252,7 @@ CMMLog.Info($"3妤肩紦瀛樻灦鍏ュ彔鎵�杩斿洖鏁版嵁锛歿JsonConvert.SerializeObject(wirteall01)},IPort:{plc.ip},{plc.port}"); if (wirteall01.errCode == 0) { - MongoDBSingleton.Instance.Remove<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "MachineInfoTwo", RemoveFlags.Single); + MongoDBSingleton.Instance.Remove<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", task.CN_S_BATCH_NO), "MachineInfoTwoTetracobalt", RemoveFlags.Single); } } } @@ -1221,12 +1285,12 @@ { var ErpItemInfo = MongoDBSingleton.Instance.FindOne<ERPItemTable>(Query.EQ("item_code", machineInfoTwo.materialCode), "ERPItemTable"); - CMMLog.Info($"3妤肩紦瀛樻灦鍏ュ彔鎵�鏀跺埌淇″彿5锛屾煡璇achineInfoTwoTetracobalt琛ㄤ俊鎭細{JsonConvert.SerializeObject(ErpItemInfo)}銆�); + CMMLog.Info($"3妤肩紦瀛樻灦鍏ュ彔鎵�鏀跺埌淇″彿4锛屾煡璇RPItemTable琛ㄤ俊鎭細{JsonConvert.SerializeObject(ErpItemInfo)}銆�); //鍋忕Щ閲�+11 閫氶亾鑼冨洿锛�40311 ~ 40390 CMMLog.Info($"鍙犵洏鏈烘暟鎹鐞�"); //10~19閫氶亾 - int[] num = new int[105];//鎬婚暱搴︼細80 + int[] num = new int[105];//鎬婚暱搴︼細105 #region 0~23 => 6~29 int a = 0;//鍛樺伐缂栧彿澶勭悊 @@ -1238,26 +1302,33 @@ a = 0;//鎵樼洏鐮佸鐞� for (int b = 5; b <= 7; b++) { - num[b] = int.Parse(AsciiToTen(machine.trayCode.Substring(a, 2))); - a = a + 2; + //num[b] = int.Parse(AsciiToTen(machine.trayCode.Substring(a, 2))); + //a = a + 2; + + num[b] = 0; } num[8] = int.Parse(AsciiToTen(machine.location));//鍖呰鏈哄彿 for (int b = 9; b <= 10; b++) { - int k = b % 2 == 0 ? 0 : 16; + int k = b % 2 == 0 ? 16 : 0; num[b] = Convert.ToInt32(Convert.ToString(int.Parse(machine.productWeight), 2).PadLeft(32, '0').ToString().Substring(k, 16), 2); } for (int b = 11; b <= 12; b++) { - int k = b % 2 == 0 ? 0 : 16; + int k = b % 2 == 0 ? 16 : 0; num[b] = Convert.ToInt32(Convert.ToString(int.Parse(machineInfoTwo.trayCodeWeight), 2).PadLeft(32, '0').ToString().Substring(k, 16), 2); } for (int b = 13; b <= 14; b++) { - int k = b % 2 == 0 ? 0 : 16; + int k = b % 2 == 0 ? 16 : 0; num[b] = Convert.ToInt32(Convert.ToString(int.Parse(machine.oneTrayWeight), 2).PadLeft(32, '0').ToString().Substring(k, 16), 2); } - for (int b = 15; b <= 16; b++) num[b] = 0;// 鍙犲寘鍚庡疄闄呴噸閲�&& 澶嶇О缁撴灉 榛樿锛� + for (int b = 15; b <= 16; b++) + { + var arrTwo = machineInfoTwo.oneTrayWeightFC.Split(',').ToList(); + num[b] = int.Parse(arrTwo[b - 15]);//澶嶇О閲嶉噺 + } + //for (int b = 15; b <= 16; b++) num[b] = 0;// 鍙犲寘鍚庡疄闄呴噸閲�&& 澶嶇О缁撴灉 榛樿锛� num[17] = int.Parse(machineInfoTwo.trayType); num[18] = machine.addState;//鏄惁闇�鍙犲寘 @@ -1274,7 +1345,9 @@ #endregion string pcHead = ""; + string pcTail = ""; string cpHead = ""; + string cpTail = ""; string mtHead = "";// 璁惧鐨勭湡瀹炵墿鏂欑紪鐮� #region 35~54 => 41~60 浜у搧鎵规鍙�@@ -1283,12 +1356,17 @@ CMMLog.Info($"41~60data1_1:{data}"); if (data.Length % 2 != 0) { - data = "0" + machineInfoTwo.lotNo; - pcHead = "" + machineInfoTwo.lotNo.Substring(0, 1); + //data = "0" + machineInfoTwo.lotNo; + //pcHead = "" + machineInfoTwo.lotNo.Substring(0, 1); + + pcTail = machineInfoTwo.lotNo.Substring(data.Length - 1, 1) + ""; + CMMLog.Info($"pcTail:{pcTail}"); + data = machineInfoTwo.lotNo + " "; } CMMLog.Info($"41~60data1_2:{data}"); //瀛楃涓查暱搴�/ 2 = 鍐欏叆閫氶亾鏁伴噺(涓や綅涓�浆) 鍒楋細 3L0050 鍐欏叆涓変釜閫氶亾 int maxLength = 34 + (data.Length / 2);// data.Length / 2 鑷冲皯涓�1 + int maxLength2 = maxLength; int aa = 0; for (int i = 35; i <= maxLength; i++) { @@ -1296,11 +1374,45 @@ aa = aa + 2; } for (int x = maxLength + 1; x <= 54; x++) num[x] = 0;//灏嗕骇鍝佹壒娆″彿鏃犳暟鎹殑閫氶亾鍏ㄩ儴缃负 0 + CMMLog.Info($"num:{JsonConvert.SerializeObject(num)}"); #endregion - #region 55~64 => 61~70 浜у搧鍨嬪彿 + #region 55~64 => 61~70 浜у搧鍨嬪彿(鍥涢挻浜у搧鍨嬪彿鏈変腑鏂囧拰鑻辨枃) - ERPService.HandleItemInfoChina(machine.itemCode, 55, 64, num);// 涓枃澶勭悊 55~64 61~70 + int maxLength3 = 0; + if (Regex.IsMatch(ErpItemInfo.item_spec, @"[\u4e00-\u9fff]")) + { + ERPService.HandleItemInfoChina(ErpItemInfo.item_spec, 55, 64, num);// 涓枃澶勭悊 55~64 61~70 + } + else + { + data = ErpItemInfo.item_spec; + CMMLog.Info($"61~70data1_1:{data}"); + if (data.Length % 2 != 0) + { + //data = "0" + machineInfoTwo.lotNo; + //pcHead = "" + machineInfoTwo.lotNo.Substring(0, 1); + + cpTail = ErpItemInfo.item_spec.Substring(data.Length - 1, 1) + ""; + CMMLog.Info($"cpTail:{cpTail}"); + data = ErpItemInfo.item_spec + " "; + } + CMMLog.Info($"61~70data1_2:{data}"); + //瀛楃涓查暱搴�/ 2 = 鍐欏叆閫氶亾鏁伴噺(涓や綅涓�浆) 鍒楋細 3L0050 鍐欏叆涓変釜閫氶亾 + maxLength = 54 + (data.Length / 2);// data.Length / 2 鑷冲皯涓�1 + maxLength3 = maxLength; + aa = 0; + for (int i = 55; i <= maxLength; i++) + { + num[i] = int.Parse(AsciiToTen(data.Substring(aa, 2))); + aa = aa + 2; + } + for (int x = maxLength3 + 1; x <= 64; x++) num[x] = 0;//灏嗕骇鍝佹壒娆″彿鏃犳暟鎹殑閫氶亾鍏ㄩ儴缃负 0 + CMMLog.Info($"num:{JsonConvert.SerializeObject(num)}"); + + //ERPService.HandleItemInfo(ErpItemInfo.item_spec, 55, 64, num); + } + //string data2 = machine.itemCode; //CMMLog.Info($"51~50data2_1:{data2}"); @@ -1344,14 +1456,28 @@ ERPService.HandleItemInfo(ErpItemInfo.item_uom, 100, 104, num);// 100~104 106~110 // 濡傛灉 浜у搧鎵规鍙�鎴栬� 浜у搧鍨嬪彿 浣嶆暟 涓�濂囨暟锛屽垯灏嗘彁鍓嶅彇鍑虹殑 棣栧瓧绗�閲嶆柊杞爜 鍐欏叆 鍏舵墍瀵瑰簲閫氶亾鍖哄煙鐨�棣栭�閬�- if (pcHead != "") num[35] = int.Parse(AsciiToTen(pcHead)); - if (cpHead != "") num[55] = int.Parse(AsciiToTen(cpHead)); + //if (pcHead != "") num[35] = int.Parse(AsciiToTen(pcHead)); + if (pcTail != "") num[maxLength2] = tailToTen(pcTail); + //if (cpHead != "") num[55] = int.Parse(AsciiToTen(cpHead)); + if (cpHead != "") num[maxLength3] = int.Parse(AsciiToTen(cpTail)); if (mtHead != "") num[65] = int.Parse(AsciiToTen(mtHead)); if (pcHead != "" || cpHead != "") CMMLog.Info($"浜у搧鍨嬪彿鎴栨壒娆″彿鏁伴噺涓哄鏁帮紝鐗瑰皢棣栦綅鍙栧嚭鍗曠嫭澶勭悊锛屼互涓嬩负鎵规鍙峰拰浜у搧鍨嬪彿鐨勫崄杩涘埗鏁板�{num[35]},{num[55]}"); CMMLog.Info($"鍙犵洏鏈烘暟鎹鐞嗗畬姣曪細{JsonConvert.SerializeObject(num)}"); return num; + } + + private static int tailToTen(string Tail) + { + char inputChar = Tail[0]; // 鑾峰彇瀛楃涓茬殑绗竴涓瓧绗�+ int asciiValue = (int)inputChar; // 杞崲涓篈SCII鐮�+ string hexValue = asciiValue.ToString("X2"); // 杞崲涓�6杩涘埗 + string binaryValue = Convert.ToString(asciiValue, 2).PadLeft(8, '0'); // 杞崲涓�浣嶄簩杩涘埗 + string finalBinaryValue = binaryValue + "00000000"; // 琛�涓簩杩涘埗0 + int finalDecimalValue = Convert.ToInt32(finalBinaryValue, 2); // 杞崲涓�0杩涘埗 + + return finalDecimalValue; } /// <summary> @@ -1364,69 +1490,96 @@ var plc = Settings.GetPlcInfo().Where(a => a.deviceType == ip).FirstOrDefault(); if(plc != null) { - OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + if(plc.deviceType == "23") { - addr = plc.writeAddr + 1, - host = plc.ip, - data = 2,//4 - port = plc.port - }); - Thread.Sleep(100); - 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"); - if (readres.result[0] == 3 && readres.result[1] == 1) + var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel { - CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊�銆�); - //璇荤爜淇℃伅姣斿缁撴灉锛歄K 璇诲埌閫氶亾2鍙傛暟涓�鏃�灏忚溅灏嗘墭鐩樻斁缃湪鍙犵洏鏈轰笂锛堟敼鍙傛暟10涓�锛�- var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + addr = plc.writeAddr + 1, + host = plc.ip, + data = 3, + port = plc.port + }); + if (wirte.errCode == 0) + { + 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); + + wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel { addr = plc.writeAddr + 1, host = plc.ip, - data = 3,//4 + data = 0, port = plc.port }); - if (wirte.errCode == 0) + TSHelper.GoToAGV(taskNo, 10, 7); + } + } + else + { + OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + addr = plc.writeAddr + 1, + host = plc.ip, + data = 2, + port = plc.port + }); + 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"); + if (readres.result[0] == 3 && readres.result[1] == 1) { - //骞跺垹闄MSInfo涓棿琛ㄤ腑瀵瑰簲鎵樼洏鍙风殑鏁版嵁锛堜篃鍙湪灏忚溅绂诲紑鍙犵洏鏈轰箣鍚庡垹闄わ紝鏆傚畾閫氶亾2鍙傛暟1锛�- CMMLog.Debug($"璇荤爜淇℃伅姣斿缁撴灉锛歄K ,骞跺垹闄MSInfo涓棿琛ㄤ腑瀵瑰簲鎵樼洏鍙风殑鏁版嵁"); - MongoDBSingleton.Instance.Remove<WMSInfo>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), RemoveFlags.Single); - CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊�銆�); - if (CacheStackingMouth8(plc)) + CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊�銆�); + //璇荤爜淇℃伅姣斿缁撴灉锛歄K 璇诲埌閫氶亾2鍙傛暟涓�鏃�灏忚溅灏嗘墭鐩樻斁缃湪鍙犵洏鏈轰笂锛堟敼鍙傛暟10涓�锛�+ var wirte = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel { - CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊兼垚鍔燂紝鏇存敼AGV鍙傛暟10涓�锛岃灏忚溅绂诲紑銆�); - TSHelper.GoToAGV(taskNo, 10, 7); + addr = plc.writeAddr + 1, + host = plc.ip, + data = 3, + port = plc.port + }); + if (wirte.errCode == 0) + { + //骞跺垹闄MSInfo涓棿琛ㄤ腑瀵瑰簲鎵樼洏鍙风殑鏁版嵁锛堜篃鍙湪灏忚溅绂诲紑鍙犵洏鏈轰箣鍚庡垹闄わ紝鏆傚畾閫氶亾2鍙傛暟1锛�+ CMMLog.Debug($"璇荤爜淇℃伅姣斿缁撴灉锛歄K ,骞跺垹闄MSInfo涓棿琛ㄤ腑瀵瑰簲鎵樼洏鍙风殑鏁版嵁"); + MongoDBSingleton.Instance.Remove<WMSInfo>(Query.EQ("trayCode", taskInfo.CN_S_BATCH_NO), RemoveFlags.Single); + CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊�銆�); + if (CacheStackingMouth8(plc)) + { + CMMLog.Debug($"3妤肩紦瀛樻灦鍏ュ彔鎵極K锛歍askNo:{taskInfo.CN_S_TASK_NO},鍙犲寘OK鍐欏叆鍊兼垚鍔燂紝鏇存敼AGV鍙傛暟10涓�锛岃灏忚溅绂诲紑銆�); + TSHelper.GoToAGV(taskNo, 10, 7); + } } } - } - else if (readres.result[0] == 3 && readres.result[1] == 2) - { - CMMLog.Debug($"璇荤爜淇℃伅姣斿缁撴灉锛氭潯鐮佷笌浼犻�鐨勬暟鎹笉涓�嚧"); - //浜屾湡--璋冪敤 WMS 鏀归亾鎺ュ彛 鑾峰彇 鐩爣鐐逛綅锛屽苟 鏇存敼 AGV 绔欑偣 - string ChangeBit = WMSHelper.WmsUpdateWay(taskInfo.CN_S_SOURCE_NO, plc.Extend); - if (!string.IsNullOrEmpty(ChangeBit)) + else if (readres.result[0] == 3 && readres.result[1] == 2) { - int[] parms = { StockInstance.Instance.GetAGVCodeForBitCode(taskInfo.CN_S_END_BIT), StockInstance.Instance.GetAGVCodeForBitCode(ChangeBit) }; - TSHelper.ChangeParam(taskNo, 1, parms); - TSHelper.GoToAGV(taskNo, 3, 1);// 娉板窞鏍兼灄缇庢洿鏀硅捣鐐瑰眰鏁颁负1-鑽嗛棬涔熼渶瑕佹洿鏀�+ CMMLog.Debug($"璇荤爜淇℃伅姣斿缁撴灉锛氭潯鐮佷笌浼犻�鐨勬暟鎹笉涓�嚧"); + //浜屾湡--璋冪敤 WMS 鏀归亾鎺ュ彛 鑾峰彇 鐩爣鐐逛綅锛屽苟 鏇存敼 AGV 绔欑偣 + string ChangeBit = WMSHelper.WmsUpdateWay(taskInfo.CN_S_SOURCE_NO, plc.Extend); + if (!string.IsNullOrEmpty(ChangeBit)) + { + int[] parms = { StockInstance.Instance.GetAGVCodeForBitCode(taskInfo.CN_S_END_BIT), StockInstance.Instance.GetAGVCodeForBitCode(ChangeBit) }; + TSHelper.ChangeParam(taskNo, 1, parms); + TSHelper.GoToAGV(taskNo, 3, 1);// 娉板窞鏍兼灄缇庢洿鏀硅捣鐐瑰眰鏁颁负1-鑽嗛棬涔熼渶瑕佹洿鏀� - //TSHelper.ChangeParam(taskNo, 1, StockInstance.Instance.GetAGVCodeForBitCode(taskInfo.CN_S_END_BIT)); - //TSHelper.ChangeParam(taskNo, 2, StockInstance.Instance.GetAGVCodeForBitCode(ChangeBit)); - TSHelper.GoToAGV(taskNo, 10, 8); - MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), Update.Set("CN_S_END_BIT", ChangeBit).Set("CN_S_START_BIT", taskInfo.CN_S_END_BIT), "TN_I_TASK_MST", UpdateFlags.None); + //TSHelper.ChangeParam(taskNo, 1, StockInstance.Instance.GetAGVCodeForBitCode(taskInfo.CN_S_END_BIT)); + //TSHelper.ChangeParam(taskNo, 2, StockInstance.Instance.GetAGVCodeForBitCode(ChangeBit)); + TSHelper.GoToAGV(taskNo, 10, 8); + MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", taskNo), Update.Set("CN_S_END_BIT", ChangeBit).Set("CN_S_START_BIT", taskInfo.CN_S_END_BIT), "TN_I_TASK_MST", UpdateFlags.None); + } + else CMMLog.Debug($"璋冪敤WMS鏀归亾鎺ュ彛锛屾湭鑾峰彇鍒板彲鐢ㄧ偣浣嶃�"); + Console.WriteLine($"璇荤爜淇℃伅姣斿缁撴灉锛氭潯鐮佷笌浼犻�鐨勬暟鎹笉涓�嚧"); } - else CMMLog.Debug($"璋冪敤WMS鏀归亾鎺ュ彛锛屾湭鑾峰彇鍒板彲鐢ㄧ偣浣嶃�"); - Console.WriteLine($"璇荤爜淇℃伅姣斿缁撴灉锛氭潯鐮佷笌浼犻�鐨勬暟鎹笉涓�嚧"); + //PLCControl.CacheStackingMouth6(plc); } - //PLCControl.CacheStackingMouth6(plc); } + } } @@ -1435,19 +1588,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> @@ -1710,19 +1869,44 @@ 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.婊℃墭涓嬬嚎 if (result.result[0] == 1) { //鍒ゆ柇3妤煎彔鐩樿捣鐐规槸鍚︽湁浠诲姟鍗犵敤锛屾病鏈夊垯鐢熸垚浠诲姟 - if (ProcessHelper.CheckStartFree(plc.location)) + if (ProcessHelper.CheckStartFree(plc.location)) { string wmstaskno = ""; string traycode = ""; - string trayType = result.result[1] == 1 ? "宸濆瓧鎵� : "鐢板瓧鎵�; + string trayType = ""; + 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) CMMLog.Debug($"璋冪敤WMS鑾峰彇涓夋ゼ鍙犵洏鏈虹敓鎴愪换鍔℃垚鍔燂紒"); + if (req) + { + CMMLog.Debug($"璋冪敤WMS鑾峰彇涓夋ゼ鍙犵洏鏈虹敓鎴愪换鍔℃垚鍔燂紒"); + if (plc.deviceType == "25") + { + //璁板綍鎵樼洏绫诲瀷 + var trayTypeInfo = MongoDBSingleton.Instance.FindOne<trayTypeTable>(Query.EQ("locCode", plc.location), "trayTypeTable"); + if (trayTypeInfo == null) + { + MongoDBSingleton.Instance.Insert<trayTypeTable>(new trayTypeTable + { + locCode = plc.location, + trayType = result.result[1].ToString() + }); + } + } + } else CMMLog.Debug($"璋冪敤WMS鑾峰彇涓夋ゼ鍙犵洏鏈虹敓鎴愪换鍔″け璐ワ紒"); } } @@ -1960,62 +2144,6 @@ } } } - - /// <summary> - /// 3妤兼墦鍖呮満涓嬬嚎锛屽垽鏂墦鍖呮満鏄惁鐢辩敓鎴愭墦鍖呬笅绾跨殑浠诲姟锛堝洓閽磋溅闂达級 - /// </summary> - /// <param name="plc"></param> - internal static void CheckPackingLineFullTwo(Settings.PlcInfo plc) - { - //璇籶lc淇″彿锛岀湅鏈夋病鏈変笅绾胯姹傦紝鍒ゆ柇鏄惁宸茬粡鏈変换鍔�- //娌℃湁浠诲姟锛岀户缁璸lc锛屽寘瑁呬笅绾跨殑鐗╂枡淇″彿 - //妫�煡鎵撳寘鏈洪�閬�鏄惁鏈夊嚭鏂欎换鍔′俊鍙凤紝濡傛灉鏈夌敓鎴愬彇鏂欎换鍔°� - if (CheckStartFree(plc.location)) - { - try - { - var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel - { - dataNum = 1, - addr = plc.readAddr + 1, - host = plc.ip, - port = plc.port - }); - if (result != null && result.errCode == 0) - { - if (result.result[0] == 1) - { - //鑾峰彇MODBUS閫氶亾閲岄潰瀛樻斁鐨勬椂闂存埑 - var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel - { - addr = plc.readAddr + 10, - host = plc.ip, - port = plc.port, - dataNum = 170 - }); - if (resultTime.errCode == 0) - { - string wmstaskno = ""; - TimeCuoInfoComTwo timecuo = TimeCuoTwo(resultTime.result); - 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); - } - else CMMLog.Info($"鏃堕棿鎴虫帴鍙h繑鍥炲�涓虹┖锛�); - } - else CMMLog.Info($"MODBUS鏃堕棿鎴虫暟鎹繑鍥炲�閿欒锛氳繑鍥炲�瑙f瀽锛歿JsonConvert.SerializeObject(result)}"); - } - } - } - catch (Exception ex) - { - CMMLog.Error(ex.Message); - } - } - } #endregion #region 鎵撳寘鏈哄嚭鍙ODBUS浜や簰锛堝紑濮嬪彇鏂欙紝鍙栨枡瀹屾垚锛�@@ -2024,9 +2152,9 @@ /// 璁惧鍏佽鍑烘枡 1 PLC鍐欙紝AMS璇�1-璁惧璇锋眰鍑烘枡锛�-鍏佽杩涘叆锛�-纭璐х墿鍙栬蛋锛岄�鍑虹墿鏂欙紱 ///鎵撳寘绾夸笅绾库�鈥斿皬杞﹀紑濮嬪彇璐�- internal static void PackingLineUnload1012(string ip, string taskNo) + internal static void PackingLineUnload1012(string ip, string taskNo, int port) { - var plc = Settings.GetPlcInfo().Where(a => a.deviceType == "4").FirstOrDefault(); + var plc = Settings.GetPlcInfo().Where(a => a.ip == ip && a.port == port).FirstOrDefault(); if (plc != null) { try @@ -2075,11 +2203,11 @@ /// </summary> /// <param name="ip"></param> /// <param name="taskNo"></param> - internal static void PackingLineComplete4(string ip, string taskNo) + internal static void PackingLineComplete4(string ip, string taskNo, int port) { //鍙栬揣瀹屾垚鍚庨渶瑕佽鍙栬澶囨椂闂存埑閲岄潰鐨勬暟鎹紝骞跺皢鍏舵殏瀛樿嚦涓棿琛ㄧ瓑鍒板叆搴撲换鍔″畬鎴愪紶杈撶粰WMS - var plc = Settings.GetPlcInfo().Where(a => a.deviceType == "4").FirstOrDefault(); + var plc = Settings.GetPlcInfo().Where(a => a.ip == ip && a.port == port).FirstOrDefault(); if (plc != null) { try @@ -2701,12 +2829,13 @@ /// <param name="info"></param> /// <param name="result"></param> /// <param name="noPack">true : MES浜や簰鏂瑰紡 false : 鏃燤ES浜や簰鏂瑰紡</param> - private static void GetMachineDataTetracobalt(int[] result ,bool noPack = true) + private static void GetMachineDataTetracobalt(int[] result, ref string timeStamp, bool noPack = true) { CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氳繘鍏ユ暟鎹鐞嗘祦绋嬶紒"); - string empCode = GetTrayCode(result.Take(5).ToArray());//鍛樺伐缂栫爜 + string empCode = RemoveNull(GetTrayCode(result.Take(5).ToArray()));//鍛樺伐缂栫爜 string trayCode = GetTrayCode(result.Skip(5).Take(3).ToArray());//鎵樼洏鐮�+ trayCode = "0"; string location = GetTrayCode(result.Skip(8).Take(1).ToArray());//璁惧璐т綅缂栫爜 if(trayCode != null && location != null) { @@ -2730,7 +2859,7 @@ } else CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氬寘瑁呮満鏃燤ES鎯呭喌涓嬶紝妯℃嫙MES鏁版嵁锛屼腑闂磋〃<MachineInfoTetracobalt>涓凡鏈夊綋鍓嶅寘瑁呮満鍙穥location}涓洪鐨勬暟鎹�); } - var info = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("machineNo", location), "MachineInfo"); + var info = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("machineNo", location), "MachineInfoTetracobalt"); if (info != null) { @@ -2750,7 +2879,7 @@ info.addState = Convert.ToInt32(Completion(result[18]), 2); if (info.addState == 0) CMMLog.Error($"鏁版嵁澶勭悊娴佺▼锛氳幏鍙朚ODBUS淇℃伅寮傚父:鏄惁鍙犲寘鍊间负0."); info.packageCode = Convert.ToInt32(Completion(result[19]), 2).ToString(); - info.productTime = Convert.ToInt32(Completion(result[21]) + Completion(result[22]), 2).ToString(); + info.productTime = Convert.ToInt32(Completion(result[20]) + Completion(result[21]), 2).ToString(); //info.addWeight = Convert.ToInt32(Completion(result[10]) + Completion(result[11]), 2).ToString(); //info.packNg = 1;//涓嶉渶瑕佹鍙傛暟 result[12] @@ -2776,7 +2905,7 @@ } else CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氳鏌ヨ<MachineInfoTetracobalt>琛ㄤ腑machineNo瀛楁鏄惁涓哄綋鍓嶅寘瑁呮満鍙凤紝骞朵笖trayCode鏄惁涓�"); - var infoPack = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.And(Query.EQ("machineNo", location), Query.EQ("trayCode", "0")), "MachineInfo"); + var infoPack = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.And(Query.EQ("machineNo", location), Query.EQ("trayCode", "0")), "MachineInfoTetracobalt"); if (infoPack != null) { @@ -2793,11 +2922,11 @@ //info.productType = RemoveNull(GetTrayCode(result.Skip(50).Take(10).ToArray()).Trim().ToString()); //info.materialCode = RemoveNull(GetTrayCode(result.Skip(60).Take(20).ToArray()).Trim().ToString()); - info.lotNo = RemoveNull(GetTrayCode(result.Skip(35).Take(20).ToArray()).Trim().ToString()); - info.productType = RemoveNull(GetTrayCode(result.Skip(55).Take(10).ToArray()).Trim().ToString()); - info.materialCode = RemoveNull(GetTrayCode(result.Skip(65).Take(15).ToArray()).Trim().ToString()); - info.materialName = RemoveNull(GetTrayCode(result.Skip(80).Take(20).ToArray()).Trim().ToString()); - info.measurementUnit = RemoveNull(GetTrayCode(result.Skip(100).Take(5).ToArray()).Trim().ToString()); + info.lotNo =RemoveNull(GetTrayCode(result.Skip(35).Take(20).ToArray()).Trim().ToString()).TrimStart(); + info.productType = RemoveNull(GetTrayCode(result.Skip(55).Take(10).ToArray()).Trim().ToString()).TrimStart(); + info.materialCode = RemoveNull(GetTrayCode(result.Skip(65).Take(15).ToArray()).Trim().ToString()).TrimStart(); + info.materialName = RemoveNull(GetTrayCode(result.Skip(80).Take(20).ToArray()).Trim().ToString()).TrimStart(); + info.measurementUnit = RemoveNull(GetTrayCode(result.Skip(100).Take(5).ToArray()).Trim().ToString()).TrimStart(); CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氬寘瑁呮満鏃燤ES鎯呭喌涓嬶紝鑾峰彇浠ュ線MES浼犺緭鐨勬暟鎹紝鏂拌幏寰楁暟鎹紝lotNo:{info.lotNo},productType:{info.productType},materialCode:{info.materialCode},materialName:{info.materialName},measurementUnit:{info.measurementUnit}"); @@ -2805,18 +2934,22 @@ //娉ㄦ剰锛氳繖閲岃祴鍊间腑闂磋〃鍙傛暟璇峰鐓т俊鎭氦浜掕〃鍏蜂綋閫氶亾鍊煎搴� UpdateBuilder update = Update.Set("palletLayers", info.secondNg.ToString()).Set("overlappingLayers", info.addState.ToString()).Set("bagNo", info.packageCode). Set("lotNo", info.lotNo).Set("productType", info.productType).Set("materialCode", info.materialCode).Set("materialName", info.materialName).Set("measurementUnit", info.measurementUnit); - MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("machineNo", location), update, "MachineInfo", UpdateFlags.None); - MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), update, "MachineInfoTwo", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(Query.EQ("machineNo", location), update, "MachineInfoTetracobalt", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), update, "MachineInfoTwoTetracobalt", UpdateFlags.None); } //鍦ㄤ腑闂磋〃涓壘鍒板垰鍒氭彃鍏ョ殑MES鏁版嵁锛堢洰鍓嶈繕娌℃湁璇诲彇骞跺啓鍏ヨ澶囨暟鎹級 + + timeStamp = ProcessHelper.GetTimeStamp(31, 1, 1); + trayCode = "VW" + timeStamp; + var query1 = Query.And(Query.EQ("machineNo", location), Query.EQ("trayCode", "0")); UpdateBuilder updateBuider = Update.Set("empCode", info.empCode).Set("location", info.location). - Set("trayCode", info.trayCode).Set("productWeight", info.productWeight). - Set("trayCodeWeight", info.trayCodeWeight).Set("oneTrayWeight", info.oneTrayWeight). - Set("addWeight", info.addWeight).Set("packNg", info.packNg).Set("secondNg", info.secondNg).Set("productTime", info.productTime). + Set("trayCode", trayCode).Set("productWeight", info.productWeight). + Set("trayCodeWeight", info.trayCodeWeight).Set("oneTrayWeight", info.oneTrayWeight).Set("trayType", info.trayType).Set("addState", info.addState). + Set("addWeight", info.addWeight).Set("packNg", info.packNg).Set("secondNg", info.secondNg).Set("productTime", info.productTime).Set("packageCode", info.packageCode). Set("jsonData", json).Set("modify", DateTime.Now); - MongoDBSingleton.Instance.Update<MachineInfo>(query1, updateBuider, "MachineInfo", UpdateFlags.None); - MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), updateBuider, "MachineInfoTwo", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(query1, updateBuider, "MachineInfoTetracobalt", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(query1, updateBuider, "MachineInfoTwoTetracobalt", UpdateFlags.None); CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氭洿鏂癕achineInfoTetracobalt涓棿琛ㄥ垰鍒氭彃鍏ョ殑MES鏁版嵁!璁惧鍙蜂负锛歿location},鎵樼洏鍙蜂负锛歿trayCode}"); } else @@ -2833,8 +2966,8 @@ Set("trayCodeWeight", info.trayCodeWeight).Set("oneTrayWeight", info.oneTrayWeight). Set("addWeight", info.addWeight).Set("packNg", info.packNg).Set("secondNg", info.secondNg).Set("productTime", info.productTime). Set("jsonData", json).Set("modify", DateTime.Now); - MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(query2, updateBuider, "MachineInfo", UpdateFlags.None); - MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), updateBuider, "MachineInfoTwo", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTetracobalt>(query2, updateBuider, "MachineInfoTetracobalt", UpdateFlags.None); + MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("trayCode", trayCode), updateBuider, "MachineInfoTwoTetracobalt", UpdateFlags.None); CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氭洿鏂癕achineInfoTetracobalt涓棿琛ㄥ叾浠栬澶囩殑鏁版嵁!璁惧鍙蜂负锛歿location},鎵樼洏鍙蜂负锛歿trayCode}"); } else CMMLog.Info($"鏁版嵁澶勭悊娴佺▼锛氭棤娉曞湪MachineInfoTetracobalt涓棿琛ㄤ腑鎵惧埌褰撳墠璁惧缂栧彿鐨勬暟鎹紒褰撳墠璁惧缂栧彿涓猴細{location}锛屾墭鐩樼爜涓猴細{trayCode}"); @@ -3612,7 +3745,7 @@ internal static void CheckPackingMachineTetracobalt(Settings.PlcInfo pmInfo) { //var count = MongoDBSingleton.Instance.FindOne<>//occupy - var count = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("occupy", "1"), "MachineInfo"); + var count = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("occupy", "1"), "MachineInfoTetracobalt"); //妫�煡鍖呰鏈洪�閬�鏄惁鏈変笅鏂欎俊鍙凤紝濡傛灉鏈夌敓鎴愪笅鏂欎换鍔°�绾跨▼寰幆璇诲彇锛屾棤闇�缃惊鐜�鈥斺�閫氶亾0鍙傛暟涓� if (count == null) @@ -3638,7 +3771,7 @@ if (result != null && result.errCode == 0 && result.result.Count() > 0) { //1锛氬彇鏂�- if (result.result[0] == 1) + if (result.result[0] == 1 || result.result[0] == 5) { string PlcBit02 = Settings.GetPlcInfo().Where(a => a.deviceType == "22").FirstOrDefault().location; //鍖呰涓嬬嚎浠诲姟锛岀粓鐐逛负澶嶇О浣嶇疆锛堣繖閲屽垽鏂寘瑁呮満璧风偣锛屽绉拌捣鐐圭粓鐐瑰潎鏃犱换鍔★紝鍒欐帹閫佷换鍔★級 @@ -3663,41 +3796,109 @@ if (trayCode.errCode == 0 && trayCode.result.Length == 105) { //鑾峰彇鎵樼洏鐮佺瓑淇℃伅 璇诲彇閫氶亾 11銆�2銆�3鐨勬暟鎹綔涓烘墭鐩樼爜 璇诲彇鍏跺畠閫氶亾 閲嶉噺 鍙犲寘绛変俊鎭�鎵�湁鏁版嵁瀛樺叆MachineInfo琛�- GetMachineDataTetracobalt(trayCode.result, false); - var tray = MongoDBSingleton.Instance.FindOne<MachineInfo>(Query.EQ("machineNo", pmInfo.location), "MachineInfo"); + string timeStamp = ""; + GetMachineDataTetracobalt(trayCode.result, ref timeStamp, false); + var tray = MongoDBSingleton.Instance.FindOne<MachineInfoTetracobalt>(Query.EQ("machineNo", pmInfo.location), "MachineInfoTetracobalt"); if (tray != null) { + CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛歁achineInfoTetracobalt鏁版嵁鎻掑叆鎴愬姛锛�); bool IsContLaterCode = true; if (ERPService.ERPSwitch01 == "1") { - string employeeId = "G" + tray.trayCodeWeight.PadLeft(7, '0'); + string employeeId = "G" + tray.empCode.PadLeft(7, '0'); + 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 + }); + CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛歩p:{pmInfo.ip},port:{pmInfo.port},addr:{pmInfo.writeAddr},鍐欏叆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); + //MongoDBSingleton.Instance.Update<MachineInfoTwoTetracobalt>(Query.EQ("_id", tray._id), Update.Set("trayCode", tray.trayCode), UpdateFlags.None); + CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氭墭鐩樼爜锛歿tray.trayCode}"); if (tray.addState == 0) { - MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("machineNo", pmInfo.location), "MachineInfo", RemoveFlags.None); + MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("machineNo", pmInfo.location), "MachineInfoTetracobalt", RemoveFlags.None); if (ERPService.ERPSwitch01 == "0") MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.EQ("machineNo", pmInfo.location), "MachineInfoTwo", RemoveFlags.None); CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氬彔鎵樺眰鏁颁负0锛屼笉鍏佽鐢熸垚浠诲姟"); } else if (tray.trayCode != "0" && !string.IsNullOrEmpty(tray.trayCode)) { - string timeStamp = ProcessHelper.GetTimeStamp(31, 1, 1); - HHAmsExecuteResult req = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), pmInfo.location, PlcBit02, "3妤煎寘瑁呭彇鏂�鍥涢挻)", 0, tray.trayCode, timeStamp); - if (req.success) + if (result.result[0] == 1) { - string weight = (double.Parse(tray.oneTrayWeight) / 100).ToString(); - //int weight = int.Parse(tray.oneTrayWeight) / 100; - ERPService.packageInfo(tray.machineNo, tray.trayCode, tray.lotNo, weight); + HHAmsExecuteResult req = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), pmInfo.location, PlcBit02, "3妤煎寘瑁呭彇鏂�鍥涢挻)", 0, tray.trayCode, timeStamp); + if (req.success) + { + string weight = (double.Parse(tray.oneTrayWeight) / 100).ToString(); + ERPService.packageInfo(tray.machineNo, tray.trayCode, tray.lotNo, weight); + + //璁板綍鎵樼洏绫诲瀷 + var trayTypeInfo = MongoDBSingleton.Instance.FindOne<trayTypeTable>(Query.EQ("locCode", pmInfo.location), "trayTypeTable"); + if (trayTypeInfo == null) + { + MongoDBSingleton.Instance.Insert<trayTypeTable>(new trayTypeTable + { + locCode = pmInfo.location, + trayType = tray.trayType + }); + } + } + } + else + { + //var writeRes0 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + //{ + // host = pmInfo.ip, + // addr = pmInfo.writeAddr, + // data = 5,//鍘熷厛鏄�,鍗曚釜鍐欏叆 + // port = pmInfo.port + //}); + + //浜哄伐妯″紡锛屾棤闇�敓鎴愪换鍔�+ //鍒犻櫎MachineInfoTetracobalt琛ㄤ腑鐨勬暟鎹�+ MongoDBSingleton.Instance.Remove<MachineInfoTetracobalt>(Query.And(Query.EQ("machineNo", pmInfo.location), Query.EQ("trayCode", tray.trayCode)), "MachineInfoTetracobalt", RemoveFlags.None); + + //鍒犻櫎 MachineInfoTwoTetracobalt 閲嶅鐨勬暟鎹�+ var twoInfo = MongoDBSingleton.Instance.Find<MachineInfoTwoTetracobalt>(Query.And(Query.EQ("lotNo", tray.lotNo), Query.EQ("packageCode",tray.packageCode)), "MachineInfoTwoTetracobalt"); + if(twoInfo.Count > 1) + { + foreach(var a in twoInfo) + { + MongoDBSingleton.Instance.Remove<MachineInfoTwoTetracobalt>(Query.EQ("_id", a._id),RemoveFlags.None); + if (MongoDBSingleton.Instance.Find<MachineInfoTwoTetracobalt>(Query.And(Query.EQ("lotNo", tray.lotNo), Query.EQ("packageCode", tray.packageCode)), "MachineInfoTwoTetracobalt").Count == 1) + { + break; + } + } + } + + //璁板綍鍖呰闂翠笅鏂欎俊鎭�+ string Weight = (decimal.Parse(tray.oneTrayWeight) / 100).ToString("F2"); + MongoDBSingleton.Instance.Insert<packageInfoModel>(new packageInfoModel { machineNo = tray.machineNo, trayCode = tray.trayCode, batchNo = tray.lotNo, time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), weight = Weight }); } } } else { + CMMLog.Debug($"锛堝洓閽磋溅闂达級鍖呰涓嬬嚎娴佺▼-{pmInfo.location}锛氬憳宸ョ紪鐮佹煡璇㈠け璐�); //妫�储鍛樺伐淇℃伅澶辫触鍐欏叆瀵规柟閫氶亾鍊� 璇诲彇鍦板潃+3 var wirteall01 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel { @@ -3748,7 +3949,7 @@ // } // else CMMLog.Info($"褰撳墠鍖呰鏈哄嚭鐜版晠闅滐紝鏃犳硶鐢熸垚浠诲姟銆傚寘瑁呮満鍙凤細{pmInfo.location}"); } - else CMMLog.Debug($"褰撳墠machineInfo涓棿琛ㄥ凡瀛樺湪鏁版嵁锛歿JsonConvert.SerializeObject(count)}"); + else CMMLog.Debug($"褰撳墠MachineInfoTetracobalt涓棿琛ㄥ凡瀛樺湪鏁版嵁锛歿JsonConvert.SerializeObject(count)}"); } @@ -3881,7 +4082,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锛夋槸鍚︽湁绌烘墭锛屾湁绌烘墭鍒ゆ柇鏄惁鏈変换鍔★紝鏈変换鍔″垯鍒ゆ柇鍙︿竴涓偣浣�@@ -3894,9 +4095,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)) { @@ -3921,21 +4122,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 { @@ -3951,7 +4137,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, @@ -3975,14 +4161,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)}."); } } } @@ -4007,17 +4203,28 @@ { if (action) { - int[] num = new int[4] { 2, 0, 1, 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, @@ -4027,11 +4234,11 @@ CMMLog.Debug($"鏌ヨ璁惧{plc.location}閫氶亾{plc.readAddr}閲岄潰鏁版嵁涓簕result.result[0]}銆亄result.result[1]}銆亄result.result[3]}."); if (result != null && result.errCode == 0) { - if (result.result[0] == 2 && result.result[1] == 2 && result.result[2] == 2) + 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, @@ -4087,6 +4294,204 @@ } Thread.Sleep(100000); } + + internal static void CheckPackingLineFullThree(Settings.PlcInfo plc) + { + var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + { + dataNum = 1, + addr = plc.readAddr + 1, + host = plc.ip, + port = plc.port + }); + CMMLog.Info($"涓嬬嚎鍙�ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.writeAddr + 1}锛宺euslt:{JsonConvert.SerializeObject(result)}."); + if(result != null && result.errCode == 0) + { + if (result.result[0] == 1) + { + var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + { + dataNum = 26, + addr = plc.readAddr + 8, + host = plc.ip, + port = plc.port + }); + CMMLog.Info($"涓嬬嚎鍙�ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.writeAddr + 8}锛宺euslt:{JsonConvert.SerializeObject(resultTime)}."); + if (resultTime.errCode == 0) + { + string timeCuoData = (resultTime.result[0] * 65536 + resultTime.result[1]).ToString(); + string empCode = RemoveNull(GetTrayCode(resultTime.result.Skip(2).Take(5).ToArray()));//鍛樺伐缂栫爜 + string machineCode = RemoveNull(GetTrayCode(resultTime.result.Skip(10).Take(1).ToArray()));//鍖呰鏈哄彿 + int needWeight = Convert.ToInt32(Completion(resultTime.result[11]) + Completion(resultTime.result[12]), 2);//浜у搧闇�眰閲嶉噺 + int oneWeight = Convert.ToInt32(Completion(resultTime.result[13]) + Completion(resultTime.result[14]), 2);//鍗曟墭姣涢噸 + int readWeight = Convert.ToInt32(Completion(resultTime.result[15]) + Completion(resultTime.result[16]), 2);//鍗曟墭鍑�噸 + int fcWeight = Convert.ToInt32(Completion(resultTime.result[17]) + Completion(resultTime.result[18]), 2);//鍗曟墭澶嶇О閲嶉噺 + int trayType = Convert.ToInt32(Completion(resultTime.result[19]), 2);//鎵樼洏绫诲瀷 + int addState = Convert.ToInt32(Completion(resultTime.result[20]), 2);//鍙犲寘灞傛暟 + int bagNumber = Convert.ToInt32(Completion(resultTime.result[21]), 2);//琚嬪彿 + int productTime = Convert.ToInt32(Completion(resultTime.result[22]) + Completion(resultTime.result[23]), 2);//鐢熶骇鏃ユ湡 + + result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + { + dataNum = 70, + addr = plc.readAddr + 110, + host = plc.ip, + port = plc.port + }); + CMMLog.Info($"涓嬬嚎鍙o紝ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.readAddr + 140},result:{JsonConvert.SerializeObject(result)}"); + string lotNo = RemoveNull(GetTrayCode(result.result.Skip(0).Take(20).ToArray()).Trim().ToString()); + string materialCode = RemoveNull(GetTrayCode(result.result.Skip(30).Take(15).ToArray()).Trim().ToString()); + CMMLog.Info($"涓嬬嚎鍙o細timeCuoData:{timeCuoData},empCode:{empCode},machineCode:{machineCode},needWeight:{needWeight},oneWeight:{oneWeight},readWeight:{readWeight}" + + $",fcWeight:{fcWeight},trayType:{trayType},addState:{addState},bagNumber:{bagNumber},productTime:{productTime},TimeCuo:{timeCuoData}"); + var timeTwo = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.EQ("TimeCuo", timeCuoData), "TimeCuoInfoComTwo"); + if (timeTwo == null) + { + MongoDBSingleton.Instance.Insert<TimeCuoInfoComTwo>(new TimeCuoInfoComTwo + { + timeCuo = timeCuoData, + employeeId = empCode, + packingMachineNumber = machineCode, + needWeight = needWeight, + oneWeight = oneWeight, + realWeight = readWeight, + FCWeight = fcWeight, + trayType = trayType.ToString(), + isFold = addState, + bagNumber = bagNumber, + productData = productTime.ToString(), + TimeCuo = timeCuoData, + lotNo = lotNo, + materialCode = materialCode + }, "TimeCuoInfoComTwo"); + } + else + { + var query1 = Query.EQ("TimeCuo", timeCuoData); + UpdateBuilder updateBuilder = Update.Set("employeeId", empCode).Set("packingMachineNumber", machineCode).Set("needWeight", needWeight) + .Set("oneWeight", oneWeight).Set("realWeight", readWeight).Set("FCWeight", fcWeight).Set("trayType", trayType.ToString()) + .Set("isFold", addState).Set("bagNumber", bagNumber).Set("productData", productTime.ToString()).Set("TimeCuo", timeCuoData) + .Set("materialCode", materialCode); + MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(query1, updateBuilder, "TimeCuoInfoComTwo", UpdateFlags.None); + } + string wmstaskno = ""; + WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeCuoData, timeCuoData, empCode, true); + } + } + } + + + //string trayCode = ""; + //var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + //{ + // dataNum = 25, + // addr = plc.readAddr, + // host = plc.ip, + // port = plc.port + //}); + //CMMLog.Info($"璐存爣鏈鸿幏鍙栦俊鎭紝ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.readAddr},result:{JsonConvert.SerializeObject(result)}"); + //if(result != null && result.errCode == 0) + //{ + // if (result.result[0] == 1) + // { + // //鑾峰彇鐗╂枡淇℃伅 鏍规嵁鎵樼洏鐮佸尯鍒�+ // trayCode = RemoveNull(GetTrayCode(result.result.Skip(6).Take(3).ToArray()));//鎵樼洏鐮�+ // + // if (!string.IsNullOrEmpty(trayCode)) + // { + // 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 + // }); + // CMMLog.Info($"璐存爣鏈猴紝ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.readAddr + 131},result:{JsonConvert.SerializeObject(result)}"); + // string materialCode = RemoveNull(GetTrayCode(result.result.Skip(0).Take(15).ToArray()).Trim().ToString()); + // UpdateBuilder update = Update.Set("materialCode", materialCode).Set("createTime", DateTime.Now); + // MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), update, UpdateFlags.None); + // + // var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + // { + // host = plc.ip, + // addr = plc.writeAddr, + // data = 1, + // port = plc.port + // }); + // CMMLog.Debug($"璐存爣鏈猴紝鍐欏叆 ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.writeAddr}鐨勬暟鎹负1."); + // } + // } + // } + //} + // + //var xxPlc = Settings.GetPlcInfo().Where(a => a.deviceType == "27" && a.enable == 1).FirstOrDefault(); + //if(xxPlc != null) + //{ + // if (CheckStartFree(plc.location)) + // { + // result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + // { + // dataNum = 1, + // addr = plc.readAddr + 1, + // host = plc.ip, + // port = plc.port + // }); + // + // CMMLog.Debug($"涓嬬嚎鍙�ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.writeAddr + 1}锛宺euslt:{JsonConvert.SerializeObject(result)}."); + // if (result != null && result.errCode == 0) + // { + // if (result.result[0] == 1) + // { + // var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + // { + // dataNum = 2, + // addr = plc.readAddr + 8, + // host = plc.ip, + // port = plc.port + // }); + // CMMLog.Debug($"涓嬬嚎鍙�ip锛歿plc.ip}锛宲ort:{plc.port},addr:{plc.writeAddr + 8}锛宺euslt:{JsonConvert.SerializeObject(result)}."); + // if (resultTime.errCode == 0) + // { + // string timeCuoData = (resultTime.result[0] * 65536 + resultTime.result[1]).ToString(); + // TimeCuoInfoComTwo time = null; + // var timeTwo = MongoDBSingleton.Instance.Find<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), "TimeCuoInfoComTwo"); + // if (timeTwo.Count > 0) + // { + // time = timeTwo.OrderBy(a => a.createTime).FirstOrDefault(); + // MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("_id", time._id), Update.Set("TimeCuo", timeCuoData)); + // } + // string wmstaskno = ""; + // WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeCuoData, timeCuoData, time.employeeId, true); + // } + // } + // } + // } + //} + //else + //{ + // CMMLog.Info("涓嬬嚎鍙h澶囨湭閰嶇疆"); + //} + + } #endregion } } -- Gitblit v1.9.1