Generate plant model for given experimental input output data without using System Identification Toolbox

19 ビュー (過去 30 日間)
I am building a controller for a vacuum pump plant (input: RPM data, Feedback: Vacuum Pressure) however the manufacturer of the motor used in the pump is unable to share motor specs info
However I do have a test bed that can be run and I can record the input to and feedback from the plant
Is it possible for me to generate a plant model using this experimental data that can be replaced with a transfer function in Simulink?
I have seen tutorials using System Identification toolbox however unfortunately I donot and cannot obtain that tootlbox currently
Some of the other tutorials I have seen involve some complex math I am not very familiar with but I am willing to give it a shot if needed.
Kindly advice.
  2 件のコメント
Sam Chak
Sam Chak 約1時間 前
First things first, you will need to collect the frequency response data from your oscilloscope. To do so, sweep the frequency logarithmically across the band. Then, using the oscilloscope, measure the steady-state amplitude and phase at each frequency. However, you may need to calibrate to compensate for the probe and channel delays, as well as to adjust the resolution and the Signal-to-Noise Ratio (SNR).
After that, upload the data by clicking the paperclip icon .
Sam Chak
Sam Chak 24分 前
If you do not have the System Identification Toolbox, you can still use some functions from the Control System Toolbox, Curve Fitting Toolbox, and Signal Processing Toolbox, which are included in the MATLAB Online (Basic). For example, the tfestimate(rpm, pressure) syntax may estimate a transfer function between the input signal rpm and the output signal pressure evaluated at a set of frequencies.

サインインしてコメントする。

回答 (1 件)

Star Strider
Star Strider 約2時間 前
It could be possible to upload your data here and then run the System Identification Toolbox functions with it in a Comment here. The Signal Processing Toolbox has some related funcitons (specifically invfreqz) that you could use if you have that toolbox.
A transfer function would be relatively straightforward to calculate. Use the fft function (since you will want to use the entire spectrum), calculate the Fourier transform of the output by the Fourier transform of the input, and then calculate the transfer function by dividing the output spectrum by the input spectrum, element-wise. Use the first half of that result as the transfer function.
  2 件のコメント
Anirudh
Anirudh 3分 前
Hey hi I am somewhat new to all this plus not very familiar with the math behind this
Could you please explain stepwise how you would go about implementing this in Matlab and Simulink say I have 100 experimental data samples for rpm vs pressure x and y.
Also if you could provide some references for the math and logic behind this it would be for the best as well.
Star Strider
Star Strider 9分 前
Your experimental data need to be collected at regular intervals of 'x', or be interpolated to regular intervals (the Signal Processing Toolbox resample function is best for this). After that, calculate the Fourier transforms, then do the element-wise division to calculate the transfer function.
I have not used Simulink in years, so I cannot help you with that part of your question. My objective here is to tell you how to get the transfer function. (Note that invfreqz will create filter coefficients. I am not certain that this information is what you need.)

サインインしてコメントする。

製品


リリース

R2025a

Community Treasure Hunt

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

Start Hunting!

Translated by