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);//можно понять нашелся ли в ветвлении метод }
public ESystem(State new_state) { //если система отцифрована успешно if (Digitizer.DigitizeSystem(ref new_state)) { current_state = new_state;//выполняем присвоение state } else//если нельзя отцифровать систему - сообщаем об этом { throw new ArgumentException("Не удалось выполнить отцифровку данной системы"); } }
/// <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("Ошибка при определении параметров системы");//если не удалось даже подготовить к регуляции } }