3
$\begingroup$

Currently I try to understand an unknown mechatronic system. I used white noise as an input signal and measured the output of the system. Then I estimated a 2nd order transfer function (Output/Input) in the frequency domain using Matlab:

sys=Out/In
h = idfrd(sys, freq*2*pi, Ts);
np = 2;
nz = 2;
Gs = tfest(h, np, nz)
opts = c2dOptions('Method', 'tustin', 'PrewarpFrequency', 2*pi*120);
Gz = c2d(Gs, 1/4000, opts);

$$ Gs=\frac{3.765\cdot s^2 - 528.7 s - 5.113 \cdot 10^4}{s^2+183 \cdot s + 4.117 \cdot 10^5} $$

A bode Plot of the derived 2nd order system Gs (blue) and the measured data (orange) shows good alignment in amplitude and phase above 60Hz:

Comparison transfer function of 2nd order system and measured data

Further a pole-zero-plot of Gz shows that all poles are stable (inside unit circle of z-plane), but that there is one zero outside of unit circle of the z-plane:

pole-zero-plot of the derived 2nd order system

Now I want to counteract the behaviour of the mechatronic system in a way that I achieve a unity output. So by modifying the input to the system I want to basically get rid of the system characteristics and achieve a pure unit transfer behaviour.

IGz=1/Gz; % so that IGz * Gz = 1

Mathematically I need to multiplicate the input signal with the inverse transform of the system. Here a bode plot of the system Gs (blue) and its inverse transform IGz (orange) basically shows what I want to do:

Bode plot of the system Gs and its inverse transform IGz

But because of the zero outside the unit circle the inverse transfer function now has a pole outside the unit circle and thus is unstable. Therefor I wonder how can I counteract the behaviour of the system while not getting an unstable system?

So far I have tried to replace the unstable pole by reflecting the pole inside the unit circle like it is advised here: $(z-p)$ by $(z-1/p)$ (as the unstable pole is purely real I don't need to do the complex conjungate). This keeps the amplitude response, but changes the phase response (blue: unstable IGz, orange: stabilized IGz):

stabilized 2nd order system with same amplitude but different phase

However I would like to keep the phase response as closely to my inverse transfer function as well. But as I don't care so much about what happens below 60 Hz I wonder if there is an approximation of my inverse system which is good above ~60Hz in amplitude and in phase, but can deviate below ~60Hz and is stable. I wonder if there is an established way how one would derive such a system? Here is what I have tried so far:

pIG=pole(IGz);
zIG=zero(IGz);

z=tf('z',1/4000);
Test=((z-zIG(1))*(z-zIG(2)))/((z-1/pIG(1))*(z-pIG(2)));
Fac=evalfr(IGz,100)/evalfr(Test,100);
Test1=Fac*Test;
bode(IGz,Test1)

The result looks good at higher frequencies, however the phase could be better below 100Hz or so (blue: unstable IGz, orange: stabilised IGz with phase kept roughly the same above 100Hz):

Bode plot of IGz and IGz stabilised with phase remaining the same above ~100Hz

Edit

I just looked at the impulse responses. The system $Gs$ of course is oscillationg, but decaying: Impulse Response of system Gs

However the impulse response of the inverse system is instable of course: Impulse Response of system IGs

The Impulse Response of the 2nd stabilized system is still overshooting with high amplitude. I wonder if this works, as I of course am limited in output with my controller: Impulse Response of system IGs stabilized

With my Input u to the controller and the output y I want to do the following: u -> IGz (controller) -> y -> Gz (mechatronic system) -> y2 During all this the output y of the controller can't get too big. And it should be: y2/u=1

How can I best come up with a IGz that achieves this.

$\endgroup$
3
$\begingroup$

Like you mentionned, you cannot cancel a right-half-plane zero (or a zero outside the unit circle) by placing a pole on it. A unstable pole in your compensator will make the command of your controller unbounded (i.e. it will reach infinity).

There are no ways to cancel a right-half-plane zero. It's sometimes possible to "remove" a right-half-plane zero by chansing a sensor position.

From Murray's book http://www.cds.caltech.edu/~murray/books/AM08/pdf/fbs-limits_18Aug2019.pdf

The existence of the right half-plane zero can be removed if we choose to measure the location of the vehicle by the position of the center of the rear wheels instead of the center of mass.

Edit : A right-half plane zero can also be caused by a time delay. Delays to computation can be reduced, but some other delays cannot be avoided.

Edit 2 : I will try to answer your other questions later.

| improve this answer | |
$\endgroup$
  • $\begingroup$ If you know the input signal ahead or time you could filter it forwards in time by the stable part of the inverse plant and backwards in time by the unstable part of the inverse plant. I believe this has a name but can't remember what (I learned about it in a course about iterative learning control). $\endgroup$ – fibonatic Feb 27 at 1:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.