Esempio n. 1
0
        public static bool DigitizeSystem(ref State system_state)
        {
            bool      flag = false;                       //флаг успешности выполнения
            Digitizer node = new Digitizer(system_state); //конструктор надо дописать по ходу дела...

            //ветвление по типам системы из State
            if (system_state.stationarity)    //если система стационарна
            {
                if (system_state.synchronism) //система синхронная
                {
                    system_state = system_state.isSplainAppr ? node.Digit_Perm_Sync_Splain(ref system_state)
                                                             : node.Digit_Perm_Sync(ref system_state);
                    flag = true;
                }
                else//асинхронная
                {
                    if (Convert.ToInt32(system_state.s) > 1)//с периодическим режимом съёма информации
                    {
                        system_state = system_state.isSplainAppr ? node.Digit_Perm_Async_X_Splain(ref system_state)
                                                                 : node.Digit_Perm_Async_X(ref system_state);
                        flag = true;
                    }
                    if (Convert.ToInt32(system_state.s) < 1)//с периодической выдачей управляющих воздействий
                    {
                        system_state = system_state.isSplainAppr ? node.Digit_Perm_Async_U_Splain(ref system_state)
                                                                 : node.Digit_Perm_Async_U(ref system_state);
                        flag = true;
                    }
                }
            }
            return(flag);//можно понять нашелся ли в ветвлении метод
        }
Esempio n. 2
0
 public ESystem(State new_state)
 {
     //если система отцифрована успешно
     if (Digitizer.DigitizeSystem(ref new_state))
     {
         current_state = new_state;//выполняем присвоение state
     }
     else//если нельзя отцифровать систему - сообщаем об этом
     {
         throw new ArgumentException("Не удалось выполнить отцифровку данной системы");
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Функция построения последовательности обработки системы
 ///diff_state - состояние, содержащее A, B и т.п. для следующего шага
 ///следствия реализации регулятора: diff_state.x[0] - новый х. также для А, В, analogA, analog_B,H,...
 /// </summary>
 /// <param name="diff_state"></param>
 public void next_stage(State diff_state)
 {
     if (Digitizer.DigitizeSystem(ref this.current_state) && Controllability.IsSystemControllability(ref this.current_state) && Observability.IsSystemObservability(ref this.current_state))
     {
         if (!Regulator.MakeRegulation(ref this.current_state, diff_state))
         {
             throw new ArgumentException("Ошибка при регулировании");//если вернули false, то для такой системы нет регулятора
         }
     }
     else
     {
         throw new ArgumentException("Ошибка при определении параметров системы");//если не удалось даже подготовить к регуляции
     }
 }