peizhiyong
2025-08-01 73d6d058983ff914e5092bba4b2c403eef2caec5
src/Bro.M141_AOI1.Process/AOI1Process.cs
@@ -229,30 +229,38 @@
                        string zwordstr = Task.Run(() => mqtt.MESForBasketAsync("2", "DS02217", barcode, "1", ConfigAOI1.mesnum2.ToString())).Result;
                        ConfigAOI1.mesnum2++;
                        try
                        if (ConfigAOI1.ISokMes)
                        {
                            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, $"已强制读栏具码运行设备");
                        }
                        else
                        {
                            try
                            {
                                Plc1.WriteSingleAddress(1524, 1, out _);
                                Plc1.WriteSingleAddress(1514, 1, out _);
                                LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ zwoid获取成功 {obj.zstatus} {obj.zwoid} ");
                                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} ");
                                }
                            }
                            else
                            catch
                            {
                                Plc1.WriteSingleAddress(1524, 2, out _);
                                Plc1.WriteSingleAddress(1514, 1, out _);
                                LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ zwoid获取失败 {zwordstr} ");
                                LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ zwoid获取异常  返回数据为 {zwordstr} ");
                            }
                        }
                        catch
                        {
                            Plc1.WriteSingleAddress(1524, 2, out _);
                            Plc1.WriteSingleAddress(1514, 1, out _);
                            LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ zwoid获取异常  返回数据为 {zwordstr} ");
                        }
                        }
                    }
                    else
                    {
@@ -340,8 +348,7 @@
                    LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"检测产品线轮廓度输入点数据  {string.Join(',', pointdataF)}");
                    var tool = GetHalconTool(null, "", opConfig.AlgorithemPath);
                    var ret = tool.RunProcedure(new Dictionary<string, HalconDotNet.HTuple>() { { "INPUT_Points", pointdataF.ToArray() } }, new Dictionary<string, HalconDotNet.HObject>() { { "INPUT_Image", opConfig.ImageSet.HImage } }, new List<string>() { "OUTPUT_Results", "OUTPUT_PointZ" }, null);
                    var ret = tool.RunProcedure(new Dictionary<string, HalconDotNet.HTuple>() { { "INPUT_Points", pointdataF.ToArray() } }, new Dictionary<string, HalconDotNet.HObject>() { { "INPUT_Image", opConfig.ImageSet.HImage } }, new List<string>() { "OUTPUT_Results", "OUTPUT_PointZ" }, null);
                    if (ret == null)
                    {
                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"脚本{opConfig.AlgorithemPath}运行异常,返回值为null");
@@ -364,7 +371,8 @@
                        if (datasZ.Count == CheckPointList.Count)
                        {
                            string Postion = "P" + opConfig.TriggerStr.Split('#')[0];
                            string csvhead = "Time,Pid,Postion";
                            string csvhead = "Time,Pid" +
                                ",Postion";
                            string csvdata = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}T,{results[0].PID},{Postion}";
                            for (int i = 0; i < CheckPointList.Count; i++)
@@ -427,6 +435,26 @@
                                    else
                                    {
                                        item.ActualValue = retcal.Item2["OUTPUT_Results"].HTupleToDouble()[0];
                                        if (item.IsEnableCompensation && item.CompensationValue.Count > 1)
                                        {
                                            string index = opConfig.TriggerStr.Split('#')[0];
                                            LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{item.Code}进入双重补偿{index},初始值为{item.ActualValue}");
                                            if (index=="1")
                                            {
                                                item.ActualValue += item.CompensationValue[0];
                                                LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{item.Code}进入双重补偿,补偿值为{item.CompensationValue[0]},最终结果为{item.ActualValue}");
                                            }
                                            else
                                            {
                                                item.ActualValue += item.CompensationValue[1];
                                                LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{item.Code}进入双重补偿,补偿值为{item.CompensationValue[1]},最终结果为{item.ActualValue}");
                                            }
                                        }
                                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Detail, $"{results[0].PID}获取计算公式数据{item.Code}  {item.GetMeasureValueStr()}");
                                    }
                                }
@@ -498,34 +526,44 @@
            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 篮具  进料口空篮 上传{(obj?.zstatus == "200" ? "成功" : "失败")}   {obj?.zstatus}");
                    }
                    catch
                    {
                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 篮具  进料口空篮 获取返回值解析异常  返回数据{Msg} ");
                        Plc1.WriteSingleAddress(1590, 2, out _);
                    }
                if (ConfigAOI1.ISokMes)
                {
                    ConfigAOI1.mesnum1++;
                    Plc1.WriteSingleAddress(1590, 1, out _);
                    LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"已强制MES上传进料口空篮");
                }
                else
                {
                    Plc1.WriteSingleAddress(1590, 2, out _);
                    LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 篮具  进料口空篮 获取返回值失败  返回数据null ");
                }
                    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 篮具  进料口空篮 上传{(obj?.zstatus == "200" ? "成功" : "失败")}   {obj?.zstatus}");
                        }
                        catch
                        {
                            LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 篮具  进料口空篮 获取返回值解析异常  返回数据{Msg} ");
                            Plc1.WriteSingleAddress(1590, 2, out _);
                        }
                    }
                    else
                    {
                        Plc1.WriteSingleAddress(1590, 2, out _);
                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 篮具  进料口空篮 获取返回值失败  返回数据null ");
                    }
                }
            }
            else
            {
@@ -549,35 +587,44 @@
            if (ConfigAOI1.ISupMES)
            {
                string Msg = Task.Run(() => mqtt.MESForBasketAsync("1", "DS02216", "", "1", ConfigAOI1.mesnum1.ToString())).Result;
                if (Msg != null)
                if (ConfigAOI1.ISokMes)
                {
                    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 篮具  进料口满载 上传{(obj?.zstatus == "200" ? "成功" : "失败")}   {obj?.zstatus}");
                    }
                    catch
                    {
                        Plc1.WriteSingleAddress(1590, 2, out _);
                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 篮具  进料口满载 获取返回值解析异常  返回数据{Msg} ");
                    }
                }
                    ConfigAOI1.mesnum1++;
                    Plc1.WriteSingleAddress(1590, 1, out _);
                    LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"已强制MES上传进料口满载");
                }
                else
                {
                    LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 篮具  进料口满载 获取返回值解析异常  返回数据null ");
                    Plc1.WriteSingleAddress(1590, 2, out _);
                }
                    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 篮具  进料口满载 上传{(obj?.zstatus == "200" ? "成功" : "失败")}   {obj?.zstatus}");
                        }
                        catch
                        {
                            Plc1.WriteSingleAddress(1590, 2, out _);
                            LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 篮具  进料口满载 获取返回值解析异常  返回数据{Msg} ");
                        }
                    }
                    else
                    {
                        LogAsync(DateTime.Now, EnumHelper.LogLevel.Exception, $"RabbitMQ 篮具  进料口满载 获取返回值解析异常  返回数据null ");
                        Plc1.WriteSingleAddress(1590, 2, out _);
                    }
                }
            }
            else
            {
@@ -592,8 +639,6 @@
        public ResponseMessage MESup3(IOperationConfig config, IDevice invokeDevice, IDevice sourceDevice)
        {
            ResponseMessage msg = new ResponseMessage();
            if (ConfigAOI1.ISupMES)
            {