Red de conocimiento informático - Conocimiento del nombre de dominio - Estoy buscando urgentemente el código MATLAB del algoritmo de control PID de posición.

Estoy buscando urgentemente el código MATLAB del algoritmo de control PID de posición.

Acabo de participar en PID no hace mucho. Algunos de los procedimientos son los siguientes, solo como referencia.

/*========================================== === ======================================

Cuando se utiliza un microcontrolador como CPU de control, simplifíquelo ligeramente, los parámetros PID específicos deben determinarse mediante experimentos en objetos específicos.

Debido a las limitaciones de la velocidad de procesamiento del microcontrolador y los recursos de RAM, generalmente no se utilizan operaciones de punto flotante, pero todos los parámetros son números enteros.

Al final de la operación, se divide por 2 n datos de potencia (equivalente a un cambio). Operaciones similares de punto fijo pueden mejorar en gran medida la velocidad de operación.

De acuerdo con los diferentes requisitos de precisión del control, cuando los requisitos de precisión son altos, se debe prestar atención a retener el "resto" causado por el desplazamiento y realizar la compensación del resto.

Este programa es solo el marco básico del algoritmo pid comúnmente utilizado y no incluye la parte de procesamiento de entrada y salida.

============================================ = ===================================*/

# include & ltstring. h & gt

# incluir & ltstdio.h & gt

/*======================== = =================================================== = =====

Función PID

La función PID se utiliza principalmente para

aplicaciones de control. PID Calc realiza una iteración del algoritmo PID.

Cuando la función PID está funcionando, main es solo un programa virtual que muestra

el uso típico.

Función PID

La función PID se utiliza principalmente para aplicaciones de control. La calculadora PID realiza el algoritmo iterativo de PID. Aunque la funcionalidad PID funciona,

es principalmente un programa ficticio que demuestra usos típicos.

============================================ = =====================================*/

estructura typedef PID {

Valor establecido doble; //Establecer el valor esperado objetivo

Proporción doble; //Constante proporcional

Integral doble // Constante entera Constante entera

p>

Doble derivada; // Constante diferencial derivada constante

double LastError // Error [-1]

Doble último error; // Error [-2 ]

Doble SumError//Suma de errores

} PID

= = = = = = = = = = = = = = = = = = = = = = = = = Parte de cálculo de Pid = = = = = = = = = = = = = = = = = = = =

Pidcalc doble (PID *PP, siguiente punto doble)

{

Error doble, error;

Error = PP-> punto de ajuste - siguiente punto // desviación

PP-& gt;SumError+= Error; //entero

dError = PP-& gt;LastError-PP-& gt;PrevError//diferencia actual

PP-& gt ;prev error = PP->LastError

PP->LastError=error;

return(PP->advance *error//término proporcional

+PP-& gt; Entero * PP -& gt; SumError //Término integral

+PP-& gt; Derivada * Error // Término diferencial

) ;

}

/* = = = = = = = = = = = = = = = Inicializar la estructura PID = = = = = = = = = = = = = = = = = = = = = = = = = = = =

PIDInit no válido (PID *pp)

{

memset (pp, 0, tamaño de (PID));

}

/* = = = = = = = = = = = = = = = = Programa principal = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Doble sensor (vacío) //Función de sensor virtual { return 100.0;}

Ejecutor no válido (doble rDelta) //Función de ejecutor virtual {}

Administrador de vacío (no válido)

{

PID sPID / / Estructura de control PID Estructura de control PID

Enrutador dual; // Respuesta PID (salida) Respuesta PID (salida)

Enjuague doble // Retroalimentación PID (entrada) Retroalimentación PID (entrada); )

PIDInit(&sPID); //Estructura de inicialización

sPID. Escala = 0,5; //Establecer coeficiente PID Establecer coeficiente PID.

sPID. Puntos = 0,5;

sPID. Derivada = 0,0;

sPID. Punto de ajuste = 100.0; //Establecer PID Establecer punto de ajuste de PID

for(;;)

{//El procesamiento PID simulado es el procesamiento PID más simulado.

rIn = sensor(); //Leer entrada Leer entrada

rOut = PID calc(& sPID, rIn); //Realizar iteración PID

actuador (enrutador); //El impacto del cambio deseado afecta el cambio deseado

}