Approximating the Convergence Rate of a NCS - Example

This example shows how to find an upperbound on the convergence rate of a given NCS modeled as discrete-time linear parameter varying (DLPV) system. Specifically we mean solving for an lower bound on $$ \gamma $$ such that the state of the NCS $$ \bar{x} $$ satisfies

$$  ||\bar{x}_k|| \leq c ||\bar{x}_0||(1-\gamma)^k $$

when the NCS has delays and transmission intervals bounded in a continuous range.

Contents

Define the Network Control System

The plant is a divided into two subsystems which are given as

$$ \dot{x}_1= A_1x_1 +B_1pu_1 + A_{c1}x_2 + B_{c1}u_2 $$

$$ \dot{x}_2= A_2x_2 +B_2pu_2 + A_{c2}x_1 + B_{c2}u_1 $$

with decentralized state feedback

$$ u_1 = K_1x_1 $$

$$ u_2 = K_2x_2. $$

The plant subsystem matrices with corresponding feedback gains are defined as

A1=[0.6  -4.2;
    0.1  -2.1];
B1=[0.7   1.9;
    0     1];

K1= [1.94 -1.40;
   -0.56 -0.86];

A2=[-3.2  0.2;
    5.3  -0.2];
B2=[0.8;
   -0.4];
K2 = [1.36 0.81];

and the coupling matrices are given as

Ac1 = [0.1   2.1;
       0.01   0];
Ac2 = [0     0;
       0  -0.03];

Bc1 = [-0.02;
       -0.01];
Bc2=[0 0;
     0 0];

We can express these two coupled systems as one system with the expression

$$ \dot{x}= Ax +Bu $$

$$ u= Kx$$

where

A=[A1 Ac1;
   Ac2 A2];
B=[B1 Bc1;
   Bc2 B2];
K= [K1  zeros(2);
    0 0    K2];

where K is a decentralized state feedback gain.

The network that the decentralized NCS is operating on has the following characteristics

h=[0.9, 1.1];     % [hmin,hmax] bounds on the sampling time
tau=[0, 1e-3];    % [taumin,taumax] bounds on the delay
delta = 0;        % integer bound on the number of subsequent dropouts

Create 'ncs' Object

Now we are ready to create a ncs class variables. This is done using the ncsEditor. To open the ncsEditor simply type 'ncsEditor' into the command prompt. Since the matrix variables are defined in the workspace, we can directly input the matrix names into the fields of the ncsEditor GUI. We do not consider communication constraints in this example so leave that box unchecked.

load exampleNcs

Generate Stability Data

Finally, to determine if out system is stable with a given gamma, we simply plug the ncs object into the following function:

gamma = 0;
stable = dncs.isNcsStable('JNF','explicit','pardep',gamma);

% where |explicit| is the dropout modeling approach we will use.
% Alternatively one could use the |lngtrans| dropout modeling approach.
% Also, 'CH' or 'GNB' are alternative overapproximation choices.
SYSTEM DATA:
  states     = 4
  h          = [0.9,  1.1]
  tau        = [0,  0.001]
  max drops  = 0
 
OVERAPPROXIMATION DATA:
unique alfa terms = 9
 
   Mode: Packet Received
      Number of varying alfa terms = 8
      Number of Polytopic Vertices = 256
 
STABILITY DATA:
   Lyapunov function type: Switched Quadratic
      Number of LMIs needed to verify stabiliy = 257
      No problems detected (SeDuMi-1.3)
      Stability: Guaranteed
-------------------------------------------------------------- 

We chose gamma=0 since it is the slowest decay rate and it is the most general way to verify system stability. We also chose the Lyapunov function to be parameter dependent (pardep) and the overapproximation to be the Jordan Normal Form (JNF).

Now since the above command results in a stable system, we can simply write a loop around this function to gradually increase gamma until stability cannot be gauranteed, which will provide an upper bound on the convervence rate when the loop terminates. A simple example of this loop is the following:

if stable == 1
    while stable == 1 && gamma <= 1
        stable = dncs.isNcsStable('JNF','explicit','pardep',gamma);
        gamma = gamma +0.1;
        if stable == 1
            disp(['lower bound on gamma is ' num2str(gamma)])
            disp(' ')
        end
    end
end
SYSTEM DATA:
  states     = 4
  h          = [0.9,  1.1]
  tau        = [0,  0.001]
  max drops  = 0
 
OVERAPPROXIMATION DATA:
unique alfa terms = 9
 
   Mode: Packet Received
      Number of varying alfa terms = 8
      Number of Polytopic Vertices = 256
 
STABILITY DATA:
   Lyapunov function type: Switched Quadratic
      Number of LMIs needed to verify stabiliy = 257
      No problems detected (SeDuMi-1.3)
      Stability: Guaranteed
-------------------------------------------------------------- 
lower bound on gamma is 0.1
 
SYSTEM DATA:
  states     = 4
  h          = [0.9,  1.1]
  tau        = [0,  0.001]
  max drops  = 0
 
OVERAPPROXIMATION DATA:
unique alfa terms = 9
 
   Mode: Packet Received
      Number of varying alfa terms = 8
      Number of Polytopic Vertices = 256
 
STABILITY DATA:
   Lyapunov function type: Switched Quadratic
      Number of LMIs needed to verify stabiliy = 257
      Infeasible problem (SeDuMi-1.3)
      Stability: Guaranteed
-------------------------------------------------------------- 
lower bound on gamma is 0.2
 
SYSTEM DATA:
  states     = 4
  h          = [0.9,  1.1]
  tau        = [0,  0.001]
  max drops  = 0
 
OVERAPPROXIMATION DATA:
unique alfa terms = 9
 
   Mode: Packet Received
      Number of varying alfa terms = 8
      Number of Polytopic Vertices = 256
 
STABILITY DATA:
   Lyapunov function type: Switched Quadratic
      Number of LMIs needed to verify stabiliy = 257
      Infeasible problem (SeDuMi-1.3)
      Stability: Guaranteed
-------------------------------------------------------------- 
lower bound on gamma is 0.3
 
SYSTEM DATA:
  states     = 4
  h          = [0.9,  1.1]
  tau        = [0,  0.001]
  max drops  = 0
 
OVERAPPROXIMATION DATA:
unique alfa terms = 9
 
   Mode: Packet Received
      Number of varying alfa terms = 8
      Number of Polytopic Vertices = 256
 
STABILITY DATA:
   Lyapunov function type: Switched Quadratic
      Number of LMIs needed to verify stabiliy = 257
      Infeasible problem (SeDuMi-1.3)
      Stability: Not Guaranteed
-------------------------------------------------------------- 

Therefore our NCS is stable for h=[0.9, 1.1] and tau=[0, 1e-3]. Furthermore, decay of the state of our discrete-time system is upperbounded by the expression

$$  ||\bar{x}_k|| \leq c ||\bar{x}_0||(1-0.3)^k $$