Расчет на ЭВМ характеристик выходных сигналов электрических цепей
Процедура формирования массивов отсчетов входного и выходного сигналов и времени; вычисление величины заданной характеристики выходного сигнала: функция нахождения длительности импульса; организация текстовых файлов; построение графиков в системе MathCad.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.09.2012 |
Размер файла | 75,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича
Факультет вечернего и заочного обучения
КУРСОВАЯ РАБОТА
по дисциплине «Информатика»
на тему:
Расчет на ЭВМ характеристик выходных сигналов электрических цепей
Определяем вариант А=07; Б=01; В=03. Для этого кода согласно табл. 4-6 задание имеет следующий вид:
Дана нелинейная безинерционная цепь:
Рис. 1. Электрическая цепь
Передаточная характеристика цепи задана в аналитическом виде (код Б=01):
где a=2 B-1, b= -5 B, Uвх1=20 B
На входе этой цепи действует сигнал, заданный аналитически: (код А=07)
,
Рабочий набор исходных данных имеет вид: a0=2 B; a1=5 B/c; a2=0.3 B/c2; tнач = 1 с; tкон = 10 с
Вычислить длительность импульса (код В=03).
Решение задачи состоит из пяти самостоятельных частей:
· формирование массивов отсчетов входного сигнала и времени;
· формирование массива отсчетов выходного сигнала;
· вычисление величины заданной характеристики W выходного сигнала (в данном случае такой характеристикой длительность выходного импульса);
· организация текстовых файлов и запись в них массивов отсчетов входного и выходного сигналов;
· построение графиков входного и выходного сигналов.
Первые четыре части оформляются в виде подпрограмм (процедур или функций). Последняя подзадача - построение графиков - выполняется с помощью интегрированной системы MathCAD.
ЗАМЕЧАНИЕ: ввод исходных данных и вывод результатов решения задачи могут быть оформлены также в виде самостоятельных процедур.
Временной интервал наблюдения сигнала ограничен [tнач, tкон]. Для организации массива входных отсчетов сигнала необходимо этот временной интервал разбить на некоторое определенное конечное число точек N, для каждой из которых будет вычислено значение отсчета входного сигнала.
Массив отсчетов выходного сигнала в дальнейшем получен из значений выходного сигнала в тех же самых дискретных точках того же самого временного интервала.
Полный текст программы, реализующей решение курсовой работы для варианта А=07; Б=01; В=03, приведен ниже.
Описание идентификаторов, использованных при решении поставленной задачи, приведено в табл. 1.
Описание пользовательских подпрограмм приведено в табл. 2.
Таблица 1
Таблица идентификаторов
Обозначение в задаче |
Идентификатор |
Назначение |
|
n |
Текущее значение количества отсчетов входного сигнала |
||
kl |
Признак-ключ, определяющий режим работы. kl=1, если вывод на монитор, kl - любое другое число, например 0, если вывод в файл на диск |
||
UBX(t) |
uin |
Массив для хранения отсчетов входного сигнала |
|
UBЫX(t) |
uout |
Массив для хранения отсчетов выходного сигнала |
|
tнач |
tn |
Начальный момент наблюдения входного сигнала |
|
tкон |
tk |
Конечный момент наблюдения входного сигнала |
|
t |
t |
Текущий момент времени |
|
time |
Массив для хранения моментов времени |
||
a0, a1, a2 |
a0, a1, a2 |
Параметры формулы входного сигнала |
|
del |
Временной интервал между двумя соседними отсчетами входного сигнала |
||
I |
Счетчик цикла |
||
а, b, Uвх1 |
а, b, Ui1 |
Параметры передаточной характеристики |
|
min, max |
Переменные для хранения минимального и максимального значений выходного сигнала |
||
f1, f2 |
Логические имена файлов |
Таблица 2
Таблица описания пользовательских подпрограмм
Подпрограмма |
Входные и выходные параметры |
Назначение |
|
procedure DATA (var n: integer; var kl: byte; var a0, a1, a2, tn, tk, a, b, Ui1: real); |
Все формальные параметры процедуры являются выходными (var -параметры) |
Позволяет ввести с клавиатуры необходимые для решения задачи исходные данные и передать эти данные в другие подпрограммы |
|
procedure UIN1 (n: integer; a0, a1, a2, tn, tk: real; var uin, time: Arraytype); |
n, a0, a1, a2, tn, tk -входные параметры. Используются процедурой при формировании массивов входных отсчетов сигнала и времени, uin, time - выходные var-параметры хранят значения отсчетов входного сигнала и времени |
Процедура формирует массивы отсчетов входного сигнала и времени, которые в дальнейшем будут использованы в других подпрограммах |
|
procedure UOUT1 (n integer; a, b, Ui1 : real; uin: Arraytype; var uout: ArrayType); |
n, a, b, Ui1, uin - входные параметры процедуры, используемые при формировании массива выходных отсчетов сигнала, uout - выходной var-параметр, хранит значения отсчетов выходного сигнала |
Процедура формирует массив отсчетов выходного сигнала, который в дальнейшем может быть использован другими подпрограммами |
|
function dlit (n: integer; uout, time : ArrayType): real; |
n, uout, time - входные параметры значения, с их помощью функция рассчитывает свое единственное значение - длительность выходного импульса |
Функция находит длительность выходного импульса и возвращает его в точку вызова |
|
procedure WRITEINFO (n: integer; uin, uout, time: ArrayType), |
n, uin, uout - входные параметры, которые процедура использует для проведения операции записи массивов входных и выходных сигналов в файлы на диск |
Процедура записывает отсчеты входного и выходного сигналов в нужном формате в файлы f1.prn и f2.prn соответственно |
|
procedure REZULT (n integer; kl: byte; uin, uout: ArrayType); |
n, kl, uin, uout ~ входные параметры, используемые процедурой для вывода результатов на экран монитора |
Выводит результат работы программы на экран монитора, если пользователь ввел с помощью процедуры Data нужное значение признака kl=1 |
Программа расчета характеристик выходного сигнала электрической цепи
program kurs_1;
uses Crt; {подключение модуля CRT}
const maxind=160;
type ArrayType=array[1..maxind] of real;
var {описание глобальных параметров}
n : integer; {глобальные параметры, напрямую недоступные}
kl : byte; {ни одной из ниже описанных процедур и функций}
a0, a1, a2, tn, tk, a, b, Ui1 : real;
uin, uout, time : ArrayType;
{Процедура ввода исходной информации}
procedure DATA(var n : integer; var kl : byte;
var a0, a1, a2, tn, tk, a, b, Ui1 : real);
begin
writeln('Введите признак kl =1, если хотите вывести результат на
монитор');
writeln('или признак kl=0, если хотите записать результаты в файлы f1 и
f2');
write('kl= ');
readln(kl);
writeln('Введите ваши исходные данные');
writeln('Количество отсчетов сигнала');
write('n= ');
readln(n);
writeln('Параметры входного сигнала ');
write('a0= ');
readln(a0);
write('a1= ');
readln(a1);
write('a2= ');
readln(a2);
writeln('Haчaльный момент наблюдения сигнала');
write('tn= ');
readln(tn);
writeln('Koнeчный момент наблюдения сигнала');
write('tk= ');
readln(tk);
writeln('3аданные параметры передаточной характеристики');
write('a = ');
readln(a);
write('b = ');
readln(b);
write('Uвх1= ');
readln(Ui1);
end; {of procedure DATA}
сигнал импульс файл график
{---------------------------------------------------------------------}
{Описание процедуры формирования массива входных отсчетов}
procedure UIN1(n : integer;
a0, a1, a2, tn, tk : real;
var uin, time : Arraytype); {список формальных параметров}
var
t, del : real; {описание локальных переменных}
i : integer;
begin
t := tn;
del:=(tk-tn)/(n-1);
for i :=1 to n do
begin
uin[i]:=a0+a1*t+a2*t*t;
time[i]:=t;
t:=t+del
end;
end; {of procedure UIN1}
{ ------------------------------------------------------------------ }
{Описание процедуры формирования массива выходных отсчетов}
procedure UOUT1(n : integer; a, b, Ui1 : real;
uin : Arraytype; var uout : ArrayType);
var {описание локальных переменных}
i: integer;
begin
for i :=1 to n do
begin
if uin[i]<=Ui1 then uout[i] := a*Ui1+b;
if uin[i]>Ui1 then uout[i] := a*uin[i]+b;
end;
end; {of procedure UOUT1}
{ ----------------------------------------------------- }
{Описание функции нахождения максимального значения выходного
сигнала}
function maxi(n : integer; uout : ArrayType): real;
var
max:real; i : integer;
begin
max := uout[1];
for i :=2 to n do
if uout[i]>max
then max := uout[i];
maxi :=max;
end; {of function maxi}
{---------------------------------------------------------------}
{Описание функции нахождения длительности импульса}
function dlit (n: integer; uout, time : ArrayType): real;
var t1, t2: real; i: integer; a : real;
begin
a:= maxi(n, uout)/2;
t1:=time[1] ; t2:= time[n];
for i:=1 to n do
if((uout[i-1])<=a) and ((uout[i+1])>=a)
then t1:=time[i];
for i:=1 to n do
if((uout[i-1])>=a) and ((uout[i+1])<=a)
then t2:=time[i];
dlit:=(t2-t1);
end; {of function dlit}
{--------------------------------------------------------------------}
{Описание процедуры записи массивов входного и выходного
сигналов}
{на диск в файлы с именами f1.рrn и f2.prn}
procedure WRITEINFO(n : integer;
uin, uout : ArrayType);
var
f1,f2 : text;
i : integer;
begin
assign(f1,'f1.prn'); rewrite(f1); {связывание и открытие файлов}
assign(f2,'f2.prn'); rewrite(f2);
for i :=1 to n do
begin
writeln(f1,uin[i]:7:3); {запись в файлы}
writeln(f2,uout[i]:7:3);
end;
close(f1); {закрытие файлов}
close(f2);
end; {of procedure WRITEINFO}
{-------------------------------------------------------------------}
{процедура вывода на экран результатов работы программы}
procedure REZULT(n : integer; kl : byte;
uin, uout : ArrayType);
var i : integer;
begin
if kl=1 {признак вывода результатов на экран монитора}
then
begin
writeln('Oтсчеты входного сигнала');
for i:=1 to n do
writeln('Uвх(' ,i,')=',uin[i]:7:3); {вывод входных отсчетов};
Readln;
writeln('Oтсчеты выходного сигнала');
for i:=1 to n do
writeln('Uвых(',i,')=',uout[i]:7:3); {вывод вых. отсчетов};
end;
Writeinfo(n, uin, uout); writeln;
writeln('Пporpaммa закончила свою работу. Массивы ');
writeln('входных и выходных отсчетов сформированы ');
writeln('и записаны в файлы f1.prn и f2.prn соответственно');
writeln;
writeln('Длительность вых импульса= ', dlit (n, uout, time):7:3);
end; {of procedure REZULT}
BEGIN {of main}
Clrscr;
Data(n, kl, a0, a1, a2, tn, tk, a, b, Ui1 );
Uin1(n, a0, a1, a2, tn, tk, uin, time );
Uout1(n, a, b, Ui1, uin, uout);
Rezult(n, kl, uin, uout);
Readln;
END. {of main}
Пояснения к тексту программы
Предложенная для решения задача разбита на пять основных частей (подзадач). Каждая из этих частей реализована в виде подпрограммы (процедуры или функции).
Ввод исходных данных, необходимых для решения задачи, выделен также в самостоятельную процедуру под именем DATA. В программе предусмотрен вывод результатов решения задачи на экран монитора по желанию пользователя (процедура REZULT).
Все подпрограммы разработаны в соответствии с принципом максимальной изоляции данных. Это значит, что любая из подпрограмм описана с использованием только формальных параметров и локальных переменных без ссылок на глобальные переменные, что позволяет сделать подпрограммы в некотором смысле универсальными, а также повысить их надежность за счет устранения их влияния дуг на друга.
Процедура формирования массива входных отсчетов
Описание процедуры UIN1 смотри в тексте программы. Пояснения к тексту процедуры UIN1
С помощью процедуры U1N1 формируется массив входных отсчетов в заданных пользователем равноотстоящих точках диапазона наблюдения выходного сигнала.
Описание процедуры помещено в разделе деклараций основной программы. Это описание является «образцом действий», в соответствии с которым данная процедура будет выполняться каждый раз при вызове ее из основной программы. Имя процедуры -UIN1 задано в заголовке процедуры. В круглых скобках перечислен список формальных параметров. Восемь из них являются параметрами значениями, один - параметр-переменная, о чем свидетельствует стоящее перед ним зарезервированное слово var. Использование var-параметра в данном случае необходимо, так как в результате работы процедуры будет сформирован массивы отсчетов входного сигнала, который в дальнейшем необходимо будет передать в другие процедуры. Поэтому после выхода из процедуры UIN1 массив отсчетов входного сигнала должен быть сохранен, без этого невозможна дальнейшая работа других подпрограмм.
В разделе описаний локальных переменных var описаны текущее время t, шаг изменения временного интервала del, вычисляемый по формуле
, i - счетчик цикла.
Раздел описания переменных внутри процедуры является описанием локальных параметров. Эти параметры доступны только внутри той процедуры, где они описаны (в данном случае внутри процедуры UIN1).
Результат работы процедуры UIN1 - сформированные массивы отсчетов входного сигнала и времени.
Процедура формирования массива выходных отсчетов
* Описание процедуры UOUT1 смотри в тексте программы. Пояснения к тексту процедуры UOUT1
Список формальных параметров процедуры UOUT1 содержит входные параметры-значения n, Ui1, Uin, необходимые для расчета и формирования массива выходных отсчетов. По сути эти параметры являются локальными и не сохраняют свои значения после выхода из процедуры; uout - является выходным var-параметром, следовательно, этот параметр сохранит все свои значения и после выхода из процедуры и может быть использован как главной программой, так и другими процедурами.
Результат работы процедуры UOUT1 - сформированный массив отсчетов выходного сигнала.
Функция для нахождения максимального значения выходного сигнала
Описание функции MAXI смотри в тесте программы. Пояснения к тексту функции МАХI.
Имя функции MAXI. Результат работы функции - единственное значение, представляющее максимальное значение выходного сигнала. Этот результат передается в точку вызова функции из основной программы или любой процедуры с помощью имени самой функции MAXI, поэтому в заголовке функции, задан тип этого результата (в данном случае MAXi:real).
Список формальных параметров состоит из входных параметров n и uout. Эти параметры заданы как параметры-значения (отсутствует служебное слово var). После выхода из функции нам понадобится только одно единственное значение - max значение выходного сигнала, которые мы должны были найти в соответствии с заданием, поэтому последним оператором внутри функции стоит оператор присваивания, с помощью которого вычисленное значение максимума выходного сигнала присваивается переменной с именем функции MAXI, значение которого и будет передано затем в точку вызова функции.
Функция нахождения длительности импульса
Описание функции нахождения длительности импульса dlit смотри в тексте программы. Пояснения к тексту функции dlit.
В разделе локальных переменных введены описания t1, t2: real; i: integer; a: real.
В переменной а хранится половина максимального значения выходного напряжения. Путем сравнения текущего значения выходного напряжения определяются моменты времени t1, t2, когда график выходного напряжения пересекает уровень Umax/2 и вычисляется длительность выходного импульса.
Процедура записи массивов входного и выходного сигналов и времени в файлы
Описание процедуры WRITEINFO смотри в тексте программы. Пояснения к тексту процедуры WRITEINFO.
Имя процедуры - WRITEINFO. Список формальных параметров-значений состоит из входных параметров n, uin, uout.
В разделе локальных переменных введены описания трех файловых переменных f1 и f2 типа text. В разделе операторов этим файловым переменным f1 и f2 ставятся в соответствие физические файлы на диске с именами "fl.prn" и "f2.prn" соответственно. Это выполняется с помощью специальной процедуры assign. Имена файлов могут быть любыми, но они должны иметь расширение .рrn, так как в дальнейшем предполагается использование математической системы MathCAD, которая для записи и чтения векторов и матриц использует файлы именно с этим расширением.
После окончания записи в файлы их необходимо закрыть с помощью процедуры close.
Процедура вывода на экран результатов работы программы
Описание процедуры REZULT смотри в тексте программы. Пояснения к тексту REZULT
Список формальных параметров процедуры состоит из входных параметров-значений n, kl, uin, uout. Процедура выводит по определенному признаку результат работы программы на экран монитора.
Главная программа
Мы разбили задачу на ряд более простых самостоятельных подзадач, каждую из которых решали независимо друг от друга, реализовав их с помощью набора подпрограмм. Завершает работу над задачей написание главной программы, которая организует совместную работу всех подпрограмм, вызывая их в необходимой последовательности.
Для расчета выбираем значения исходных данных для следующих величин: a0, a1, a2, tнач, tKOн для входного сигнала и a, b, Uвx1 для передаточной характеристики. Количество расчетных точек N выбираем таким образом, чтобы графики, построенные с помощью MathCAD выглядели гладкими. Достаточно выбрать значение N>15.
Построение графиков с помощью системы MathCad
Контрольный расчет
Для контрольного расчета величины tНач, tкон выбираем из соображений удобства вычислений. Выберем tнач=0 с, tкон=4 c. Выберем количество отсчетов N=5, при этом вычисления величин UBX(t) и UBых(t) выполняются для моментов времени t=0, 1, 2, 3, 4 c.
Значение величин a0=0, а1=1, а2=1, влияющее на входноe напряжениe UBX(t), выбирается так, чтобы среди отсчетов величины UBх(t) были значения, меньшие и большие UBX1, с тем чтобы проверить расчетные формулы всех участков переходной характеристики. Выберем UBX1=3 B.
Таблица вычислений
назначение набора |
Набор данных |
Ручные вычисления |
Выч. на ЭВМ |
||||||||||||||
N |
tнач |
tкон |
a0 |
a1 |
a2 |
a |
b |
Uвх1 |
t |
Uвх(i) |
Uвых(i) |
Uвх(i) |
Uвых(i) |
T, c |
|||
Контрольный |
5 |
0 |
4 |
0 |
1 |
1 |
1 |
1 |
3 |
0 |
0 |
4 |
0 |
4 |
|||
1 |
2 |
4 |
2 |
4 |
|||||||||||||
2 |
6 |
7 |
6 |
7 |
|||||||||||||
3 |
12 |
13 |
12 |
13 |
|||||||||||||
4 |
20 |
21 |
20 |
21 |
1 |
||||||||||||
Рабочий |
90 |
1 |
10 |
2 |
5 |
0.3 |
2 |
-5 |
20 |
4 |
Размещено на Allbest.ru
Подобные документы
Приведение выходного сигнала к аналитическому вид. Программа расчёта характеристик выходного сигнала электрической цепи. Таблица идентификаторов и описаний пользовательских подпрограмм. Построение графиков по массивам входного и выходного сигналов.
контрольная работа [594,2 K], добавлен 28.09.2012Вычисление значения входного и выходного сигналов в n-равноотстоящих точках, вывод на экран таблицы. Структура программы: модули, список идентификаторов функций, интерфейс. Исходный код программы. Проверка расчетов в Maxima и построение графиков.
курсовая работа [1,4 M], добавлен 14.07.2012Разработка проектов на языке программирования высокого уровня. Составление алгоритма решения. Определение длительности переднего фронта входного, выходного сигнала. Работа с дисковыми файлами. Представление программы в виде иерархической структуры блоков.
курсовая работа [163,2 K], добавлен 28.05.2015Функции формирования массива времени. Формирование массива входного напряжения, массива выходного напряжения. Функция вывода таблицы, расчета заданной точности, вывода титульного листа. Запись в файл массива времени. Блок–схема и текст программы.
курсовая работа [155,6 K], добавлен 22.04.2012Разработка программного обеспечения на языке C. Определение сигнала на выходе цепи, формирование его передаточной характеристики. Расчет длительности переднего фронта входного и выходного сигнала. Выбор структуры, отладка и тестирование программы.
курсовая работа [83,0 K], добавлен 26.09.2014Арифметико-логическое устройство. Мультиплексирование как передача различных сигналов по одной линии в разные моменты времени. Дешифрация как преобразование входного двоичного кода в номер выходного сигнала. Оперативное запоминающее устройство (ОЗУ).
тезисы [15,1 K], добавлен 15.03.2009Определение возможностей математического пакета и изучение методов вычисления выражений в Mathcad. Возможности построения графиков функций одной переменной. Просмотр и способы построения графика функции одного аргумента и участков двухмерных графиков.
контрольная работа [384,8 K], добавлен 06.03.2011Изучение основных положений синтаксиса среды MathCAD, правил выполнения расчетов и построения графиков в ней. Построение графиков зависимостей группового времени запаздывания от частоты и амплитудно-частотных характеристик выбранных типов фильтров.
курсовая работа [1,6 M], добавлен 03.01.2022Проведение идентификации модели по схеме МНК. Запись исходной модели в дискретной форме. Сравнение параметров модели и результатов идентификации. Анализ графиков модельного выходного сигнала и оценки выходного сигнала, восстановленных по схеме МНК.
лабораторная работа [461,0 K], добавлен 19.02.2015Использование электрических сигналов в технических системах. Классификация сигналов: непрерывные и дискретные, детерминированные и случайные, периодические, каузальные, финитные, когерентные и ортогональные. Длительность, ширина, объем и база сигнала.
реферат [59,9 K], добавлен 09.07.2009