Control de un péndulo invertido en un carro
Este ejemplo utiliza systune
para controlar un péndulo invertido en un carro.
Ensamblaje péndulo-carro
La Figura 1 representa el ensamblaje péndulo-carro, que se modela en Simulink® con Simscape™ Multibody™.
Figura 1: Péndulo invertido en un carro
Figura 2: Modelo de Simscape Multibody
Este sistema se controla ejerciendo una fuerza variable sobre el carro. El controlador debe mantener el péndulo en posición vertical mientras mueve el carro a una nueva posición o cuando el péndulo se empuja hacia delante (perturbación de impulso ).
Estructura de control
Cuando está en posición vertical, el péndulo invertido se encuentra en un equilibrio inestable. El carácter inestable de la planta hace que la tarea de control resulte más difícil. Para este ejemplo, se utiliza la siguiente estructura de control de doble lazo:
open_system('rct_pendulum.slx') set_param('rct_pendulum','SimMechanicsOpenEditorOnUpdate','off');
El lazo interior utiliza un controlador de espacio de estados de segundo orden para estabilizar el péndulo en posición vertical (control ), mientras que el lazo exterior utiliza un controlador proporcional-derivativo (PD) para controlar la posición del carro. Puede utilizar un PD en lugar de un controlador PID porque la planta ya proporciona acción integral.
Requisitos de diseño
Utilice requisitos TuningGoal
para especificar el comportamiento de lazo cerrado deseado. Especifique un tiempo de respuesta de 3 segundos para el seguimiento de un cambio en el punto de referencia en la posición del carro .
% Tracking of x command req1 = TuningGoal.Tracking('xref','x',3);
Para anular adecuadamente las perturbaciones de impulsos en la punta del péndulo, utilice una penalización LQR con el formato
que enfatice una pequeña desviación angular y limite el esfuerzo de control .
% Rejection of impulse disturbance dF Qxu = diag([16 1 0.01]); req2 = TuningGoal.LQG('dF',{'Theta','x','F'},1,Qxu);
Para mayor robustez, establezca un margen de ganancia de 6 dB, como mínimo, y un margen de fase de 40 grados en la entrada de la planta.
% Stability margins req3 = TuningGoal.Margins('F',6,40);
Por último, limite el amortiguamiento y la frecuencia natural de los polos de lazo cerrado para evitar transitorios bruscos o subamortiguados.
% Pole locations
MinDamping = 0.5;
MaxFrequency = 45;
req4 = TuningGoal.Poles(0,MinDamping,MaxFrequency);
Ajuste de sistemas de control
El sistema de lazo cerrado es inestable para los valores iniciales de los controladores PD y del espacio de estados (1 y , respectivamente). Puede usar systune
para ajustar los dos controladores a la vez. Utilice la interfaz slTuner
para especificar los bloques ajustables y registrar la entrada de la planta F
como punto de análisis para medir los márgenes de estabilidad.
ST0 = slTuner('rct_pendulum',{'Position Controller','Angle Controller'}); addPoint(ST0,'F');
A continuación, utilice systune
para ajustar los controladores PD y de espacio de estados en función de los requisitos de rendimiento especificados anteriormente. Optimice el rendimiento de seguimiento y anulación de perturbaciones (requisitos generales) en función de los márgenes de estabilidad y las restricciones de ubicación de polos (requisitos específicos).
rng(0)
Options = systuneOptions('RandomStart',5);
[ST, fSoft] = systune(ST0,[req1,req2],[req3,req4],Options);
Final: Soft = 1.37, Hard = 0.99334, Iterations = 268 Final: Soft = 1.44, Hard = 0.99885, Iterations = 248 Final: Soft = 1.27, Hard = 0.99756, Iterations = 305 Final: Soft = 1.37, Hard = 0.99924, Iterations = 320 Final: Soft = 1.26, Hard = 0.9999, Iterations = 282 Final: Soft = 1.36, Hard = 0.99897, Iterations = 259
El mejor diseño alcanza un valor cercano a 1 para los requisitos generales y satisface, al mismo tiempo, los requisitos específicos (Hard
<1). Esto significa que el sistema de control ajustado casi alcanza el rendimiento objetivo para el seguimiento y la anulación de perturbaciones, al tiempo que satisface los márgenes de estabilidad y las restricciones de ubicación de polos.
Validación
Utilice viewGoal
para analizar con más detalle cómo se comporta el mejor diseño con respecto a cada requisito.
figure('Position',[100 100 575 660])
viewGoal([req1,req3,req4],ST)
Estas gráficas confirman que los dos primeros requisitos se cumplen casi en su totalidad, mientras que los dos últimos se aplican estrictamente. A continuación, represente las respuestas a un cambio de escalón en la posición y a un impulso de fuerza sobre el carro.
T = getIOTransfer(ST,{'xref','dF'},{'x','Theta'}); figure('Position',[100 100 650 420]); subplot(121), step(T(:,1),10) title('Tracking of set point change in position') subplot(122), impulse(T(:,2),10) title('Rejection of impulse disturbance')
Las respuestas son suaves con los tiempos de estabilización deseados. Revise los valores ajustados de los controladores.
C1 = getBlockValue(ST,'Position Controller')
C1 = s Kp + Kd * -------- Tf*s+1 with Kp = 5.84, Kd = 1.88, Tf = 0.0506 Name: Position_Controller Continuous-time PDF controller in parallel form.
C2 = zpk(getBlockValue(ST,'Angle Controller'))
C2 = -1602.2 (s+12.92) (s+4.266) --------------------------- (s+134.8) (s-14.16) Name: Angle_Controller Continuous-time zero/pole/gain model.
Observe que el controlador del ángulo tiene un polo inestable que se empareja con el polo inestable de la planta para estabilizar el péndulo invertido. Para ver esto, obtenga la transferencia de lazo abierto en la entrada de la planta y represente el lugar de la raíz.
L = getLoopTransfer(ST,'F',-1); figure rlocus(L) set(gca,'XLim',[-25 20],'YLim',[-20 20])
Para completar la validación, cargue los valores ajustados en Simulink y simule la respuesta no lineal del ensamblaje carro-péndulo. A continuación, se muestra un vídeo de la simulación resultante.
writeBlockValue(ST)
Figura 3: Simulación de carro-péndulo con controladores ajustados.
Cierre el modelo después de realizar la simulación.
set_param('rct_pendulum','SimMechanicsOpenEditorOnUpdate','on'); close_system('rct_pendulum',0);
Consulte también
systune
(Simulink Control Design) | slTuner
(Simulink Control Design)
Temas relacionados
- Mark Signals of Interest for Control System Analysis and Design (Simulink Control Design)
- Create and Configure slTuner Interface to Simulink Model (Simulink Control Design)