From 55ae035e05530817bd3b923c3d6b1ec275e47332 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期四, 12 六月 2025 17:34:50 +0800 Subject: [PATCH] 111 --- ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs | 211 ++++++++++++++++++++++- ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiController.cs | 4 ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs | 266 ++++++++++++++++++++++++++++- ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs | 13 + ams/Hanhe.iWCS.JingmenGEMTwoProtocol/settings.xml | 8 ams/Hanhe.iWCS.JingmenGEMTwoProtocol/Settings.cs | 15 + ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProtocolAnalysis.cs | 6 ams/Hanhe.iWCS.JingmenGEMTwoProtocol/EnentListen.cs | 16 + 8 files changed, 507 insertions(+), 32 deletions(-) diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiController.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiController.cs index 52d2459..ef0c19f 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiController.cs +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiController.cs @@ -133,6 +133,8 @@ public ErrInfoResult getErrInfo(string factory) { ErrInfoResult result = new ErrInfoResult(); + + CMMLog.Info("getErrInfo:" + factory); result = ApiHelper.getErrInfo(factory); return result; } @@ -151,7 +153,7 @@ } /// <summary> - /// pda鎵撳寘涓嬬嚎 + /// pda鍖呰涓嬬嚎 /// </summary> /// <returns></returns> [HttpPost] diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs index 2c58360..9080940 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs @@ -8,10 +8,13 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; +using System.Timers; using static Hanhe.iWCS.JingmenGEMTwoProtocol.MESHelper; using static Hanhe.iWCS.JingmenGEMTwoProtocol.PLCControl; using static Hanhe.iWCS.JingmenGEMTwoProtocol.ProcessHelper; using static Hanhe.iWCS.JingmenGEMTwoProtocol.ProtocolAnalysis; +using static System.Runtime.CompilerServices.RuntimeHelpers; namespace Hanhe.iWCS.JingmenGEMTwoProtocol { @@ -305,6 +308,7 @@ public class bzxxModel { + public string machineNo { get; set; } public string mesCode { get; set; } } @@ -381,23 +385,31 @@ internal static ErrInfoResult getErrInfo(string factory) { ErrInfoResult result = new ErrInfoResult() { sucess = false }; - - if(factory == "sanyuan") + try { - var errList = MongoDBSingleton.Instance.FindAll<errInfoTable>("ErrInfoResult"); - if (errList.Count > 0) + if (factory.Contains("sanyuan")) { - result.sucess = true; - errList.ForEach(r => + var errList = MongoDBSingleton.Instance.FindAll<errInfoTable>("errInfoTable"); + if (errList.Count > 0) { - result.errInfo.Add(new errInfo { taskName = r.taskName, errMsg = r.errMsg, time = r.dateTime }); - }); + result.sucess = true; + result.errInfo = new List<errInfo>(); + errList.ForEach(r => + { + result.errInfo.Add(new errInfo { taskName = r.taskName, errMsg = r.errMsg, time = r.dateTime }); + }); + } + } + else + { + } } - else + catch(Exception ex) { - + CMMLog.Info("getErrInfo err:"+ex.Message); } + return result; } @@ -406,12 +418,13 @@ { ZZTPWNumResult result = new ZZTPWNumResult() { sucess = false }; - if(factory == "sanyuan") + if(factory.Contains("sanyuan")) { var bzEmpInfo = MongoDBSingleton.Instance.FindAll<BZEmptyPoint>("BZEmptyPoint"); if (bzEmpInfo.Count > 0) { result.sucess = true; + result.zztpwInfo = new List<zztpwInfo>(); bzEmpInfo.ForEach(r => { result.zztpwInfo.Add(new zztpwInfo { S_LOC_CODE = r.Bit, N_QTY = r.Quantity }); @@ -427,17 +440,244 @@ internal static BZXXResult Bzxx(bzxxModel models) { - BZXXResult result = new BZXXResult() {sucess = false }; + BZXXResult result = new BZXXResult() {success = false }; if(models != null && !string.IsNullOrEmpty(models.mesCode)) { //閫氳繃mesCode鑾峰彇mes鐨勭墿鏂欎俊鎭�+ var res = helper.WebGet(Settings.MESUrl2 + "?mesCode=" + models.mesCode); + CMMLog.Info($"Bzxx ReqMsg:{JsonConvert.SerializeObject(res)},url:{Settings.MESUrl2}"); + try + { + if (!string.IsNullOrEmpty(res)) + { + var req = JsonConvert.DeserializeObject<mesInfo>(res); + if(req != null) + { + var timeCuo = MongoDBSingleton.Instance.FindOne<TimeCuoInfoCom>(Query.EQ("packingMachineNumber", models.machineNo), "TimeCuoInfoCom"); + if (timeCuo == null) + { + MongoDBSingleton.Instance.Insert<TimeCuoInfoCom>(new TimeCuoInfoCom + { + isFold = 1, + packingMachineNumber = models.machineNo, + needWeight = (int)req.data.FMustQty, + realWeight = (int)req.data.FMustQty, + totalWeight = (int)req.data.FMustQty, + batchNumber = req.data.Flot, + productModel = req.data.materialSpec, + bagNumber_1 = req.data.bagNum, + totalCount = 1, + timeStamp = req.data.mesCode, + photoURL = req.data.barCode, + ProductionDate = req.data.ywDate, + // ERP鍙樻洿-鐓х浉鏈烘柊澧炲瓧娈�+ materialCode = req.data.FMaterialNumber, + materialName = req.data.materialName, + measurementUnit = req.data.FUnit, + createOrganization = req.data.FPrdOrgNumber, + WarehouseCode = req.data.FStockNumber, + workshopCode = req.data.FWorkShopNumber, + BusinessDate = req.data.ywDate, + barcode = req.data.barCode, + employeeID1 = req.data.jycjj, + + //鍙樻洿娉ㄩ噴 + totalNeedWeight = (int)req.data.FMustQty, + FEntryID_1 = 0, + }); + } + else + { + var query = Query.EQ("packingMachineNumber", models.machineNo); + //鍙樻洿娉ㄩ噴 + UpdateBuilder update = Update.Set("isFold", 1).Set("packingMachineNumber",models.machineNo).Set("needWeight", (int)req.data.FMustQty) + .Set("realWeight", (int)req.data.FMustQty).Set("totalWeight", (int)req.data.FMustQty).Set("batchNumber", req.data.Flot) + .Set("productModel", req.data.materialSpec).Set("bagNumber_1", req.data.bagNum).Set("totalCount", 1).Set("timeStamp", req.data.mesCode) + .Set("photoURL", req.data.barCode).Set("ProductionDate", req.data.ywDate).Set("materialCode", req.data.FMaterialNumber) + .Set("materialName", req.data.materialName).Set("measurementUnit", req.data.FUnit) + .Set("createOrganization", req.data.FPrdOrgNumber).Set("WarehouseCode", req.data.FStockNumber).Set("workshopCode", req.data.FWorkShopNumber) + .Set("BusinessDate", req.data.ywDate).Set("barcode", req.data.barCode).Set("employeeID1", req.data.jycjj) + .Set("totalNeedWeight", (int)req.data.FMustQty).Set("FEntryID_1", 0); + MongoDBSingleton.Instance.Update<TimeCuoInfoCom>(query, update, UpdateFlags.None); + } + + //鐢熸垚鍒版帴椹冲钩鍙扮殑浠诲姟 + string traycode = DateTime.Now.ToString("yyyy-MM-dd").Replace("-", ""); + string timeCuo2 = req.data.mesCode.ToString(); + var CBInfo = Settings.GetConnectingbitsList().Where(a => a.enable == 1).ToList(); + if (CBInfo != null) + { + AMSHelper.HHAmsExecuteResult amsResult = null; + foreach (var a in CBInfo) + { + if (!string.IsNullOrEmpty(a.locCode)) + { + //鍦ㄤ腑闂磋〃涓煡鎵剧偣浣�+ var CBTable = MongoDBSingleton.Instance.FindOne<ConnectingBits>(Query.EQ("Bit", a.locCode), "ConnectingBits"); + if (CBTable != null) + { + if (string.IsNullOrEmpty(CBTable.trayCode)) + { + //鐢熸垚浠诲姟锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+ amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), models.machineNo, a.locCode, "PDA鎵撳寘涓嬬嚎", 0, traycode); + if (amsResult.success) + { + result.success = true; + CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API鎴愬姛锛�); + MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", a.locCode), Update.Set("trayCode", traycode).Set("timeCuo", timeCuo2), UpdateFlags.None); + + //涓婃姤鏉$爜琛�+ CMMLog.Info($" INSERT INTO T_JY_BARCODESync (FBarCode, FBarCodeRule,FMaterialNumber,FCreateOrgNumber,FLot,FUnit,FQty,FStockNumber,FDept,FBillDate,F_JY_CZZ,FOpStatus) VALUES ('{req.data.barCode}','01','{req.data.materialName}','02','{req.data.Flot}','{req.data.FUnit}','{req.data.FMustQty}','CK020','BM000161','{req.data.ywDate}','{req.data.jycjj}','0')"); + new SqlHelper<object>().ExecuteSql($" INSERT INTO T_JY_BARCODESync (FBarCode, FBarCodeRule,FMaterialNumber,FCreateOrgNumber,FLot,FUnit,FQty,FStockNumber,FDept,FBillDate,F_JY_CZZ,FOpStatus) VALUES ('{req.data.barCode}','01','{req.data.materialName}','02','{req.data.Flot}','{req.data.FUnit}','{req.data.FMustQty}','CK020','BM000161','{req.data.ywDate}','{req.data.jycjj}','0')", false); + + break; + } + else CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API澶辫触锛屽紑濮嬮噸鏂拌皟鐢紒"); + } + } + else + { + //鐢熸垚浠诲姟锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+ amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), models.machineNo, a.locCode, "PDA鎵撳寘涓嬬嚎", 0, traycode); + if (amsResult.success) + { + result.success = true; + CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API鎴愬姛锛�); + //鎵撳寘涓嬬嚎浠诲姟鐢熸垚鎴愬姛锛屽悜涓棿琛ㄦ彃鍏ユ暟鎹�+ + MongoDBSingleton.Instance.Insert<ConnectingBits>(new ConnectingBits { Bit = a.locCode, trayCode = traycode, state = "0", timeCuo = timeCuo2 }); + + //涓婃姤鏉$爜琛�+ CMMLog.Info($" INSERT INTO T_JY_BARCODESync (FBarCode, FBarCodeRule,FMaterialNumber,FCreateOrgNumber,FLot,FUnit,FQty,FStockNumber,FDept,FBillDate,F_JY_CZZ,FOpStatus) VALUES ('{req.data.barCode}','01','{req.data.materialName}','02','{req.data.Flot}','{req.data.FUnit}','{req.data.FMustQty}','CK020','BM000161','{req.data.ywDate}','{req.data.jycjj}','0')"); + new SqlHelper<object>().ExecuteSql($" INSERT INTO T_JY_BARCODESync (FBarCode, FBarCodeRule,FMaterialNumber,FCreateOrgNumber,FLot,FUnit,FQty,FStockNumber,FDept,FBillDate,F_JY_CZZ,FOpStatus) VALUES ('{req.data.barCode}','01','{req.data.materialName}','02','{req.data.Flot}','{req.data.FUnit}','{req.data.FMustQty}','CK020','BM000161','{req.data.ywDate}','{req.data.jycjj}','0')", false); + + break; + } + else CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API澶辫触锛屽紑濮嬮噸鏂拌皟鐢紒"); + } + } + else CMMLog.Debug("鎵撳寘涓嬬嚎鍙f帴椹充綅鐐逛綅鏈厤缃�); + } + if(amsResult == null || amsResult.success == false) + { + result.errMsg = "浠诲姟鐢熸垚澶辫触锛屾帴椹充綅鏈変换鍔″崰鐢�; + } + } + else CMMLog.Debug("鎵撳寘涓嬬嚎鍙f帴椹充綅鏈厤缃�); + } + else + { + result.errMsg = $"鏁版嵁瑙f瀽澶辫触"; + } + } + else + { + result.errMsg = $"鏌ヨmes淇℃伅澶辫触锛宮esCode锛歿models.mesCode}"; + } + } + catch(Exception ex) + { + result.errMsg = ex.Message; + } } else { result.errMsg = "鍙傛暟杈撳叆閿欒"; } return result; + } + + public class mesInfo + { + public int code { get; set; } + public string msg { get; set; } + public mesData data { get; set; } + public bool isSucess { get; set; } + } + + public class mesData + { + /// <summary> + /// 鍏ュ簱缁勭粐 + /// </summary> + public string FStockOrgNumber { get; set;} + /// <summary> + /// 鐢熶骇缁勭粐 + /// </summary> + public string FPrdOrgNumber { get; set; } + /// <summary> + /// 鍏ュ簱绫诲瀷 + /// </summary> + public string FInStockType { get; set; } + /// <summary> + /// 浠撳簱缂栫爜 + /// </summary> + public string FStockNumber { get; set; } + /// <summary> + /// 鐢熶骇杞﹂棿 + /// </summary> + public string FWorkShopNumber { get; set; } + /// <summary> + /// 搴撳瓨鐘舵� + /// </summary> + public string FStockStatus { get; set; } + /// <summary> + /// 鍗曚綅 + /// </summary> + public string FUnit { get; set; } + /// <summary> + /// 鐗╂枡缂栫爜 + /// </summary> + public string FMaterialNumber { get; set; } + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string materialName { get; set; } + /// <summary> + /// 鐗╂枡瑙勬牸 + /// </summary> + public string materialSpec { get; set; } + /// <summary> + /// 鎵瑰彿 + /// </summary> + public string Flot { get; set; } + /// <summary> + /// 闇�眰閲嶉噺 + /// </summary> + public double FMustQty { get; set; } + /// <summary> + /// 閫�簱鏃堕棿 + /// </summary> + public string FProduceDate { get; set; } + /// <summary> + /// 鍞竴鏍囪瘑 + /// </summary> + public string FExpiryDate { get; set; } + /// <summary> + /// 鍞竴鐮�+ /// </summary> + public int mesCode { get; set; } + /// <summary> + /// 瀹屾暣鏉$爜 + /// </summary> + public string barCode { get; set; } + /// <summary> + /// 琚嬪彿 + /// </summary> + public string bagNum { get; set; } + /// <summary> + /// mes鍖呭彿 + /// </summary> + public string bagCode { get; set; } + /// <summary> + /// 鍛樺伐缂栫爜 + /// </summary> + public string jycjj { get; set; } + /// <summary> + /// 涓氬姟鏃ユ湡 + /// </summary> + public string ywDate { get; set; } } public class AGV_STATE @@ -545,7 +785,7 @@ public class BZXXResult { - public bool sucess { get; set;} + public bool success { get; set;} public string errMsg { get; set; } } diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/EnentListen.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/EnentListen.cs index 50fd600..2d8dea4 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/EnentListen.cs +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/EnentListen.cs @@ -398,6 +398,22 @@ } #endregion + #region 10019-D鍙�+ if (currActionModel.CN_N_ACTION_CODE == 10019) + { + var list = Settings.GetPlcInfo().Where(a => a.enable == 1 && a.deviceType == "43").ToList(); + if (list.Count > 0) + { + list.ForEach(a => + { + PLCControl.DMachine(a); + }); + } + Thread.Sleep(3000); + + } + #endregion + #endregion return bResult; } diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs index 9c3767a..7298a28 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 { @@ -732,16 +733,31 @@ var plc = Settings.GetPlcInfo().Where(a => a.ip == ip).FirstOrDefault(); if (plc != null && !plc.location.Contains("FLZT")) { - //鍐欏叆鍖呰鏈�-瀹夊叏闂ㄥ叧闂ㄦ寚浠�- 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) @@ -4567,6 +4582,182 @@ } } + 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, 3); + 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 + }); + if (result != null && result.errCode == 0) + { + if (result.result[0] == 1) + { + //鎴愬搧涓嬬嚎浠诲姟鐢熸垚鍒版帴椹冲钩鍙�+ string traycode = DateTime.Now.ToString("yyyy-MM-dd").Replace("-", ""); + //鍙敓鎴愪换鍔�+ var CBInfo = Settings.GetConnectingbitsList().Where(a => a.enable == 1).ToList(); + if (CBInfo != null) + { + //string timeStamp = timecuo.data.First().timeStamp.ToString(); + string timeStamp = ""; + foreach (var a in CBInfo) + { + if (!string.IsNullOrEmpty(a.locCode)) + { + //鍦ㄤ腑闂磋〃涓煡鎵剧偣浣�+ var CBTable = MongoDBSingleton.Instance.FindOne<ConnectingBits>(Query.EQ("Bit", a.locCode), "ConnectingBits"); + 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<ConnectingBits>(Query.EQ("Bit", a.locCode), Update.Set("trayCode", traycode).Set("timeCuo", timeStamp), 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<ConnectingBits>(new ConnectingBits { Bit = a.locCode, trayCode = traycode, state = "0", timeCuo = timeStamp }); + break; + } + else CMMLog.Debug($"鍖呰鏈烘弧鎵樹笅绾匡細AMS璋冪敤API澶辫触锛屽紑濮嬮噸鏂拌皟鐢紒"); + } + } + else CMMLog.Debug("鎵撳寘涓嬬嚎鍙f帴椹充綅鐐逛綅鏈厤缃�); + } + } + else CMMLog.Debug("鎵撳寘涓嬬嚎鍙f帴椹充綅鏈厤缃�); + } + } + } + catch (Exception ex) + { + CMMLog.Info($"鍥涢挻C璁惧 err:{ex.Message}"); + } + } + } + #endregion public class WMS_STOCK_VIEW diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs index d0ac375..1e4237b 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs @@ -303,8 +303,9 @@ if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵�) PLCControl.CacheStackingMouth1013(plc.deviceType, mst.CN_S_TASK_NO, mst.CN_S_END_BIT); if (mst.CN_S_BUSS_TYPE == "3妤兼媶鐩樿ˉ绌�) PLCControl.DiscRemoverReqUnload(plc.deviceType, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "鍖呰绾胯ˉ绌�) PLCControl.PackingLine(plc.ip, mst.CN_S_TASK_NO); - if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.outWare(mst.CN_S_TASK_NO, true); + if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") PLCControl.outWare(mst.CN_S_TASK_NO, true); if (mst.CN_S_BUSS_TYPE == "3妤兼垚鍝佸嚭搴�) PLCControl.productOutWare(mst.CN_S_END_BIT, mst.CN_S_TASK_NO, true); + if (mst.CN_S_BUSS_TYPE == "鐑樺共鏈虹┖鎵樹笂绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈烘弧鎵樹笂绾�) PLCControl.DGMachineTwo(plc, mst.CN_S_TASK_NO, true); } if (code == 6) { @@ -315,9 +316,10 @@ if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵�) PLCControl.writeStackingMouth6(mst.CN_S_END_BIT, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤兼媶鐩樿ˉ绌�) PLCControl.DiscRemoverUnloadComplete(plc.deviceType, mst.CN_S_TASK_NO); - if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.outWare(mst.CN_S_TASK_NO, false); + if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") PLCControl.outWare(mst.CN_S_TASK_NO, false); if (mst.CN_S_BUSS_TYPE == "鍖呰绾胯ˉ绌�) PLCControl.PackingLineComplete(plc.ip); if (mst.CN_S_BUSS_TYPE == "3妤兼垚鍝佸嚭搴�) PLCControl.productOutWare(mst.CN_S_END_BIT, mst.CN_S_TASK_NO, false); + if (mst.CN_S_BUSS_TYPE == "鐑樺共鏈虹┖鎵樹笂绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈烘弧鎵樹笂绾�) PLCControl.DGMachineTwo(plc, mst.CN_S_TASK_NO, true); } } else CMMLog.Info($"PlcInfo涓湭鎵惧埌璇ョ偣浣嶏紝鐐逛綅锛歿mst.CN_S_END_BIT}"); @@ -362,22 +364,25 @@ if (code == 1012) { //鍗歌揣鐢宠锛屽厛鍒ゆ柇璁惧鏄惁鍏佽杩涙枡锛屽鏋滄槸鐩存帴鏀瑰弬鏁帮紝骞堕�鐭ヨ澶�- if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂�) PLCControl.PickUpFullDoorUnload(plc.ip, mst.CN_S_TASK_NO);//杩涘叆3妤煎寘瑁呭彇鏂欐祦绋�012,ip:{plc.ip},task:{mst.CN_S_TASK_NO} + if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") PLCControl.PickUpFullDoorUnload(plc.ip, mst.CN_S_TASK_NO);//杩涘叆3妤煎寘瑁呭彇鏂欐祦绋�012,ip:{plc.ip},task:{mst.CN_S_TASK_NO} if (mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋� || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋禢G") PLCControl.SecondWeightInCache1012(plc.ip, mst.CN_S_TASK_NO);//浜屾湡锛氱洿鎺ユ敼鍙傛暟 if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵�) TSHelper.GoToAGV(mst.CN_S_TASK_NO, 10, 1); if (mst.CN_S_BUSS_TYPE == "3妤煎彔鐩樹笅绾�) PLCControl.StackingReqUnload(plc.deviceType, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.PackingLineUnload1012(plc.ip, mst.CN_S_TASK_NO); + if (mst.CN_S_BUSS_TYPE == "鐑樺共鏈烘弧鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈虹┖鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍖呰鏈烘弧鎵樹笅绾�) PLCControl.DGMachine(plc,mst.CN_S_TASK_NO,true); } if (code == 4) { //鍗歌揣瀹屾垚鐢宠锛屽垽鏂澶囬偅杈硅繘鏂欏畬鎴愶紝鏀瑰弬鏁伴�鐭gv绂诲紑 - if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂�) PLCControl.PickUpFullDoorComplete(plc.ip, mst.CN_S_TASK_NO); + if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") PLCControl.PickUpFullDoorComplete(plc.ip, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋� || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋禢G") PLCControl.SecondWeightInCache4(plc.deviceType, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤煎彔鐩樹笅绾�) PLCControl.StackingComplete(plc.deviceType, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.PackingLineComplete4(plc.ip, mst.CN_S_SOURCE_NO); if (mst.CN_S_BUSS_TYPE != "3妤煎寘瑁呭彇鏂�) WMSHelper.ExecuteState(mst.CN_S_SOURCE_NO, 4); if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵楴G") PLCControl.CacheStackingMouth6(plc); if (mst.CN_S_BUSS_TYPE == "杈呮潗鍏ュ簱") PLCControl.fcrk(plc); + if (mst.CN_S_BUSS_TYPE == "鐑樺共鏈烘弧鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈虹┖鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍖呰鏈烘弧鎵樹笅绾�) PLCControl.DGMachine(plc, mst.CN_S_TASK_NO, false); + } } else CMMLog.Info($"鐐逛綅{mst.CN_S_START_BIT}鏈厤缃�); diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProtocolAnalysis.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProtocolAnalysis.cs index e299bc8..350756e 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProtocolAnalysis.cs +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProtocolAnalysis.cs @@ -425,7 +425,7 @@ } - if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) + if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") { MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", mst.CN_S_END_BIT), Update.Set("state", "1"), UpdateFlags.None); @@ -546,7 +546,7 @@ { CMMLog.Info($"璧风偣瀹夊叏瀵规帴锛氭敹鍒颁换鍔″彿锛歿mst.CN_S_TASK_NO},浠诲姟绫诲瀷锛歿mst.CN_S_BUSS_TYPE},浠诲姟淇″彿锛歿action.CN_N_ACTION_CODE}"); //3妤兼媶鐩樿ˉ绌猴細鎷嗙洏鏈鸿ˉ绌烘墭鐩� 3妤煎寘瑁呰ˉ绌猴細鍖呰鏈鸿ˉ绌烘墭 - if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂� || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋� || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋禢G" || mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵� || mst.CN_S_BUSS_TYPE == "3妤煎彔鐩樹笅绾� || mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾� || mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵楴G" || mst.CN_S_BUSS_TYPE == "杈呮潗鍏ュ簱") + if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂� || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋� || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋禢G" || mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵� || mst.CN_S_BUSS_TYPE == "3妤煎彔鐩樹笅绾� || mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾� || mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵楴G" || mst.CN_S_BUSS_TYPE == "杈呮潗鍏ュ簱" || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎" || mst.CN_S_BUSS_TYPE == "鐑樺共鏈烘弧鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈虹┖鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍖呰鏈烘弧鎵樹笅绾�) { CMMLog.Info($"璧风偣瀹夊叏瀵规帴锛氬嵆灏嗚繘鍏ヤ换鍔℃祦绋嬶細{mst.CN_S_BUSS_TYPE},鐘舵�鍙蜂负:{action.CN_N_ACTION_CODE}"); ProcessHelper.StartPickUpDoorSafe(mst, action.CN_N_ACTION_CODE); @@ -601,7 +601,7 @@ { CMMLog.Info($"缁堢偣瀹夊叏瀵规帴锛氭敹鍒颁换鍔″彿锛歿mst.CN_S_TASK_NO},浠诲姟绫诲瀷锛歿mst.CN_S_BUSS_TYPE},浠诲姟淇″彿锛歿action.CN_N_ACTION_CODE}"); //3妤兼媶鐩樿ˉ绌猴細鎷嗙洏鏈鸿ˉ绌烘墭鐩� 3妤煎寘瑁呰ˉ绌猴細鍖呰鏈鸿ˉ绌烘墭 - if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂� ||mst.CN_S_BUSS_TYPE == "鍦伴潰璐т綅鍙栨枡" || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋� || mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵� || mst.CN_S_BUSS_TYPE == "3妤兼媶鐩樿ˉ绌� || mst.CN_S_BUSS_TYPE == "鍖呰绾胯ˉ绌� || mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾� || mst.CN_S_BUSS_TYPE == "3妤兼垚鍝佸嚭搴�) + if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂� ||mst.CN_S_BUSS_TYPE == "鍦伴潰璐т綅鍙栨枡" || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋� || mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵� || mst.CN_S_BUSS_TYPE == "3妤兼媶鐩樿ˉ绌� || mst.CN_S_BUSS_TYPE == "鍖呰绾胯ˉ绌� || mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾� || mst.CN_S_BUSS_TYPE == "3妤兼垚鍝佸嚭搴� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎" || mst.CN_S_BUSS_TYPE == "鍓垏鏈烘弧鎵樹笂绾� || mst.CN_S_BUSS_TYPE == "鐑樺共鏈虹┖鎵樹笂绾�) { ProcessHelper.EndPickUpDoorSafe(mst, action.CN_N_ACTION_CODE); } diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/Settings.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/Settings.cs index 808c6d8..d205ab0 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/Settings.cs +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/Settings.cs @@ -72,6 +72,21 @@ } #endregion + #region MESUrl2 + private static string _MESUrl2 = ""; + public static string MESUrl2 + { + get + { + if (_MESUrl2 == "") + { + _MESUrl2 = XmlHelper.GetElementValue("mesurl2"); + } + return _MESUrl2; + } + } + #endregion + #region BGIP private static string _BGIP = ""; public static string BGip diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/settings.xml b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/settings.xml index 6cd9525..b17b52b 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/settings.xml +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/settings.xml @@ -12,6 +12,8 @@ <!--MES鎺ュ彛鍦板潃--> <mesurl>http://10.1.141.236:2222/api/WmsApi/GlmTonBagFillInfo</mesurl> + <!--MES鎺ュ彛鍦板潃--> + <mesurl2>http://10.1.141.236:2222/api/WmsApi/GlmTonBagFillInfo</mesurl2> <!--鏄惁鍚敤Mes鎺ュ彛鑾峰彇鏁版嵁 0 榛樿寮�惎 1 涓嶉�杩嘙ES鑾峰彇鏁版嵁--> <mesOpen>0</mesOpen> <!--221118鎵撳寘鏈轰笅绾挎祦绋嬪彉鏇� 0 浣跨敤鍘熸湁娴佺▼ 1 浣跨敤鍙樻洿娴佺▼--> @@ -202,7 +204,11 @@ {"task":"18","taskType":"杈呮潗鍏ュ簱","location":"3F_NG_DB"}, {"task":"18","taskType":"杈呮潗鍑哄簱","location":"3F_NG_DB"}, {"task":"18","taskType":"杈呮潗鍥炲簱","location":"3F_NG_DB"}, - {"task":"19","taskType":"3妤兼垚鍝佸嚭搴�,"location":"CK001_XN01"} + {"task":"19","taskType":"3妤兼垚鍝佸嚭搴�,"location":"CK001_XN01"}, + {"task":"19","taskType":"鐑樺共鏈虹┖鎵樹笂绾�,"location":"CK001_XN01"}, + {"task":"19","taskType":"鐑樺共鏈烘弧鎵樹笅绾�,"location":"CK001_XN01"}, + {"task":"19","taskType":"鍓垏鏈烘弧鎵樹笂绾�,"location":"CK001_XN01"}, + {"task":"19","taskType":"鍓垏鏈虹┖鎵樹笅绾�,"location":"CK001_XN01"}, ]]]> </huoWeiCode> -- Gitblit v1.9.1