Расчет характеристик выходных сигналов электрических цепей
Вычисление значения входного и выходного сигналов в n-равноотстоящих точках, вывод на экран таблицы. Структура программы: модули, список идентификаторов функций, интерфейс. Исходный код программы. Проверка расчетов в Maxima и построение графиков.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 14.07.2012 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Оглавление
1. Постановка задачи
2. Исходные данные
3. Анализ поставленной задачи
4. Структура программы
4.1 Модули программы
4.2 Список идентификаторов
4.3 Список функций и их назначения
4.4 Интерфейс программы
5. Исходный код программы
6. Проверка расчетов в Maxima и построение графиков
Выводы
1. Постановка задачи
В данной работе требуется написать программу, с помощью которой можно выполнить следующие действия:
Вычисление значения входного и выходного сигналов в n-равноотстоящих точках.
Вывод на экран таблицы со значениями входного и выходного сигналов.
Запись результатов вычислений на диск.
Чтение и использование рабочего набора из файла.
Проверка полученных значений в Maxima и построение графиков Uвх(t) и Uвых(t).
2. Исходные данные
Имеется электрическая цепь, на вход которой подается определенный сигнал Uвх. Необходимо по заданному входному сигналу определить величину Uвых.
Рис. 1
3. Анализ поставленной задачи
В данной задаче входной сигнал задается графически. График состоит из трех прямых. Рассмотрев каждую по отдельности и подставив значения из контрольного расчета, можно составить формулу для расчета Uвх(t):
Подставив значения из контрольного расчета в формулу для нахождения выходного сигнала, можно получить конечную формулу:
4. Структура программы
4.1 Модули программы
main.c - главный модуль программы. В нем объявляются все переменные и массивы.
function.c - модуль программы, содержащий все остальные функции, необходимые для работы программы.
function.h - заголовочный файл, содержащий прототипы всех функций.
4.2 Список идентификаторов
SIZE- именованная константа, равная 11. Используется для создания массивов.
Array_t[] - массив значений времени, для которых рассчитываются сигналы.
Array_U_Unput[] - массив значений входного сигнала.
Array_U_Output[] - массив значений выходного сигнала.
T_end - конечный момент времени.
T_start - начальный момент времни.
U_verh - переменная верхней границы фонового режима.
U_niz - переменная нижней границы фонового режима.
dt_t - переменная приращения времени.
dt_w - вторая переменная приращения времени.
input_various - переменная выбора условия.
U_top - переменная верхней границы фонового режима по напряжению.
U_down - переменная нижней границы фонового режима по напряжению.
File - указатель на файл.
4.3 Список функций и их назначения
int main() - главная функция программы.
void hello() - функция, читающая приветственное сообщение из файла.
int menu() - функция, отображающая на экране меню и возвращающая номер выбранного пункта в программу.
double Get_U_input (double t) - функция расчета входного напряжения по заданному значению времени.
double Get_U_output (double U_input) - функция расчета выходного напряжения по заданному значению входного напряжения.
int input_various -Функция реализующая возможность множественного выбора выполнения программы.
void arrays_create - функция создания массивов.
void table_output - функция вывода таблицы с результатами выполнения основной задачи.
void file_output- функция записи файла.
void file_input - Функция чтения значений начального и конечного времени из файла.
void output_spec - функция вывода результатов дополнительного задания.
void clean () - функция очистки экрана.
4.4 Интерфейс программы
Работа с программой осуществляется через меню. В нем имеются 6 пунктов:
Vibor deistviya
1. Vvod peremennih - ввод переменных для выполнения задания.
2. Sozdanie massivov - создание массивов значений времени, входного и выходного сигналов.
3. Vivod tablizi osnovnoy chasty - вывод таблицы значений основной части программы.
4. Vivod znacheniy dop.zadaniya - вывод значений дополнительной части программы.
5. Zapis rezultatov v file - запись результатов в файл.
6. Chtenie rezultatov iz faila - чтение значений для выполнения программы из файла.
7. EXIT
5. Исходный код программы
functions.h
double Get_U_input (double t);
double Get_U_output (double U_input);
double ask_dt (int SIZE);
int input_various ();
void arrayscreate (int SIZE, double array_t[],double array_in[],double array_out[], double dt);
void table_output (int SIZE,double arr_name_t[],double arr_name_in[],double arr_name_out[]);
void file_input (int SIZE,double arr_name_t[],double arr_name_in[],double arr_name_out[]);
void file_output (int SIZE,double arr_name_t[],double arr_name_in[],double arr_name_out[]);
void zadniy_front ();
menu.h
int get_entry();
main.c
#include <stdio.h>
#include <stdlib.h>
#include "functions.h"
#include "menu.h"
#define SIZE 50
#define t_start 0.0
#define t_end 100.0
#define EXIT_CODE 7
int main() {
system("clear");
double array_t[SIZE],array_in[SIZE],array_out[SIZE];
double dt;
int entry;
while ((entry=get_entry())!=EXIT_CODE)
{
switch(entry)
{
case 1:
dt = ask_dt (SIZE);
break;
case 2:
arrays_create (SIZE,array_t,array_in,array_out,dt);
break;
case 3:
table_output (SIZE,array_t,array_in,array_out);
break;
case 4:
zadniy_front();
break;
case 5:
file_output (SIZE,array_t,array_in,array_out);
break;
case 6:
file_input (SIZE,array_t,array_in,array_out);
break;
}
}
return 0;
}
function.c
#include <stdio.h>
#include <stdlib.h>
double Get_U_input (double t) {
system("clear");
if ((t<-3) || (t>4))
return 0;
else if ((t>=-3) && (t<0))
return ((-100/3)*t - 100);
else return (25*t - 100);
}
double Get_U_output (double U_input) {
system("clear");
if (U_input > 0)
return 0;
else if ((U_input<=0) && (U_input > -10))
return (10*U_input);
else return -100;
}
double ask_dt (int SIZE){
system("clear");
double t_end, t_start, dt_w;
printf ("vvedite konechnoe znachenie");
scanf ("%lf",&t_end);
printf ("vvedite nachalnoe znachenie");
scanf ("%lf",&t_start);
dt_w = 0;
dt_w = (t_end - t_start) / (double) (SIZE - 1);
return dt_w;
}
int input_various (){
system("clear");
int name;
printf ("bil li vipolnen vvod peremennih?\n");
printf ("esli da , najmite 2, esli net najmite 1\n");
scanf ("%d",&name);
return name;
}
void arrays_create (int SIZE, double array_t[],double array_in[],double array_out[], double dt) {
system("clear");
double dt_t, t_start;
int i;
printf ("vvedite nachalnoe znachenie");
scanf ("%lf",&t_start);
if (input_various () == 1)
dt_t = ask_dt (SIZE);
else
dt_t = dt;
for (i=0;i<SIZE;i++){
array_t[i] = t_start + i*dt_t;
}
for (i=0;i<SIZE;i++){
array_in[i]= Get_U_input (array_t[i]);
}
for (i=0;i<SIZE;i++){
array_out[i] = Get_U_output (array_in[i]);
}
}
void table_output (int SIZE,double arr_name_t[],double arr_name_in[],double arr_name_out[]) {
system("clear");
int i;
printf (" Vremya || U vhodnoe || U vihodnoe\n ");
for (i=0;i<SIZE;i++){
printf (" %11f || %11f || %11f\n ",arr_name_t[i],arr_name_in[i],arr_name_out[i]);
}
printf ("_________________________________________________\n");
printf (" vremya || U_vhodnoe || U_vihodnoe \n\n\n ");
}
void file_output (int SIZE,double arr_name_t[],double arr_name_in[],double arr_name_out[]) {
system("clear");
FILE * file = fopen ("data.csv", "w");
if (file == NULL) {
printf ("Oshibka zapisi v fail.\n");
return;
}
int i;
fprintf (file, "Vremya,U in, U out\n");
for (i=0;i<SIZE;i++)
fprintf (file, "%lf,%lf,%lf\n",arr_name_t[i],arr_name_in[i],arr_name_out[i]);
fclose (file);
}
void file_input (int SIZE,double arr_name_t[],double arr_name_in[],double arr_name_out[]) {
system("clear");
FILE * file = fopen ("data.csv", "r");
if (file == NULL) {
printf ("Fail data.csv ne naiden!\n");
return;
}
char c;
while ((c = fgetc (file)) != '\n')
;
int i;
for (i = 0; i < SIZE; i++)
fscanf (file, "%lf,%lf,%lf", &arr_name_t[i], &arr_name_in[i], &arr_name_out[i]);
fclose (file);
}
void zadniy_front () {
system("clear");
double m1,m2;
m1 = 0.1;
m2 = 0.9;
double t1,t2,t3,t4;
double k1 = 100/3;
double k2 = 25;
t1 = 100*m1/k1;
t2 = 100*m2/k1;
t3 = 100*m1/k2;
t4 = 100*m2/k2;
double time = t1 + (3 - t2) + t3 + (4 - t4);
printf ("dlitelnost zadnego fronta ravna %lf \n\n",time);
}
menu.c
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "menu.h"
#define EXIT_CODE 7
int get_entry()
{
int entry=0;
printf ("Vibor deistviya\n");
printf ("%10d %-50s\n",1, "Vvod peremennih");
printf ("%10d %-50s\n",2, "sozdanie massivov");
printf ("%10d %-50s\n",3, "Vivod tablizi osnovnoy chasty");
printf ("%10d %-50s\n",4, "Vivod znacheniy dop.zadaniya");
printf ("%10d %-50s\n",5, "zapis rezultatov v file");
printf ("%10d %-50s\n",6, "chtenie parametrov iz faila");
printf ("%10d %-50s\n",EXIT_CODE, "EXIT");
printf("Vash vibor:");
scanf("%d%*c",&entry);
while (entry <1 || entry>EXIT_CODE)
{
printf("Vibor tol'ko ot 1 do %d\n",EXIT_CODE);
printf("Vash vibor:");
scanf("%d%*c",&entry);
}
return entry;
}
6. Проверка расчетов в Maxima и построение графиков
Проверка в системе Maxima будет проведена с помощью записи формул непосредственно в саму систему. Т.е. значения входных и выходных сигналов будут рассчитываться непосредственно в Maxima.
выходной сигнал программа код
Рис. 2
Рис. 3
Рис. 4
Выводы
Как мы видим из графиков, значения, получившиеся в составленной программе и в Maxima, совпадают. Соответственно можно сделать вывод, что написанная в данной курсовой работе программа проводит вычисления верно, а значит, составлена правильно.
Размещено на Allbest.ru
Подобные документы
Приведение выходного сигнала к аналитическому вид. Программа расчёта характеристик выходного сигнала электрической цепи. Таблица идентификаторов и описаний пользовательских подпрограмм. Построение графиков по массивам входного и выходного сигналов.
контрольная работа [594,2 K], добавлен 28.09.2012Процедура формирования массивов отсчетов входного и выходного сигналов и времени; вычисление величины заданной характеристики выходного сигнала: функция нахождения длительности импульса; организация текстовых файлов; построение графиков в системе MathCad.
курсовая работа [75,9 K], добавлен 28.09.2012Разработка проектов на языке программирования высокого уровня. Составление алгоритма решения. Определение длительности переднего фронта входного, выходного сигнала. Работа с дисковыми файлами. Представление программы в виде иерархической структуры блоков.
курсовая работа [163,2 K], добавлен 28.05.2015Функции формирования массива времени. Формирование массива входного напряжения, массива выходного напряжения. Функция вывода таблицы, расчета заданной точности, вывода титульного листа. Запись в файл массива времени. Блок–схема и текст программы.
курсовая работа [155,6 K], добавлен 22.04.2012Сущность понятия "комбинаторика". Программа формирования перестановок, сочетаний, размещений с выводом результатов на экран дисплея. Алгоритм программы, написанной на языке Паскаль. Список идентификаторов переменных программы. Список процедур программы.
лабораторная работа [19,8 K], добавлен 27.07.2010Вычисление значения функции с помощью программирования. Рабочий набор исходных данных. Таблица идентификаторов, текст программы, контрольный расчет. Подключение модуля, объявление константы и переменных вещественного типа. Шаг изменения аргумента.
контрольная работа [118,4 K], добавлен 28.09.2012Анализ и описание алгоритма. Основные характеристики выбранного компьютера, программных сред (операционная система и среда программирования). Описание компонентов и интерфейса программы, а также модулей, процедур и функций. Вызов и загрузка программы.
курсовая работа [1,3 M], добавлен 26.04.2015Модель для изучения принципа роботы интегратора в разных режимах. Примеры осциллограмм электрических входных и выходных сигналов. Схема модели, сделанная при помощи Transfer Function, Zero-Pole и State Space. Построение графика передаточной функции.
лабораторная работа [309,7 K], добавлен 28.08.2015Система гиперболических дифференциальных уравнений в частных производных. Таблица идентификаторов для программы. Реализация программы на языке С++. Исходный код программы для вывода в среде MATLAB. Тестовые примеры для программы, реализующей явную схему.
курсовая работа [1,2 M], добавлен 19.03.2012Разработка алгоритма и написание программы на языке Turbo Pascal. Построение электронных таблиц, отражающих расчеты за услуги фирмы. Вычисление значения функций и построение их графиков в Excel в одной системе координат. Порядок создания Web-страниц.
курсовая работа [1,9 M], добавлен 18.12.2012