es el tiempo integral y el tiempo derivado (Ts y Td) definido por el
¿Período de reloj del circuito que realiza estos cálculos?
El tiempo integral y el tiempo derivado se relacionan con cualquier luz estroboscópica asociada utilizada alrededor de esos bloques.
La electrónica digital toma un tiempo finito para realizar las operaciones requeridas. Tome un integrador discreto de trapecio cuya ecuación de diferencia se vea así:
\ $ y_n = y_ {n-1} + K_i * T_s * \ frac {x_n + x_ {n-1}} {2} \ $
Hay dos adiciones, dos multiplicaciones y una división (aunque se trata de una división a la derecha con cambio barato) para un paso de integración. Esto debe completarse antes de que llegue la siguiente muestra \ $ x_n \ $. Ahora, para ahorrar en una multiplicación, \ $ K_i * T_s \ $ se podría combinar en un escalar, que es una práctica estándar & esto resulta en la variable de ganancia relacionada con el tiempo de muestra \ $ T_s \ $
¿Qué establece tu \ $ T_s \ $? . Esas multiplicaciones y adiciones toman un tiempo finito & DEBEN completarse para cuando la siguiente muestra esté disponible \ $ x_n \ $
si mi señal de error es muestreada por el mismo reloj que calcula el
partes integrales y derivadas de mi ley, Ti = Td = Ts?
Sí, lo sería, si Ts es la tasa de adquisición de datos o de interpolación, de una se utiliza)
Si Ti = Td = Ts, Kp = Ki = Kd? Suena realmente extraño.
No, porque Ts es solo una parte de la ecuación integral discreta ya que existe el factor de ganancia. Como se mencionó anteriormente, el factor de ganancia Y el período de muestra se pueden calcular previamente para ahorrar en un paso de multiplicación
--edit--
Para ayudar a aclarar. A continuación se muestra un fragmento de código de Python que implementa un integrador discreto (opción de 3, pero la trampa más a menudo que no es la que desea). El tiempo de muestra, \ $ T_s \ $ aquí es 1us (así como 100us para demostrar un punto). En este caso \ $ T_i = T_s = 1us (o 100us) \ $. Del mismo modo, el "reloj" del procesador, la velocidad del reloj de la máquina virtual de Python, por simplicidad, puede considerarse como 2.9 GHz. Este es un ejemplo razonable para un FPGA / uP que se ejecuta a una velocidad mayor y los ADC están muestreando a una velocidad más lenta, PERO una velocidad que es lo suficientemente lenta para que el procesador principal complete sus pasos computacionales.
#!/usr/bin/env python
import numpy as np
from matplotlib import pyplot as plt
def fwdEuler(X=0, dt=0):
'''y(n) = y(n-1) + [t(n)-t(n-1)]*x(n-1)'''
x[0] = X*Ki # apply gain prior to integration
y[0] = self.y[-1] + dt*x[-1]
x[-1] = float(x[0])
y[-1] = float(y[0])
return y[0]
def revEuler(X=0, dt=0):
'''y(n) = y(n-1) + [t(n)-t(n-1)]*x(n)'''
x[0] = X*Ki # apply gain prior to integration
y[0] = y[-1] + dt*x[0]
x[-1] = float(x[0])
y[-1] = float(y[0])
return y[0]
def Trap(X=0, dt=0):
'''y(n) = y(n-1) + K*[t(n)-t(n-1)]*[x(n)+x(n-1)]/2'''
x[0] = X*Ki # apply gain prior to integration
y[0] = y[-1] + dt*(x[0]+x[-1])/2
x[-1] = float(x[0])
y[-1] = float(y[0])
return y[0]
plt.hold(True)
plt.grid(True)
f,p = plt.subplots(4)
x = [0,0]
y = [0,0]
Ki = 1
t = np.arange(0,1,1e-6) # 1million samples at 1us step
data = np.ones(t.size)*1 #
p[0].plot(t,data)
p[0].set_title('Simple straight line to integrate')
int_1 = np.zeros(t.size)
for i in range(t.size):
int_1[i] = Trap(data[i],t[1]-t[0])
p[1].set_title('Trap integration with Ki=1 and Ti=1u')
p[1].plot(t,int_1)
x = [0,0]
y = [0,0]
Ki = 1
t = np.arange(0,1,100e-6) # 1million samples at 1us step
data = np.ones(t.size)*1 #
int_2 = np.zeros(t.size)
for i in range(t.size):
int_2[i] = Trap(data[i],t[1]-t[0])
p[2].set_title('Trap integration with Ki=1 and Ti=100u')
p[2].plot(t,int_2)
x = [0,0]
y = [0,0]
Ki = 2
t = np.arange(0,1,1e-6) # 1million samples at 1us step
data = np.ones(t.size)*1 #
int_3 = np.zeros(t.size)
for i in range(t.size):
int_3[i] = Trap(data[i],t[1]-t[0])
p[3].set_title('Trap integration with Ki=2 and Ti=1u')
p[3].plot(t,int_3)
plt.show()
Como puede ver, para un algoritmo de diferencia integral válido, la ganancia integral real es la unidad y, por lo tanto, puede ser ... sintonizada, a través de una ganancia adicional, \ $ K_i \ $. Esto es igualmente cierto para los términos diferenciales.