Приведение входного сигнала к аналитическому виду
В рассматриваемом примере курсовой работы входной сигнал Uвх(t) задан в виде графика (рис. 2). В этом случае необходимо перейти от графика к аналитическому выражению. Из графика видно, что Uвх(t) имеет два линейных участка. Поэтому аналитическая запись Uвх(t) будет иметь вид
Для определения величин
Решая эти уравнения, получим для начального участка графика:
Составим аналогичную систему уравнений для второго участка графика, находим:
Подставляя значения
В результате такого перехода окончательно имеем:
Временной интервал наблюдения сигнала ограничен [tнач, tкон]. Для организации массива входных отсчетов сигнала необходимо этот временной интервал разбить на некоторое определенное конечное число точек N, для каждой из которых будет вычислено значение отсчета входного сигнала. ЗАМЕЧАНИЕ: Массив отсчетов выходного сигнала должен быть в дальнейшем получен из значений выходного сигнала в тех же самых дискретных точках того же самого временного интервала. Полный текст программы, реализующий решение курсовой работы для варианта А=00, Б=00, В=00, приведен на рис. 3. Описание идентификаторов, использованных при решении поставленной задачи, приведено в табл. 1. Описание пользовательских подпрограмм приведено в табл. 2.
program kurs_1; (Программа расчета характеристик выходного сигнала электрической цепи) uses Crt; {подключение модуля Crt} const maxind=160; type ArrayType=array [1..maxind] of real; {описание глобальных параметров} {-----------------------------------------------------------------------------------------------------------} {Процедура ввода исходной информации}
procedure DATA (var n : integer; var kl : byte; var tn, tm, tk, Um, Uin2: real); Begin writeln (`Введите нужное количество отсчетов сигнала`); write (`n=`); readln (n); writeln (`Введите признак kl = 1, если хотите вывести результат на монитор`) writeln (`или признак kl = 0, если хотите записать результаты в файлы f1 и f2`); write (`kl =`); readln (kl); writeln (`Введите ваши исходные данные`); writeln (`Начальный момент наблюдения входного сигнала`); write (`tn=`); readln (tn); write (`Момент времени, разделяющий две ветви алгоритма`); writeln (`расчета входного сигнала`); write (`tm =`); readln (tm); writeln (`Конечный момент времени наблюдения входного сигнала`); write (`tk =`); readln (tk); writeln (Значение входного напряж. соответствующего моменту времени tm`); write (`Um =`); readln (Um); writeln (Заданный параметр передаточной характеристики`); write (`Uin2=`); readln (Uin2); end; {of procedure DATA} {-----------------------------------------------------------------------------------------------------------------------} {Описание процедуры формирования массива входных отсчетов} procedure UIN (n : integer; kl : byte; tn, tm, tk, Um : real; var uin : Arraytype); {список формальных параметров} var t, a, b, del: real; i: integer; begin t:=tn; del:=(tk-tn)/(n-1); a:=um/(tm-tn); b:=um/(tk-tm); for i:=1 to n do begin if t>tm then uin[i]:=b*(tk-t) else uin[i]:=a*(t-tn); t:=t+del; end; end; {of procedure UIN1} {----------------------------------------------------------------------------------------------------------------------} {Описание процедуры формирования массва выходных отсчетов}
procedure UOUT1(n : integer; kl : byte; Uin2 : real; uin : Arraytype; var uout : Array Type); var {описание локальных переменных} i: integer; Begin for i:=1 to n do if uin[i]<Uin2 then uout[i]:=4 else uout[i]:=(uin[i]-1)*(uin[i]-1); end; {of procedure UOUT1} {--------------------------------------------------------------------------------------------------------------------} {Описание функции нахождения максимальнго значения выходного сигнала}
function MAXI(n : integer; uout : Array Type):real: var max: real; i: integer; begin max:=uout[i]; for i:=2 to n do if uout[i]>max then max:=uout[i]; maxi:=max; end; {of function MAXI} {--------------------------------------------------------------------------------------------------------------------} {Описание процедуры записи массивов входного и выходного сигналов} {на диск в файлы с именами f1.prn и f2.prn}
procedure WRITEINFO(n : integer; uin, uout: Array Type); var f1, f2 : text; I : integer; begin assign(f1, `f1.prn`); {связывание и открытие файлов} assign(f2, `f2.prn`); rewrite(f1); 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 : Array Type);
var i: integer; begin if kl=1 {признак вывода результатов на экран монитора} then begin writeln(`Отсчеты входного сигнала`): for i:=1 to n do writeln(`uin[`.i.`]=`uin[i]:7:3; {вывод входных отсчетов} writeln(`Отсчеты выходного сигнала`); for i:=1 to n do writeln(`uout[`.i.`]=`,uout[i]:7:3); {вывод вых. Отсчетов} writeln(`Макс. Значение вых. Сигнала=`,MAXI(n,uout):7:3); end else begin writeln; writeln; writeln(`Программа закончила свою работу. Массивы`); writeln(`входных и выходных отсчетов сформированы`); writeln(`и записаны в файлы f1.prn и f2.prn соответственно`); end end; {of procedure REZULT} {---------------------------------------------------------------------------------------------------------------------} var n : integer; kl : byte; {глобальные параметры, напрямую недоступные} tn, tm, tk, Um : real; {ни одной из выше описанных процедур} uin, uout : Array Type;
{----------------------------------------------------------------------------------------------------------------------} BEGIN {of main} Circr; Data(n, kl, tn, tm, tk, Um, Uin2); Uin1 (n, kl, tn, tm, tk, Um, uin); Uout1(n, kl, Uin2, uin, uout); Writeinfo(n, uin, uout); Rezult(n, uin, uout); Readln END. {of main}
Рис 3. Текст программы
Таблица идентификаторов Таблица 1
Таблица описания пользовательских подпрограмм Таблица 2
Пояснения к тексту программы
Предложенная для решения задача разбита на четыре основные части (подзадачи). Каждая из этих частей реализована в виде подпрограммы (процедуры или функции). Ввод исходных данных, необходимых для решения задачи, выделен также в самостоятельную процедуру под именем DATA. В программе предусмотрен вывод результатов решения задачи на экран монитора по желанию пользователя (процедура REZULT). Все подпрограммы разработаны в соответствии с принципом максимальной изоляции данных. Это значит, что любая из подпрограмм описана с использованием только формальных параметров и локальных переменных без ссылок на глобальные переменные, что позволяет сделать подпрограммы в некотором смысле универсальными, а также повысить их надежность за счет устранения их влияния друг на друга.
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... ![]() ©2015-2024 megaobuchalka.com Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (198)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |