форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
50 строки
1.1 KiB
Python
50 строки
1.1 KiB
Python
import math
|
|
|
|
znach=input('k1,T,k2,Xm,A,F,N=').split(',')
|
|
k1 = float(znach[0])
|
|
T = float(znach[1])
|
|
k2 = float(znach[2])
|
|
Xm = float(znach[3])
|
|
A = float(znach[4])
|
|
F = float(znach[5])
|
|
N = int(znach[6])
|
|
|
|
vhod=[]
|
|
for i in range(N):
|
|
vhod.append(A*math.sin((2*i*math.pi)/F))
|
|
|
|
def realdvig(xtt,kk1,TT,yti1,ytin1):
|
|
#Модель реального двигателя
|
|
yp=kk1*xtt #усилитель
|
|
yti1=yp+yti1 #Интегратор
|
|
ytin1=(yti1+TT*ytin1)/(TT+1)
|
|
return [yti1,ytin1]
|
|
|
|
def tahogen(xtt,kk2,yti2):
|
|
#Модель тахогенератора
|
|
yp=kk2*xtt #усилитель
|
|
yti2=yp+yti2 #интегратор
|
|
return yti2
|
|
|
|
def nechus(xtt,gran):
|
|
#зона нечувствит
|
|
if xtt<gran and xtt>(-gran):
|
|
ytt=0
|
|
elif xtt>=gran:
|
|
ytt=xtt-gran
|
|
elif xtt<=(-gran):
|
|
ytt=xtt+gran
|
|
return ytt
|
|
|
|
|
|
yi1=0;yin1=0;yi2=0
|
|
vyhod=[]
|
|
for xt in vhod:
|
|
xt1=xt-yi2 #отрицательная обратная связь
|
|
[yi1,yin1]=realdvig(xt1,k1,T,yi1,yin1)
|
|
yi2=tahogen(yin1,k2,yi2)
|
|
yt=nechus(yin1,Xm)
|
|
vyhod.append(yt)
|
|
|
|
print('y=',vyhod)
|