Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПОАС_ТР

.pdf
Скачиваний:
25
Добавлен:
05.09.2021
Размер:
680.19 Кб
Скачать

ОТЧЕТ

по выполненному расчетному заданию

по дисциплине «Программное обеспечение автоматизированных систем»

ИССЛЕДОВАНИЕ СИСТЕМ АВТОМАТИЧЕСКОГО РЕГУЛИРОВАНИЯ

1Постановка задачи

1Разработать программную модель системы автоматического регулирования в соответствии со схемой. Произвести тестирование программы. Подготовить ее описание.

2 Задать указанные начальные значения параметров системы и зарегистрировать переходной процесс.

3 Используя некоторый графический редактор, построить в пространстве указанных в задании параметров системы области с различным видом переходного процесса. Для каждой области представить типовой переходной процесс в виде временной диаграммы. Сделать выводы о характере влияния параметров на выходной сигнал системы.

Система автоматического регулирования:

Начальные значения коэффициентов: К1=0.8, К2=2, К3=-0.05, T1 =0.1, T2 =1.0, А=5.0, В=75.0, Δ=0.9с.

Варьируемые коэффициенты: В, К3.

2 Описание разработанной программы

Общее назначение

Программа предназначена для получения значений выходного сигнала САР по заданным параметрам системы и отображения переходного процесса на графике.

Структура

Программа состоит из трех модулей: mmm.py, sar.py, main_sar.py.

Модуль mmm.py включает в себя 5 функций, описывающих отдельные элементы САР. Модуль sar.py включает в себя функцию, описывающую САР. Модуль main_sar.py содержит инструкции, осуществляющие моделирование входного сигнала, выходного сигнала (по вызову функции sar) по заданными пользователем параметрам, вывод полученных значений вместе с соответствующими номерами отсчетов в файл и построение двух графиков: зависимость входного сигнала от времени и зависимость выходного сигнала от времени.

Описание функций

1. Функция summa(v1,v2) имеет 2 входных параметра, возвращает значение – результат сложения двух заданных значений параметров:

def summa(v1,v2):

"""Функция summa(v1,v2) - сумматор;\nv1, v2 - значения сигналов на входе сумматора.""" return v1+v2

2. Функция usilit(K,v) имеет 2 входных параметра, возвращает значение – результат умножения заданных значений параметров:

def usilit(K,v):

2

"""Функция usilit(K,v) - усилитель сигнала;\nK - коэффициент усиления, v - значение сигнала на входе звена."""

return K*v

3. Функция inerz(T,v,w1) имеет 3 входных параметра, возвращает значение, рассчитанное по заданным параметрам по формуле (v+T*w1)/(1+T).

def inerz(T,v,w1):

"""Функция inerz(T,v,w1) - инерционное звено;\nT - постоянная времени, v - значение сигнала на входе звена,\nw1 - значение сигнала на выходе звена в предыдущий момент времени."""

return (v+T*w1)/(1+T)

4. Функция integr(v,w1) имеет 2 входных параметра, возвращает значение, рассчитанное по формуле 0.001*v+w1:

def integr(v,w1):

""""Функция integr(v,w1) - интегратор;\nv - значение сигнала на входе звена,\nw1 - значение сигнала на выходе звена в предыдущий момент времени."""

return 0.001*v+w1

5. Функция neline(A,B,v) имеет 3 входных параметра, возвращает значение в зависимости от величины параметра A, рассчитанное по двум другим параметрам:

def neline(A,B,v):

""""Функция neline(A,B,v) - нелинейное звено;\nA,B - коэффициенты, v - значение сигнала на входе звена."""

if v>A: w=B

3

elif 0<v<A: w=2*B*v/A-B*v*v/(A*A) elif -A<v<0: w=2*B*v/A+B*v*v/(A*A) elif v<-A: w=-B

else: w=0 return w

6. Функция sar(x,param,history) имеет 3 параметра на входе, возвращает значение, рассчитанное в соответствии со строением схемы системы регулирования по входному значению и параметрам:

def sar(x,param,history):

"""Функция sar(x,param,history) - система автоматического регулирования;\nфункция возвращает выходное значение системы;\nx - значение сигнала, подающегося на вход системы,\nparam - параметры системы в виде списка: [K1,K2,K3,T1,T2,A,B],\nhistory - память выходов для звеньев."""

import mmm as m y1=m.summa(x,m.usilit(param[2],history[3])) y2=m.usilit(param[0],y1) y3=m.neline(param[5],param[6],y2) y4=m.inerz(param[3],y3,history[0]) history[0]=y4 y5=m.inerz(param[4],y4,history[1]) history[1]=y5

y6=m.integr(y5,history[2])

history[2]=y6

history[3]=m.usilit(param[1],y6) return history

4

Описание инструкций, реализующих моделирование входного сигнала, выходного сигнала по заданными пользователем параметрам, вывод полученных значений с номерами отсчетов в файл и построение графиков:

#Моделирование

B=float(input('Введите значение коэффициента B = ')) K3=float(input('Введите значение коэффициента K3 = ')) #param=[K1,K2,K3,T1,T2,A,B] param=[0.8,2,K3,0.1,1,5,B] x=[];y=[];istoria=[0]*4;T=3000

from sar import sar for i in range(T):

xx=0 if i<3 else 1 x.append(xx) istoria=sar(xx,param,istoria) y.append(istoria[3])

#Вывод в файл perehod_proc.txt fp=open('perehod_proc.txt','w') for i in range(len(x)):

fp.write(str(i+1)+','+str(x[i])+','+str(round(y[i],3))+'\n')

fp.close()

#Отображение графика import pylab

delta=0.9

t=[]

for i in range(len(x)): t.append(delta*(i))

5

pylab.figure(1)

pylab.plot(t,x) pylab.title('Входной сигнал') pylab.xlabel('t, с') pylab.ylabel('x') pylab.figure(2) pylab.plot(t,y,'r')

pylab.title('Выходной сигнал при B = '+str(B)+', K3 = '+str(K3)) pylab.xlabel('t, с')

pylab.ylabel('y')

pylab.show()

Описание исходных данных, требуемых от пользователя

Пользователь вводит значения:

B – параметра нелинейного звена;

K3 – значение параметра усилителя в обратной связи.

Описание результатов работы программы

Результаты работы программы:

-файл perehod_proc.txt, содержащий значения номеров отсчета, входного сигнала и выходного сигнала, рассчитанных для последних введенных пользователем значений B, K3;

-график, отображающий зависимость входного сигнала от времени;

-график, отображающий зависимость выходного сигнала от времени.

Описание алгоритма

По инструкциям из модуля main_sar.py происходит вывод предложений пользователю ввести параметры B и K3. После ввода пользователем значений задаются значения остальных параметров САР, четырех нулевых значений выходного сигнала для элементов

6

САР, производящих расчет с учетом предыдущего момента времени. Из модуля sar.py осуществляется импорт функции sar. Задаются значения входного сигнала, для каждого значения рассчитывается выходной сигнал посредством вызова функции sar.

После расчета всех входных и выходных значений производится их вывод в текстовый файл вместе с соответствующими номерами отсчета в столбец.

Затем реализуется отображение переходного процесса посредством построения графиков зависимостей входного и выходного сигналов от времени.

Контрольный пример

Предложения ввода коэффициентов от программы и значения пользователя: Введите значение коэффициента B = 75.0

Введите значение коэффициента K3 = -0.05

В результате на экране появляются изображения, представленные на рисунках 2.1, 2.2.

Рисунок 2.1 – График зависимости входного сигнала от времени

7

Рисунок 2.2 – График зависимости выходного сигнала от времени

Указанные ниже значения записаны в файл perehod_proc.txt (представлены 5 первых и 5 последних значений из 3000):

1,0,0.0

2,0,0.0

3,0,0.0

4,1,0.02

5,1,0.052

2996,1,19.984

2997,1,19.984

2998,1,19.984

2999,1,19.984

3000,1,19.984

8

3 Описание методики решения поставленной задачи

Для решения поставленной задачи всю область значений параметров B, K3 разобьем на квадраты размером 5000*5000, причем граничные значения B и K3 возьмем от -20000 до 20000.

Рассмотрим вид переходного процесса в отстоящих на одинаковом расстоянии друг от друга точках рассматриваемого пространства. Для этого меняем значения B, K3 с шагом 5000 от -20000 до 20000 и фиксируем переходной процесс, определяя его вид.

При данных значениях коэффициентов выявлено 5 видов переходных процессов, представленных на рисунках 3.1 - 3.5 (графики представлены для таких значений B и K3 и такого числа отсчетов, чтобы переходный процесс был отражен более явно).

Рисунок 3.1 – График переходного процесса (расходящийся) в области 1

9

Рисунок 3.2 - График переходного процесса (периодический) в области 2

Рисунок 3.3 – График в области 3 (выходной сигнал нулевой)

10