How do I incorporate a feedforward control signal into an MPC block?

I have designed a feedback control system using an Model Predictive Controller block for a DC Motor servomechanism. In order to reduce the steady-state error I want to include a feedforward control signal that I can estimate and predict. The MPC block therefore needs to have knowledge of the feedforward control signal as, I assume, a measured disturbance which is able to be previewed. I have implemented this as below:
I haven't been able to improve the controller performance with this architecture as I would expect (previous PI + Feedforward works very well), so I wanted to ask whether this was the correct approach to include the feedforward signal into the MPC block?

5 commentaires

Would you be able to show the block diagram and mathematical model of the DC Motor Servomechanism? Though I'm not expert in MPC, I'm curious to understand why the powerful computational MPC approach doesn't seem to be achieving a zero steady-state error in this case.
From a theoretical standpoint, if we're dealing with a linear 2nd-order SISO system and the input disturbance (load) is constant, a well-designed PID controller should theoretically be able to reject the disturbance and achieve a zero steady-state error.
Does that imply the designed MPC is performing worse than a theoretically optimal PID controller?
The mathematical model is the standard 2nd-order SISO state space model for a DC motor. I have added cascade rate and current loops within the model but this has minimal effect in practice. I should have been more specific: the PI controller and MPC do indeed achieve zero steady-state error against a step input, however I am generally benchmarking controllers against a sinusoidal or accelerating/cubic input.
To solve this, I typically estimate the angular rate and use it as a feedforward signal along with the "optimal" PI controller. I believe that a MPC + Rate Feedforward control architecture should outperform the PI version given the access to preview information however this was not the case - I assume down to my implementation of the MPC.
I hope this makes it clearer!
Hi Joe, Based on your detailed description of the feedback control system you have designed for a DC Motor servomechanism using a Model Predictive Controller (MPC) block, it seems that you are aiming to enhance the system's performance by incorporating a feedforward control signal to reduce steady-state error. However, you have encountered challenges in achieving the desired improvement in controller performance with this architecture. In your setup, you have integrated a feedforward control signal that is estimated and predicted to be used by the MPC block as a measured disturbance that can be previewed. Despite your efforts to include this feedforward signal, you have not observed the expected enhancement in controller performance compared to a previous configuration involving a PI controller combined with feedforward. It is important to consider whether the approach of including the feedforward signal into the MPC block is appropriate for your specific system dynamics and requirements. While MPC offers advantages such as the ability to handle constraints and optimize control actions over a finite horizon, its effectiveness can vary based on factors like model accuracy, prediction horizon, and tuning parameters. Given that you are benchmarking controllers against sinusoidal or accelerating input signals, it is crucial to assess how well your control architecture handles such reference inputs. In your case, incorporating rate feedforward along with the optimal PI controller to estimate angular rate may seem promising in theory, but the actual performance might be influenced by factors like model fidelity, disturbance rejection capabilities, and tuning methodology. To address the discrepancy between your expectations and the observed results, it may be beneficial to revisit your MPC implementation and evaluate aspects such as prediction horizon selection, weighting matrices tuning, disturbance modeling accuracy, and preview capabilities. Additionally, considering the impact of cascade rate and current loops within your model on overall system behavior could provide insights into potential areas for improvement. In conclusion, while the integration of a feedforward control signal into an MPC-based control architecture has the potential to enhance performance by leveraging preview information, the effectiveness of this approach depends on careful consideration of system dynamics, model accuracy, tuning parameters, and implementation details. By refining your MPC setup and conducting thorough analysis and testing, you can optimize the control strategy for improved performance against various input signals.
Thank you for the detailed response. I think however that my main question is how to include a feedforward control signal with the MPC block. Ignoring the performance, is the structure I have used what is recommended by Mathworks?
Hi @Joe Gibbs,
Please see response from @Harsh Sharma, he has provided documentation regarding to your comments. Let us know if this helps.

Connectez-vous pour commenter.

 Réponse acceptée

Harsh
Harsh le 29 Août 2024
Hi Joe,
According to my understanding, MPC is generally used in closed loop configuration and the “Measured disturbances” is used for the feedforward compensation as suggested in the “MPC Signal Types” documentation - https://www.mathworks.com/help/mpc/gs/plant-inputs-and-outputs.html?searchHighlight=MPC%20feedforward%20&s_tid=srchtitle_support_results_4_MPC%20feedforward%20
However, you can certainly create MPC with feedforward as per your design. You may check following resources to understand how MPC and feedforward control are designed using MATLAB.
Feedforward with Simulink - https://youtu.be/FW_ay7K4jPE

Plus de réponses (0)

Catégories

Question posée :

le 17 Juin 2024

Commenté :

le 29 Août 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by