MIMOtool Help Desk

LQ-SERVO

The LQ-SERVO (Linear Quadratic SERVOmechanism) belongs to the group of control laws that solve the general tracking problem of a reference signal using the LQR (Linear Quadratic Regulator) approach.

If we consider the following plant with the matrices C = I and D = 0

X' = A X + B U

Y = C X + DU = X

the purpose of LQ-SERVO is to find a closed loop control law that lets some of the states X track a not null reference command vector; owing to disturbances or to a static gain different from zero, it is possible to obtain a not null static error and then it is necessary that all the channels concerned in the tracking have an integral behavior (their type must be equal to 1).

The first step in the LQ-SERVO synthesis is the choice of the state variables that have to be assigned and the addition of the desired integrators to the channels relative to the selected states. In the following scheme, the state vector X has been partitioned in the components

X = [Xp1 , Xp2 , Xr ]'

where both the Xp1 and Xp2 are the states that have to track the reference command vector, and

d ( Zp ) /dt = Xp1

Then, considering the new state vector

Xaug = [ Zp , Xp1 , Xp2 , Xr ]'

and using the Linear Quadratic approach, we can compute the optimal gain matrix Ksf such that the state feedback law U(t) = -Ksf Xaug(t) minimizes the cost function J

J = integral{ XaugT(t) Q Xaug(t) + UT(t) R U(t) }dt

where Q and R, which are the square matrices of the weighs for the (augmented) state and input, must be symmetric and respectively positive semi definite and positive definite. Then

U = - Ksf Xaug = - Kz Zp - Kp1 Xp1 - Kp2 Xp2 - Kr Xr

and, in the presence of the reference commands for Xp1 and Xp2, the closed loop system results: (note that the structure showed below has been simplified because the error vector should be subdivided in its components relative to Xp1 and Xp2)

The user can set the vectors Zp, Xp1, Xp2 and Xr (some of them can also be empty) by means of the check buttons of the first window:

if we consider the selection made in the example before, the new augmented state vector will be equal to

Xaug = [ Z3 , Z6 , X3 , X6 , X2 , X4 , X1 , X5 , X7 ]'

Zp = [ Z3 , Z6 ]'            with dZ3 /dt = X3 and dZ6 /dt = X6

Xp1 = [ X3 , X6 ]'

Xp2 = [ X2 , X4 ]'

Xr = [ X1 , X5 , X7 ]'

The NEXT button stores the value of all the check buttons, builds the new augmented system and opens the subsequent window in which it's possible to visualize and modify the matrices Q and R.

If a matrix has size less or equal to 10x10, the relative button allows to visualize all its coefficients, and the user is able to modify any of them; instead if a matrix can't be displayed on the window, it's possible to fix only the value T such that mat_name = T*eye(size(mat_name)). The changes introduced become effective only through the function associated with the SAVE MATRIX button that, if the matrix is correct, save it modifying the string of the relative button in [mat_name].

When both the matrices have been saved, the button COMPUTE LQ-SERVO appears so the user can start the controller computation pressing it; the activation of the two buttons EVALUATION and SIMULATION notifies that the state feedback gain matrix Ksf, which is relative to the augmented plant, has been correctly computed and transformed into the corresponding controller of the nominal system.