"Hugh" wrote in message Hugh wrote:
>
> > Also, it would help you get better answers if you tell us what you're trying
> > to do with this thing - more the system context.
>
> Thanks everyone for your responses.
>
> We're building a servo controlled hydraulic brake which is used to produce
> rapidly changing braking forces in an automotive crash test simulator. We know
> what we want the brake pressure waveform to look like based on a fairly
> straightforward F = ma calculation, where 'a' is the deceleration of the vehicle
> and 'm' is its mass. F is then the braking force that you get when you apply some
> brake pressure. The problem is controlling the hydraulic flow into and out of
> the brake. That's my job: to somehow generate the servovalve control signal
> that will result in the desired brake pressure waveform.
>
> The whole thing is pretty nonlinear. For starters the hydraulic flow is proportional
> to the square root of the pressure difference across the valve orifice so
> you can pretty much throw classical control system stuff out the window. The
> approach we've taken is to use a non-linear simulation to come up with a brake
> control signal that gives us fairly good results - like within 15% of what we want -
> running open loop. However, we've found that we still need to apply some feedback
> to compensate for things that our simulation isn't so good at modeling, such as
> valve leakage. That gets us closer yet to the desired results but it's still not
> good enough. Now I'm looking into ways to get even closer. If you're still with me,
> then you might find the control system block diagram interesting:
>
> +---------------+ +------------+
> | brake control | | |
> | signal | +-----+ | brake |
> | (from |------------>| + |-------| |----+
> | simulation) | +-----+ | | |
> +---------------+ ^ +------------+ |
> | |
> +---------------+ +------+ |
> |ideal pressure | | PID | actual pressure |
> | signal |----------->| |<------------------------+
> +---------------+ +------+
>
> The ideal pressure signal is that which was the input to the simulation which
> generated the brake control signal in the first place. During a crash test the two
> signals are "played back" simultaneously. The actual brake pressure is acquired
> and subtracted from the ideal pressure to produce an error signal. The challenge
> is to somehow relate this error signal to the brake control and apply it as a
> correction to the brake control signal. We've had good results applying PID control,
> at least for slowly changing errors. However, we're having trouble tracking higher
> frequency errors.
>
> One thing that occurred to me is this: we know from our basic performance testing
> that if we apply a sine wave of any frequency to the brake control input, the
> resulting pressure always lags the input signal by 90 degrees for any frequency.
> Thankfully, this can also be explained theoretically: the brake pressure is proportional
> to the integral of the hydraulic flow, which is what we control when we open and
> close the valve. So, my bright idea 😉 was that in the closed loop system maybe we
> need to compare the actual pressure to a delayed version of the ideal pressure signal
> since we already know the actual pressure will lag the command signal. A uniform time
> delay (linear phase) doesn't seem to help. It seems to me that inasmuch as the ideal
> pressure signal can be synthesized from discrete sines (thanks Mr. Fourier) maybe the
> correct approach is to delay each component by 90 degrees. Which brings us to my bumblings
> in Matlab. What I need to design (I think) is a filter which will introduce a phase
> shift of 90 to any frequency component of any signal input to it.
Hugh,
Strange, I don't see this post except in Jerry's recent message. Anyway, here are some comments.
I have read your message and understand it and the diagram.
Right off I don't understand the architecture. What is the ideal signal and where did it come from? It seems to me that the simulated signal is the "ideal" in that at least you have a simulation to generate it. So that's a confusion.
Also, the braking force relationship to brake fluid pressure is out of the feedback loop. This means that variations in the system caused by things like brake temperature are outside of your control right now. That could be a big deal in the context of trying to get better than 15% error.
You have said that you want to control the acceleration of the vehicle according to some desired acceleration profile. So, here is a different block diagram:
+---------------+ +------------+ +------------+
> | brake control | | | | |
> | signal | A (+) +-----+ C | valve V | | Brake B |
> |(acceleration |------------>| +/- |-------| |----+---| |----+
> | profile) | +-----+ | p to p | | p to F | |
> +---------------+ (-) ^ +------------+ | | |
> | +------------+ |
> | |
> | actual acceleration |
+--------------------------------------------------+
>
Desired acceleration profile: A
Valve control signal: C
Valve transfer function: V from Pressure source to Brake as a function of C and delta pressure.
Brake transfer function: B from pressure at brake to braking force on the vehicle which could be a function of velocity and temperature.
Vehicle acceleration:D =
Servo controller: H has input A, D and transfer function H on D.
So D/A = [V*B]/[1 + V*B*H] which you want to be unity so D=A.
The first conclusion thing you note is that you would use an accelerometer for a feedback sensor and use the desired acceleration profile as the control signal. If you assume for the moment that the valve and brake are linear, that the valve has unity gain and the brake has some pressure to force relationship we'll still call B, and the feedback H is also unity, then the equation becomes:
D/A = B/[1+B] which approaches the desired value of unity (D=A) as B gets to be large.
Actually, you might be concerned about this approach because I suspect what you might *really* want is to control the vehicle velocity? If so, here's another approach that might meet your needs:
+---------------+ +------------+ +------------+
> | brake control | | | | |
> | signal | A (+) +-----+ C | valve V | | Brake B |
> |(velocity |------------>| +/- |-------| |----+---| |----+
> | profile) | +-----+ | p to p | | p to F | |
> +---------------+ (-) ^ +------------+ | | |
> | +------------+ |
> | +----+ | |> | | | actual acceleration |
+--| H |------------------------------------------+
> | |
+----+
Here the feedback is still assumed to be acceleration and now H is introduced which would be at least an integrator so that the velocity of the vehicle is now being controlled. You might initialize the integrator after the vehicle is at speed so that the error signal C goes to zero before the controlled event. You could generate the velocity profile from the existing desired acceleration profile by integrating it.
To belabor the point, here is what you currently have by my understanding:
+---------------+ +------------+ +------------+
> | brake control | | | | |
> | signal | A (+) +-----+ C | valve V | | Brake B |
> |(acceleration |------------>| +/- |-------| |-----+---| |----+???
> | profile) | +-----+ | p to p | | | p to F |
> +---------------+ (-) ^ +------------+ | | |
> | | +------------+
> | +----+ | |> | | | brake fluid pressure|
+--| ?? |---------------------+
> | |
+----+
I would first start with an accelerometer and the desired acceleration profile and nothing in H. No simulated profile required to do this and no fancy feedback either. It's likely that this will work with no compensation because it's such a simple control system with plenty of lag. If it becomes unstable, then you can go to more elaborate methods.
I hope this helps,
Fred