diff --git a/TEMA8/MM0.py b/TEMA8/MM0.py new file mode 100644 index 0000000..e7d8bcb --- /dev/null +++ b/TEMA8/MM0.py @@ -0,0 +1,2 @@ +import MM2 +print('y=',MM2.vyhod) diff --git a/TEMA8/MM1.py b/TEMA8/MM1.py new file mode 100644 index 0000000..338b867 --- /dev/null +++ b/TEMA8/MM1.py @@ -0,0 +1,50 @@ + +def usilitel(xt, k): + """ + Усилитель (пропорциональное звено) + xt - входной сигнал + k - коэффициент усиления + """ + return k * xt + +def realdvig(xt, k, T, y_prev, yin_prev): + """ + Реальный двигатель (апериодическое звено 1-го порядка) + xt - входной сигнал + k - коэффициент передачи + T - постоянная времени + y_prev - предыдущее значение выходного сигнала + yin_prev - предыдущее значение внутренней переменной + Возвращает [y_current, yin_current] + """ + # Дискретная реализация апериодического звена + # Принимаем dt = 1 для простоты + dt = 1.0 + yin_current = yin_prev + (xt - yin_prev) * dt / T + y_current = k * yin_current + return [y_current, yin_current] + +def tahogen(xt, k, y_prev): + """ + Тахогенератор (интегрирующее звено) + xt - входной сигнал (скорость вращения) + k - коэффициент передачи + y_prev - предыдущее значение выходного сигнала + """ + # Дискретная реализация интегратора + dt = 1.0 + y_current = y_prev + k * xt * dt + return y_current + +def nechus(xt, Xm): + """ + Звено "зона нечувствительности" + xt - входной сигнал + Xm - половина ширины зоны нечувствительности + """ + if abs(xt) <= Xm: + return 0.0 + elif xt > Xm: + return xt - Xm + else: + return xt + Xm diff --git a/TEMA8/MM2.py b/TEMA8/MM2.py new file mode 100644 index 0000000..7bcaf0a --- /dev/null +++ b/TEMA8/MM2.py @@ -0,0 +1,23 @@ +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]) + +import math +vhod=[] +for i in range(N): + vhod.append(A*math.sin((2*i*math.pi)/F)) + +import MM1 as mod +yi1=0;yin1=0;yi2=0 +vyhod=[] +for xt in vhod: + xt1=xt-yi2 #отрицательная обратная связь + [yi1,yin1]=mod.realdvig(xt1,k1,T,yi1,yin1) + yi2=mod.tahogen(yin1,k2,yi2) + yt=mod.nechus(yin1,Xm) + vyhod.append(yt) diff --git a/TEMA8/scr1.png b/TEMA8/scr1.png new file mode 100644 index 0000000..32737f5 Binary files /dev/null and b/TEMA8/scr1.png differ