private static string SaveAlarmOccurencesToDB(S7AlarmDefinition newAlarm) { AlarmOccurencesEventSaver saver = new AlarmOccurencesEventSaver(newAlarm, _realmProvider); saver.SaveAlarmOccurences(); return(saver.GetTextOfSavedAlarm()); }
private List <S7AlarmDefinition> ReadSpecificAlarmsDefinitions(List <int> plcConnectionIDList, List <int> alarmIdentityList) { _logger.Info($"Procedure of obtaining alarms definitiond from DB started. Amount of definitions to read: {plcConnectionIDList.Count}."); if (plcConnectionIDList.Count != alarmIdentityList.Count) { _logger.Error($"Lists of PLC connection ID and alarm identity has different amount of items!"); return(new List <S7AlarmDefinition>()); } else { List <S7AlarmDefinition> outputList = new List <S7AlarmDefinition>(); for (int i = 0; i < alarmIdentityList.Count; i++) { S7AlarmDefinition def = ReadSingleAlarmDefinition(plcConnectionIDList[i], alarmIdentityList[i]); if (def != null) { outputList.Add(def); } } outputList.OrderBy(x => x.Identity); return(outputList); } }
private bool ModifyAlarmDefinition(S7AlarmDefinition alarmDefinition) { try { S7AlarmDefinition def = _realm.All <S7AlarmDefinition>(). Where(x => x.Identity == alarmDefinition.Identity && x.PLCconnectionID == alarmDefinition.PLCconnectionID).ToList().First(); using (var trans = _realm.BeginWrite()) { def.AlarmProfileIdentity = alarmDefinition.AlarmProfileIdentity; def.SMSrecipientsGroupIdentity = alarmDefinition.SMSrecipientsGroupIdentity; def.AlarmActivated = alarmDefinition.AlarmActivated; def.AlarmTagName = alarmDefinition.AlarmTagName; def.AlarmTagDBnumber = alarmDefinition.AlarmTagDBnumber; def.AlarmTagByteNumber = alarmDefinition.AlarmTagByteNumber; def.AlarmTagBitNumber = alarmDefinition.AlarmTagBitNumber; def.AckTagName = alarmDefinition.AckTagName; def.AckTagDBnumber = alarmDefinition.AckTagDBnumber; def.AckTagByteNumber = alarmDefinition.AckTagByteNumber; def.AckTagBitNumber = alarmDefinition.AckTagBitNumber; trans.Commit(); } _logger.Info($"Saving updates for alarm definition with Identty = {alarmDefinition.Identity} successfull."); return(true); } catch (Exception ex) { _logger.Error($"Error while trying to update alarm definition. Error: {ex.Message}."); return(false); } }
private bool DeleteSingleAlarmFromDB(AlarmS7UImodel alarm) { _logger.Info($"Method for deleting definition of single S7 alarm fired. Alarm identity: {alarm.Identity}."); try { S7AlarmDefinition definition = _realm.All <S7AlarmDefinition>(). Where(x => x.Identity == alarm.Identity && x.PLCconnectionID == alarm.PLCconnectionID).ToList().First(); using (var trans = _realm.BeginWrite()) { _realm.Remove(definition); trans.Commit(); } _logger.Info($"S7 alarm definition with ID: {alarm.Identity} deleted successfully."); return(true); } catch (Exception ex) { _logger.Error($"Deleting definition of S7 alarm with ID: {alarm.Identity} failed. Error: {ex.Message}."); return(false); } }
private AlarmDataModel CreateAlarmMemoryModel(S7AlarmDefinition alarm) { AlarmDataModel alarmDef = new AlarmDataModel() { Identity = alarm.Identity, AlarmOccured = false, AlarmAcknowledged = false, SMSsent = false, }; return(alarmDef); }
private AlarmS7UImodel MergeAlarmDefinitionAndAlarmTexts (S7AlarmDefinition alarmDefinition, AlarmLanguagesDefinition alarmTexts) { if (alarmDefinition != null && alarmTexts != null) { //merge those 2 objects into one AlarmS7UImodel outputObject = new AlarmS7UImodel() { Identity = alarmDefinition.Identity, PLCconnectionID = alarmDefinition.PLCconnectionID, AlarmProfileIdentity = alarmDefinition.AlarmProfileIdentity, SMSrecipientsGroupIdentity = alarmDefinition.SMSrecipientsGroupIdentity, AlarmActivated = alarmDefinition.AlarmActivated, AlarmTagName = alarmDefinition.AlarmTagName, AlarmTagDBnumber = alarmDefinition.AlarmTagDBnumber, AlarmTagByteNumber = alarmDefinition.AlarmTagByteNumber, AlarmTagBitNumber = alarmDefinition.AlarmTagBitNumber, AckTagName = alarmDefinition.AckTagName, AckTagDBnumber = alarmDefinition.AckTagDBnumber, AckTagByteNumber = alarmDefinition.AckTagByteNumber, AckTagBitNumber = alarmDefinition.AckTagBitNumber, SysLang1 = alarmTexts.SysLang1, SysLang2 = alarmTexts.SysLang2, SysLang3 = alarmTexts.SysLang3, SysLang4 = alarmTexts.SysLang4, SysLang5 = alarmTexts.SysLang5, SysLang6 = alarmTexts.SysLang6, SysLang7 = alarmTexts.SysLang7, UserLang1 = alarmTexts.UserLang1, UserLang2 = alarmTexts.UserLang2, UserLang3 = alarmTexts.UserLang3, UserLang4 = alarmTexts.UserLang4, UserLang5 = alarmTexts.UserLang5, UserLang6 = alarmTexts.UserLang6, UserLang7 = alarmTexts.UserLang7, UserLang8 = alarmTexts.UserLang8, UserLang9 = alarmTexts.UserLang9, ObjectModified = false, }; return(outputObject); } else { return(null); } }
public static void AddNewAlarmToSend(int profileID, int GroupID, S7AlarmDefinition newAlarm, IRealmProvider realmProvider) { _realmProvider = realmProvider; string text = SaveAlarmOccurencesToDB(newAlarm); SMSsendingModel model = new SMSsendingModel() { AlarmText = text, AlarmProfileID = profileID, AlarmSMSGroupID = GroupID, }; _alarmsToSned.Enqueue(model); }
private AlarmS7UImodel ReadSingleS7DetailedAlarm(int plcConnectionID, int alarmIdentity) { _logger.Info($"Method for obtaining full data of single alarm with PLC connection ID: {plcConnectionID}, and Identity: {alarmIdentity}; fired."); //read alarm definition S7AlarmDefinition alarmDefinition = ReadSingleAlarmDefinition(plcConnectionID, alarmIdentity); //create instance of alarm texts reader AlarmTextsReader reader = new AlarmTextsReader(_realmProvider); //read alarm texts AlarmLanguagesDefinition alarmTexts = reader.GetTextsTorSingleAlarm(alarmIdentity, plcConnectionID); //merge objects into one return(MergeAlarmDefinitionAndAlarmTexts(alarmDefinition, alarmTexts)); }
public static (S7AlarmDefinition, AlarmLanguagesDefinition) DivideToDifferentObjects(AlarmS7UImodel uiModel) { S7AlarmDefinition alarmDefinition = new S7AlarmDefinition() { Identity = uiModel.Identity, PLCconnectionID = uiModel.PLCconnectionID, AlarmProfileIdentity = uiModel.AlarmProfileIdentity, SMSrecipientsGroupIdentity = uiModel.SMSrecipientsGroupIdentity, AlarmActivated = uiModel.AlarmActivated, AlarmTagName = uiModel.AlarmTagName, AlarmTagDBnumber = uiModel.AlarmTagDBnumber, AlarmTagByteNumber = uiModel.AlarmTagByteNumber, AlarmTagBitNumber = uiModel.AlarmTagBitNumber, AckTagName = uiModel.AckTagName, AckTagDBnumber = uiModel.AckTagDBnumber, AckTagByteNumber = uiModel.AckTagByteNumber, AckTagBitNumber = uiModel.AckTagBitNumber, }; AlarmLanguagesDefinition alarmTexts = new AlarmLanguagesDefinition() { Identity = 0, AlarmIdentity = uiModel.Identity, PLCconnectionID = uiModel.PLCconnectionID, SysLang1 = uiModel.SysLang1, SysLang2 = uiModel.SysLang2, SysLang3 = uiModel.SysLang3, SysLang4 = uiModel.SysLang4, SysLang5 = uiModel.SysLang5, SysLang6 = uiModel.SysLang6, SysLang7 = uiModel.SysLang7, UserLang1 = uiModel.UserLang1, UserLang2 = uiModel.UserLang2, UserLang3 = uiModel.UserLang3, UserLang4 = uiModel.UserLang4, UserLang5 = uiModel.UserLang5, UserLang6 = uiModel.UserLang6, UserLang7 = uiModel.UserLang7, UserLang8 = uiModel.UserLang8, UserLang9 = uiModel.UserLang9, }; return(alarmDefinition, alarmTexts); }
private void AnalyzeDataForSingleConnection(int connectionID) { foreach (var item in _alarmsData[connectionID]) { //send new alarm if (item.AlarmOccured && !item.SMSsent) { item.SMSsent = true; S7AlarmDefinition definition = _currentAlarmsList[connectionID].Where(x => x.Identity == item.Identity).First(); AlarmsToSend.AddNewAlarmToSend(definition.AlarmProfileIdentity, definition.SMSrecipientsGroupIdentity, definition, _realmProvider); } //reset SMS sent if (!item.AlarmOccured) { item.SMSsent = false; item.AlarmAcknowledged = false; } } }
public AlarmOccurencesEventSaver(S7AlarmDefinition alarm, IRealmProvider realmProvider) { _realmProvider = realmProvider; _alarm = alarm; }
private void AddSingleAlarmMemory(int connectionID, S7AlarmDefinition alarm) { AlarmDataModel alarmDef = CreateAlarmMemoryModel(alarm); _alarmsData[connectionID].Add(alarmDef); }