Explorar el Código

压机数据存储规则 与数据库一致

Ge mingyu hace 1 año
padre
commit
a2d0ba4da5

+ 91 - 59
SIMDP/SIMDP.Project/RWS/PLC1.cs

@@ -20,9 +20,10 @@ namespace SIMDP.Project
     {
         #region 设备空间
 
-        private const string plcname = "PLC1";
+        private const string plcname = "小压溃PLC";
         private const string lshelfWorkStaion = "YK1001";
         private const int line = 3;
+
         private readonly string workStaion = "";
         private readonly string fixedScannerIp = "";
         private readonly int fixedScannerPort = 0;
@@ -562,82 +563,113 @@ namespace SIMDP.Project
 
         public void 辅助压机左侧读取请求(object value)
         {
-            bool signal = Convert.ToBoolean(value);
-            LogHelper.log.Info($"{plcname}: signal = {signal}");
-            if (!signal)
+            try
             {
-                Write("辅助压机左侧读取请求处理完成", false);
-                return;
-            }
+                bool signal = Convert.ToBoolean(value);
+                LogHelper.log.Info($"{plcname}: signal = {signal}");
+                if (!signal)
+                {
+                    Write("辅助压机左侧读取请求处理完成", false);
+                    return;
+                }
 
-            //1 读取数据:流水号、压装力、位移
-            Read("辅助压机左侧读取流水号", out short serialNum);
-            Read("辅助压机左侧OK", out bool bok);
-            Read("辅助压机左侧NG", out bool bng);
-            Read("辅助压机左侧压装力", out float fforce);
-            Read("辅助压机左侧位移", out int ofdisplacement);
-            float fdisplacement = ofdisplacement / 10000.0f;
-
-            //2 数据绑定:根据流水号查找本地生产数据表
-            MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
-            if (model != null)
-            {
-                ProdataSet data = new ProdataSet(model.RuleId);
-                data.LoadData(model);
-                data.dict["辅助压机左侧压装力"] = fforce.ToString();
-                data.dict["辅助压机左侧工件尺寸"] = fdisplacement.ToString();
-                data.dict["辅助压机左侧结果"] = bok == true ? "OK" : "NG";
-                data.model.RuleTime = DateTime.Now;//更新的时间
-                BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+                //1 读取数据:流水号、压装力、位移
+                Read("辅助压机左侧读取流水号", out short serialNum);
+                Read("辅助压机左侧OK", out bool bok);
+                //  Read("辅助压机左侧NG", out bool bng);
+                Read("辅助压机左侧压装力", out float fforce);
+                Read("辅助压机左侧位移", out int ofdisplacement);
+                float fdisplacement = ofdisplacement / 10000.0f;
+
+                LogHelper.log.Debug($"{plcname}:{serialNum}");
+
+                //2 数据绑定:根据流水号查找本地生产数据表
+                MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
+                if (model != null)
+                {
+                    ProdataSet data = new ProdataSet(model.RuleId);
+                    data.LoadData(model);
+                    data.dict["辅助压机左侧压装力"] = fforce.ToString();
+                    data.dict["辅助压机左侧工件尺寸"] = fdisplacement.ToString();
+                    data.dict["辅助压机左侧结果"] = bok == true ? "OK" : "NG";
+                    data.model.RuleTime = DateTime.Now;//更新的时间
+                    BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+                }
+                else
+                {
+                    LogHelper.log.Error($"{plcname} 辅助压机左侧数据存储失败,无法找到当前工件流水号 {serialNum}");
+                    //报警信号!
+                    Write("上位机报警", 12);
+                    Tool.LogAndNotice($"{plcname}数据存储异常", 3, $"已强制反馈PLC");
+                }
+                //3 反馈完成
+                Write("辅助压机左侧读取请求处理完成", true);
             }
-            else
+            catch (Exception ex)
             {
-                LogHelper.log.Error($"{plcname} 辅助压机左侧数据存储失败,无法找到当前工件流水号 {serialNum}");
+                LogHelper.log.Error($"{plcname}异常:{ex.Message}");
                 //报警信号!
                 Write("上位机报警", 12);
+                Tool.LogAndNotice($"{plcname}数据存储异常", 3, $"已强制反馈PLC");
+
+                Write("辅助压机左侧读取请求处理完成", true);
             }
-            //3 反馈完成
-            Write("辅助压机左侧读取请求处理完成", true);
         }
 
         public void 辅助压机右侧读取请求(object value)
         {
-            bool signal = Convert.ToBoolean(value);
-            LogHelper.log.Info($"{plcname}: signal = {signal}");
-            if (!signal)
+            try
             {
-                Write("辅助压机右侧读取请求处理完成", false);
-                return;
-            }
+                bool signal = Convert.ToBoolean(value);
+                LogHelper.log.Info($"{plcname}: signal = {signal}");
+                if (!signal)
+                {
+                    Write("辅助压机右侧读取请求处理完成", false);
+                    return;
+                }
+
+                //1 读取数据:流水号、压装力、位移
+                Read("辅助压机右侧读取流水号", out short serialNum);
+                Read("辅助压机右侧OK", out bool bok);
+                //  Read("辅助压机右侧NG", out bool bng);
+                Read("辅助压机右侧压装力", out float fforce);
+                Read("辅助压机右侧位移", out int ofdisplacement);
+                float fdisplacement = ofdisplacement / 10000.0f;
+
+                LogHelper.log.Debug($"{plcname}:{serialNum}");
+
+                //2 数据绑定:根据流水号查找本地生产数据表
+                MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
+                if (model != null)
+                {
+                    ProdataSet data = new ProdataSet(model.RuleId);
+                    data.LoadData(model);
+                    data.dict["辅助压机右侧压装力"] = fforce.ToString();
+                    data.dict["辅助压机右侧工件尺寸"] = fdisplacement.ToString();
+                    data.dict["辅助压机右侧结果"] = bok == true ? "OK" : "NG";
+                    data.model.RuleTime = DateTime.Now;//更新的时间
+                    BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+                }
+                else
+                {
+                    LogHelper.log.Error($"{plcname} 辅助压机右侧数据存储失败,无法找到当前工件流水号 {serialNum}");
+                    //报警信号!
+                    Write("上位机报警", 12);
+                }
+                //3 反馈完成
+                Write("辅助压机右侧读取请求处理完成", true);
 
-            //1 读取数据:流水号、压装力、位移
-            Read("辅助压机右侧读取流水号", out short serialNum);
-            Read("辅助压机右侧OK", out bool bok);
-            Read("辅助压机右侧NG", out bool bng);
-            Read("辅助压机右侧压装力", out float fforce);
-            Read("辅助压机右侧位移", out int ofdisplacement);
-            float fdisplacement = ofdisplacement / 10000.0f;
-
-            //2 数据绑定:根据流水号查找本地生产数据表
-            MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
-            if (model != null)
-            {
-                ProdataSet data = new ProdataSet(model.RuleId);
-                data.LoadData(model);
-                data.dict["辅助压机右侧压装力"] = fforce.ToString();
-                data.dict["辅助压机右侧工件尺寸"] = fdisplacement.ToString();
-                data.dict["辅助压机右侧结果"] = bok == true ? "OK" : "NG";
-                data.model.RuleTime = DateTime.Now;//更新的时间
-                BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
             }
-            else
+            catch (Exception ex)
             {
-                LogHelper.log.Error($"{plcname} 辅助压机右侧数据存储失败,无法找到当前工件流水号 {serialNum}");
+                LogHelper.log.Error($"{plcname}异常:{ex.Message}");
                 //报警信号!
                 Write("上位机报警", 12);
+                Tool.LogAndNotice($"{plcname}数据存储异常", 3, $"已强制反馈PLC");
+
+                Write("辅助压机右侧读取请求处理完成", true);
             }
-            //3 反馈完成
-            Write("辅助压机右侧读取请求处理完成", true);
+         
         }
 
         #endregion

+ 44 - 30
SIMDP/SIMDP.Project/RWS/PLC3.cs

@@ -17,6 +17,7 @@ namespace SIMDP.Project
     {
         #region 设备空间
 
+        private const string plcname = "缓冲器一PLC";
         private const string workStaion = "HC1001";
         private const int line = 1;
 
@@ -420,42 +421,55 @@ namespace SIMDP.Project
 
         public void 辅助压机读取请求(object value)
         {
-            bool signal = Convert.ToBoolean(value);
-            LogHelper.log.Debug("辅助压机读取请求: signal = " + signal);
-            if (!signal)
-            {
-                Write("辅助压机读取请求处理完成", false);
-                return;
-            }
-            //1 读取数据:流水号、压装力、位移
-            Read("辅助压机读取流水号", out short serialNum);
-            Read("辅助压机OK", out bool bok);
-            Read("辅助压机NG", out bool bng);
-            Read("辅助压机压装力", out float fforce);
-            Read("辅助压机位移", out int ofdisplacement);
-            float fdisplacement = ofdisplacement / 10000.0f;
-
-            //2 数据绑定:根据流水号查找本地生产数据表
-            MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
-            if (model != null)
+            try
             {
-                ProdataSet data = new ProdataSet(model.RuleId);
-                data.LoadData(model);
-                data.dict["辅助压机压装力"] = fforce.ToString();
-                data.dict["辅助压机工件尺寸"] = fdisplacement.ToString();
-                data.dict["辅助压机结果"] = bok == true ? "OK" : "NG";
-                data.model.RuleTime = DateTime.Now;//更新的时间
-                LogHelper.log.Debug($"更新流水号数据:({model.SerialNum})");
-                BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+                bool signal = Convert.ToBoolean(value);
+                LogHelper.log.Debug("辅助压机读取请求: signal = " + signal);
+                if (!signal)
+                {
+                    Write("辅助压机读取请求处理完成", false);
+                    return;
+                }
+                //1 读取数据:流水号、压装力、位移
+                Read("辅助压机读取流水号", out short serialNum);
+                Read("辅助压机OK", out bool bok);
+                Read("辅助压机NG", out bool bng);
+                Read("辅助压机压装力", out float fforce);
+                Read("辅助压机位移", out int ofdisplacement);
+                float fdisplacement = ofdisplacement / 10000.0f;
+
+                //2 数据绑定:根据流水号查找本地生产数据表
+                MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
+                if (model != null)
+                {
+                    ProdataSet data = new ProdataSet(model.RuleId);
+                    data.LoadData(model);
+                    data.dict["辅助压机压装力"] = fforce.ToString();
+                    data.dict["辅助压机工件尺寸"] = fdisplacement.ToString();
+                    data.dict["辅助压机结果"] = bok == true ? "OK" : "NG";
+                    data.model.RuleTime = DateTime.Now;//更新的时间
+                    LogHelper.log.Debug($"更新流水号数据:({model.SerialNum})");
+                    BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+                }
+                else
+                {
+                    LogHelper.log.Error($"PLC3 辅助压机数据存储失败,无法找到当前工件流水号 {serialNum}");
+                    //报警信号!
+                    Write("上位机报警", 12);
+                }
+                //3 反馈完成
+                Write("辅助压机读取请求处理完成", true);
             }
-            else
+            catch (Exception ex)
             {
-                LogHelper.log.Error($"PLC3 辅助压机数据存储失败,无法找到当前工件流水号 {serialNum}");
+                LogHelper.log.Error($"{plcname}异常:{ex.Message}");
                 //报警信号!
+                Write("上位机报警", 12);
+                Tool.LogAndNotice($"{plcname}数据存储异常", 3, $"已强制反馈PLC");
 
+                Write("辅助压机读取请求处理完成", true);
             }
-            //3 反馈完成
-            Write("辅助压机读取请求处理完成", true);
+          
         }
 
         #endregion

+ 44 - 30
SIMDP/SIMDP.Project/RWS/PLC4.cs

@@ -19,6 +19,7 @@ namespace SIMDP.Project
     {
         #region 设备空间
 
+        private const string plcname = "缓冲器二PLC";
         private const string workStaion = "HC1002";
         private const int line = 2;
 
@@ -706,42 +707,55 @@ namespace SIMDP.Project
 
         public void 辅助压机读取请求(object value)
         {
-            bool signal = Convert.ToBoolean(value);
-            LogHelper.log.Debug("辅助压机读取请求: signal = " + signal);
-            if (!signal)
-            {
-                Write("辅助压机读取请求处理完成", false);
-                return;
-            }
-            //1 读取数据:流水号、压装力、位移
-            Read("辅助压机读取流水号", out short serialNum);
-            Read("辅助压机OK", out bool bok);
-            Read("辅助压机NG", out bool bng);
-            Read("辅助压机压装力", out float fforce);
-            Read("辅助压机位移", out int ofdisplacement);
-            float fdisplacement = ofdisplacement / 10000.0f;
-
-            //2 数据绑定:根据流水号查找本地生产数据表
-            MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
-            if (model != null)
+            try
             {
-                ProdataSet data = new ProdataSet(model.RuleId);
-                data.LoadData(model);
-                data.dict["辅助压机压装力"] = fforce.ToString();
-                data.dict["辅助压机工件尺寸"] = fdisplacement.ToString();
-                data.dict["辅助压机结果"] = bok == true ? "OK" : "NG";
-                data.model.RuleTime = DateTime.Now;//更新的时间
-                LogHelper.log.Debug($"更新流水号数据:({model.SerialNum})");
-                BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+                bool signal = Convert.ToBoolean(value);
+                LogHelper.log.Debug("辅助压机读取请求: signal = " + signal);
+                if (!signal)
+                {
+                    Write("辅助压机读取请求处理完成", false);
+                    return;
+                }
+                //1 读取数据:流水号、压装力、位移
+                Read("辅助压机读取流水号", out short serialNum);
+                Read("辅助压机OK", out bool bok);
+                Read("辅助压机NG", out bool bng);
+                Read("辅助压机压装力", out float fforce);
+                Read("辅助压机位移", out int ofdisplacement);
+                float fdisplacement = ofdisplacement / 10000.0f;
+
+                //2 数据绑定:根据流水号查找本地生产数据表
+                MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
+                if (model != null)
+                {
+                    ProdataSet data = new ProdataSet(model.RuleId);
+                    data.LoadData(model);
+                    data.dict["辅助压机压装力"] = fforce.ToString();
+                    data.dict["辅助压机工件尺寸"] = fdisplacement.ToString();
+                    data.dict["辅助压机结果"] = bok == true ? "OK" : "NG";
+                    data.model.RuleTime = DateTime.Now;//更新的时间
+                    LogHelper.log.Debug($"更新流水号数据:({model.SerialNum})");
+                    BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+                }
+                else
+                {
+                    LogHelper.log.Error($"PLC4 辅助压机数据存储失败,无法找到当前工件流水号 {serialNum}");
+                    //报警信号!
+                    Write("上位机报警", 12);
+                }
+                //3 反馈完成
+                Write("辅助压机读取请求处理完成", true);
             }
-            else
+            catch (Exception ex)
             {
-                LogHelper.log.Error($"PLC4 辅助压机数据存储失败,无法找到当前工件流水号 {serialNum}");
+                LogHelper.log.Error($"{plcname}异常:{ex.Message}");
                 //报警信号!
+                Write("上位机报警", 12);
+                Tool.LogAndNotice($"{plcname}数据存储异常", 3, $"已强制反馈PLC");
 
+                Write("辅助压机读取请求处理完成", true);
             }
-            //3 反馈完成
-            Write("辅助压机读取请求处理完成", true);
+         
         }
 
         #endregion

+ 50 - 40
SIMDP/SIMDP.Project/RWS/PLC5.cs

@@ -15,7 +15,7 @@ namespace SIMDP.Project
     {
         #region 设备空间
 
-        private string plcname = "小压溃主压机PLC";
+        private const string plcname = "小压溃主压机PLC";
 
         bool pcHeartBeat = false;
 
@@ -63,51 +63,61 @@ namespace SIMDP.Project
 
         public void 主压机读取请求(object value)
         {
-            bool signal = Convert.ToBoolean(value);
-            LogHelper.log.Info($"{plcname} signal ={signal}");
-            if (!signal)
+            try
             {
-                Write("主压机读取请求处理完成", false);
-                return;
-            }
+                bool signal = Convert.ToBoolean(value);
+                LogHelper.log.Info($"{plcname} signal ={signal}");
+                if (!signal)
+                {
+                    Write("主压机读取请求处理完成", false);
+                    return;
+                }
 
-            //1 读取数据:流水号、压装力、位移
-            Read("主压机读取流水号", out short serialNum);
-            Read("主压机OK", out bool bok);
-            Read("主压机压装力", out float fforce);
-            Read("主压机位移", out float ofdisplacement);
+                //1 读取数据:流水号、压装力、位移
+                Read("主压机读取流水号", out short serialNum);
+                Read("主压机OK", out bool bok);
+                Read("主压机压装力", out float fforce);
+                Read("主压机位移", out float ofdisplacement);
 
-            //2 数据绑定:根据流水号查找本地生产数据表
-            MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
-            if (model == null)
-            {
-                Tool.LogAndNotice("绑定数据错误", 3, $"数据库查询不到{serialNum}");
-                LogHelper.log.Error($"{plcname} 存储压装数据失败,无法找到当前工件的上料信息,流水号 {serialNum}");
-                return;
+                //2 数据绑定:根据流水号查找本地生产数据表
+                MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
+                if (model == null)
+                {
+                    Tool.LogAndNotice("绑定数据错误", 3, $"数据库查询不到{serialNum}");
+                    LogHelper.log.Error($"{plcname} 存储压装数据失败,无法找到当前工件的上料信息,流水号 {serialNum}");
+                    return;
+                }
+                ProdataSet data = new ProdataSet(model.RuleId);
+                data.LoadData(model);
+                data.dict["主压机压装力"] = fforce.ToString();
+                data.dict["主压机工件尺寸"] = ofdisplacement.ToString();
+                data.dict["主压机结果"] = bok == true ? "OK" : "NG";
+                data.model.RuleTime = DateTime.Now;
+                BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+
+                //3 反馈完成
+                Write("主压机读取请求处理完成", true);
+
+                //4 延时执行改名操作
+                Task task = Task.Factory.StartNew(async () =>
+                {
+                    await Task.Delay(2000);
+
+                    bool bres = PressHelper.FindNewUpload(serialNum.ToString(), SysEnvironment.CSV_ExportPath, out string newfile);
+                    if (bres)
+                    {
+                        FileInfo fi = new FileInfo(newfile);
+                        PressHelper.RenameCSV(fi, data.dict["备注"], data.dict["图号"], serialNum.ToString());
+                    }
+                });
             }
-            ProdataSet data = new ProdataSet(model.RuleId);
-            data.LoadData(model);
-            data.dict["主压机压装力"] = fforce.ToString();
-            data.dict["主压机工件尺寸"] = ofdisplacement.ToString();
-            data.dict["主压机结果"] = bok == true ? "OK" : "NG";
-            data.model.RuleTime = DateTime.Now;
-            BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
-
-            //3 反馈完成
-            Write("主压机读取请求处理完成", true);
-
-            //4 延时执行改名操作
-            Task task = Task.Factory.StartNew(async () =>
+            catch (Exception ex)
             {
-                await Task.Delay(5000);
+                LogHelper.log.Error($"{plcname}异常:{ex.Message}");
+                Tool.LogAndNotice($"{plcname}数据存储异常", 3, $"已强制反馈PLC");
 
-                bool bres = PressHelper.FindNewUpload(serialNum.ToString(), SysEnvironment.CSV_ExportPath, out string newfile);
-                if (bres)
-                {
-                    FileInfo fi = new FileInfo(newfile);
-                    PressHelper.RenameCSV(fi, data.dict["备注"], data.dict["图号"], serialNum.ToString());
-                }
-            });
+                Write("主压机读取请求处理完成", true);
+            }
         }
 
         #endregion

+ 53 - 43
SIMDP/SIMDP.Project/RWS/PLC6.cs

@@ -15,7 +15,7 @@ namespace SIMDP.Project
     {
         #region 设备空间
 
-        private string plcname = "后压溃主压机PLC";
+        private const string plcname = "后压溃主压机PLC";
 
         bool pcHeartBeat = false;
 
@@ -63,57 +63,67 @@ namespace SIMDP.Project
 
         public void 主压机读取请求(object value)
         {
-            bool signal = Convert.ToBoolean(value);
-            LogHelper.log.Info($"{plcname} signal ={signal}");
-            if (!signal)
+            try
             {
-                Write("主压机读取请求处理完成", false);
-                return;
-            }
+                bool signal = Convert.ToBoolean(value);
+                LogHelper.log.Info($"{plcname} signal ={signal}");
+                if (!signal)
+                {
+                    Write("主压机读取请求处理完成", false);
+                    return;
+                }
 
-            //1 读取数据:流水号、压装力、位移
-            Read("主压机读取流水号", out short serialNum);
-            Read("主压机OK", out bool bok);
-            Read("主压机压装力", out float fforce);
-            Read("主压机位移", out float ofdisplacement);
+                //1 读取数据:流水号、压装力、位移
+                Read("主压机读取流水号", out short serialNum);
+                Read("主压机OK", out bool bok);
+                Read("主压机压装力", out float fforce);
+                Read("主压机位移", out float ofdisplacement);
 
-            //2 数据绑定:根据流水号查找本地生产数据表
-            MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
-            if (model == null)
-            {
-                Tool.LogAndNotice("绑定数据错误", 3, $"数据库查询不到{serialNum}");
-                LogHelper.log.Error($"{plcname} 存储压装数据失败,无法找到当前工件的上料信息,流水号 {serialNum}");
-                return;
-            }
-            ProdataSet data = new ProdataSet(model.RuleId);
-            data.LoadData(model);
-            data.dict["主压机压装力"] = fforce.ToString();
-            data.dict["主压机工件尺寸"] = ofdisplacement.ToString();
-            data.dict["主压机结果"] = bok == true ? "OK" : "NG";
+                //2 数据绑定:根据流水号查找本地生产数据表
+                MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
+                if (model == null)
+                {
+                    Tool.LogAndNotice("绑定数据错误", 3, $"数据库查询不到{serialNum}");
+                    LogHelper.log.Error($"{plcname} 存储压装数据失败,无法找到当前工件的上料信息,流水号 {serialNum}");
+                    return;
+                }
+                ProdataSet data = new ProdataSet(model.RuleId);
+                data.LoadData(model);
+                data.dict["主压机压装力"] = fforce.ToString();
+                data.dict["主压机工件尺寸"] = ofdisplacement.ToString();
+                data.dict["主压机结果"] = bok == true ? "OK" : "NG";
 
-            //后压溃特殊处理
-            data.dict["辅助压机右侧侧压装力"] = "------";
-            data.dict["辅助压机右侧工件尺寸"] = "------";
-            data.dict["辅助压机右侧结果"] = "------";
+                //后压溃特殊处理
+                data.dict["辅助压机右侧侧压装力"] = "------";
+                data.dict["辅助压机右侧工件尺寸"] = "------";
+                data.dict["辅助压机右侧结果"] = "------";
 
-            data.model.RuleTime = DateTime.Now;
-            BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+                data.model.RuleTime = DateTime.Now;
+                BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
 
-            //3 反馈完成
-            Write("主压机读取请求处理完成", true);
+                //3 反馈完成
+                Write("主压机读取请求处理完成", true);
 
-            //4 延时执行改名操作
-            Task task = Task.Factory.StartNew(async () =>
+                //4 延时执行改名操作
+                Task task = Task.Factory.StartNew(async () =>
+                {
+                    await Task.Delay(2000);
+
+                    bool bres = PressHelper.FindNewUpload(serialNum.ToString(), SysEnvironment.CSV_ExportPath, out string newfile);
+                    if (bres)
+                    {
+                        FileInfo fi = new FileInfo(newfile);
+                        PressHelper.RenameCSV(fi, data.dict["备注"], data.dict["图号"], serialNum.ToString());
+                    }
+                });
+            }
+            catch (Exception ex)
             {
-                await Task.Delay(5000);
+                LogHelper.log.Error($"{plcname}异常:{ex.Message}");
+                Tool.LogAndNotice($"{plcname}数据存储异常", 3, $"已强制反馈PLC");
 
-                bool bres = PressHelper.FindNewUpload(serialNum.ToString(), SysEnvironment.CSV_ExportPath, out string newfile);
-                if (bres)
-                {
-                    FileInfo fi = new FileInfo(newfile);
-                    PressHelper.RenameCSV(fi, data.dict["备注"], data.dict["图号"], serialNum.ToString());
-                }
-            });
+                Write("主压机读取请求处理完成", true);
+            }
         }
 
         #endregion

+ 50 - 40
SIMDP/SIMDP.Project/RWS/PLC7.cs

@@ -15,7 +15,7 @@ namespace SIMDP.Project
     {
         #region 设备空间
 
-        private string plcname = "芯子压机PLC";
+        private const string plcname = "芯子压机PLC";
 
         bool pcHeartBeat = false;
 
@@ -63,51 +63,61 @@ namespace SIMDP.Project
 
         public void 主压机读取请求(object value)
         {
-            bool signal = Convert.ToBoolean(value);
-            LogHelper.log.Info($"{plcname} signal ={signal}");
-            if (!signal)
+            try
             {
-                Write("主压机读取请求处理完成", false);
-                return;
-            }
+                bool signal = Convert.ToBoolean(value);
+                LogHelper.log.Info($"{plcname} signal ={signal}");
+                if (!signal)
+                {
+                    Write("主压机读取请求处理完成", false);
+                    return;
+                }
 
-            //1 读取数据:流水号、压装力、位移
-            Read("主压机读取流水号", out short serialNum);
-            Read("主压机OK", out bool bok);
-            Read("主压机压装力", out float fforce);
-            Read("主压机位移", out float ofdisplacement);
+                //1 读取数据:流水号、压装力、位移
+                Read("主压机读取流水号", out short serialNum);
+                Read("主压机OK", out bool bok);
+                Read("主压机压装力", out float fforce);
+                Read("主压机位移", out float ofdisplacement);
 
-            //2 数据绑定:根据流水号查找本地生产数据表
-            MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
-            if (model == null)
-            {
-                Tool.LogAndNotice("绑定数据错误", 3, $"数据库查询不到{serialNum}");
-                LogHelper.log.Error($"{plcname} 存储压装数据失败,无法找到当前工件的上料信息,流水号 {serialNum}");
-                return;
+                //2 数据绑定:根据流水号查找本地生产数据表
+                MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
+                if (model == null)
+                {
+                    Tool.LogAndNotice("绑定数据错误", 3, $"数据库查询不到{serialNum}");
+                    LogHelper.log.Error($"{plcname} 存储压装数据失败,无法找到当前工件的上料信息,流水号 {serialNum}");
+                    return;
+                }
+                ProdataSet data = new ProdataSet(model.RuleId);
+                data.LoadData(model);
+                data.dict["芯子压机压装力"] = fforce.ToString();
+                data.dict["芯子压机工件尺寸"] = ofdisplacement.ToString();
+                data.dict["芯子压机结果"] = bok == true ? "OK" : "NG";
+                data.model.RuleTime = DateTime.Now;
+                BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+
+                //3 反馈完成
+                Write("主压机读取请求处理完成", true);
+
+                //4 延时执行改名操作
+                Task task = Task.Factory.StartNew(async () =>
+                {
+                    await Task.Delay(2000);
+
+                    bool bres = PressHelper.FindNewUpload(serialNum.ToString(), SysEnvironment.CSV_ExportPath, out string newfile);
+                    if (bres)
+                    {
+                        FileInfo fi = new FileInfo(newfile);
+                        PressHelper.RenameCSV(fi, data.dict["备注"], data.dict["图号"], serialNum.ToString());
+                    }
+                });
             }
-            ProdataSet data = new ProdataSet(model.RuleId);
-            data.LoadData(model);
-            data.dict["主压机压装力"] = fforce.ToString();
-            data.dict["主压机工件尺寸"] = ofdisplacement.ToString();
-            data.dict["主压机结果"] = bok == true ? "OK" : "NG";
-            data.model.RuleTime = DateTime.Now;
-            BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
-
-            //3 反馈完成
-            Write("主压机读取请求处理完成", true);
-
-            //4 延时执行改名操作
-            Task task = Task.Factory.StartNew(async () =>
+            catch (Exception ex)
             {
-                await Task.Delay(5000);
+                LogHelper.log.Error($"{plcname}异常:{ex.Message}");
+                Tool.LogAndNotice($"{plcname}数据存储异常", 3, $"已强制反馈PLC");
 
-                bool bres = PressHelper.FindNewUpload(serialNum.ToString(), SysEnvironment.CSV_ExportPath, out string newfile);
-                if (bres)
-                {
-                    FileInfo fi = new FileInfo(newfile);
-                    PressHelper.RenameCSV(fi, data.dict["备注"], data.dict["图号"], serialNum.ToString());
-                }
-            });
+                Write("主压机读取请求处理完成", true);
+            }
         }
 
         #endregion

+ 50 - 40
SIMDP/SIMDP.Project/RWS/PLC8.cs

@@ -15,7 +15,7 @@ namespace SIMDP.Project
     {
         #region 设备空间
 
-        private string plcname = "壳体压机PLC";
+        private const string plcname = "壳体压机PLC";
 
         bool pcHeartBeat = false;
 
@@ -63,51 +63,61 @@ namespace SIMDP.Project
 
         public void 主压机读取请求(object value)
         {
-            bool signal = Convert.ToBoolean(value);
-            LogHelper.log.Info($"{plcname} signal ={signal}");
-            if (!signal)
+            try
             {
-                Write("主压机读取请求处理完成", false);
-                return;
-            }
+                bool signal = Convert.ToBoolean(value);
+                LogHelper.log.Info($"{plcname} signal ={signal}");
+                if (!signal)
+                {
+                    Write("主压机读取请求处理完成", false);
+                    return;
+                }
 
-            //1 读取数据:流水号、压装力、位移
-            Read("主压机读取流水号", out short serialNum);
-            Read("主压机OK", out bool bok);
-            Read("主压机压装力", out float fforce);
-            Read("主压机位移", out float ofdisplacement);
+                //1 读取数据:流水号、压装力、位移
+                Read("主压机读取流水号", out short serialNum);
+                Read("主压机OK", out bool bok);
+                Read("主压机压装力", out float fforce);
+                Read("主压机位移", out float ofdisplacement);
 
-            //2 数据绑定:根据流水号查找本地生产数据表
-            MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
-            if (model == null)
-            {
-                Tool.LogAndNotice("绑定数据错误", 3, $"数据库查询不到{serialNum}");
-                LogHelper.log.Error($"{plcname} 存储压装数据失败,无法找到当前工件的上料信息,流水号 {serialNum}");
-                return;
+                //2 数据绑定:根据流水号查找本地生产数据表
+                MoProductData model = BLLFactory<BlProductData>.Instance.FindbySerialNum(serialNum);
+                if (model == null)
+                {
+                    Tool.LogAndNotice("绑定数据错误", 3, $"数据库查询不到{serialNum}");
+                    LogHelper.log.Error($"{plcname} 存储压装数据失败,无法找到当前工件的上料信息,流水号 {serialNum}");
+                    return;
+                }
+                ProdataSet data = new ProdataSet(model.RuleId);
+                data.LoadData(model);
+                data.dict["壳体压机压装力"] = fforce.ToString();
+                data.dict["壳体压机工件尺寸"] = ofdisplacement.ToString();
+                data.dict["壳体压机结果"] = bok == true ? "OK" : "NG";
+                data.model.RuleTime = DateTime.Now;
+                BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
+
+                //3 反馈完成
+                Write("主压机读取请求处理完成", true);
+
+                //4 延时执行改名操作
+                Task task = Task.Factory.StartNew(async () =>
+                {
+                    await Task.Delay(2000);
+
+                    bool bres = PressHelper.FindNewUpload(serialNum.ToString(), SysEnvironment.CSV_ExportPath, out string newfile);
+                    if (bres)
+                    {
+                        FileInfo fi = new FileInfo(newfile);
+                        PressHelper.RenameCSV(fi, data.dict["备注"], data.dict["图号"], serialNum.ToString());
+                    }
+                });
             }
-            ProdataSet data = new ProdataSet(model.RuleId);
-            data.LoadData(model);
-            data.dict["主压机压装力"] = fforce.ToString();
-            data.dict["主压机工件尺寸"] = ofdisplacement.ToString();
-            data.dict["主压机结果"] = bok == true ? "OK" : "NG";
-            data.model.RuleTime = DateTime.Now;
-            BLLFactory<BlProductData>.Instance.Update(data.toModel(), model.DataId);
-
-            //3 反馈完成
-            Write("主压机读取请求处理完成", true);
-
-            //4 延时执行改名操作
-            Task task = Task.Factory.StartNew(async () =>
+            catch (Exception ex)
             {
-                await Task.Delay(5000);
+                LogHelper.log.Error($"{plcname}异常:{ex.Message}");
+                Tool.LogAndNotice($"{plcname}数据存储异常", 3, $"已强制反馈PLC");
 
-                bool bres = PressHelper.FindNewUpload(serialNum.ToString(), SysEnvironment.CSV_ExportPath, out string newfile);
-                if (bres)
-                {
-                    FileInfo fi = new FileInfo(newfile);
-                    PressHelper.RenameCSV(fi, data.dict["备注"], data.dict["图号"], serialNum.ToString());
-                }
-            });
+                Write("主压机读取请求处理完成", true);
+            }
         }
 
         #endregion

+ 19 - 19
SIMDP/SIMDP.View/FormDataTraceability.Designer.cs

@@ -192,9 +192,9 @@ namespace SIMDP
             this.labelControl1.Anchor = System.Windows.Forms.AnchorStyles.Right;
             this.labelControl1.Appearance.Options.UseTextOptions = true;
             this.labelControl1.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            this.labelControl1.Location = new System.Drawing.Point(34, 7);
+            this.labelControl1.Location = new System.Drawing.Point(19, 5);
             this.labelControl1.Name = "labelControl1";
-            this.labelControl1.Size = new System.Drawing.Size(60, 14);
+            this.labelControl1.Size = new System.Drawing.Size(75, 18);
             this.labelControl1.TabIndex = 21;
             this.labelControl1.Text = "起始日期:";
             // 
@@ -203,7 +203,7 @@ namespace SIMDP
             this.dateEditStart.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
             this.dateEditStart.EditValue = new System.DateTime(2019, 2, 27, 8, 48, 5, 0);
-            this.dateEditStart.Location = new System.Drawing.Point(100, 3);
+            this.dateEditStart.Location = new System.Drawing.Point(100, 6);
             this.dateEditStart.Margin = new System.Windows.Forms.Padding(3, 3, 3, 0);
             this.dateEditStart.Name = "dateEditStart";
             this.dateEditStart.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
@@ -211,7 +211,7 @@ namespace SIMDP
             new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
             this.dateEditStart.Properties.CalendarTimeProperties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
             new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
-            this.dateEditStart.Size = new System.Drawing.Size(91, 22);
+            this.dateEditStart.Size = new System.Drawing.Size(91, 26);
             this.dateEditStart.TabIndex = 1;
             this.dateEditStart.Enter += new System.EventHandler(this.dateEditStart_Enter);
             this.dateEditStart.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dateEditStart_KeyDown);
@@ -221,7 +221,7 @@ namespace SIMDP
             this.dateEditEnd.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
             this.dateEditEnd.EditValue = new System.DateTime(2021, 11, 2, 0, 0, 0, 0);
-            this.dateEditEnd.Location = new System.Drawing.Point(294, 3);
+            this.dateEditEnd.Location = new System.Drawing.Point(294, 6);
             this.dateEditEnd.Margin = new System.Windows.Forms.Padding(3, 3, 3, 0);
             this.dateEditEnd.Name = "dateEditEnd";
             this.dateEditEnd.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
@@ -229,7 +229,7 @@ namespace SIMDP
             new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
             this.dateEditEnd.Properties.CalendarTimeProperties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
             new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
-            this.dateEditEnd.Size = new System.Drawing.Size(91, 22);
+            this.dateEditEnd.Size = new System.Drawing.Size(91, 26);
             this.dateEditEnd.TabIndex = 5;
             this.dateEditEnd.Enter += new System.EventHandler(this.dateEditEnd_Enter);
             this.dateEditEnd.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dateEditEnd_KeyDown);
@@ -239,9 +239,9 @@ namespace SIMDP
             this.labelControl2.Anchor = System.Windows.Forms.AnchorStyles.Right;
             this.labelControl2.Appearance.Options.UseTextOptions = true;
             this.labelControl2.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            this.labelControl2.Location = new System.Drawing.Point(228, 7);
+            this.labelControl2.Location = new System.Drawing.Point(213, 5);
             this.labelControl2.Name = "labelControl2";
-            this.labelControl2.Size = new System.Drawing.Size(60, 14);
+            this.labelControl2.Size = new System.Drawing.Size(75, 18);
             this.labelControl2.TabIndex = 21;
             this.labelControl2.Text = "截止日期:";
             // 
@@ -249,10 +249,10 @@ namespace SIMDP
             // 
             this.txt_batchid.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
-            this.txt_batchid.Location = new System.Drawing.Point(682, 4);
+            this.txt_batchid.Location = new System.Drawing.Point(682, 8);
             this.txt_batchid.Margin = new System.Windows.Forms.Padding(3, 3, 3, 0);
             this.txt_batchid.Name = "txt_batchid";
-            this.txt_batchid.Size = new System.Drawing.Size(91, 20);
+            this.txt_batchid.Size = new System.Drawing.Size(91, 24);
             this.txt_batchid.TabIndex = 19;
             this.txt_batchid.Enter += new System.EventHandler(this.txt_batchid_Enter);
             this.txt_batchid.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txt_batchid_KeyDown);
@@ -262,9 +262,9 @@ namespace SIMDP
             this.labelControl4.Anchor = System.Windows.Forms.AnchorStyles.Right;
             this.labelControl4.Appearance.Options.UseTextOptions = true;
             this.labelControl4.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            this.labelControl4.Location = new System.Drawing.Point(616, 7);
+            this.labelControl4.Location = new System.Drawing.Point(601, 5);
             this.labelControl4.Name = "labelControl4";
-            this.labelControl4.Size = new System.Drawing.Size(60, 14);
+            this.labelControl4.Size = new System.Drawing.Size(75, 18);
             this.labelControl4.TabIndex = 21;
             this.labelControl4.Text = "流转卡号:";
             // 
@@ -273,9 +273,9 @@ namespace SIMDP
             this.labelControl5.Anchor = System.Windows.Forms.AnchorStyles.Right;
             this.labelControl5.Appearance.Options.UseTextOptions = true;
             this.labelControl5.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            this.labelControl5.Location = new System.Drawing.Point(412, 7);
+            this.labelControl5.Location = new System.Drawing.Point(395, 5);
             this.labelControl5.Name = "labelControl5";
-            this.labelControl5.Size = new System.Drawing.Size(70, 14);
+            this.labelControl5.Size = new System.Drawing.Size(87, 18);
             this.labelControl5.TabIndex = 21;
             this.labelControl5.Text = "项目(备注):";
             // 
@@ -283,10 +283,10 @@ namespace SIMDP
             // 
             this.txt_remark.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
-            this.txt_remark.Location = new System.Drawing.Point(488, 4);
+            this.txt_remark.Location = new System.Drawing.Point(488, 8);
             this.txt_remark.Margin = new System.Windows.Forms.Padding(3, 3, 3, 0);
             this.txt_remark.Name = "txt_remark";
-            this.txt_remark.Size = new System.Drawing.Size(91, 20);
+            this.txt_remark.Size = new System.Drawing.Size(91, 24);
             this.txt_remark.TabIndex = 19;
             this.txt_remark.Enter += new System.EventHandler(this.txt_serialnum_Enter);
             this.txt_remark.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txt_serialnum_KeyDown);
@@ -320,10 +320,10 @@ namespace SIMDP
             // 
             this.chk_Refresh.Anchor = System.Windows.Forms.AnchorStyles.None;
             this.chk_Refresh.AutoSize = true;
-            this.chk_Refresh.Location = new System.Drawing.Point(1092, 5);
+            this.chk_Refresh.Location = new System.Drawing.Point(1087, 3);
             this.chk_Refresh.Margin = new System.Windows.Forms.Padding(20, 3, 3, 3);
             this.chk_Refresh.Name = "chk_Refresh";
-            this.chk_Refresh.Size = new System.Drawing.Size(74, 18);
+            this.chk_Refresh.Size = new System.Drawing.Size(85, 22);
             this.chk_Refresh.TabIndex = 20;
             this.chk_Refresh.Text = "自动刷新";
             this.chk_Refresh.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -344,7 +344,7 @@ namespace SIMDP
             // 
             // FormDataTraceability
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.ClientSize = new System.Drawing.Size(1338, 322);
             this.Controls.Add(this.splitContainerControl1);

+ 9 - 9
SIMDP/SIMDP.View/FormDataTraceability.resx

@@ -136,15 +136,15 @@
   </data>
   <data name="SbtnSelect.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAASdEVYdFRpdGxlAEZpbmQ7U2VhcmNoO60Hj2IAAAGNSURB
-        VDhPpZFLSwJRFMf9FM5oE+MjhWjf1l20CDQaHR/5ykfMN4jcROnCvkorIdAcZ5yHbQKxPkEhLco2QmCb
-        gdO544QOaiT94AyXe+7/dx/jAIB/1fRjsVXSQr6i1sB69RZUUg1PXgtZbRsLgkBJqwTKOgRPe3BYG0Dk
-        agD+Ug88ORXYrFIxF81hE5CdAyUdwtUBDD++cGoKGR9c9IHNdIHJdvetrAm2ZwLcSd8R7m3hH57fJhAs
-        qsCkpVsra4KtmcBX1MeJ6yeyfinR2iMwKXlkZU1wek5Q0Mbx+moBh1djUp3VAs+Jqm8LOry8T8h6G+QK
-        /oIC7uQvVyC/is1rBnmw4WjuEXG8d/4AG8kOuJJS1cqaYHsmILDZ7hn+LvDmFIhc9iGMxaZlDMskDK6E
-        ZLh5kTcXIwsCApPp7G6mlSZzLI/daSw8tjsh1TGMAjxFvGNQlmSpYBU03xYwDDQvAs2JBsWJ/FoCAs21
-        BSrWAiomAnXU/FxbQHBG78pUrDl2cq0bm+A/tXTy7wWObxqBHOiIvKPPAAAAAElFTkSuQmCC
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+        wgAADsIBFShKgAAAABJ0RVh0VGl0bGUARmluZDtTZWFyY2g7rQePYgAAAY1JREFUOE+lkUtLAlEUx/0U
+        zmgT4yOFaN/WXbQINBodH/nKR8w3iNxE6cK+Sish0BxnnIdtArE+QSEtyjZCYJuB07njhA5qJP3gDJd7
+        7v93H+MAgH/V9GOxVdJCvqLWwHr1FlRSDU9eC1ltGwuCQEmrBMo6BE97cFgbQORqAP5SDzw5FdisUjEX
+        zWETkJ0DJR3C1QEMP75wagoZH1z0gc10gcl2962sCbZnAtxJ3xHubeEfnt8mECyqwKSlWytrgq2ZwFfU
+        x4nrJ7J+KdHaIzApeWRlTXB6TlDQxvH6agGHV2NSndUCz4mqbws6vLxPyHob5Ar+ggLu5C9XIL+KzWsG
+        ebDhaO4Rcbx3/gAbyQ64klLVyppgeyYgsNnuGf4u8OYUiFz2IYzFpmUMyyQMroRkuHmRNxcjCwICk+ns
+        bqaVJnMsj91pLDy2OyHVMYwCPEW8Y1CWZKlgFTTfFjAMNC8CzYkGxYn8WgICzbUFKtYCKiYCddT8XFtA
+        cEbvylSsOXZyrRub4D+1dPLvBY5vGoEc6Ii8o88AAAAASUVORK5CYII=
 </value>
   </data>
   <data name="btn_ExportData.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">