Variable Structure Control of Partially Linearizable Dynamics

Harry G. Kwatny

Department of Mechanical Engineering & Mechanics
Drexel University

Introduction

ProPac contains functions that assist in the design of variable structure control systems. The constructions that are included apply to partially feedback linearizable nonlinear systems. In this notebook we will describe tools for design of the switching surfaces and assembly of the switching controller. Smoothing and moderating functions can be included for the purpose of eliminating or reducing chattering as appropriate. These options are also illustrated. With the inclusion of an observer and exogenous signal generator, these tools provide a nonlinear generalization of the variable structure servomechanism.
	First we load the package:

<< ProPac`

The Sliding Surface

There are several methods for determining the sliding surface once the system has been reduced to normal form. ProPac includes a function SlidingSurface that implements two alternatives depending on the arguments provided. The function may be called via
			{rho,s}=SlidingSurface[f,g,h,x,lam]
or
			s=SlidingSurface[rho,vro,z,lam]
In the first case the data provided is the nonlinear system definition f,g,h,x and an m-vector lam which contains a list of desired exponential decay rates, one for each channel. The function returns the decoupling matrix rho and the switching surfaces s as functions of the state x.
The second use of the function assumes that the input-output linearization has already been performed so that the decoupling matrix rho, the vector relative degree and the normal coordinate (partial) transformation z are known. In this case the dimension of each of the m switching surfaces is known so that it is possible to specify a complete set of eigenvalues for each surface. Thus, lam is a list of m-sublists containing the specified eigenvalues. Only the switching surfaces are returned.

Example

As a first example, we take a simple linear problem. This will show in a transparent way how the basic functions are used.

f = {x2, -x1};
g = {0, 1};
h = {x1};

{rho, alpha, vro, control} = IOLinearize[f, g, h, {x1, x2}]

?NormalCoordinates

z = NormalCoordinates[f, g, h, {x1, x2}, vro]

Now, this data can be used to design a switching surface that locates the sliding poles at {-2,-3}.

s = SlidingSurface[rho, vro, z, {{-2}}]

SwitchingControl[rho, s, {{-1, 1}}, {{1}}]

Or, we can determine a switching surface from scratch with a specified decay rate of 2.

SlidingSurface[f, g, h, {x1, x2}, {2}]

Reaching

Once the sliding surface is defined it is possible to construct the switching controller. This is accompished with the function SwitchingControl.

Example

f = {x2, -x1};
g = {0, 1};
h = {x1};

{rho, s} = SlidingSurface[f, g, h, {x1, x2}, {2}]

vsc = SwitchingControl[rho, s, {{-1, 1}}, {{1}}]

Smooth Approximations

Smoothing of the switching mechanism is a commonly used method for reducing chattering and improving the efficency of numerical simulation. However, some caution is required because there are exceptional cases where smoothing can cause instability. The function SwitchingControl has an option which allows the designer to introduce user defined smoothing functions.

?SmoothingFunctions

vsc = 
      SwitchingControl[rho, s, {{-1, 1}}, {{1}}, 
        SmoothingFunctions[x_] -> {(1 - Exp[-Abs[x/10]])}]

Moderating Functions

Moderating functions present another means for reducing chettering. The main idea is to reduce the control control bounds as the regulated variables approach their desired values. Roughly stated this reduces the effective loop gain so that a limit cycle cannot be sustained, thereby quenching any  chattering behavior as the equilibrium is approached.

?ModeratingFunctions

vsc = 
      SwitchingControl[rho, s, {{-1, 1}}, {{1}}, 
        ModeratingFunctions -> {Abs[
                z[[1]]]/( .1 + Abs[z[[1]]])}]

Bibliography