Programación del sistema de control
La siguiente es una versión C# del controlador PID, que utilizo para controlar la velocidad de rastreo del rastreador web. Puedes traducirlo fácilmente al lenguaje C.
El uso se divide en dos pasos: el primer paso es la inicialización. 2. Mida los valores del sistema de control (como velocidad, temperatura, etc.) y sustitúyalos en el controlador PID para generar nuevos factores de control.
Inicialización: SpeedSetting es la velocidad de rastreo que desea configurar. Si es su sistema de control, es el valor de su sistema. IntervalTime es un factor de control. Lo uso como tiempo de espera después de leer una página web para controlar la velocidad del rastreador. Si es su sistema, es para controlar el valor del sistema a través de sus cambios. Código de inicialización:
PID _ Con = nuevo controlador PID (configuración de velocidad, IntervalTime, -0.1f, -0.05f, 0.0f);
PID _ Con LimitLow = 0.2f.
PID_Con.límite alto = 100.0 f;
Medición de tiempo: donde valor es el valor medido, que puede ser velocidad, temperatura, etc. , o la cantidad controlada por su sistema de control.
float value =(float)(URL count-LastUrlCount); //Calcula el número de páginas web rastreadas en el intervalo de tiempo actual.
IntervalTime = PID_Con. Valor observado (valor); //Trae el valor medido (o valor observado) al controlador PID para obtener un nuevo valor del factor de control.
LastUrlCount = UrlCount
En su sistema, se puede implementar por analogía.
PIDControler de clase pública
{
Tráfico de límite flotante público; //límite superior
El límite superior flotante público es alto //; límite inferior p>
Flotador privado Kp; //Coeficiente de diferencia
Flotador privado Ki; //Coeficiente integral
Float privado Kd; //Coeficiente de diferencia >
ControlParam flotante privado//Factor de control
Valor de configuración de punto flotante privado //Valor establecido
Último diferencial de punto flotante privado//Última diferencia
Punto flotante privado LastSumDiff//Integral de la última diferencia
PIDControler público (colección de punto flotante, inicialización de punto flotante, punto flotante p, punto flotante I, punto flotante d)
{
LimitLow = 0.0flimit high = 1000.0 f;
SettingValue = setsControlParam = init
KP = p ki = I;
LastDiff = 0.0fLastSumDiff = 0.0f
}
Observación flotante pública (valor flotante)
{
float diff= (valor establecido -valor);
if(math . ABS(diff/setting value) lt; 0.01)//Controla el límite inferior de integración diferencial
LastSumDiff = 0.0f
else if(math . ABS(LastSumDiff) gt;SettingValue*2)//Controla el límite superior de la integral diferencial.
LastSumDiff/= 2.0f;
Otros
LastSumDiff = diff; //Integral diferencial
parámetro de control = Kp * diff Ki * LastSumDiff Kd *(diff-last diff); //Calcular el factor de control
if(control param lt; limit low)control param = limit low //Limitar el límite superior del factor de control
if(control param gt;limit high)control param = limit high;//Limitar el límite inferior del factor de control
LastDiff = diff
Return ControlParam //Devuelve el factor de control
p>}
}