thickness control for a steel beam -凯发k8网页登录
this example shows how to design a mimo lqg regulator to control the horizontal and vertical thickness of a steel beam in a hot steel rolling mill.
rolling stand model
figures 1 and 2 depict the process of shaping a beam of hot steel by compressing it with rolling cylinders.
figure 1: beam shaping by rolling cylinders.
figure 2: rolling mill stand.
the desired h shape is impressed by two pairs of rolling cylinders (one per axis) positioned by hydraulic actuators. the gap between the two cylinders is called the roll gap. the goal is to maintain the x and y thickness within specified tolerances. thickness variations arise primarily from variations in thickness and hardness of the incoming beam (input disturbance) and eccentricities of the rolling cylinders.
an open-loop model for the x or y axes is shown in figure 3. the eccentricity disturbance is modeled as white noise w_e
driving a band-pass filter fe
. the input thickness disturbance is modeled as white noise w_i
driving a low-pass filter fi
. feedback control is necessary to counter such disturbances. because the roll gap delta
cannot be measured close to the stand, the rolling force f
is used for feedback.
figure 3: open-loop model.
building the open-loop model
empirical models for the filters fe
and fi
for the x axis are
and the actuator and gap-to-force gain are modeled as
to construct the open-loop model in figure 3, start by specifying each block:
hx = tf(2.4e8 , [1 72 90^2] , 'inputname' , 'u_x'); fex = tf([3e4 0] , [1 0.125 6^2] , 'inputname' , 'w_{ex}'); fix = tf(1e4 , [1 0.05] , 'inputname' , 'w_{ix}'); gx = 1e-6;
next construct the transfer function from u,we,wi
to f1,f2
using concatenation and append
as follows. to improve numerical accuracy, switch to the state-space representation before you connect models:
t = append([ss(hx) fex],fix);
finally, apply the transformation mapping f1,f2
to delta,f
:
px = [-gx gx;1 1] * t; px.outputname = {'x-gap' , 'x-force'};
plot the frequency response magnitude from the normalized disturbances w_e
and w_i
to the outputs:
bodemag(px(: , [2 3]),{1e-2,1e2}), grid
note the peak at 6 rad/sec corresponding to the (periodic) eccentricity disturbance.
lqg regulator design for the x axis
first design an lqg regulator to attenuate the thickness variations due to the eccentricity and input thickness disturbances w_e
and w_i
. lqg regulators generate actuator commands u = -k x_e where x_e is an estimate of the plant states. this estimate is derived from available measurements of the rolling force f
using an observer called "kalman filter."
figure 4: lqg control structure.
use lqry
to calculate a suitable state-feedback gain k. the gain k is chosen to minimize a cost function of the form
where the parameter beta
is used to trade off performance and control effort. for beta
= 1e-4, you can compute the optimal gain by typing
pxdes = px('x-gap','u_x'); % transfer u_x -> x-gap kx = lqry(pxdes,1,1e-4)
kx = 0.0621 0.1315 0.0222 -0.0008 -0.0074
next, use kalman
to design a kalman estimator for the plant states. set the measurement noise covariance to 1e4 to limit the gain at high frequencies:
ex = kalman(px('x-force',:),eye(2),1e4);
finally, use lqgreg
to assemble the lqg regulator regx
from kx
and ex
:
regx = lqgreg(ex,kx); zpk(regx)
ans = from input "x-force" to output "u_x": -0.012546 (s 10.97) (s-2.395) (s^2 72s 8100) ---------------------------------------------------------- (s 207.7) (s^2 0.738s 32.33) (s^2 310.7s 2.536e04) input groups: name channels measurement 1 output groups: name channels controls 1 continuous-time zero/pole/gain model.
bode(regx),
grid, title('lqg regulator')
lqg regulator evaluation
close the regulation loop shown in figure 4:
clx = feedback(px,regx,1,2, 1);
note that in this command, the 1 accounts for the fact that lqgreg
computes a positive feedback compensator.
you can now compare the open- and closed-loop responses to eccentricity and input thickness disturbances:
bodemag(px(1,2:3),'b',clx(1,2:3),'r',{1e-1,1e2}) grid, legend('open loop','closed loop')
the bode plot indicates a 20 db attenuation of disturbance effects. you can confirm this by simulating disturbance-induced thickness variations with and without the lqg regulator as follows:
dt = 0.01; % simulation time step t = 0:dt:30; wx = sqrt(1/dt) * randn(2,length(t)); % sampled driving noise h = lsimplot(px(1,2:3),'b',clx(1,2:3),'r',wx,t); h.input.visible = 'off'; legend('open loop','closed loop')
two-axis design
you can design a similar lqg regulator for the y axis. use the following actuator, gain, and disturbance models:
hy = tf(7.8e8,[1 71 88^2],'inputname','u_y'); fiy = tf(2e4,[1 0.05],'inputname','w_{iy}'); fey = tf([1e5 0],[1 0.19 9.4^2],'inputn','w_{ey}'); gy = 0.5e-6;
you can construct the open-loop model by typing
py = append([ss(hy) fey],fiy); py = [-gy gy;1 1] * py; py.outputname = {'y-gap' 'y-force'};
you can then compute the corresponding lqg regulator by typing
ky = lqry(py(1,1),1,1e-4); ey = kalman(py(2,:),eye(2),1e4); regy = lqgreg(ey,ky);
assuming the x- and y-axis are decoupled, you can use these two regulators independently to control the two-axis rolling mill.
cross-coupling effects
treating each axis separately is valid as long as they are fairly decoupled. unfortunately, rolling mills have some amount of cross-coupling between axes because an increase in force along x compresses the material and causes a relative decrease in force along the y axis.
cross-coupling effects are modeled as shown in figure 5 with gxy=0.1 and gyx=0.4.
figure 5: cross-coupling model.
to study the effect of cross-coupling on decoupled siso loops, construct the two-axis model in figure 5 and close the x- and y-axis loops using the previously designed lqg regulators:
gxy = 0.1; gyx = 0.4; p = append(px,py); % append x- and y-axis models p = p([1 3 2 4],[1 4 2 3 5 6]); % reorder inputs and outputs cc = [1 0 0 gyx*gx ;... % cross-coupling matrix 0 1 gxy*gy 0 ;... 0 0 1 -gyx ;... 0 0 -gxy 1 ]; pxy = cc * p; % cross-coupling model pxy.outputn = p.outputn; clxy0 = feedback(pxy,append(regx,regy),1:2,3:4, 1);
now, simulate the x and y thickness gaps for the two-axis model:
wy = sqrt(1/dt) * randn(2,length(t)); % y-axis disturbances wxy = [wx ; wy]; h = lsimplot(pxy(1:2,3:6),'b',clxy0(1:2,3:6),'r',wxy,t); h.input.visible = 'off'; legend('open loop','closed loop')
note the high thickness variations along the x axis. treating each axis separately is inadequate and you need to use a joint-axis, mimo design to correctly handle cross-coupling effects.
mimo design
the mimo design consists of a single regulator that uses both force measurements fx
and fy
to compute the actuator commands, u_x
and u_y
. this control architecture is depicted in figure 6.
figure 6: mimo control structure.
you can design a mimo lqg regulator for the two-axis model using the exact same steps as for earlier siso designs. first, compute the state feedback gain, then compute the state estimator, and finally assemble these two components using lqgreg
. use the following commands to perform these steps:
kxy = lqry(pxy(1:2,1:2),eye(2),1e-4*eye(2)); exy = kalman(pxy(3:4,:),eye(4),1e4*eye(2)); regxy = lqgreg(exy,kxy);
to compare the performance of the mimo and multi-loop siso designs, close the mimo loop in figure 6:
clxy = feedback(pxy,regxy,1:2,3:4, 1);
then, simulate the x and y thickness gaps for the two-axis model:
h = lsimplot(pxy(1:2,3:6),'b',clxy(1:2,3:6),'r',wxy,t); h.input.visible = 'off'; legend('open loop','closed loop')
the mimo design shows no performance loss in the x axis and the disturbance attenuation levels now match those obtained for each individual axis. the improvement is also evident when comparing the principal gains of the closed-loop responses from input disturbances to thickness gaps x-gap, y-gap
:
sigma(clxy0(1:2,3:6),'b',clxy(1:2,3:6),'r',{1e-2,1e2}) grid, legend('two siso loops','mimo loop')
note how the mimo regulator does a better job at keeping the gain equally low in all directions.
simulink® model
if you are a simulink® user, click on the link below to open a companion simulink® model that implements both multi-loop siso and mimo control architectures. you can use this model to compare both designs by switching between designs during simulation.