diff options
Diffstat (limited to 'macros/latex/contrib/unbtex/unbtex-example/codigos/controleSmithPredictor.py')
-rw-r--r-- | macros/latex/contrib/unbtex/unbtex-example/codigos/controleSmithPredictor.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/macros/latex/contrib/unbtex/unbtex-example/codigos/controleSmithPredictor.py b/macros/latex/contrib/unbtex/unbtex-example/codigos/controleSmithPredictor.py new file mode 100644 index 0000000000..ebcea45cf4 --- /dev/null +++ b/macros/latex/contrib/unbtex/unbtex-example/codigos/controleSmithPredictor.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- + +from __future__ import print_function +import time +from Model import Model +from PlantOPC import PlantOPC +import OpenOPC +import numpy +import matplotlib.pyplot as plt + +opc = OpenOPC.client() # Cria o cliente OPC; o servidor é o RSLinx +opc.connect('RSLinx OPC Server') # Essa string não muda; conecta ao RSLinx + +pC = numpy.array([0.5, 0.6, 0.7, 0.5 + 0.4j, 0.5 - 0.4j]) +Ki = 0.183111320328469 +Kp = numpy.array([0.007993734748865, 0.009705988539721, -0.004630469582507, -0.000426479250745]) + +t = numpy.array(range(0, n_t)) * Ts +# time = linspace(0,10,n_t) +# instantiate the plant that will be used, it should be a subclass of Plant + +plant = PlantOPC(opc,'[CLP_AB]position','[CLP_AB]speed',init_pos) +model = Model(n, A, B, C, D, Ak, Bk, Ck, Q, R, Kp, Ki, epsilon, Ts, plant) + +start = time.clock() +t_old = start +times_p = [] +for i in range(0, n_t): + y_out[i] = model.closed_loop(y_topo[i],y_fundo[i]) + #time.sleep(0.1) +plant.kill() +print("Total simulation time: {}s".format(time.clock() - start)) + +y_out_phased = y_out[5:n_t] +t_out_phased = t[0:n_t-5] +##plt.plot(t, y_out[0:n_t], label='out') +plt.plot(t_out_phased,y_out_phased, label='out_n') +plt.plot(t, y_fundo[0:n_t], label='ref fundo') +plt.plot(t, y_topo[0:n_t], label='ref topo (in)') +plt.legend(loc=4) +plt.xlabel('time (s)') +plt.ylabel('position (m)') +plt.title('Position of cart - close loop') +plt.grid(True) +# plt.show() +plt.savefig("resultados/closed_loop_trajetoria_rafael.png", format='png', dpi=200) +File = open('resultados/trajetoria_rafael.npz','wb') +numpy.savez(File, t=t, y_topo=y_topo, y_fundo=y_fundo, y_out=y_out, pC=pC, Ki=Ki, Kp=Kp) +File.close() + +opc.close() # Encerra a sessão |