Main Content

Enforce Passivity Constraint for Flexible Beam

This example shows how to enforce passivity constraint for vibration control in a flexible beam using the Passivity Enforcement block.

Flexible Beam Model

The following figure depicts an active vibration control system for a flexible beam.

In this setup, the actuator delivering the force u(t) and the velocity sensor are collocated. You can model the transfer function from control input u to the velocity y using finite-element analysis. Keeping only the first six modes, you obtain a plant model of the following form.

G(s)=i=16αi2ss2+2ξwis+wi2.

Configure the model parameters.

xi = 0.05;
alpha = [0.09877, -0.309, -0.891, 0.5878, 0.7071, -0.8091];
w = [1, 4, 9, 16, 25, 36];

Construct the resulting beam model G(s).

G = tf(alpha(1)^2*[1,0],[1, 2*xi*w(1), w(1)^2]) + ...
    tf(alpha(2)^2*[1,0],[1, 2*xi*w(2), w(2)^2]) + ...
    tf(alpha(3)^2*[1,0],[1, 2*xi*w(3), w(3)^2]) + ...
    tf(alpha(4)^2*[1,0],[1, 2*xi*w(4), w(4)^2]) + ...
    tf(alpha(5)^2*[1,0],[1, 2*xi*w(5), w(5)^2]) + ...
    tf(alpha(6)^2*[1,0],[1, 2*xi*w(6), w(6)^2]);

Check whether the model is passive.

isPassive(G)
ans = logical
   1

With this sensor and actuator configuration, the beam is a passive system.

Open the Simulink® model and disable passivity constraint enforcement.

mdl = 'passivityBeam';
open_system(mdl)
constrained = 0;

Design LQG Controller

Before you apply the constraints, design an LQG controller for the beam model. LQG control is a natural formulation for active vibration control. The LQG control setup is depicted in this figure.

The signals d and n are the process and measurement noise, respectively.

The LQG objective is to minimize

J=limTE(0T(y2(t)+0.001u2(t))dt),

with noise variance

E(d2(t))=1, E(n2(t))=0.01.

Design the LQG controller.

[a,b,c,d] = ssdata(G);
M = [c d;zeros(1,12) 1];  % [y;u] = M * [x;u]
QWV = blkdiag(b*b',1e-2);
QXU = M'*diag([1 1e-3])*M;
CLQG = lqg(ss(G),QXU,QWV);

Simulate the LQG controller and plot its performance.

% Simulate the model.
out = sim(mdl);

% Extract trajectories.
logsout = out.logsout;

% Plot trajectories of y.
y = logsout.getElement('y');       
y_vector = y.Values.Data(:,:)';
plot(y.Values.time,y_vector)
grid on
title('y')

Figure contains an axes object. The axes object with title y contains an object of type line.

Passivity Constraint

The beam model is passive from control input u to the velocity y.

The Passivity Enforcement block accepts passivity constraint in the form up=fp(x)+gp(x)u and yp=hp(x). In this application, fp(x)=0, gp(x)=1, and hp(x)=y.

Simulate Controller with Passivity Constraint

To view the constraint implementation, open the Constraint > Constrained subsystem.

Enable the passivity constraint enforcement.

constrained = 1;

Run the model and plot the simulation results.

% Simulate the model.
out = sim(mdl);

% Extract trajectories.
logsout = out.logsout;

% Plot trajectories of y.
y = logsout.getElement('y');       
y_vector = y.Values.Data(:,:)';
plot(y.Values.time,y_vector)
grid on
title('y')

Figure contains an axes object. The axes object with title y contains an object of type line.

When you enforce the passivity constraint, the vibration in flexible beam is greatly reduced.

Close the model.

bdclose(mdl)

See Also

Related Topics

Go to top of page