Расчет характеристик выходных сигналов электрических цепей

Вычисление значения входного и выходного сигналов в 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

  • Создание приложения для вычисления значений функций и определение суммы этих функций: эскиз формы, таблица свойств объекта, список идентификаторов и непосредственные коды процедур. Результаты вычислений и выводы, проверка работы данной программы.

    лабораторная работа [19,9 K], добавлен 20.10.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.