ответвлено от main/python-labs
report
Этот коммит содержится в:
36
TEMA9/SAU.py
Обычный файл
36
TEMA9/SAU.py
Обычный файл
@@ -0,0 +1,36 @@
|
||||
class SAU:
|
||||
def __init__(self, zn_param):
|
||||
self.param = zn_param
|
||||
self.ypr = [0, 0]
|
||||
|
||||
def zdn_zn(self, upr):
|
||||
self.x = upr
|
||||
|
||||
def model(self):
|
||||
def inerz(x, T, yy):
|
||||
return (x + T * yy) / (T + 1)
|
||||
|
||||
y0 = self.x - self.ypr[1] * self.param[3] # Обр.связь с усилителем 2
|
||||
y1 = self.param[0] * y0 # Усилитель1
|
||||
y2 = inerz(y1, self.param[1], self.ypr[0]) # Инерционное звено1
|
||||
y3 = inerz(y2, self.param[2], self.ypr[1]) # Инерционное звено2
|
||||
self.ypr[0] = y2
|
||||
self.ypr[1] = y3
|
||||
|
||||
def otobraz(self):
|
||||
print('y=', self.ypr[1])
|
||||
|
||||
###main_SAU
|
||||
prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь
|
||||
from SAU import *
|
||||
xx=[0]+[1]*20 #Входной сигнал – «ступенька»
|
||||
SAUe=SAU(prm) # Создаём экземпляр класса
|
||||
yt=[]
|
||||
for xt in xx: # Прохождение входного сигнала
|
||||
SAUe.zdn_zn(xt)
|
||||
SAUe.model()
|
||||
SAUe.otobraz()
|
||||
yt.append(SAUe.ypr[1])
|
||||
import pylab
|
||||
pylab.plot(yt)
|
||||
pylab.show()
|
||||
Ссылка в новой задаче
Block a user