From 6a4463810e276b62356d77c88509fa6fa7af65cf Mon Sep 17 00:00:00 2001 From: kingno <30263@KINGNO> Date: 星期三, 23 七月 2025 15:46:33 +0800 Subject: [PATCH] mes数据逻辑上传完善,缺陷代码完善,添加S4工位的S2结果上传Plc的通信日志mes优化 --- src/Bro.M141_AOI1.Process/AOI1Process.cs | 293 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 291 insertions(+), 2 deletions(-) diff --git a/src/Bro.M141_AOI1.Process/AOI1Process.cs b/src/Bro.M141_AOI1.Process/AOI1Process.cs index 9b8a134..5e34210 100644 --- a/src/Bro.M141_AOI1.Process/AOI1Process.cs +++ b/src/Bro.M141_AOI1.Process/AOI1Process.cs @@ -1,4 +1,5 @@ 锘縰sing Bro.Common.Base; +using Bro.Common.Factory; using Bro.Common.Helper; using Bro.Common.Interface; using Bro.Common.Model; @@ -7,6 +8,7 @@ using Bro.UI.Model.Winform; using HalconDotNet; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using NPOI.POIFS.Crypt.Dsig; using NPOI.SS.Formula.Functions; using NPOI.XSSF.Streaming.Values; @@ -195,15 +197,71 @@ } else { - Plc1.WriteSingleAddress(1524, 1, out _); - Plc1.WriteSingleAddress(1514, 1, out _); ConfigAOI1.basketcode = barcode; + int num = Plc1.Read(1577, 1, out _)[0]; + + if (ConfigAOI1.PlcAndBasketcodes.Count > 10) + { + ConfigAOI1.PlcAndBasketcodes.RemoveAt(0); + } + + if (ConfigAOI1.PlcAndBasketcodes.Any(u => u.id == num)) + { + ConfigAOI1.PlcAndBasketcodes.FirstOrDefault(u => u.id == num).code = barcode; + } + else + { + ConfigAOI1.PlcAndBasketcodes.Add(new PlcAndBasketcode + { + code = barcode, + id = num, + }); + } + LogAsync(DateTime.Now, EnumHelper.LogLevel.Action, $"鑾峰彇鍒版爮鍏风爜涓簕barcode}"); mysqlhelper.NewBasketcode(barcode); RerefreshBasketcode(); + if (ConfigAOI1.ISupMES) + { + //string zword = mqtt.MESForBasketAsync("2", "DS02217", barcode, "1", num.ToString()).Result; + string zwordstr = Task.Run(() => mqtt.MESForBasketAsync("2", "DS02217", barcode, "1", ConfigAOI1.mesnum2.ToString())).Result; + + ConfigAOI1.mesnum2++; + + try + { + var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(zwordstr); + ConfigAOI1.zwoid = obj.zwoid; + if (!string.IsNullOrEmpty(obj.zwoid) && obj.zstatus == "200") + { + Plc1.WriteSingleAddress(1524, 1, out _); + Plc1.WriteSingleAddress(1514, 1, out _); + LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ zwoid鑾峰彇鎴愬姛 {obj.zstatus} {obj.zwoid} "); + } + else + { + Plc1.WriteSingleAddress(1524, 2, out _); + Plc1.WriteSingleAddress(1514, 1, out _); + LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ zwoid鑾峰彇澶辫触 {zwordstr} "); + } + } + catch + { + Plc1.WriteSingleAddress(1524, 2, out _); + Plc1.WriteSingleAddress(1514, 1, out _); + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ zwoid鑾峰彇寮傚父 杩斿洖鏁版嵁涓� {zwordstr} "); + } + } + else + { + Plc1.WriteSingleAddress(1524, 1, out _); + Plc1.WriteSingleAddress(1514, 1, out _); + } + SaveProcessConfig(ConfigAOI1); } + } return msg; @@ -424,5 +482,236 @@ } + + + + + + [ProcessMethod("", "MESup1", "MES涓婁紶杩涙枡鍙g┖绡�", InvokeType.TestInvoke)] + public ResponseMessage MESup1(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice) + { + ResponseMessage msg = new ResponseMessage(); + + //int num = Plc1.Read(1575, 1, out _)[0]; + //mqtt.Send("1", "DS02216", "", "0", num.ToString()); + //Plc1.WriteSingleAddress(1590, 1, out _); + if (ConfigAOI1.ISupMES) + { + string Msg = Task.Run(() => mqtt.MESForBasketAsync("1", "DS02216", "", "0", ConfigAOI1.mesnum1.ToString())).Result; + if (Msg != null) + { + try + { + var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg); + if (obj?.zstatus == "200") + { + ConfigAOI1.mesnum1++; + Plc1.WriteSingleAddress(1590, 1, out _); + } + else + { + Plc1.WriteSingleAddress(1590, 2, out _); + } + LogAsync(DateTime.Now, obj?.zstatus == "200" ? EnumHelper.LogLevel.Information : EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙g┖绡� 涓婁紶{(obj?.zstatus == "200" ? "鎴愬姛" : "澶辫触")} {obj?.zstatus}"); + + } + catch + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙g┖绡� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁{Msg} "); + Plc1.WriteSingleAddress(1590, 2, out _); + } + } + else + { + Plc1.WriteSingleAddress(1590, 2, out _); + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙g┖绡� 鑾峰彇杩斿洖鍊煎け璐� 杩斿洖鏁版嵁null "); + } + } + else + { + Plc1.WriteSingleAddress(1590, 1, out _); + + } + + return msg; + } + + + [ProcessMethod("", "MESup2", "MES涓婁紶杩涙枡鍙f弧杞�", InvokeType.TestInvoke)] + public ResponseMessage MESup2(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice) + { + ResponseMessage msg = new ResponseMessage(); + //int num = Plc1.Read(1575, 1, out _)[0]; + + //mqtt.Send("1", "DS02216", "", "1", num.ToString()); + //Plc1.WriteSingleAddress(1590, 1, out _); + + if (ConfigAOI1.ISupMES) + { + string Msg = Task.Run(() => mqtt.MESForBasketAsync("1", "DS02216", "", "1", ConfigAOI1.mesnum1.ToString())).Result; + if (Msg != null) + { + + try + { + var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg); + if (obj?.zstatus == "200") + { + ConfigAOI1.mesnum1++; + Plc1.WriteSingleAddress(1590, 1, out _); + } + else + { + Plc1.WriteSingleAddress(1590, 2, out _); + } + + LogAsync(DateTime.Now, obj?.zstatus == "200" ? EnumHelper.LogLevel.Information : EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙f弧杞� 涓婁紶{(obj?.zstatus == "200" ? "鎴愬姛" : "澶辫触")} {obj?.zstatus}"); + } + catch + { + Plc1.WriteSingleAddress(1590, 2, out _); + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙f弧杞� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁{Msg} "); + } + } + else + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙f弧杞� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁null "); + Plc1.WriteSingleAddress(1590, 2, out _); + } + } + else + { + Plc1.WriteSingleAddress(1590, 1, out _); + } + + + return msg; + } + + [ProcessMethod("", "MESup3", "MES涓婁紶涓嬫枡鍙g┖绡�", InvokeType.TestInvoke)] + public ResponseMessage MESup3(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice) + { + ResponseMessage msg = new ResponseMessage(); + + + + if (ConfigAOI1.ISupMES) + { + int num = Plc1.Read(1578, 1, out _)[0]; + + string Msg = Task.Run(() => mqtt.MESForBasketAsync("3", "DS02217", ConfigAOI1.PlcAndBasketcodes.Any(u => u.id == num) ? ConfigAOI1.PlcAndBasketcodes.FirstOrDefault(u => u.id == num).code : "NoRead", "0", ConfigAOI1.mesnum3.ToString())).Result; + if (Msg != null) + { + + try + { + var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg); + if (obj?.zstatus == "200") + { + ConfigAOI1.mesnum3++; + Plc1.WriteSingleAddress(1591, 1, out _); + } + else + { + Plc1.WriteSingleAddress(1591, 2, out _); + } + LogAsync(DateTime.Now, obj?.zstatus == "200" ? EnumHelper.LogLevel.Information : EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙g┖绡� 涓婁紶{(obj?.zstatus == "200" ? "鎴愬姛" : "澶辫触")} {obj?.zstatus}"); + + } + catch + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙g┖绡� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁{Msg} "); + Plc1.WriteSingleAddress(1591, 2, out _); + } + } + else + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 杩涙枡鍙d笅鏂欏彛绌虹绌虹 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁null "); + Plc1.WriteSingleAddress(1591, 2, out _); + } + } + else + { + Plc1.WriteSingleAddress(1591, 1, out _); + } + + return msg; + } + + [ProcessMethod("", "MESup4", "MES涓婁紶涓嬫枡鍙f弧杞�", InvokeType.TestInvoke)] + public ResponseMessage MESup4(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice) + { + ResponseMessage msg = new ResponseMessage(); + + if (ConfigAOI1.ISupMES) + { + int num = Plc1.Read(1578, 1, out _)[0]; + //mqtt.Send("3", "DS02217", ConfigAOI1.Dicbasketcode.ContainsKey(num) ? ConfigAOI1.Dicbasketcode[num] : ConfigAOI1.basketcode, "2", num.ToString()); + + string Msg = Task.Run(() => mqtt.MESForBasketAsync("3", "DS02217", ConfigAOI1.PlcAndBasketcodes.Any(u => u.id == num) ? ConfigAOI1.PlcAndBasketcodes.FirstOrDefault(u => u.id == num).code : "NoRead", "2", ConfigAOI1.mesnum3.ToString())).Result; + if (Msg != null) + { + try + { + var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg); + if (obj?.zstatus == "200") + { + ConfigAOI1.mesnum3++; + } + LogAsync(DateTime.Now, obj?.zstatus == "200" ? EnumHelper.LogLevel.Information : EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞�1 涓婁紶{(obj?.zstatus == "200" ? "鎴愬姛" : "澶辫触")} {obj?.zstatus}"); + } + catch + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞�1 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁{Msg} "); + } + } + else + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞�1 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁null "); + } + + + Thread.Sleep(1000); + //mqtt.Send("4", "DS02217", ConfigAOI1.Dicbasketcode.ContainsKey(num) ? ConfigAOI1.Dicbasketcode[num] : ConfigAOI1.basketcode, "1", num.ToString()); + Msg = Task.Run(() => mqtt.MESForBasketAsync("4", "DS02217", ConfigAOI1.PlcAndBasketcodes.Any(u => u.id == num) ? ConfigAOI1.PlcAndBasketcodes.FirstOrDefault(u => u.id == num).code : "NoRead", "1", ConfigAOI1.mesnum4.ToString())).Result; + if (Msg != null) + { + try + { + var obj = JsonConvert.DeserializeObject<AutoLineMacQueueBak>(Msg); + if (obj?.zstatus == "200") + { + ConfigAOI1.mesnum4++; + Plc1.WriteSingleAddress(1591, 1, out _); + } + else + { + Plc1.WriteSingleAddress(1591, 2, out _); + } + LogAsync(DateTime.Now, obj?.zstatus == "200" ? EnumHelper.LogLevel.Information : EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞� 涓婁紶{(obj?.zstatus == "200" ? "鎴愬姛" : "澶辫触")} {obj?.zstatus}"); + } + catch + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁{Msg} "); + Plc1.WriteSingleAddress(1591, 2, out _); + } + } + else + { + LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 绡叿 涓嬫枡鍙f弧杞� 鑾峰彇杩斿洖鍊艰В鏋愬紓甯� 杩斿洖鏁版嵁null "); + Plc1.WriteSingleAddress(1591, 2, out _); + } + } + else + { + Plc1.WriteSingleAddress(1591, 1, out _); + } + return msg; + } + + + + + } } -- Gitblit v1.8.0