private void AssignAlarmTexts(AlarmS7UImodel modifiedAlarmData)
        {
            _logger.Info($"Assgning S7 alarm texts.");

            //create list of alarm texts = data passed in constructor. Otained from DB
            List <string> currentTexts = CreateAlarmsList(modifiedAlarmData);

            //clear and initiate instance of all texts
            _listOfAllAlarmTexts = new List <S7AlarmEnabledTextsModel>();

            for (int i = 0; i < _runtimeData.CustomLanguageList.Count; i++)
            {
                //if new alarm, alarm texts are "", but in modification mode, get thse from DB
                string alarmText;
                if (currentTexts.Count < 16)
                {
                    alarmText = "";
                }
                else
                {
                    alarmText = currentTexts[i];
                }

                //add new wlement to list with all texts - not showed in GUI
                _listOfAllAlarmTexts.Add(new S7AlarmEnabledTextsModel()
                {
                    LanguageEnabled = _runtimeData.CustomLanguageList[i].Enabled,
                    LanguageName    = _runtimeData.CustomLanguageList[i].Language,
                    AlarmText       = alarmText,
                    AlarmTextIdex   = i,
                });
            }
        }
        private void AssignAlarmDefinitionData(AlarmS7UImodel modifiedAlarmData)
        {
            _logger.Info($"Assigning S7 alarm definition data.");

            if (modifiedAlarmData == null) //creating new alarm
            {
                AlarmActivated = true;
                AlmTagName     = "";
                AlmDBnumber    = 0;
                AlmByteNumber  = 0;
                AlmBitNumber   = 0;
                AckTagName     = "";
                AckDBnumber    = 0;
                AckByteNumber  = 0;
                AckBitNumber   = 0;
            }
            else //modifying alarm
            {
                AlarmActivated = modifiedAlarmData.AlarmActivated;
                AlmTagName     = modifiedAlarmData.AlarmTagName;
                AlmDBnumber    = modifiedAlarmData.AlarmTagDBnumber;
                AlmByteNumber  = modifiedAlarmData.AlarmTagByteNumber;
                AlmBitNumber   = modifiedAlarmData.AlarmTagBitNumber;
                AckTagName     = modifiedAlarmData.AckTagName;
                AckDBnumber    = modifiedAlarmData.AckTagDBnumber;
                AckByteNumber  = modifiedAlarmData.AckTagByteNumber;
                AckBitNumber   = modifiedAlarmData.AckTagBitNumber;
            }
        }
        private List <string> CreateAlarmsList(AlarmS7UImodel modifiedAlarmData)
        {
            _logger.Info($"Creating list of alarm texts = 16 elements in List.");

            List <string> alarmTexts = new List <string>();

            if (modifiedAlarmData != null)
            {
                alarmTexts.Add(modifiedAlarmData.SysLang1);
                alarmTexts.Add(modifiedAlarmData.SysLang2);
                alarmTexts.Add(modifiedAlarmData.SysLang3);
                alarmTexts.Add(modifiedAlarmData.SysLang4);
                alarmTexts.Add(modifiedAlarmData.SysLang5);
                alarmTexts.Add(modifiedAlarmData.SysLang6);
                alarmTexts.Add(modifiedAlarmData.SysLang7);
                alarmTexts.Add(modifiedAlarmData.UserLang1);
                alarmTexts.Add(modifiedAlarmData.UserLang2);
                alarmTexts.Add(modifiedAlarmData.UserLang3);
                alarmTexts.Add(modifiedAlarmData.UserLang4);
                alarmTexts.Add(modifiedAlarmData.UserLang5);
                alarmTexts.Add(modifiedAlarmData.UserLang6);
                alarmTexts.Add(modifiedAlarmData.UserLang7);
                alarmTexts.Add(modifiedAlarmData.UserLang8);
                alarmTexts.Add(modifiedAlarmData.UserLang9);
            }

            return(alarmTexts);
        }
Esempio n. 4
0
        private int CheckIfAlarmProfileExists(AlarmS7UImodel alarmModel)
        {
            //create instance of alarm profile reader
            AlarmProfileReader reader = new AlarmProfileReader(_realmPRovider);

            //check if alarm profile with this name exists
            return(reader.GetIdOfAlarmProfileOfName(alarmModel.AlarmProfileName));
        }
        private bool SavingDataOfModifiedS7Alarm(AlarmS7UImodel model)
        {
            _logger.Info($"Procedure of sending gathered data about modified alarm, to DB, started.");

            AlarmS7Modifier modifier = new AlarmS7Modifier(_realmProvider);

            return(modifier.ModifySingleS7Alarm(model));
        }
Esempio n. 6
0
        private int CheckIfRecipientsGroupExists(AlarmS7UImodel alarmModel)
        {
            //create instance of SMS reciipents group reader
            SMSrecipientsGroupReader reader = new SMSrecipientsGroupReader(_realmPRovider);

            //check if SMS recipients group with this name exists
            return(reader.GetIdOfGroupOfName(alarmModel.SMSrecipientsGroupName));
        }
Esempio n. 7
0
        public void ModifyS7AlarmAndTexts(int identity)
        {
            if (!_multipleDeletionEnabled && CheckModifyingOrAddingNewAlarmsConditions())
            {
                AlarmS7UImodel model = AlarmsForSelectedS7Connection.Where(x => x.Identity == identity).First();

                DefaultS7AlarmHendlerViewModel ds7ahvm = new DefaultS7AlarmHendlerViewModel(SelectedShortPLCconnection, true, model, _realmProvider, _runtimeData);
                _manager.ShowDialog(ds7ahvm);
                GetAlarmsForS7Connection(SelectedShortPLCconnection.PLCconnectionID);
            }
        }
Esempio n. 8
0
        private string ObtainAlarmProperText(int langID)
        {
            //create instance of alarms reader
            AlarmS7Reader reader = new AlarmS7Reader(_realmProvider);

            //get alarm definition with texts
            AlarmS7UImodel alarmWithTexts = reader.GetSingleAlarmOfS7plcConnectionWithTexts(_alarm.PLCconnectionID, _alarm.Identity);

            //return proper text
            return(GetAlarmProperText(alarmWithTexts, langID));
        }
Esempio n. 9
0
 private bool CheckLanguages(AlarmS7UImodel internalModel)
 {
     if (internalModel.SysLang1 == null || internalModel.SysLang2 == null || internalModel.SysLang3 == null || internalModel.SysLang4 == null ||
         internalModel.SysLang5 == null || internalModel.SysLang6 == null || internalModel.SysLang7 == null || internalModel.UserLang1 == null ||
         internalModel.UserLang2 == null || internalModel.UserLang3 == null || internalModel.UserLang4 == null || internalModel.UserLang5 == null ||
         internalModel.UserLang6 == null || internalModel.UserLang7 == null || internalModel.UserLang8 == null || internalModel.UserLang9 == null)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
        private void AssignWindowData(AlarmS7UImodel modifiedAlarmData)
        {
            _logger.Info($"Assigning properties of window at the window creation.");

            GetListOfActualProfiles();
            GetListOfActualSMSgroups();
            AssignAlarmDefinitionData(modifiedAlarmData);
            AssignAlarmTexts(modifiedAlarmData);
            PopulateListViewWithAlarmTexts();

            //in case of modifying - assign sms recipients group and alarm profile names to selected items in comboboxes
            if (modifiedAlarmData != null)
            {
                SelectedAlarmUrgencyProfile = AlarmUrgencyProfile.Where(x => x.Identity == modifiedAlarmData.AlarmProfileIdentity).First();
                SelectedSMSrecipientsGroup  = SmsRecipientsGroups.Where(x => x.Identity == modifiedAlarmData.SMSrecipientsGroupIdentity).First();
            }
        }
Esempio n. 11
0
        private void AddAlarmToDB(AlarmS7Creator creator, AlarmS7UImodel item, int profileID, int smsGroupID)
        {
            List <string> alarmTexts = new List <string>
            {
                item.SysLang1,
                item.SysLang2,
                item.SysLang3,
                item.SysLang4,
                item.SysLang5,
                item.SysLang6,
                item.SysLang7,
                item.UserLang1,
                item.UserLang2,
                item.UserLang3,
                item.UserLang4,
                item.UserLang5,
                item.UserLang6,
                item.UserLang7,
                item.UserLang8,
                item.UserLang9,
            };

            bool added = creator.AddNewS7Alarm(_plcConnectionID, profileID, smsGroupID, item.AlarmActivated,
                                               item.AlarmTagName, item.AlarmTagDBnumber, item.AlarmTagByteNumber, item.AlarmTagBitNumber, item.AckTagName, item.AckTagDBnumber,
                                               item.AckTagByteNumber, item.AckTagBitNumber, alarmTexts);

            string message;

            if (added)
            {
                message = $"Alarm successfully added to database. PLC connection ID: {_plcConnectionID.ToString()}.";
            }
            else
            {
                message = $"Alarm NOT ADDED to Database.";
            }

            OnSingleImportDone(added, item.AlarmTagName, message, false);
        }
        public void ApplyAndCLose()
        {
            _logger.Info($"Button for applying changes pressed; window mode is: {_windowMode}.");

            bool dataOK = ExecuteDataCorrectnessCheck();

            if (dataOK)
            {
                if (!_windowMode) //new alarm
                {
                    _logger.Info($"Attempt to save new S7 alarm to DB.");

                    bool done = SendDataOfNewS7AlarmToDB();
                    if (!done)
                    {
                        MessageBox.Show($"Error while trying to save new S7 alarm to DB.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                    else
                    {
                        TryClose();
                    }
                }
                else //modify alarm
                {
                    _logger.Info($"Attempt to save modifications of existing S7 alarm. Alarm ID: {_modifiedAlarmData.Identity}.");

                    AlarmS7UImodel model = GatherDataForModifyingExistingS7Alarm();
                    bool           done  = SavingDataOfModifiedS7Alarm(model);
                    if (!done)
                    {
                        MessageBox.Show($"Error while trying to save S7 alarm modifications to DB.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                    else
                    {
                        TryClose();
                    }
                }
            }
        }
        private AlarmS7UImodel GatherDataForModifyingExistingS7Alarm()
        {
            _logger.Info($"Gathering data for modification of existing S7 alarm stated.");

            AlarmS7UImodel outputModel = new AlarmS7UImodel()
            {
                Identity                   = _modifiedAlarmData.Identity,
                PLCconnectionID            = _modifiedAlarmData.PLCconnectionID,
                AlarmProfileIdentity       = SelectedAlarmUrgencyProfile.Identity,
                SMSrecipientsGroupIdentity = SelectedSMSrecipientsGroup.Identity,
                AlarmActivated             = AlarmActivated,
                AlarmTagName               = AlmTagName,
                AlarmTagDBnumber           = AlmDBnumber,
                AlarmTagByteNumber         = AlmByteNumber,
                AlarmTagBitNumber          = AlmBitNumber,
                AckTagName                 = AckTagName,
                AckTagDBnumber             = AckDBnumber,
                AckTagByteNumber           = AckByteNumber,
                AckTagBitNumber            = AckBitNumber,
                SysLang1                   = _listOfAllAlarmTexts[0].AlarmText,
                SysLang2                   = _listOfAllAlarmTexts[1].AlarmText,
                SysLang3                   = _listOfAllAlarmTexts[2].AlarmText,
                SysLang4                   = _listOfAllAlarmTexts[3].AlarmText,
                SysLang5                   = _listOfAllAlarmTexts[4].AlarmText,
                SysLang6                   = _listOfAllAlarmTexts[5].AlarmText,
                SysLang7                   = _listOfAllAlarmTexts[6].AlarmText,
                UserLang1                  = _listOfAllAlarmTexts[7].AlarmText,
                UserLang2                  = _listOfAllAlarmTexts[8].AlarmText,
                UserLang3                  = _listOfAllAlarmTexts[9].AlarmText,
                UserLang4                  = _listOfAllAlarmTexts[10].AlarmText,
                UserLang5                  = _listOfAllAlarmTexts[11].AlarmText,
                UserLang6                  = _listOfAllAlarmTexts[12].AlarmText,
                UserLang7                  = _listOfAllAlarmTexts[13].AlarmText,
                UserLang8                  = _listOfAllAlarmTexts[14].AlarmText,
                UserLang9                  = _listOfAllAlarmTexts[15].AlarmText,
            };

            return(outputModel);
        }
Esempio n. 14
0
        private string GetAlarmProperText(AlarmS7UImodel model, int LangID)
        {
            switch (LangID)
            {
            case 1: return(model.SysLang1);

            case 2: return(model.SysLang2);

            case 3: return(model.SysLang3);

            case 4: return(model.SysLang4);

            case 5: return(model.SysLang5);

            case 6: return(model.SysLang6);

            case 7: return(model.SysLang7);

            case 8: return(model.UserLang1);

            case 9: return(model.UserLang2);

            case 10: return(model.UserLang3);

            case 11: return(model.UserLang4);

            case 12: return(model.UserLang5);

            case 13: return(model.UserLang6);

            case 14: return(model.UserLang7);

            case 15: return(model.UserLang8);

            case 16: return(model.UserLang9);

            default: return("");
            }
        }
        public DefaultS7AlarmHendlerViewModel(PLCconnectionComboBoxModel connectionData, bool windowMode,
                                              AlarmS7UImodel modifiedAlarmData, IRealmProvider realmProvider, IRuntimeData runtimeData)
        {
            _realmProvider = realmProvider;
            _runtimeData   = runtimeData;
            _logger        = NLog.LogManager.GetCurrentClassLogger();

            //assign data of modified alarm
            _modifiedAlarmData = modifiedAlarmData;

            //assing window parameters
            _connectionData = connectionData;
            _windowMode     = windowMode;

            //assign connection name
            ConnectionName = _connectionData.ConnectionName;

            //Assign data of modified alarm(in case of alarm modification)
            AssignWindowData(modifiedAlarmData);

            _logger.Info($"Default S7 alarm handler window created.");
        }
Esempio n. 16
0
 private bool CheckIfAddressesAreAlreadyDefined(AlarmS7Creator creator, AlarmS7UImodel alarmModel)
 {
     return(creator.CheckAdditionPermissions(alarmModel.AlarmTagDBnumber, alarmModel.AlarmTagByteNumber, alarmModel.AlarmTagBitNumber,
                                             alarmModel.AlarmTagString, alarmModel.AckTagDBnumber, alarmModel.AckTagByteNumber, alarmModel.AckTagBitNumber,
                                             alarmModel.AckTagString, _plcConnectionID));
 }
Esempio n. 17
0
        public AlarmS7UImodel Validate(AlarmS7UImodel model)
        {
            //create output model
            AlarmS7UImodel internalModel = model;

            //if there is no error at this point
            if (!model.CanModifyAlarm)
            {
                bool validationCorrect;

                //checking properties values
                validationCorrect = internalModel.Identity >= 1;
                if (validationCorrect)
                {
                    validationCorrect = internalModel.PLCconnectionID >= 1;
                }
                if (validationCorrect)
                {
                    validationCorrect = internalModel.AlarmProfileIdentity >= 1;
                }
                if (validationCorrect)
                {
                    validationCorrect = internalModel.SMSrecipientsGroupIdentity >= 1;
                }
                if (validationCorrect)
                {
                    validationCorrect = internalModel.AlarmTagName != null && internalModel.AlarmTagName != "";
                }
                if (validationCorrect)
                {
                    validationCorrect = internalModel.AlarmTagDBnumber >= 0;
                }
                if (validationCorrect)
                {
                    validationCorrect = internalModel.AlarmTagByteNumber >= 0;
                }
                if (validationCorrect)
                {
                    validationCorrect = internalModel.AlarmTagBitNumber >= 0 && internalModel.AlarmTagBitNumber <= 7;
                }
                if (validationCorrect)
                {
                    validationCorrect = internalModel.AckTagName != null && internalModel.AckTagName != "";
                }
                if (validationCorrect)
                {
                    validationCorrect = internalModel.AckTagDBnumber >= 0;
                }
                if (validationCorrect)
                {
                    validationCorrect = internalModel.AckTagByteNumber >= 0;
                }
                if (validationCorrect)
                {
                    validationCorrect = internalModel.AckTagBitNumber >= 0 && internalModel.AckTagBitNumber <= 7;
                }
                if (validationCorrect)
                {
                    validationCorrect = CheckLanguages(internalModel);
                }

                internalModel.CanModifyAlarm = !validationCorrect;
            }

            return(internalModel);
        }