diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SCADAHelper/AlarmRefreshAction.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SCADAHelper/AlarmRefreshAction.cs index c49fd40..05e7342 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SCADAHelper/AlarmRefreshAction.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SCADAHelper/AlarmRefreshAction.cs @@ -48,10 +48,10 @@ namespace Mesnac.Action.ChemicalWeighing.FinishBatch.SCADAHelper Mesnac.Basic.InvokeHelper.OnAlarmRefresh -= Process_Event; Mesnac.Basic.InvokeHelper.OnAlarmRefresh += Process_Event; - //报警刷新保存事件绑定 - SaveHelper.AlarmSaveHelper.Instance.sender = runtime; - SaveHelper.AlarmSaveHelper.Instance.OnAlarmSave -= Process_Event; - SaveHelper.AlarmSaveHelper.Instance.OnAlarmSave += Process_Event; + // //报警刷新保存事件绑定 + // SaveHelper.AlarmSaveHelper.Instance.sender = runtime; + // SaveHelper.AlarmSaveHelper.Instance.OnAlarmSave -= Process_Event; + // SaveHelper.AlarmSaveHelper.Instance.OnAlarmSave += Process_Event; } diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SCADAHelper/AlarmRefreshActionForExtend.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SCADAHelper/AlarmRefreshActionForExtend.cs index 5b2f032..2fd56d1 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SCADAHelper/AlarmRefreshActionForExtend.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SCADAHelper/AlarmRefreshActionForExtend.cs @@ -41,21 +41,7 @@ namespace Mesnac.Action.ChemicalWeighing.FinishBatch.SCADAHelper base.RunIni(runtime); //必须要调用的 this._runtime = runtime; - #region 事件订阅 - - if (true) - { - Mesnac.Basic.InvokeHelper.OnAlarmRefreshExtend -= Process_Event; - Mesnac.Basic.InvokeHelper.OnAlarmRefreshExtend += Process_Event; - - //报警刷新保存事件绑定 - SaveHelper.AlarmSaveHelper.Instance.senderExtend = runtime; - SaveHelper.AlarmSaveHelper.Instance.OnAlarmSaveExtend -= Process_Event; - SaveHelper.AlarmSaveHelper.Instance.OnAlarmSaveExtend += Process_Event; - - } - - #endregion + IBaseControl baseControl = null; IBaseControl infoControl = null; diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SaveHelper/AlarmSaveHelper.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SaveHelper/AlarmSaveHelper.cs index 09f21a2..3e087dd 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SaveHelper/AlarmSaveHelper.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/FinishBatch/SaveHelper/AlarmSaveHelper.cs @@ -1,256 +1,256 @@ -using DevExpress.Xpo.DB; -using FastReport.Export.Dbf; -using HslCommunication; -using Mesnac.Action.ChemicalWeighing.Entity; -using Mesnac.Codd.Session; -using Mesnac.DoUtils; -using Mesnac.PlcUtils; -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Text; -using System.Threading; -using static DevExpress.Xpo.Helpers.AssociatedCollectionCriteriaHelper; - -namespace Mesnac.Action.ChemicalWeighing.FinishBatch.SaveHelper -{ - public class AlarmSaveHelper - { - /// - /// 报警保存事件定义 - /// - public event EventHandler OnAlarmSave; - public event EventHandler OnAlarmSaveExtend; - public object sender = null; - public object senderExtend = null; - private int WordLength = 16; //定义字长 - - // private PlcBusiness plcBusiness = PlcBusiness.Instance; - - // private DoControl doControl = DoControl.Instance; - - private static readonly Lazy lazy = new Lazy(() => new AlarmSaveHelper()); - - public static AlarmSaveHelper Instance - { - get - { - return lazy.Value; - } - } - - private AlarmSaveHelper() { } - - /// - /// 保存报警信息 - /// - public void Save() - { - List _alarmInfoList = Cache.CacheHelper.AlarmInfoList; - List _alarmBlockWordList = Cache.CacheHelper.BlockWordList; - ICSharpCode.Core.LoggingService.Debug("报警参数-实时刷新自动保存报警..."); - - #region 读取PLC的报警数据 原方法 Delete By wenjy 2023-08-07 17:10:07 - //foreach (Entity.AlarmInfo info in _alarmInfoList) - //{ - // Int16[] buff = null; - // if (BasePlcHelper.Instance.PlcRead(info.AlarmPLC, info.AlarmBlock, info.Start, info.Length, out buff)) - // { - // foreach (Entity.SimpleAlarmInfo sai in _alarmBlockWordList) - // { - // if (sai.AlramPLC == info.AlarmPLC && sai.AlarmBlock == info.AlarmBlock) //匹配数据块 - // { - // sai.AlarmData = buff[sai.AlarmAddress - info.Start]; //对起始字偏移,为当前字的报警值 - // sai.AlarmData = Mesnac.Basic.DataProcessor.Swap(sai.AlarmData); //注意:西门子PLC需要高低位转换 - // } - // } - // } - // else - // { - // ICSharpCode.Core.LoggingService.Warn(String.Format("从PLC读取报警数据失败:PLC={0},Block={1},Start={2},Len={3}", info.AlarmPLC, info.AlarmBlock, info.Start, info.Length)); - // } - - //} - - #endregion - - #region 保存报警数据 原方法 Delete By wenjy 2023-08-07 18:05:06 - - //foreach (Entity.SimpleAlarmInfo sai in _alarmBlockWordList) - //{ - // int[] binaryAlarmData = Mesnac.Basic.DataProcessor.ParseBinaryValue(sai.AlarmData, WordLength); - // for (int i = 0; i < WordLength; i++) - // { - // if (sai.IsSaveAlarm[i] == true && binaryAlarmData[i] == 0) - // { - // //更新报警状态 - // Entity.PmtAlarmInfo alarmInfo = Cache.CacheHelper.GetPmtAlarmInfoFromCache(sai.AlramPLC, sai.AlarmBlock, sai.AlarmAddress, i); - // if (alarmInfo != null) - // { - // Alarm.AlarmHelper.UpdateAlarmLogData(alarmInfo.Alarm_ID,DateTime.Now.ToString()); - // //清除显示的报警列表信息 - // if(Global.PublicVar.Instance.AlarmStrList.Exists(x => x == alarmInfo.AlarmName)) - // { - // Global.PublicVar.Instance.AlarmStrList.Remove(alarmInfo.AlarmName); - // Global.PublicVar.Instance.isFlashFlag = true; - // Global.PublicVar.Instance.isFlashFlagExtend = true; - // } - // } - // } - // if (binaryAlarmData[i] == 0) - // { - // sai.IsSaveAlarm[i] = false; - // } - // if (sai.IsSaveAlarm[i] == false && binaryAlarmData[i] == 1) - // { - // sai.IsSaveAlarm[i] = true; - // //数据保存 - // Entity.PmtAlarmInfo alarmInfo = Cache.CacheHelper.GetPmtAlarmInfoFromCache(sai.AlramPLC, sai.AlarmBlock, sai.AlarmAddress, i); - // if (alarmInfo != null) - // { - // Entity.LR_Alarmlog alarmLogData = new Entity.LR_Alarmlog(); - // alarmLogData.Equip_Code = alarmInfo.Equip_Code; - // alarmLogData.Alarm_ID = alarmInfo.Alarm_ID; - // alarmLogData.Alarm_OccurTime = DateTime.Now.ToString(); - // alarmLogData.Alarm_ClearTime = String.Empty; - // alarmLogData.Alarm_Status = 1; - // alarmLogData.Alarm_GUID = Guid.NewGuid().ToString().ToUpper(); - // Alarm.AlarmHelper.InsertAlarmLogData(alarmLogData); - // Global.PublicVar.Instance.AlarmStrList.Add(alarmInfo.AlarmName); - // Global.PublicVar.Instance.isFlashFlag = true; - // Global.PublicVar.Instance.isFlashFlagExtend = true; - // } - // } - // } - //} - - #endregion - - try - { - foreach (Entity.AlarmInfo info in _alarmInfoList) - { - string address = $"DB{info.AlarmBlock}.DBX{info.AlarmWord}.{info.AlarmBit}"; - // OperateResult result = plcBusiness.readBoolValue(address); - // ICSharpCode.Core.LoggingService.Debug(string.Format("{0}读取{1}", address, result.IsSuccess == true ? $"成功;读取结果:{result.Content}" : "失败")); - // if (result.IsSuccess == true) - // { - // if (result.Content) - // { - // AlarmLogicalProcessing(_alarmBlockWordList, info); - // } - // } - // AlarmLight(result.Content); //控制报警灯 True红灯;False绿灯 - } - - #region 触发事件 - - if (OnAlarmSave != null && Global.PublicVar.Instance.isFlashFlag) - { - OnAlarmSave(sender, System.EventArgs.Empty); - } - if (OnAlarmSaveExtend != null && Global.PublicVar.Instance.isFlashFlagExtend) - { - OnAlarmSaveExtend(senderExtend, System.EventArgs.Empty); - } - - #endregion - } - catch (Exception ex) - { - ICSharpCode.Core.LoggingService.Error(String.Format("AlarmSaveHelper逻辑异常:{0}", ex.Message), ex); - } - } - - /// - /// 报警逻辑处理 - /// - /// - /// - private void AlarmLogicalProcessing(List _alarmBlockWordList, Entity.AlarmInfo info) - { - if(_alarmBlockWordList != null) - { - foreach (Entity.SimpleAlarmInfo sai in _alarmBlockWordList) - { - if (sai.AlramPLC == info.AlarmPLC && sai.AlarmBlock == info.AlarmBlock && sai.AlarmBit == info.AlarmBit) //匹配数据块 - { - sai.AlarmData = 1; //对起始字偏移,为当前字的报警值 - - Entity.PmtAlarmInfo alarmInfo = Cache.CacheHelper.GetPmtAlarmInfoFromCache(sai.AlramPLC, sai.AlarmBlock, sai.AlarmAddress, Convert.ToInt32(sai.AlarmBit)); - if (alarmInfo != null) - { - UpdateAlarmLogData(alarmInfo); //更新报警状态 - InsertAlarmLogData(alarmInfo); //保存报警信息 - } - } - } - } - } - - /// - /// 更新报警状态 - /// - /// - private void UpdateAlarmLogData(Entity.PmtAlarmInfo alarmInfo) - { - if (alarmInfo != null) - { - Alarm.AlarmHelper.UpdateAlarmLogData(alarmInfo.Alarm_ID, DateTime.Now.ToString()); - //清除显示的报警列表信息 - if (Global.PublicVar.Instance.AlarmStrList.Exists(x => x == alarmInfo.AlarmName)) - { - Global.PublicVar.Instance.AlarmStrList.Remove(alarmInfo.AlarmName); - Global.PublicVar.Instance.isFlashFlag = true; - Global.PublicVar.Instance.isFlashFlagExtend = true; - } - } - } - - /// - /// 保存报警信息 - /// - /// - private void InsertAlarmLogData(Entity.PmtAlarmInfo alarmInfo) - { - if (alarmInfo != null) - { - //保存报警信息 - Entity.LR_Alarmlog alarmLogData = new Entity.LR_Alarmlog(); - alarmLogData.Equip_Code = alarmInfo.Equip_Code; - alarmLogData.Alarm_ID = alarmInfo.Alarm_ID; - alarmLogData.Alarm_OccurTime = DateTime.Now.ToString(); - alarmLogData.Alarm_ClearTime = String.Empty; - alarmLogData.Alarm_Status = 1; - alarmLogData.Alarm_GUID = Guid.NewGuid().ToString().ToUpper(); - - Alarm.AlarmHelper.InsertAlarmLogData(alarmLogData); - Global.PublicVar.Instance.AlarmStrList.Add(alarmInfo.AlarmName); - Global.PublicVar.Instance.isFlashFlag = true; - Global.PublicVar.Instance.isFlashFlagExtend = true; - } - - } - - /// - /// 报警灯控制 - /// - /// 是否报警 - private void AlarmLight(bool flag) - { - // if(flag) - // { - // //打开报警灯:FIRST 关闭绿灯 SECOND 打开红灯 - // doControl.DOControl(DoUtils.enumInfo.DOName.Green, DoUtils.enumInfo.DOOnOff.Off); - // doControl.DOControl(DoUtils.enumInfo.DOName.Red, DoUtils.enumInfo.DOOnOff.On); - // } - // else - // { - // // 关闭报警灯:FIRST 打开红灯 SECOND 关闭绿灯 - // doControl.DOControl(DoUtils.enumInfo.DOName.Red, DoUtils.enumInfo.DOOnOff.Off); - // doControl.DOControl(DoUtils.enumInfo.DOName.Green, DoUtils.enumInfo.DOOnOff.On); - // } - } - } -} +// using DevExpress.Xpo.DB; +// using FastReport.Export.Dbf; +// using HslCommunication; +// using Mesnac.Action.ChemicalWeighing.Entity; +// using Mesnac.Codd.Session; +// using Mesnac.DoUtils; +// using Mesnac.PlcUtils; +// using System; +// using System.Collections.Generic; +// using System.Data; +// using System.Linq; +// using System.Text; +// using System.Threading; +// using static DevExpress.Xpo.Helpers.AssociatedCollectionCriteriaHelper; +// +// namespace Mesnac.Action.ChemicalWeighing.FinishBatch.SaveHelper +// { +// public class AlarmSaveHelper +// { +// /// +// /// 报警保存事件定义 +// /// +// // public event EventHandler OnAlarmSave; +// // public event EventHandler OnAlarmSaveExtend; +// public object sender = null; +// public object senderExtend = null; +// private int WordLength = 16; //定义字长 +// +// // private PlcBusiness plcBusiness = PlcBusiness.Instance; +// +// // private DoControl doControl = DoControl.Instance; +// +// private static readonly Lazy lazy = new Lazy(() => new AlarmSaveHelper()); +// +// public static AlarmSaveHelper Instance +// { +// get +// { +// return lazy.Value; +// } +// } +// +// private AlarmSaveHelper() { } +// +// /// +// /// 保存报警信息 +// /// +// public void Save() +// { +// List _alarmInfoList = Cache.CacheHelper.AlarmInfoList; +// List _alarmBlockWordList = Cache.CacheHelper.BlockWordList; +// ICSharpCode.Core.LoggingService.Debug("报警参数-实时刷新自动保存报警..."); +// +// #region 读取PLC的报警数据 原方法 Delete By wenjy 2023-08-07 17:10:07 +// //foreach (Entity.AlarmInfo info in _alarmInfoList) +// //{ +// // Int16[] buff = null; +// // if (BasePlcHelper.Instance.PlcRead(info.AlarmPLC, info.AlarmBlock, info.Start, info.Length, out buff)) +// // { +// // foreach (Entity.SimpleAlarmInfo sai in _alarmBlockWordList) +// // { +// // if (sai.AlramPLC == info.AlarmPLC && sai.AlarmBlock == info.AlarmBlock) //匹配数据块 +// // { +// // sai.AlarmData = buff[sai.AlarmAddress - info.Start]; //对起始字偏移,为当前字的报警值 +// // sai.AlarmData = Mesnac.Basic.DataProcessor.Swap(sai.AlarmData); //注意:西门子PLC需要高低位转换 +// // } +// // } +// // } +// // else +// // { +// // ICSharpCode.Core.LoggingService.Warn(String.Format("从PLC读取报警数据失败:PLC={0},Block={1},Start={2},Len={3}", info.AlarmPLC, info.AlarmBlock, info.Start, info.Length)); +// // } +// +// //} +// +// #endregion +// +// #region 保存报警数据 原方法 Delete By wenjy 2023-08-07 18:05:06 +// +// //foreach (Entity.SimpleAlarmInfo sai in _alarmBlockWordList) +// //{ +// // int[] binaryAlarmData = Mesnac.Basic.DataProcessor.ParseBinaryValue(sai.AlarmData, WordLength); +// // for (int i = 0; i < WordLength; i++) +// // { +// // if (sai.IsSaveAlarm[i] == true && binaryAlarmData[i] == 0) +// // { +// // //更新报警状态 +// // Entity.PmtAlarmInfo alarmInfo = Cache.CacheHelper.GetPmtAlarmInfoFromCache(sai.AlramPLC, sai.AlarmBlock, sai.AlarmAddress, i); +// // if (alarmInfo != null) +// // { +// // Alarm.AlarmHelper.UpdateAlarmLogData(alarmInfo.Alarm_ID,DateTime.Now.ToString()); +// // //清除显示的报警列表信息 +// // if(Global.PublicVar.Instance.AlarmStrList.Exists(x => x == alarmInfo.AlarmName)) +// // { +// // Global.PublicVar.Instance.AlarmStrList.Remove(alarmInfo.AlarmName); +// // Global.PublicVar.Instance.isFlashFlag = true; +// // Global.PublicVar.Instance.isFlashFlagExtend = true; +// // } +// // } +// // } +// // if (binaryAlarmData[i] == 0) +// // { +// // sai.IsSaveAlarm[i] = false; +// // } +// // if (sai.IsSaveAlarm[i] == false && binaryAlarmData[i] == 1) +// // { +// // sai.IsSaveAlarm[i] = true; +// // //数据保存 +// // Entity.PmtAlarmInfo alarmInfo = Cache.CacheHelper.GetPmtAlarmInfoFromCache(sai.AlramPLC, sai.AlarmBlock, sai.AlarmAddress, i); +// // if (alarmInfo != null) +// // { +// // Entity.LR_Alarmlog alarmLogData = new Entity.LR_Alarmlog(); +// // alarmLogData.Equip_Code = alarmInfo.Equip_Code; +// // alarmLogData.Alarm_ID = alarmInfo.Alarm_ID; +// // alarmLogData.Alarm_OccurTime = DateTime.Now.ToString(); +// // alarmLogData.Alarm_ClearTime = String.Empty; +// // alarmLogData.Alarm_Status = 1; +// // alarmLogData.Alarm_GUID = Guid.NewGuid().ToString().ToUpper(); +// // Alarm.AlarmHelper.InsertAlarmLogData(alarmLogData); +// // Global.PublicVar.Instance.AlarmStrList.Add(alarmInfo.AlarmName); +// // Global.PublicVar.Instance.isFlashFlag = true; +// // Global.PublicVar.Instance.isFlashFlagExtend = true; +// // } +// // } +// // } +// //} +// +// #endregion +// +// try +// { +// foreach (Entity.AlarmInfo info in _alarmInfoList) +// { +// string address = $"DB{info.AlarmBlock}.DBX{info.AlarmWord}.{info.AlarmBit}"; +// // OperateResult result = plcBusiness.readBoolValue(address); +// // ICSharpCode.Core.LoggingService.Debug(string.Format("{0}读取{1}", address, result.IsSuccess == true ? $"成功;读取结果:{result.Content}" : "失败")); +// // if (result.IsSuccess == true) +// // { +// // if (result.Content) +// // { +// // AlarmLogicalProcessing(_alarmBlockWordList, info); +// // } +// // } +// // AlarmLight(result.Content); //控制报警灯 True红灯;False绿灯 +// } +// +// #region 触发事件 +// +// // if (OnAlarmSave != null && Global.PublicVar.Instance.isFlashFlag) +// // { +// // OnAlarmSave(sender, System.EventArgs.Empty); +// // } +// // if (OnAlarmSaveExtend != null && Global.PublicVar.Instance.isFlashFlagExtend) +// // { +// // OnAlarmSaveExtend(senderExtend, System.EventArgs.Empty); +// // } +// +// #endregion +// } +// catch (Exception ex) +// { +// ICSharpCode.Core.LoggingService.Error(String.Format("AlarmSaveHelper逻辑异常:{0}", ex.Message), ex); +// } +// } +// +// /// +// /// 报警逻辑处理 +// /// +// /// +// /// +// private void AlarmLogicalProcessing(List _alarmBlockWordList, Entity.AlarmInfo info) +// { +// if(_alarmBlockWordList != null) +// { +// foreach (Entity.SimpleAlarmInfo sai in _alarmBlockWordList) +// { +// if (sai.AlramPLC == info.AlarmPLC && sai.AlarmBlock == info.AlarmBlock && sai.AlarmBit == info.AlarmBit) //匹配数据块 +// { +// sai.AlarmData = 1; //对起始字偏移,为当前字的报警值 +// +// Entity.PmtAlarmInfo alarmInfo = Cache.CacheHelper.GetPmtAlarmInfoFromCache(sai.AlramPLC, sai.AlarmBlock, sai.AlarmAddress, Convert.ToInt32(sai.AlarmBit)); +// if (alarmInfo != null) +// { +// UpdateAlarmLogData(alarmInfo); //更新报警状态 +// InsertAlarmLogData(alarmInfo); //保存报警信息 +// } +// } +// } +// } +// } +// +// /// +// /// 更新报警状态 +// /// +// /// +// private void UpdateAlarmLogData(Entity.PmtAlarmInfo alarmInfo) +// { +// if (alarmInfo != null) +// { +// Alarm.AlarmHelper.UpdateAlarmLogData(alarmInfo.Alarm_ID, DateTime.Now.ToString()); +// //清除显示的报警列表信息 +// if (Global.PublicVar.Instance.AlarmStrList.Exists(x => x == alarmInfo.AlarmName)) +// { +// Global.PublicVar.Instance.AlarmStrList.Remove(alarmInfo.AlarmName); +// Global.PublicVar.Instance.isFlashFlag = true; +// Global.PublicVar.Instance.isFlashFlagExtend = true; +// } +// } +// } +// +// /// +// /// 保存报警信息 +// /// +// /// +// private void InsertAlarmLogData(Entity.PmtAlarmInfo alarmInfo) +// { +// if (alarmInfo != null) +// { +// //保存报警信息 +// Entity.LR_Alarmlog alarmLogData = new Entity.LR_Alarmlog(); +// alarmLogData.Equip_Code = alarmInfo.Equip_Code; +// alarmLogData.Alarm_ID = alarmInfo.Alarm_ID; +// alarmLogData.Alarm_OccurTime = DateTime.Now.ToString(); +// alarmLogData.Alarm_ClearTime = String.Empty; +// alarmLogData.Alarm_Status = 1; +// alarmLogData.Alarm_GUID = Guid.NewGuid().ToString().ToUpper(); +// +// Alarm.AlarmHelper.InsertAlarmLogData(alarmLogData); +// Global.PublicVar.Instance.AlarmStrList.Add(alarmInfo.AlarmName); +// Global.PublicVar.Instance.isFlashFlag = true; +// Global.PublicVar.Instance.isFlashFlagExtend = true; +// } +// +// } +// +// /// +// /// 报警灯控制 +// /// +// /// 是否报警 +// private void AlarmLight(bool flag) +// { +// // if(flag) +// // { +// // //打开报警灯:FIRST 关闭绿灯 SECOND 打开红灯 +// // doControl.DOControl(DoUtils.enumInfo.DOName.Green, DoUtils.enumInfo.DOOnOff.Off); +// // doControl.DOControl(DoUtils.enumInfo.DOName.Red, DoUtils.enumInfo.DOOnOff.On); +// // } +// // else +// // { +// // // 关闭报警灯:FIRST 打开红灯 SECOND 关闭绿灯 +// // doControl.DOControl(DoUtils.enumInfo.DOName.Red, DoUtils.enumInfo.DOOnOff.Off); +// // doControl.DOControl(DoUtils.enumInfo.DOName.Green, DoUtils.enumInfo.DOOnOff.On); +// // } +// } +// } +// }