Modeling high order system

5 visualizaciones (últimos 30 días)
J B
J B el 13 de Dic. de 2019
Respondida: J B el 16 de Dic. de 2019
I have to model a control system where I face several problems with a large number of poles showing up in my transfer functions in matlab. This causes numerical instabilities (I guess...) which make my results hard to trust.
The system to be modelled is depicted here (left picture):
The problem deals with a 5th order LC filter and a cascaded current/voltage controller. The PI and P controller are implemented in an FPGA, unfortunately their deadtime is crucial in my application and has to be contained in my model. Furthermore, all of the 4 measurements are modelled by a 1st order low pass filter as well as a measuring delay. The question I have now is: How would you model this in matlab? I would like to optimize the control parameters (P and PI gains) in order to maximize the bandwidth of the converter and plan to do this by iterating over a sets of parameters and qualifying the resulting system behaviour. However, I have difficulties finding a useful implementation in matlab.
  • First I tried to setup the transfer functions in matlab. I defined s = tf('s') and used this then to go through the system step by step. I defined the impedances (XL1 = s*L1 and so on, used complex voltage divider rules and similar circuit analysis to get the transferfunctions from the filter's input to all of the measured quantities and so on. This is actually working. However, it is a lot of effort to do these things manually, Furthermore, the resulting system turns out to have an order of 80 because I multiply and divide different transfer functions back and forth, thereby accumulating poles everywhere.
  • The other approach I tried is to express the transfer functions analytically in mathematica, using mason's gain rule. The resulting expressions I copied into matlab (they are huge, filling several screen pages), again I end up having transfer functions of order 100.
Plotting the bode plots of both systems gives identical results for my usefull frequency range (above and below certain frequencies, both plots diverge to strange nonsense values), so I guess what I do would be theoretically correct. I also checked several distinct points from the bodeplots and the step responses against a circuit simulation, the results are matching very well.
The problem is now the high order of the transfer functions and how to work with these functions in matlab. For example how do I judge stability of the system? There is a large number of poles, some of them are very close to instability. Some of them are compensated by according zeros at the same location. Some of these pole/zero pairs should cancel out due to being on the same location, but due to numerical deviations they don't exactly do. I tried using the "minreal" command, it helps but it's not enough. Furthermore, I figured out several cases in which using the "minreal" command severely changed the system dynamics.
An additional problem turns out to be the time delays. I used exp(-s*T) to model them, however, this seems to be a problem with certain matlab functions (e.g the "step" command). I then tried pade approximation, however, this also seems to cause numerical issues and for low orders (less than 3) turns out not to be accurate enough. Since I have 3 controllers and 4 measurements in my final system, approximating all of them by third order pade approximation would imply 21 additional poles in the system (I have no idea whether this would be a problem or not. Is it? It doesn't seem like a good idea to me).
So my question in the end breaks down to this: What is a useful strategy to deal with this? Where to start? What also came into my mind: The controllers are time discrete, I transferred them to the s-domain. I never really worked with z-transformation. Would it be better to us in z-doman and discretizing the time continuous filter into z-domain? I could imagine that modelling the time-delays (which are always integer multiples of the time step) could be easier in z-domain then in s-domain.

Respuestas (1)

J B
J B el 16 de Dic. de 2019
Nobody? Should I post this somewhere else? Wrong subforum or something?

Categorías

Más información sobre Get Started with Control System Toolbox 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!

Translated by