Вход на сайт Навигация по сайту Любить и уважать Бонус-счастливчики
|
Содержимое файла "4 этап РГР информатика.doc" (без форматирования) 4.ПОБУДОВА БЛОК-СХЕМИ ТА РОЗРОБКА ПРОГРАМИ ПРОВЕДЕННЯ РОЗРАХУНКІВ АЧХ ТА ФЧХ ЗВ’ЯЗАНОГО КОНТУРА ДЛЯ ВИПАДКІВ, КОЛИ ТА 4.1 Постановка задачі Задача полягає в розробці програми для розрахунку амплітудно-частотної та фазо-частотної характеристик зв’язаного контуру,параметри якого були визначені у попередніх розділах,для випадків та . Як і у попередньому розділі, використаємо вивід даних у формі таблиці, отже і в цій програмі буде використано оператор циклу. Для реалізації даної програми можна використати програму, розроблену на третьому етапі, попередньо змінивши її код. Зміни полягатимуть у наступному: замість функції розрахунку фактора зв’язку введемо функцію виведення таблиці. В цій функції використаємо виклик функцій розрахунку АЧХ та ФЧХ 4.2 Блок-схема програми Розробимо блок-схему програми, яка реалізує поставлену задачу. Зазначимо,що в блок-схемі будуть використані блоки підпрограм – функцій користувача. Розглянемо блок-схему (рис. 4.1) Рисунок 4.1 – Блок-схема програми Перший блок – початок програми. Цим блоком починається кожна блок-схема. Другий блок – очистка екрана користувача, тобто, перед запуском програми на виконання виконається оператор, який очистить екран користувача від будь-яких символів, які могли бути зображені на ньому. Третій блок – оператор об’явлення змінних. Об’являє змінну для збереження значення фактора зв’язку. Четвертий блок – присвоєння змінній фактора зв’язку критичного значення цього параметра. П’ятий блок – виклик функції виведення таблиці. Шостий - присвоєння змінній фактора зв’язку граничного значення цього параметра, сьомий блок знову викликає функцію таблиці. Восьмим блоком закінчується схема. П’ятий та сьомий блок викликають одну і ту ж функцію, але з різними аргументами. Розглянемо детальніше функцію виведення таблиці, рис. 4.2 Рисунок 4.2 – Функція виводу таблиці Другий блок – об’явлення змінних для збереження значень узагальненої розстройки та значень АЧХ і ФЧХ. Третій блок – вивід перших рядків таблиці. Четвертий блок – запуск цикла, задання змінної цикла. П’ятий та шостий блоки – функції безпосереднього розрахунку АЧХ та ФЧХ (рис. 3.3). Вони розглянуті на попередньому етапі та залишилися без змін. 4.3 Код програми Отже, код даної програми буде трохи зміненим кодом попередньої. В головній функції буде присутній виклик функції Тablica два рази. Аргументом цієї функції є змінна Х, яка зберігає значення фактора зв’язку. Вихідний код програми наведений в додатку Б. При першому виклику функції її аргумент буде мати значення критичного фактора зв’язку, в таблиці будуть виведені відповідні значення характеристик контура. Розглянемо відгук програми (рис. 4.3) Рисунок 4.3 – Перше вікно програми Програма вивела повідомлення про те, який випадок розглядається, та таблицю значень АЧХ та ФЧХ. Після цього виконання програми призупиниться до нажаття будь-якої клавіші. Після нажаття програма знову виведе таблицю значень характеристик контура, але вже для граничного випадку (рис. 4.4) Рисунок 4.4 – Друге вікно програми 3.3 Побудова графіків Побудуємо графіки АЧХ та ФЧХ відповідно відгуку програми. Для цього використаємо пакет MathCad. Отже, необхідно задати п’ять матриць (рис. 4.5): матриця Ksi складається із значень узагальненої розстройки, матриця Аkr складається з відповідних значень АЧХ, розрахованих програмою для критичного випадку, матриця Fkr складається з відповідних значень ФЧХ, розрахованих програмою для критичного випадку, матриці Agr та Fgr складаються із значень АЧХ та ФЧХ відповідно, розрахованих програмою для граничного випадку Рисунок 4.5 – Матриці для розрахунку характеристик контура Побудуємо графіки АЧХ (рис. 4.6) та ФЧХ (рис. 4.7) на основі даних, виведених програмою Рисунок 4.6 – Графік АЧХ На рис. 4.6 зображено графіки АЧХ для критичного (безперервна лінія) та граничного (пунктирна лінія) значень. Рисунок 4.7 – Графік ФЧХ На рис. 4.7 зображено графіки ФЧХ для критичного (безперервна лінія) та граничного (пунктирна лінія) випадків 3.4 Перевірка характеристик Тепер, за допомогою пакета MathCad перевіримо правильність роботи програми. Проведемо розрахунки, які реалізує програма, в пакеті MathCad (рис. 4.8). Отже Рисунок 4.8 – Перевірка роботи програми Як бачимо, розрахунки АЧХ та ФЧХ повністю співпадають з розрахунками в програмі, отже програма працює правильно. ДОДАТОК Б Вихідний код програми проведення розрахунків АЧХ та ФЧХ для випадків, коли та /***********************************************************************/ /* Программа для выполнения 4 части РГР */ /* Работа судента группы РБ-061 Ковтуна Р.Р. */ /* Расчет АЧХ и ФЧХ связаного контура для случаев критического */ /* и граничного фактора связи (Вариант Г) */ /* RGR_4_chast.cpp */ /***********************************************************************/ /*Подключение стандартных библиотек */ #include #include #include /* Прототипы функций пользователя */ void tablica (float); float ACHKH (float , float ); float FCHKH (float , float ); /***********************************************************************/ /* Главная функция */ /***********************************************************************/ int main(void) { clrscr(); /* Очистка экрана перед началом работы программы */ float X; /* Объявление переменной для хранения значения \ фактора связи */ X = 1; /* Присвоение переменной значения */ printf ("\tВывод значений АЧХ и ФЧХ для критического случая\n"); tablica (X); /* Вызов функции прорисовки таблицы */ getch(); X = 2.41; printf ("\tВывод значений АЧХ и ФЧХ для граничного случая\n"); tablica (X); getch (); return 0; } /***********************************************************************/ /* Функция расчета АЧХ */ /***********************************************************************/ float ACHKH (float X, float Ksi) { float A; A = 2*X/(sqrt(pow(1+pow(X,2)-pow(Ksi,2),2)+4*pow(Ksi,2)));/*Расчет АЧХ*/ return A;/* Возврат значения в вызывающую функцию */ } /***********************************************************************/ /* Функция расчета ФЧХ */ /***********************************************************************/ float FCHKH (float X, float Ksi) { float F; F = (M_PI/2)-atan(2*Ksi/(1+pow(X,2)-pow(Ksi,2))); return F; } /***********************************************************************/ /* Функция прорисовки таблицы */ /***********************************************************************/ void tablica (float X) { float Ksi,A,F; printf ("\t\n"); /* Прорисовка шапки\ таблицы */ printf ("\t КСИ АЧХ ФЧХ \n"); printf ("\t\n"); for (Ksi = -4;Ksi <= 4;Ksi = Ksi+0.5) /* Запуск цикла */ /* Задание параметров цикла */ /* Тело цикла */ { A = ACHKH (X,Ksi); F = FCHKH (X,Ksi); if (Ksi < 0) /* Задание условия вывода */ printf ("\t %1.1f %1.3f %1.3f \n",Ksi,A,F); /* Вывод кси\ со знаком "-" (<0) */ else printf ("\t %1.1f %1.3f %1.3f \n",Ksi,A,F); /* Вывод кси\ без знака "-" (>0) */ } printf ("\t\n");/* Прорисовка последней \ строчки таблицы*/ } |
Посетителей: 0, из них зарегестрированных: 0, гостей: 0 Зарегистрированные пользователи: Подробно | Страница сгенерирована за 0.0347 сек. |