From e3d6e8ddbfc930db88bef1e7f170ddfe71b06cf1 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期五, 04 七月 2025 17:25:43 +0800 Subject: [PATCH] 1 --- ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs | 305 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 280 insertions(+), 25 deletions(-) diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs index 9c3767a..6529bb7 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs @@ -29,6 +29,7 @@ using System.Globalization; using static Hanhe.iWCS.JingmenGEMTwoProtocol.PLCControl; using Hanhe.iWCS.DeviceDriver; +using System.Data.OleDb; namespace Hanhe.iWCS.JingmenGEMTwoProtocol { @@ -730,18 +731,33 @@ internal static void PickUpFullDoorComplete(string ip, string taskNo) { var plc = Settings.GetPlcInfo().Where(a => a.ip == ip).FirstOrDefault(); - if (plc != null && !plc.location.Contains("FLZT")) + if (plc != null) { - //鍐欏叆鍖呰鏈�-瀹夊叏闂ㄥ叧闂ㄦ寚浠�- var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + if (plc.location.Contains("FLZT")) { - host = ip, - addr = plc.writeAddr + 1, - data = 3, - port = plc.port - }); - CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 1}閲岄潰鏁版嵁涓�."); - //Console.WriteLine($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 1}閲岄潰鏁版嵁涓�."); + //鍐欏叆杩旀枡绔欏彴--鍙栬揣瀹屾垚 + var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + host = ip, + addr = plc.writeAddr, + data = 1, + port = plc.port + }); + CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓�."); + } + else + { + //鍐欏叆鍖呰鏈�-瀹夊叏闂ㄥ叧闂ㄦ寚浠�+ var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + host = ip, + addr = plc.writeAddr + 1, + data = 3, + port = plc.port + }); + CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 1}閲岄潰鏁版嵁涓�."); + } + } else CMMLog.Debug($"鍖呰涓嬬嚎锛�锛宨p=null!"); } @@ -2250,7 +2266,6 @@ //鍙敓鎴愪换鍔� var CBInfo = Settings.GetConnectingbitsList().Where(a => a.enable == 1).ToList(); if (CBInfo != null && timecuo != null) - //if (CBInfo != null) { string timeStamp = timecuo.data.First().timeStamp.ToString(); foreach (var a in CBInfo) @@ -3963,6 +3978,38 @@ } } + /// <summary> + /// 鐢甸挻鎺ラ┏浣嶅叆绔嬪簱浠诲姟 + /// </summary> + /// <param name="locCode"></param> + internal static void DGInWarehouse(string locCode) + { + try + { + var locInfo = MongoDBSingleton.Instance.FindOne<DGConnectingBits>(Query.EQ("Bit", locCode), "DGConnectingBits"); + if (locInfo != null) + { + if (locInfo.state == "1") + { + CMMLog.Info("DGInWarehouse:" + JsonConvert.SerializeObject(locInfo)); + string wmstaskno = ""; + string trayCode = locInfo.trayCode; + bool req = WMSHelper.WMSIn(locCode, "鐢甸挻鎵撳寘涓嬬嚎", ref wmstaskno, ref trayCode, "", "DGCK"); + if (req) + { + CMMLog.Info($"鐢甸挻鎺ラ┏浣嶅叆绔嬪簱娴佺▼锛歐MS鐢熸垚浠诲姟鎴愬姛锛�); + MongoDBSingleton.Instance.Update<DGConnectingBits>(Query.EQ("Bit", locCode), Update.Set("state", "2"), "DGConnectingBits", UpdateFlags.None); + } + else CMMLog.Info($"鐢甸挻鎺ラ┏浣嶅叆绔嬪簱娴佺▼锛歐MS鐢熸垚浠诲姟澶辫触锛�); + } + } + } + catch (Exception ex) + { + CMMLog.Info("DGInWarehouse" + ex.Message); + } + } + internal static void outWare(string taskNo,bool flage) { var plc = Settings.GetPlcInfo().Where(a => a.Extend == "2" && a.enable == 1).FirstOrDefault(); @@ -4478,7 +4525,7 @@ } /// <summary> - /// 鍥涢挻A锛堟礂鏉跨儤骞叉満缁勶級璁惧涓婄┖涓嬫弧 + /// 鐢甸挻A锛堟礂鏉跨儤骞叉満缁勶級璁惧涓婄┖涓嬫弧 /// </summary> /// <param name="plc"></param> /// <exception cref="NotImplementedException"></exception> @@ -4501,8 +4548,8 @@ { //閫佺┖ bool req = WMSHelper.WMSOut(plc.location, "", ""); - if (req) CMMLog.Debug($"鍥涢挻A璁惧 璋冪敤WMS鑾峰彇绌烘墭鍑哄簱鐢熸垚浠诲姟鎴愬姛锛�);//鐜板湪浠诲姟鐢盬MS鑷繁涓嬪彂锛孉MS鍋氭嫤鎴鐞嗭紙鏌ヨext1閲岄潰瀵瑰簲鐨勪换鍔$被鍨嬶紝骞舵洿鏀逛换鍔$被鍨嬶級 - else CMMLog.Debug($"鍥涢挻A璁惧 璋冪敤WMS鑾峰彇绌烘墭鍑哄簱鐢熸垚浠诲姟澶辫触锛�); + if (req) CMMLog.Debug($"鐢甸挻A璁惧 璋冪敤WMS鑾峰彇绌烘墭鍑哄簱鐢熸垚浠诲姟鎴愬姛锛�);//鐜板湪浠诲姟鐢盬MS鑷繁涓嬪彂锛孉MS鍋氭嫤鎴鐞嗭紙鏌ヨext1閲岄潰瀵瑰簲鐨勪换鍔$被鍨嬶紝骞舵洿鏀逛换鍔$被鍨嬶級 + else CMMLog.Debug($"鐢甸挻A璁惧 璋冪敤WMS鑾峰彇绌烘墭鍑哄簱鐢熸垚浠诲姟澶辫触锛�); } if (result.result[0] == 2) { @@ -4510,20 +4557,20 @@ string wmstaskno = ""; string traycode = ""; bool req = WMSHelper.WMSIn(plc.location, "", ref wmstaskno, ref traycode); - if (req) CMMLog.Debug($"鍥涢挻A璁惧 璋冪敤WMS鑾峰彇婊℃墭鍏ュ簱鐢熸垚浠诲姟鎴愬姛锛�);//鐜板湪浠诲姟鐢盬MS鑷繁涓嬪彂锛孉MS鍋氭嫤鎴鐞嗭紙鏌ヨext1閲岄潰瀵瑰簲鐨勪换鍔$被鍨嬶紝骞舵洿鏀逛换鍔$被鍨嬶級 - else CMMLog.Debug($"鍥涢挻A璁惧 璋冪敤WMS鑾峰彇婊℃墭鍏ュ簱鐢熸垚浠诲姟澶辫触锛�); + if (req) CMMLog.Debug($"鐢甸挻A璁惧 璋冪敤WMS鑾峰彇婊℃墭鍏ュ簱鐢熸垚浠诲姟鎴愬姛锛�);//鐜板湪浠诲姟鐢盬MS鑷繁涓嬪彂锛孉MS鍋氭嫤鎴鐞嗭紙鏌ヨext1閲岄潰瀵瑰簲鐨勪换鍔$被鍨嬶紝骞舵洿鏀逛换鍔$被鍨嬶級 + else CMMLog.Debug($"鐢甸挻A璁惧 璋冪敤WMS鑾峰彇婊℃墭鍏ュ簱鐢熸垚浠诲姟澶辫触锛�); } } } catch (Exception ex) { - CMMLog.Info($"鍥涢挻A璁惧 err:{ex.Message}"); + CMMLog.Info($"鐢甸挻A璁惧 err:{ex.Message}"); } } } /// <summary> - /// 鍥涢挻C锛堥挻鏉垮壀鍒囨満缁勶級璁惧涓婃弧涓嬬┖ + /// 鐢甸挻C锛堥挻鏉垮壀鍒囨満缁勶級璁惧涓婃弧涓嬬┖ /// </summary> /// <param name="a"></param> /// <exception cref="NotImplementedException"></exception> @@ -4546,8 +4593,8 @@ { //閫佹弧 bool req = WMSHelper.WMSOut(plc.location, "", ""); - if (req) CMMLog.Debug($"鍥涢挻C璁惧 璋冪敤WMS鑾峰彇婊℃墭鍑哄簱鐢熸垚浠诲姟鎴愬姛锛�);//鐜板湪浠诲姟鐢盬MS鑷繁涓嬪彂锛孉MS鍋氭嫤鎴鐞嗭紙鏌ヨext1閲岄潰瀵瑰簲鐨勪换鍔$被鍨嬶紝骞舵洿鏀逛换鍔$被鍨嬶級 - else CMMLog.Debug($"鍥涢挻C璁惧 璋冪敤WMS鑾峰彇婊℃墭鍑哄簱鐢熸垚浠诲姟澶辫触锛�); + if (req) CMMLog.Debug($"鐢甸挻C璁惧 璋冪敤WMS鑾峰彇婊℃墭鍑哄簱鐢熸垚浠诲姟鎴愬姛锛�);//鐜板湪浠诲姟鐢盬MS鑷繁涓嬪彂锛孉MS鍋氭嫤鎴鐞嗭紙鏌ヨext1閲岄潰瀵瑰簲鐨勪换鍔$被鍨嬶紝骞舵洿鏀逛换鍔$被鍨嬶級 + else CMMLog.Debug($"鐢甸挻C璁惧 璋冪敤WMS鑾峰彇婊℃墭鍑哄簱鐢熸垚浠诲姟澶辫触锛�); } if (result.result[0] == 2) { @@ -4555,14 +4602,203 @@ string wmstaskno = ""; string traycode = ""; bool req = WMSHelper.WMSIn(plc.location, "", ref wmstaskno, ref traycode); - if (req) CMMLog.Debug($"鍥涢挻C璁惧 璋冪敤WMS鑾峰彇绌烘墭鍏ュ簱鐢熸垚浠诲姟鎴愬姛锛�);//鐜板湪浠诲姟鐢盬MS鑷繁涓嬪彂锛孉MS鍋氭嫤鎴鐞嗭紙鏌ヨext1閲岄潰瀵瑰簲鐨勪换鍔$被鍨嬶紝骞舵洿鏀逛换鍔$被鍨嬶級 - else CMMLog.Debug($"鍥涢挻C璁惧 璋冪敤WMS鑾峰彇绌烘墭鍏ュ簱鐢熸垚浠诲姟澶辫触锛�); + if (req) CMMLog.Debug($"鐢甸挻C璁惧 璋冪敤WMS鑾峰彇绌烘墭鍏ュ簱鐢熸垚浠诲姟鎴愬姛锛�);//鐜板湪浠诲姟鐢盬MS鑷繁涓嬪彂锛孉MS鍋氭嫤鎴鐞嗭紙鏌ヨext1閲岄潰瀵瑰簲鐨勪换鍔$被鍨嬶紝骞舵洿鏀逛换鍔$被鍨嬶級 + else CMMLog.Debug($"鐢甸挻C璁惧 璋冪敤WMS鑾峰彇绌烘墭鍏ュ簱鐢熸垚浠诲姟澶辫触锛�); } } } catch (Exception ex) { - CMMLog.Info($"鍥涢挻C璁惧 err:{ex.Message}"); + CMMLog.Info($"鐢甸挻C璁惧 err:{ex.Message}"); + } + } + } + + internal static void DGMachine(Settings.PlcInfo plc, string taskNo, bool action) + { + if (action) + { + var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + host = plc.ip, + addr = plc.writeAddr + 2, + data = 1, + port = plc.port + }); + CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 2}閲岄潰鏁版嵁涓�."); + var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + { + dataNum = 1, + addr = plc.readAddr + 2, + host = plc.ip, + port = plc.port + }); + CMMLog.Debug($"鏌ヨ璁惧{plc.location}閫氶亾{plc.readAddr + 2}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(result)}."); + if (result != null && result.errCode == 0) + { + if (result.result[0] == 1) + { + //鎺ㄩ�灏忚溅杩涘叆 + TSHelper.GoToAGV(taskNo, 10, 1); + writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + host = plc.ip, + addr = plc.writeAddr + 2, + data = 0, + port = plc.port + }); + CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 2}閲岄潰鏁版嵁涓�."); + } + } + } + else + { + var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + host = plc.ip, + addr = plc.writeAddr + 3, + data = 1, + port = plc.port + }); + CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 3}閲岄潰鏁版嵁涓�."); + } + } + + internal static void DGMachineTwo(Settings.PlcInfo plc, string taskNo, bool action) + { + if (action) + { + var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + host = plc.ip, + addr = plc.writeAddr, + data = 1, + port = plc.port + }); + CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓�."); + var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + { + dataNum = 1, + addr = plc.readAddr + 1, + host = plc.ip, + port = plc.port + }); + CMMLog.Debug($"鏌ヨ璁惧{plc.location}閫氶亾{plc.readAddr + 1}閲岄潰鏁版嵁涓簕JsonConvert.SerializeObject(result)}."); + if (result != null && result.errCode == 0) + { + if (result.result[0] == 1) + { + //鎺ㄩ�灏忚溅杩涘叆 + TSHelper.GoToAGV(taskNo, 10, 3); + writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + host = plc.ip, + addr = plc.writeAddr, + data = 0, + port = plc.port + }); + CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓�."); + } + } + } + else + { + var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + host = plc.ip, + addr = plc.writeAddr + 1, + data = 1, + port = plc.port + }); + CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr + 1}閲岄潰鏁版嵁涓�."); + } + } + + internal static void DMachine(Settings.PlcInfo plc) + { + if (PickUpStartFree(plc.location) && PickUpEndFree(plc.location)) + { + try + { + var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + { + dataNum = 1, + addr = plc.readAddr, + host = plc.ip, + port = plc.port + }); + CMMLog.Debug($"鍖呰鏈烘弧鎵樹笅绾匡細璇诲彇閫氶亾鍙蜂负锛歿plc.readAddr},ip:{plc.ip},绔彛锛歿plc.port}"); + CMMLog.Debug($"鍖呰鏈烘弧鎵樹笅绾垮�涓猴細{result.result[0]}"); + if (result != null && result.errCode == 0) + { + if (result.result[0] == 1) + { + //鎴愬搧涓嬬嚎浠诲姟鐢熸垚鍒版帴椹冲钩鍙�+ string traycode = ""; + var DGinfoList = MongoDBSingleton.Instance.FindAll<DGPackingLineFullModel>("DGPackingLineFullModel"); + if (DGinfoList.Count > 0) + { + var DGinfo = DGinfoList.Where(a => a.isUse == "0").OrderBy(a => a.createTime).First(); + //灏嗘暟鎹彃鍏ヤ腑闂磋〃 + traycode = DGinfo.trayCode; + } + //鍙敓鎴愪换鍔�+ CMMLog.Debug($"鍖呰鏈烘弧鎵樹笅绾�鑾峰彇鎵樼洏鍙凤細{traycode}"); + if (!string.IsNullOrEmpty(traycode)) + { + var CBInfo = Settings.GetDGConnectingbitsList().Where(a => a.enable == 1).ToList(); + if (CBInfo != null) + { + foreach (var a in CBInfo) + { + if (!string.IsNullOrEmpty(a.locCode)) + { + //鍦ㄤ腑闂磋〃涓煡鎵剧偣浣�+ var CBTable = MongoDBSingleton.Instance.FindOne<DGConnectingBits>(Query.EQ("Bit", a.locCode), "DGConnectingBits"); + if (CBTable != null) + { + if (string.IsNullOrEmpty(CBTable.trayCode)) + { + //鐢熸垚浠诲姟锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+ var amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), plc.location, a.locCode, "鍖呰鏈烘弧鎵樹笅绾�, 0, traycode); + if (amsResult.success) + { + CMMLog.Debug($"鍖呰鏈烘弧鎵樹笅绾匡細AMS璋冪敤API鎴愬姛锛�); + MongoDBSingleton.Instance.Update<DGConnectingBits>(Query.EQ("Bit", a.locCode), Update.Set("trayCode", traycode), UpdateFlags.None); + MongoDBSingleton.Instance.Update<DGPackingLineFullModel>(Query.EQ("trayCode", traycode), Update.Set("isUse", "1"), UpdateFlags.None); + break; + } + else CMMLog.Debug($"鍖呰鏈烘弧鎵樹笅绾匡細AMS璋冪敤API澶辫触锛屽紑濮嬮噸鏂拌皟鐢紒"); + } + } + else + { + //鐢熸垚浠诲姟锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+ var amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), plc.location, a.locCode, "鍖呰鏈烘弧鎵樹笅绾�, 0, traycode); + if (amsResult.success) + { + CMMLog.Debug($"鍖呰鏈烘弧鎵樹笅绾匡細AMS璋冪敤API鎴愬姛锛�); + //鎵撳寘涓嬬嚎浠诲姟鐢熸垚鎴愬姛锛屽悜涓棿琛ㄦ彃鍏ユ暟鎹�+ + MongoDBSingleton.Instance.Insert<DGConnectingBits>(new DGConnectingBits { Bit = a.locCode, trayCode = traycode, state = "0" }); + MongoDBSingleton.Instance.Update<DGPackingLineFullModel>(Query.EQ("trayCode", traycode), Update.Set("isUse", "1"), UpdateFlags.None); + break; + } + else CMMLog.Debug($"鍖呰鏈烘弧鎵樹笅绾匡細AMS璋冪敤API澶辫触锛屽紑濮嬮噸鏂拌皟鐢紒"); + } + } + else CMMLog.Debug("鎵撳寘涓嬬嚎鍙f帴椹充綅鐐逛綅鏈厤缃�); + } + } + else CMMLog.Debug("鎵撳寘涓嬬嚎鍙f帴椹充綅鏈厤缃�); + } + + } + } + } + catch (Exception ex) + { + CMMLog.Info($"鐢甸挻C璁惧 err:{ex.Message}"); } } } @@ -4611,14 +4847,33 @@ public string Msg { get; set; } public LKData Data { get; set; } public int AffectedRows { get; set; } - public bool Success { get; set; } } public class LKData { + /// <summary> + /// 鎵规鍙�+ /// </summary> public string CN_S_LOT_NO { get; set; } - public int CN_S_EXT8 { get; set; } + /// <summary> + /// 鐗╂枡缂栫爜 + /// </summary> + public string CN_S_ITEM_CODE { get; set; } + /// <summary> + /// 妗堕噸閲�+ /// </summary> + public float CN_F_QUANTITY { get; set; } + /// <summary> + /// 妗舵暟閲�+ /// </summary> + public int CN_N_CONUT { get; set; } + /// <summary> + /// 鐢熶骇鏃ユ湡 + /// </summary> + public string CN_T_PRODUCTION_S { get; set; } + + public string CN_S_EXT8 { get; set; } } #endregion -- Gitblit v1.9.1