Tabla de contenido
1. Clasificación del sistema de control y parámetros y señales
2. Introducción al algoritmo PID
3. Protocolo de comunicación de computadora superior PID
1. Marco de datos y depuración de protocolos
2. Implementación del código de protocolo
prefacio
Descargo de responsabilidad: Las notas de estudio son del equipo de construcción 421 de la estación b y el tutorial puntual del motor atómico, ¡y son solo para aprendizaje y comunicación! !
1. Algoritmo PID
PID es un acrónimo de Proporcional, Integral y Diferencial, es un algoritmo de control de lazo cerrado que combina proporcional, integral y diferencial. La esencia es realizar cálculos de acuerdo con las relaciones funcionales proporcionales, integrales y diferenciales basadas en el valor de desviación de entrada, y los resultados del cálculo se utilizan para controlar la salida .
El algoritmo PID es adecuado para sistemas lineales (que satisfacen la superposición y la homogeneidad), sistemas lineales dentro del segundo orden.
Sistemas inadecuados: sistemas de orden superior, sistemas no lineales . Si se utilizan, los sistemas de orden superior deben ser reducibles a sistemas de segundo orden, y los sistemas no lineales deben linealizarse en los puntos de equilibrio del sistema no lineal utilizando el primer método de Lyapunov. ¡Se puede continuar con más investigaciones!
1. Clasificación del sistema de control y parámetros y señales
Clasificación:
①Sistema de control de circuito abierto (sin retroalimentación): sistema general de circuito abierto , sistema de control de retroalimentación frontal (el actuador compensa la interferencia cuando actúa sobre el objeto, como se muestra en la figura a continuación)
②Sistema de control de circuito cerrado (con retroalimentación): circuito cerrado simple (retroalimentación en el extremo de salida), circuito cerrado doble (no solo retroalimentación en el extremo de salida, sino también retroalimentación en el objeto secundario en el medio, como se muestra en la bucle doble como se muestra en la figura a continuación)
③ Sistema de control compuesto (nombre completo del sistema de control compuesto de retroalimentación y retroalimentación)
parámetro:
Error (e) = salida esperada (entrada) - salida real
Salida del controlador (C) : señal al actuador
Salida del actuador: cambios en el objeto sobre el que se actúa (como una válvula)
Salida del sistema Y: salida real (como el cambio de flujo de agua)
Señal:
Señales continuas y discretas: el sample-and-hold adquiere la señal de tensión en ese momento y la mantiene durante un período de muestreo, que es el tiempo correspondiente a la línea horizontal roja
2. Introducción al algoritmo PID
Tres enlaces:
Enlace proporcional: refleja la señal de desviación del sistema de control en proporción, es decir, la salida C es proporcional a la desviación de entrada e, que se puede utilizar para reducir la desviación del sistema.
Conclusión: Cuanto mayor es K_p, más rápido responde el sistema y alcanza el valor objetivo; si K_p es demasiado grande, el sistema producirá un gran sobreimpulso y oscilación, lo que conducirá al deterioro de la estabilidad del sistema; el proporcional El enlace no puede eliminar el error estático.
Error estático: la desviación entre el valor objetivo y el valor medido cuando el proceso de control del sistema tiende a ser estable. Causa: La salida está compensada por influencias externas. Los errores estáticos se pueden eliminar introduciendo un enlace integral.
Enlace integral: integre la desviación de entrada e, mientras haya una desviación, el enlace integral continuará funcionando, utilizado principalmente para eliminar errores estáticos.
Conclusión: Cuanto mayor es K_i, menor es el tiempo para eliminar el error estático y más rápido se alcanza el valor objetivo; si K_i es demasiado grande, el sistema tendrá mayor sobreimpulso y oscilación, lo que conducirá al deterioro. de la estabilidad del sistema; para un sistema con una gran inercia, el enlace de integración Mala respuesta dinámica, propenso a sobreimpulso y oscilación.
Enlace derivado: responda a la tendencia de variación de la desviación, realice el control correspondiente por adelantado de acuerdo con la variación de la desviación, reduzca el sobreimpulso y supere la oscilación.
Conclusión: cuanto mayor sea K_d o la tendencia de cambio, mayor será el efecto del enlace diferencial y mayor será la supresión del sobreimpulso y la oscilación; si K_d es demasiado grande, causará inestabilidad en el sistema e introducirá fácilmente ruido de alta frecuencia.
oficial:
De hecho, la fórmula se divide en dos tipos: tipo de posición y tipo incremental (la salida del controlador atómico puntual está representada por uk, que corresponde a la fórmula C anterior)
① tipo de posición
Características: uk corresponde directamente a la salida (posición) del objeto. Si el cálculo es anormal, tendrá un gran impacto en el sistema; cálculo completo (las cantidades anteriores deben estar completamente involucradas en el cálculo de la salida), y la desviación e debe acumularse, lo que requiere una gran cantidad de cálculo; se pueden obtener buenos resultados en objetos sin componentes integrales, como válvulas servo electrohidráulicas, equipos de control de temperatura, etc.
② Incremental _
Características: el PID incremental calcula el incremento en relación con la salida anterior, es decir, u_k= u_k−1+ ∆u_k; el incremento solo está relacionado con la desviación de las últimas tres veces, y la anomalía del cálculo tiene poco impacto en el sistema, la cantidad de cálculo Menos, el rendimiento en tiempo real es relativamente bueno.
Ejemplo de comprensión:
La diferencia entre el ejemplo del dron y el coche es que el coche solo tiene un control proporcional de P. Aunque el cambio es lento al final, mientras haya un poco de velocidad (no igual a 0), se acercará a la deseada. posición, pero el dron es diferente porque tiene que superarse a sí mismo Gravedad, (solo cuando se controla la proporción p) cuando la velocidad es pequeña a un cierto valor (velocidad de suspensión), el dron siempre flotará en esta posición y no puede ya no puede acercarse a la posición deseada, y solo puede acercarse y no puede alcanzar la posición exacta. Es decir, el control proporcional de un solo elemento P no puede eliminar el error de estado estable, y en este momento se requiere el control integral I. Si el error e permanece sin cambios (flotando), el elemento integral se puede acumular, aumentando el control cantidad, y el índice del elemento integral no se debe a El valor del error actual e es igual a 0 y cambia, simplemente deja de acumularse. El control diferencial D se usa principalmente para compensar la sobrerregulación (normalmente, el error e disminuye constantemente, cuando la sobrerregulación conducirá a un exceso y el error será mayor), entonces el término diferencial se convertirá en un valor negativo para compensar. la sobrerregulación.
Definición de estructura PID e implementación de funciones:
typedef struct
{
__IO float SetPoint; /* 目标值 */
__IO float ActualValue; /* 期望值 */
__IO float SumError; /* 偏差累计 */
__IO float Proportion; /* 比例常数 P */
__IO float Integral; /* 积分常数 I */
__IO float Derivative; /* 微分常数 D */
__IO float Error; /* Error[1] */
__IO float LastError; /* Error[-1] */
__IO float PrevError; /* Error[-2] */
} PID_TypeDef;
Función de inicialización PID: inicialice los parámetros relacionados con PID (borrar), establezca el coeficiente PID
Función de control de circuito cerrado PID: realizar posición y algoritmo de control PID incremental
Función de interrupción de actualización TIM6: llame a la función de control de circuito cerrado PID y devuelva la salida (valor esperado) después del cálculo. Eso es para controlar la salida PWM.
Función de depuración de la computadora superior PID: realice la comunicación entre la computadora superior y la placa de desarrollo y realice el ajuste de parámetros PID.
2. Ajuste de parámetros PID
Período de muestreo: El período de muestreo se refiere al intervalo de tiempo de muestreo del valor real en el control PID, cuanto más corto sea, más continuo será el efecto, pero mayor será la ocupación de recursos de hardware. ¿Como escoger? En teoría, se puede basar en el teorema de muestreo de Shannon ; en aplicaciones prácticas, el período de muestreo se puede seleccionar de acuerdo con la capacidad de mutación del valor real .
Hay dos tipos de métodos de ajuste de parámetros PID. Configuración de cálculo teórico (modelo matemático), método de configuración de ingeniería (método de prueba y error, método de relación crítica, método de ajuste general). Pero no importa qué método, la aplicación final debe ajustarse de acuerdo con la experiencia y la situación real:
oscilación del sistema
Si la oscilación es demasiado grande, el coeficiente proporcional se puede reducir para reducir la oscilación; después de que la oscilación se haya reducido mucho, pero comience a existir un sobreimpulso, agregue el ajuste del enlace diferencial para eliminar el sobreimpulso inicial de la oscilación
error estático
Si hay un error estático, se puede introducir el enlace integral (o aumentar el coeficiente integral) para alcanzar el valor objetivo. Si cree que lleva demasiado tiempo eliminar el error estático, puede continuar aumentando el coeficiente integral.
excederse
Si hay un sobreimpulso grande, se puede ajustar reduciendo el coeficiente integral y aumentando el coeficiente diferencial, como se muestra en la figura de la derecha.
3. Protocolo de comunicación de computadora superior PID
1. Marco de datos y depuración de protocolos
El asistente de depuración de PID envía y recibe datos según el siguiente formato (por supuesto, este es puntual y atómico):
La categoría de datos se refiere al atributo de datos, velocidad, temperatura, etc.; el campo de datos se refiere al valor específico; la suma de verificación adopta la suma de verificación CRC16-MODBUS, y el rango de la suma de verificación incluye el encabezado del cuadro, la categoría de datos y el campo de datos.
Utilice el asistente de depuración en serie para simular la placa de desarrollo y comuníquese con el asistente de depuración PID. Es necesario preparar el módulo USB a TTL (hardware), el asistente de depuración de PID y el asistente de depuración de puerto serie (software), el protocolo de comunicación del asistente de depuración de PID (archivo).
Esto no es universal, el acuerdo es una especie de regulación, ¡pero aquí está la regulación del átomo puntual!
......
...esperando para practicarlo yo mismo!
2. Implementación del código de protocolo
Las siguientes son las ideas de implementación y continúen actualizándose cuando espere su propia práctica...
La categoría de datos y algunos campos de datos del protocolo tienen marcos de datos fijos, y es más conveniente usar el tipo enumerado para administrar:
La idea de implementación del código subyacente:
①Función de inicialización del puerto serie 1: inicialice el puerto serie 1, abra la recepción del extremo medio y utilícelo para la comunicación con la computadora host
②Función de inicialización de memoria: inicializa una sección de memoria en una dirección específica (borrar)
③Función de verificación CRC16: verifique el encabezado del marco, el tipo de datos y el campo de datos
④ Función de análisis de datos de la computadora host: analice los datos enviados por la computadora host y guárdelos en la estructura especificada
⑤ Función de carga de datos: cargue los datos especificados en la computadora host
Idea de implementación de código de capa de aplicación:
①Inicialice la función de depuración: use la memoria para inicializar la función subyacente e inicialice el contenido requerido
②Función de carga de datos PID: cargue parámetros PID, configure la sincronización de datos del valor objetivo PID
③Una serie de funciones de carga de datos: llame a la función de carga de datos subyacente, cargue el valor actual, el valor de voltaje, etc.
④Función de recepción de parámetros PID: acepte el valor del parámetro PID establecido por la computadora host
⑤Función de recepción de comandos: acepte los comandos emitidos por la computadora host, como el funcionamiento del motor, el frenado, etc.
⑥ Función de configuración del rango de velocidad: limita el rango de la velocidad objetivo del motor y el valor máximo de cambio repentino de la velocidad
¡El conocimiento más relevante está en la serie de motores, motor DC con escobillas!
expandir:
La expansión proviene del equipo de construcción de 421. No entiendo muy bien la parte. ¡Grábalo primero!
①Límite integral
Imagine una escena en la que el dron se sostiene con la mano cuando despega; de hecho, el efecto integral es causado por el error. Cuanto mayor sea el error, más fuerte será el efecto integral. Y tiene la caracteristica de acumularse siempre, la acumulacion de puntos sera muy grande, puede quemar el motor o saldra a una velocidad muy alta cuando lo sueltes, asi que trata de dejar que el dron despegue libremente o limite el valor máximo de puntos acumulados (de hecho, se establece un límite máximo en Iterm). Iterm se borra cuando se excede el valor establecido.
② Separación integral
El UAV flota en la superficie de la posición objetivo durante 100 m, y el error e=0——en este momento, el término P (Pterm) es 0, y el UAV debe mantenerse flotando, por lo que el término I (Iterm) es no 0, y el error ya no es acumulativo, por lo que el valor de Ierm permanece constante. En este momento, si de repente se le da al dron un nuevo valor objetivo, como 1000 m hasta la superficie, el error e de repente se eleva a 900 m, lo que hace que Ierm cambie repentinamente dentro de un cierto período de tiempo, y lo mismo es cierto para Pterm , lo que puede provocar oscilaciones en el sistema o incluso sobreimpulsos. En este momento se requiere la separación integral. Por ejemplo, el error máximo e para el término integral no puede exceder los 500 m , y una vez que lo supera, el término integral Iterm se establece en 0.
(3) Precedencia diferencial
En el ejemplo de ② anterior, cuando el error cambia repentinamente, el impacto será primero en los elementos P e I, y no afectará al elemento D.
¡El envío y la recepción de los valores anteriores siguen el protocolo CAN! Consulte este artículo xxxxx para obtener más información .
1. Motor RM M3508 velocidad bucle cerrado simple (consulte el diagrama de clasificación del sistema)
/*位置pid算法*/
void pid_calc(_pid* pid){
pid->e = pid->target - pid->current;//误差e
pid->p_out = (int32_t)(pid->Kp * pid->e);//比例项P
//积分隔离
if (fabs(pid->e) < I_Band){
pid->i_out += (int32_t)(pid->Ki * pid->e);//积分项I
limit(&(pid->i_out),pid->IntegralLimit);//积分限幅
}
else{
pid->i_out = 0;
}
pid->d_out = (int32_t)(pid->Kd * (pid->e - pid->last_e));//微分项D
pid->total_out = pid->p_out + pid->i_out + pid->d_out;//总控制项
//pid输出限幅
limit(&(pid->total_out),pid->MaxOutput);
pid->last_e = pid->e;//上一次误差
}
/*速度单环*/
chassis_motor_pid[i].SpeedPID.target = 500;
chassis_motor_pid[i].SpeedPID.current = motor_chassis[i].speed_rpm;
pid_clac(&chassis_motor_pid[i].SpeedPID);//调用PID算法做运算
2. Motor RM 6020 ángulo doble lazo cerrado (consulte el diagrama de clasificación del sistema)
/*角度双环*/
AnglePID.target = 3.14*30/180;//期望角度30°转换为弧度制
update_angle(&manipulator_motor_pid[i].angle , motor_manipulator[i].angle);//更新电机实时角度,函数定义见下
manipulator_motor_pid[i].AnglePID.current = manipulator_motor_pid[i]._angle.angle;//当前角度
pid_calc(&manipulator_motor_pid[i].AnglePID);//调用PID算法做运算
manipulator_motor_pid[i].SpeedPID.target = manipulator_motor_pid[i].AnglePID.total_out//速度期望(内环),即外环控制器的输出
manipulator_motor_pid[i].SpeedPID.current = motor_manipulator[i].speed_rpm;//当前速度(内环)
pid_calc(&manipulator_motor_pid[i].SpeedPID);//调用PID算法做运算,该函数与单闭环一致
void update_angle(motor_angle* _angle , uint16_t angle_fb){
_angle->encoder = angle_fb;
if(_angle->encoder_is_init){
if(_angle->encoder - _angle->last_encoder > 4096)
_angle->round_cnt --;
else if(_angle->encoder - _angle->last_encoder < -4096)
_angle->round_cnt ++;
}
else{
_angle->encoder_offset = _angle->encoder;
_angle->encoder_is_init = 1;
}
_angle->angle_offset = _angle->angle_offset / 8192.0f * 360.0f;
_angle->last_encoder = _angle->encoder;
_angle->total_encoder = _angle->round_cnt * 8192 + _angle->encoder - _angle->encoder_offset;
_angle->angle = _angle->total_encoder / 8192.0f * 360.0f;
}
Resumir
Continuará...
Aspectos destacados anteriores:
captura de entrada del temporizador STM32 (IC)
comparación de salida del temporizador STM32 (onda PWM)
interrupción de tiempo STM32
interrupción externa STM32
conversación intensiva STM32GPIO
...