ПОАС_ТР
.pdfОТЧЕТ
по выполненному расчетному заданию
по дисциплине «Программное обеспечение автоматизированных систем»
ИССЛЕДОВАНИЕ СИСТЕМ АВТОМАТИЧЕСКОГО РЕГУЛИРОВАНИЯ
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