Preguntas del examen de programación de servos
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. limit high = 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)<0.01)//Controla el límite inferior de integración diferencial
LastSumDiff = 0.0f
else if(math . ABS(LastSumDiff)>SettingValue*2)//Controla el límite superior de la integral diferencial.
LastSumDiff/= 2.0f;
Otros
LastSumDiff+= diff; //Diferencia integral
control param+= 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 control; factor
p>if(control param & gt; limit high)control param = limit high //Limita el límite inferior del factor de control
LastDiff = diff
Return ControlParam //Factores de control de retorno
}
}