【Teoría de control】—— Clasificación del sistema de control e introducción del algoritmo PID y configuración de parámetros PID y protocolo de comunicación de la computadora host PID

Tabla de contenido

prefacio

1. Algoritmo PID

1. Clasificación del sistema de control y parámetros y señales

2. Introducción al algoritmo PID

2. Ajuste de parámetros 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

expandir:

Resumir


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
...

Supongo que te gusta

Origin blog.csdn.net/weixin_51658186/article/details/129914177
Recomendado
Clasificación