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

 

Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича

Факультет вечернего и заочного обучения










КУРСОВАЯ РАБОТА

по дисциплине «Информатика»

на тему:

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


Определяем вариант А=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Конечный момент наблюдения входного сигналаttТекущий момент времениtimeМассив для хранения моментов времениa0, a1, a2a0, 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; Crt; {подключение модуля CRT}

const maxind=160;ArrayType=array[1..maxind] of real;


var {описание глобальных параметров}: integer; {глобальные параметры, напрямую недоступные}: byte; {ни одной из ниже описанных процедур и функций}

a0, a1, a2, tn, tk, a, b, Ui1 : real;, uout, time : ArrayType;


{Процедура ввода исходной информации}

procedure DATA(var n : integer; var kl : byte;a0, a1, a2, tn, tk, a, b, Ui1 : real);

begin('Введите признак kl =1, если хотите вывести результат на

монитор');('или признак kl=0, если хотите записать результаты в файлы f1 и

f2');

write('kl= ');(kl);

writeln('Введите ваши исходные данные');('Количество отсчетов сигнала');

write('n= ');(n);

('Параметры входного сигнала ');

write('a0= ');(a0);('a1= ');(a1);('a2= ');(a2);

writeln('Haчaльный момент наблюдения сигнала');

write('tn= ');(tn);

writeln('Koнeчный момент наблюдения сигнала');

write('tk= ');(tk);


writeln('3аданные параметры передаточной характеристики');

write('a = ');(a);('b = ');(b);('Uвх1= ');(Ui1);

; {of procedure DATA}

сигнал импульс файл график

{---------------------------------------------------------------------}

{Описание процедуры формирования массива входных отсчетов}

procedure UIN1(n : integer;, a1, a2, tn, tk : real;uin, time : Arraytype); {список формальных параметров}

var, del : real; {описание локальных переменных}

i : integer;:= tn;:=(tk-tn)/(n-1);i :=1 to n do[i]:=a0+a1*t+a2*t*t;[i]:=t;:=t+del;; {of procedure UIN1}


{ ------------------------------------------------------------------ }

{Описание процедуры формирования массива выходных отсчетов}

procedure UOUT1(n : integer; a, b, Ui1 : real;: Arraytype; var uout : ArrayType);

var {описание локальных переменных}

i: integer;

begini :=1 to n douin[i]<=Ui1 then uout[i] := a*Ui1+b;uin[i]>Ui1 then uout[i] := a*uin[i]+b;;; {of procedure UOUT1}

{ ----------------------------------------------------- }

{Описание функции нахождения максимального значения выходного

сигнала}

function maxi(n : integer; uout : ArrayType): real;:real; i : integer;

:= uout[1];i :=2 to n douout[i]>maxmax := uout[i];:=max;; {of function maxi}


{---------------------------------------------------------------}

{Описание функции нахождения длительности импульса}

function dlit (n: integer; uout, time : ArrayType): real;t1, t2: real; i: integer; a : real;:= maxi(n, uout)/2;:=time[1] ; t2:= time[n];i:=1 to n do((uout[i-1])<=a) and ((uout[i+1])>=a)t1:=time[i];i:=1 to n do((uout[i-1])>=a) and ((uout[i+1])<=a)t2:=time[i];:=(t2-t1);


end; {of function dlit}


{--------------------------------------------------------------------}

{Описание процедуры записи массивов входного и выходного

сигналов}

{на диск в файлы с именами f1.рrn и f2.prn}

procedure WRITEINFO(n : integer;, uout : ArrayType);,f2 : text;: integer;(f1,'f1.prn'); rewrite(f1); {связывание и открытие файлов}

assign(f2,'f2.prn'); rewrite(f2);

i :=1 to n do(f1,uin[i]:7:3); {запись в файлы}

writeln(f2,uout[i]:7:3);;(f1); {закрытие файлов}

close(f2);; {of procedure WRITEINFO}


{-------------------------------------------------------------------}

{процедура вывода на экран результатов работы программы}

procedure REZULT(n : integer; kl : byte;, uout : ArrayType);i : integer;


beginkl=1 {признак вывода результатов на экран монитора}('Oтсчеты входного сигнала');

for i:=1 to n do('Uвх(' ,i,')=',uin[i]:7:3); {вывод входных отсчетов};

Readln;('Oтсчеты выходного сигнала');

for i:=1 to n do('Uвых(',i,')=',uout[i]:7:3); {вывод вых. отсчетов};;(n, uin, uout); writeln;

writeln('Пporpaммa закончила свою работу. Массивы ');('входных и выходных отсчетов сформированы ');('и записаны в файлы f1.prn и f2.prn соответственно');;('Длительность вых импульса= ', dlit (n, uout, time):7:3);


end; {of procedure REZULT}

{of main};(n, kl, a0, a1, a2, tn, tk, a, b, Ui1 );(n, a0, a1, a2, tn, tk, uin, time );(n, a, b, Ui1, uin, uout);(n, kl, uin, uout);;

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), выбирается так, чтобы среди отсчетов величины U(t) были значения, меньшие и большие UBX1, с тем чтобы проверить расчетные формулы всех участков переходной характеристики. Выберем UBX1=3 B.


Таблица вычислений

назначение набораНабор данныхРучные вычисленияВыч. на ЭВМNtначtконa0a1a2abUвх1tUвх(i)Uвых(i)Uвх(i)Uвых(i)T, cКонтрольный5040111130040412424267673121312134202120211Рабочий90110250.32-5204


Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича Факультет вечернего и заочного обучения

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ