Exemple #1
0
def t12():
	# fixme: F = 1 - any... wild - STRANGE
	s = Symbol('s')
	
	T = 50.0*(s+3)*(s+12.0)/((s+30.0)*(s+55.0)*(s+100.0)*(s+1000.0))
	# T = 60*(s + 3)*(s + 16)/((s + 33)*(s + 75)*(s + 200)*(s + 2000))
	# # T = Add(5000, s) / (s*(s+5)*(s+50))
	# T = 10*(s + 2)*(s + 22)/((s + 40)*(s + 65)*(s + 150))
	# T = -20*(s + 2)*(s + 26)/((s + 43)*(s + 85)*(s + 250)*(s + 2500))
	# T = 2.72 * (s + 7)*(s + 20)/((s + 10)*(s + 100)*(s + 1000))
	T = -25*(s + 2)*(s + 44)/((s + 55)*(s + 66)*(s + 77)*(s + 8800))
	# T = 50*( s + 0.05 )*( s + 0.5 ) / (s *( s + 5 )) * 5000/(s+10) * 1/5000/s**2
	# loops
	F = T+1
	M = T/F
	# T = F

	syss = [syms2tf(T), syms2tf(F), syms2tf(M)]
	labels = ['T', 'F', 'M']
	w = logspace(-1, 2, 1e3)  # need it
	for l, sys in zip(labels, syss):
		bode(sys, w, label=l)

	legend()

	# nyquist([syms2tf(T)])
	show()
Exemple #2
0
def analyse_ex():
	s = Symbol('s')
	
	# Loop
	C = 50*(s+0.05)*(s+0.5) / (s*(s+5))
	C = (50*s**2+ 27.5*s+0.25) / (s*(s+5))
	A = Poly(5000, s) / (s+10)
	B = 1
	P = Poly(1, s)/(5000*s**2)

	# D3_in = Poly(1, s)/((s+0.1) * (s+2))
	# OL_D3_out = expand( P * D3_in )
	# dist = syms2tf( OL_D3_out, s )

	# w = logspace(-2, 1, 1000)
	# bode(dist, w, label="src")
	# bode(syms2tf(D3_in,s), w, label="feedback")
	# legend()
	# show()

	T = C*A*P
	F = T + 1
	M = T/F
	w = logspace( -1, 2, 1e4 )

	# fixme: autocast
	# fixme: не сходится с книжкой
	# fixme: bug: if (<-1, N)... не может правильно определить фазу
	sys = syms2tf( T, s )

	mag, phase, omega = bode(sys, w, label="T(s)")
	bode(syms2tf( F,s ), w, label="F(s)")
	bode(syms2tf( M,s ), w, label="M(s)")
	legend()
	show()

	clear()
	plot( phase, mag )