System Identification using Polynomials and State Space Models
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi everyone,
I am using the MATLAB toolbox to identify one of my linear actuator system that uses an AC servo motor connected to a linear ball screw. I am using a motion controller and a servo driver for the motor. My objective is to find a transfer function for the open loop Motor and Ball Screw system so that I can use a PID tuning algorithm to estimate PID values and try them on my system.
For this, I set the PID values for my controller as 0 and gave step voltage values to the controller and measured the encoder count (rotary encoder comes with the servo motor). The encoder counts then gives me the distance that my ballscrew travels and using a 10 ms sample rate, I record my data which can be seen below. u is the input voltage and y is the output displacement of the ballscrew actuator. I am providing both Estimation and Validation Data
I then used my data in the system Identifcation Toolbox and applied state space and polynomial models. I get the best fit by an ARMAX model and the residual analysis also shows that I can use this model (I think). I then apply the tf command to get a Transfer Function for the Model.
I am having some confusions here.
- Should I apply the tf command to get the transfer function of the model with or without noise? If I use tf(ARMAX, 'noise') it returns me a Transfer function with an additional pole and zero. Is this normal?
- As the ARMAX model already contains the delay that I specefied, will my transfer function that I get using the tf command also contain the delay or should I add the delay with the transfer function seperately?
- If there are any other advices to improve the system identification process, I will be very happy to hear. Thank you
Respuestas (1)
Yash
el 13 de Sept. de 2023
Hi Tamim,
As I can understand, you are interested in finding the open loop transfer function for the Motor and Ball Screw system for using a PID controller. Since you have the input and the output data available, utilizing the System Identification Toolbox is a suitable approach to estimate a Transfer Function.
The answers to your questions are as follows:
- Transfer Function with or without noise: When using the "tf" command, it is generally recommended to obtain the transfer function without noise. The noise component in the ARMAX model represents the unmodeled dynamics or disturbances in your system. Therefore, if you want to obtain a transfer function that represents the underlying dynamics of your system, it is best to use "tf(ARMAX)" without specifying "noise".
- Additional pole and zero in the transfer function: If you use "tf(ARMAX, 'noise')", it adds an additional pole and zero to the transfer function to account for the noise dynamics in the system. This is normal (expected) behaviour, as it considers the noise characteristics in the model.
- Delay in the transfer function: If you have specified a delay in your ARMAX model, you do not need to add the delay separately when obtaining the transfer function using "tf(ARMAX)". The delay information is already incorporated into the ARMAX model, and the resulting transfer function will reflect the system dynamics with the delay included.
- Suggestions for improvement:
a. Your data should be large enough to cover a wide range of operating conditions.
b. Split your data to check accuracy on unseen data as well.
c. Consider trying different model structures (e.g., different orders, state-space models, or other model types) to
find the best fit for your system.
I hope these explanations address your query.
0 comentarios
Ver también
Categorías
Más información sobre Linear Model Identification en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!