Главная
Nonlinear Control Systems Using MATLAB®
Nonlinear Control Systems Using MATLAB®
Mourad Boufadene
0 /
0
Насколько Вам понравилась эта книга?
Какого качества скаченный файл?
Скачайте книгу, чтобы оценить ее качество
Какого качества скаченные файлы?
The development of computer software for nonlinear control systems has provided many benefits for teaching, research, and the development of control systems design. MATLAB is considered the dominant software platforms for linear and nonlinear control systems analysis.
This book provides an easy way to learn nonlinear control systems such as feedback linearization technique and sliding mode control(Structure Variable Control)which are one of the most used techniques in nonlinear control dynamical systems. Teachers, students and researchers can all benefit from such nonlinear controllers, especially for more complicated systems such as induction motor, satellite, and vehicles dynamical models. This book is an excellent resource for learning the principle of feedback linearization and sliding mode techniques in an easy and simple way:
Provides a brief description of the feedback linearization and sliding
mode control strategies
Includes a simple method on how to determine the right and appropriate controller (PPIPID) for feedback linearization control strategy
A Symbolic MATLAB Based function for finding the feedback linearization and sliding mode controllers are developed and tested using several examples.
A simple method for finding the approximate sliding mode controller parameters is introduced
Where the program used to construct the nonlinear controller uses symbolic computations, the user should provide the program with the necessary functions f(x), g(x) and h(x) using the symbolic library.
This book provides an easy way to learn nonlinear control systems such as feedback linearization technique and sliding mode control(Structure Variable Control)which are one of the most used techniques in nonlinear control dynamical systems. Teachers, students and researchers can all benefit from such nonlinear controllers, especially for more complicated systems such as induction motor, satellite, and vehicles dynamical models. This book is an excellent resource for learning the principle of feedback linearization and sliding mode techniques in an easy and simple way:
Provides a brief description of the feedback linearization and sliding
mode control strategies
Includes a simple method on how to determine the right and appropriate controller (PPIPID) for feedback linearization control strategy
A Symbolic MATLAB Based function for finding the feedback linearization and sliding mode controllers are developed and tested using several examples.
A simple method for finding the approximate sliding mode controller parameters is introduced
Where the program used to construct the nonlinear controller uses symbolic computations, the user should provide the program with the necessary functions f(x), g(x) and h(x) using the symbolic library.
Категории:
Год:
2018
Издательство:
CRC Press
Язык:
english
Страницы:
55
ISBN 10:
1138359556
ISBN 13:
9781138359550
Файл:
PDF, 2,03 MB
Ваши теги:
Скачать (pdf, 2,03 MB)
 Открыть в браузере
 Checking other formats...
 Конвертировать в EPUB
 Конвертировать в FB2
 Конвертировать в MOBI
 Конвертировать в TXT
 Конвертировать в RTF
 Конвертированный файл может отличаться от оригинала. При возможности лучше скачивать файл в оригинальном формате.
 Пожалуйста, сначала войдите в свой аккаунт

Нужна помощь? Пожалуйста, ознакомьтесь с инструкцией как отправить книгу на Kindle
В течение 15 минут файл будет доставлен на Ваш email.
В течение 15 минут файл будет доставлен на Ваш kindle.
Примечание: Вам необходимо верифицировать каждую книгу, которую Вы отправляете на Kindle. Проверьте свой почтовый ящик на наличие письма с подтверждением от Amazon Kindle Support.
Примечание: Вам необходимо верифицировать каждую книгу, которую Вы отправляете на Kindle. Проверьте свой почтовый ящик на наличие письма с подтверждением от Amazon Kindle Support.
Возможно Вас заинтересует Powered by Rec2Me
Ключевые слова
vector^{105}
matlab^{91}
nonlinear^{84}
lhg^{80}
input^{67}
output^{67}
derivative^{52}
lhf^{46}
controller^{44}
mimo^{42}
equation^{40}
nonlinear systems^{39}
disp^{38}
lie derivative^{35}
siso^{35}
sprintf^{34}
sgn^{30}
parameters^{29}
sym^{28}
dynamical^{23}
syms^{23}
surf^{21}
mimo systems^{20}
zeros^{19}
derivatives^{19}
siso systems^{19}
using matlab^{19}
variables^{19}
along the vector^{19}
inputs^{17}
eval^{17}
symbolic^{16}
dsurf^{15}
vector field^{15}
nonlinear dynamical^{14}
phi^{14}
kp sgn^{14}
motor^{13}
sgns^{13}
nin^{12}
nonlinear control^{12}
respectively^{12}
number of inputs^{12}
lie derivatives^{11}
matlab function^{11}
output variables^{11}
lhf lhg^{11}
output vector^{11}
vector fields^{11}
space equations^{11}
l2f^{10}
nargin^{10}
inv^{10}
Связанные Подборки
0 comments
Вы можете оставить отзыв о книге и поделиться своим опытом. Другим читателям будет интересно узнать Ваше мнение о прочитанных книгах. Независимо от того, пришлась ли Вам книга по душе или нет, если Вы честно и подробно расскажете об этом, люди смогут найти для себя новые книги, которые их заинтересуют.
1

2

Nonlinear Control Systems Using MATLAB® Nonlinear Control Systems Using MATLAB® Authored by Mourad Boufadene CRC Press Taylor & Francis Group 6000 Broken Sound Parkway NW, Suite 300 Boca Raton, FL 334872742 © 2019 by Taylor & Francis Group, LLC CRC Press is an imprint of Taylor & Francis Group, an Informa business No claim to original U.S. Government works Printed on acidfree paper Version Date: 20180816 International Standard Book Number13: 9781138359550 (Hardback) This book contains information obtained from authentic and highly regarded sources. Reasonable efforts have been made to publish reliable data and information, but the author and publisher cannot assume responsibility for the validity of all materials or the consequences of their use. The authors and publishers have attempted to trace the copyright holders of all material reproduced in this publication and apologize to copyright holders if permission to publish in this form has not been obtained. If any copyright material has not been acknowledged please write and let us know so we may rectify in any future reprint. Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced, transmitted, or utilized in any form by any electronic, mechanical, or other means, now known or hereafter invented, including photocopying, microfilming, and recording, or in any information storage or retrieval system, without written permission from the publishers. For permission to photocopy or use material electronically from this work, please access www.copyright.com (http://www.copyright.com/) or contact the Copyright Clearance Center, Inc. (CCC), 222 Rosewood Drive, Danvers, MA 01923, 9787508400. CCC is a notforprofit organization that provides licenses and registration for a variety of users. For organizations that have been granted a photocopy license by the CCC, a separate system of payment has been arranged. Trademark Notice: Product or corporate names may be trademarks or registered trademarks, a; nd are used only for identification and explanation without intent to infringe. Visit the Taylor & Francis Web site at http://www.taylorandfrancis.com and the CRC Press Web site at http://www.crcpress.com Contents Preface Chapter 1.1 1.2 1.3 1.4 1.5 vii 1 Feedback Linearization Control FEEDBACK LINEARIZATION OF SISO SYSTEMS FEEDBACK LINEARIZATION OF MIMO SYSTEMS RELATIVE DEGREE MATLAB® PROGRAM DESCRIPTION PROBLEM FORMULATION 1.5.1 Programme flow chart 1.6 MATLAB CODE OF LIE DERIVATIVE 1.7 1.8 CONTROLLER TYPES FEEDBACK LINEARIZATION CONTROLLER EXAMPLES 1.6.1 1.8.1 Example for SISO systems 1 1 2 4 4 4 5 6 7 8 8 Example for SISO systems 1.8.1.1 Solution Using Hand 1.8.1.2 Solution Using MATLAB Example for MIMO systems 1.8.2.1 Soluting Using Hand 1.8.2.2 Solution Using MATLAB 8 9 9 10 10 11 MATLAB BASED FUNCTION: FEEDBACK LINEARIZATION 1.10 MATLAB TEST FUNCTION 12 12 1.10.1 Feedback linearization MATLAB function 13 1.8.2 1.9 v vi Contents 1.11 ILLUSTRATIVE EXAMPLES 1.11.1 Aircraft altitude dynamics 1.11.2 Asynchronous motor speed control Chapter 2.1 2.2 2 Sliding Mode Control 2.5 2.6 2.1.1 2.1.2 22 23 SISO Sliding Mode Control MIMO Sliding Mode Control SLIDING MODE CONTROL EXAMPLES 24 2.2.1 24 24 25 26 26 28 Van der pol system 2.2.1.1 Solution Using Hand 2.2.1.2 Solution Using MATLAB® DC motor angular position control 2.2.2.1 Solution Using Hand 2.2.2.2 Solution Using MATLAB Permanent Magnet Synchronous motor speed control 2.2.3.1 Solution Using Hand 2.2.3.2 Solution Using MATLAB TUNING OF SLIDING MODE CONTROL PARAMETER MATLABBASED FUNCTION: SLIDING MODE CONTROL MATLAB PROGRAMMES DESCRIPTION MATLAB CODES FOR SISO SLIDING MODE 2.6.1 29 29 30 31 32 33 34 MATLAB test function for SISO systems MATLAB function for SISO systems 34 35 MATLAB CODES FOR MIMO SLIDING MODE 37 2.6.2 2.7 21 21 2.2.3 2.4 16 18 SLIDING MODE CONTROL THEORY 2.2.2 2.3 16 2.7.1 2.7.2 Bibliography MATLAB test functions for MIMO systems 37 MATLAB functions for MIMO systems 38 43 Preface This book introduces nonlinear control systems for control engineering and science to graduate, undergraduate students and researchers; it targets control engineering students who do not like to do not have time to derive and prove mathematical results for nonlinear control systems. It can be serve as a text book for nonlinear control systems, especially for feedback linearization techniques which is a common approach in controlling nonlinear systems. The development of computer software for nonlinear control systems has provided many benefits for teaching, research, and the development of control systems design. MATLAB® is considered the dominant software platforms for linear and nonlinear control systems analysis. This book contains a MATLABbased program that helps teachers, students, and researchers for finding feedback linearization controller for a specific nonlinear class of systems. Chapter 1 is an introduction to theoretical aspects of nonlinear feedback linearization techniques. We use simple and complex examples to better illustrate the method on how to find the feedback linearization controller for single and multi input output systems. In section 1.9, a MATLABbased program is developed and used to find feedback linearization control using symbolic MATLAB libraries for a special class of nonlinear systems. Chapter 2, the concept of structure variable control will be introduced in intuitive way, with illustrative examples that makes the reader familiar with the theory of sliding mode control in an easy and simple way. After having defined the control law, the parameters of the controller should be identified, hence a simple method is presented to find those parameters. In section 2.4 a MATLABbased function is developed to find the sliding mode surfaces and controllers using symbolic MATLAB library for SISO and MIMO nonlinear dynamical systems that could be written in a special form. vii viii Preface This textbook provides an easy way to learn nonlinear control systems such as feedback linearization technique and sliding mode control (structrue variable control) which are the most used techniques in nonlinear control dynamical systems; therefore, teachers, students and researchers are all in need of learning how to handle such techniques since they are too difficult for them to handle such nonlinear controllers, especially for more complicated systems such as induction motor, satellite, and vehicles dynamical models. Thus, this document is an excellent resource for learning the principle of feedback linearization and sliding mode techniques in an easy and simple way. This book: (a) provides a briefs description of the feedback linearization and sliding mode control strategies (b) includes a simple method on how to determine the right and appropriate controller (PPIPID) for feedback linearization control strategy (c) provides a MATLAB symbolic based programs that can solve the Lie derivative of any nonlinear dynamical system that could be written in a special form (d) provides a symbolic MATLABbased function for finding the feedback linearization, and sliding mode controllers are developed and tested using several examples (e) introduces a simple method for finding the approximate sliding mode controller parameters The relative degree of the system which can be found using the provided MATLAB code can be used to determine the degree of the Sliding Mode Surface, which is a very important scalar for those who are working with Variable Structure Control. There are many examples used in the last chapter with a modified MATLAB program such as: (a) A nonlinear dynamical model of a pendulum system (b) A nonlinear dynamical model of Ven der pol system (c) A nonlinear dynamical mode of an aircraft (d) A nonlinear dynamical model of an induction motor Preface ix (e) A nonlinear dynamical model of a Permanent magnet synchronous motor. Where the program used to construct the nonlinear controller uses symbolic computations such that the user should provide the program with the necessary functions f (x), g(x) and h(x) using the symbolic library. Note: Make sure the function syms exists on your MATLAB by typing help syms on MATLAB. MATLAB® is a trademark of The MathWorks, Inc. and is used with permission. The MathWorks does not warrant the accuracy of the text or exercises in this book. This book’s use or discussion of MATLAB® software or related products does not constitute endorsement or sponsorship by The MathWorks of a particular pedagogical approach or particular use of the MATLAB® software. MATLAB® is a registered trademark of The MathWorks, Inc. For product information, please contact: The MathWorks, Inc. 3 Apple Hill Drive Natick, MA, 017602098 USA Tel: 5086477000 Fax: 5086477001 Email: info@mathworks.com Web: www.mathworks.com CHAPTER 1 Feedback Linearization Control Feedback linearization is a common approach used in controlling nonlinear systems. The approach involves coming up with a transformation to the nonlinear system into equal linear system that could be controlled easily using a new input control. Feedback linearization could be applied to nonlinear systems of the form: A ẋ =f (x) + g(x)u y =h(x) (1.1) Where x ∈ <n is the state vector, x ∈ <p is the vector of inputs, and y ∈ <m is the vector of outputs. The goal is to develop a control input: u = D(x)−1 [−A(x) + v] (1.2) That renders a linear inputoutput map between the new input v and the output. An outerloop control strategy for the resulting linear control system can then be applied. 1.1 FEEDBACK LINEARIZATION OF SISO SYSTEMS Let’s consider the following SISO nonlinear dynamical system described by: ẋ = f (x) + gu y = h(x) (1.3) 1 2 Feedback Linearization Control Where x = [x1 , x2 , ...., xn ] is the state vecotr; u input vector to the system; f (x) and g(x) are infinite differentiable vectors; hence the inputoutput feedback control law u is defined for SISO nonlinear systems in (1.6) by the following relation: u= 1 (−Lrf h(x) + v) Lg Lr−1 h(x) f (1.4) Where r is the relative degree of the system; Lg Lr−1 f (x) and Lrf h(x) are the lie derivative of h(x) along the vector fields g(x) and f (x), respectively. The notion of the lie derivatives and how its calculated will be given in the subsequent sections. Thus, the overall system control law u and nonlinear system (1.6) combined in series yields to a linear system with order r (relative degree) from the new input v to output y yr = v (1.5) Where v is the new input vector to the system; that will be used as new controlled input. RELATIVE DEGREE OF SISO SYSTEMS 1. r = n the system admits an exact state linearization 2. r ≤ n the system admits partial feedback linearization 3. r > n the system does not admit an input output feedback linearization 1.2 FEEDBACK LINEARIZATION OF MIMO SYSTEMS Feedback linearization control for MIMO system is applied to dynamical systems that have the following form: ẋ =f (x) + m X gi (x)ui i=1 y1 =h1 (x) y2 =h2 (x) .. . yn =hn (x) (1.6) (1.7) Feedback Linearization of MIMO Systems 3 Equation 1.6 is called a square system, where the number of inputs is equal to the number of outputs. The control law for MIMO systems can be obtained using lie derivative. r1 y1 y r2 2 = A(x) + D(x)u (1.8) ... rm ym Where Lrfi hj (x) .... A(x) = Lrfm hm (x) Lg1 Lrf1 −1 h1 (x) . .... D(x) = Lg1 Lrf1 −1 hm (x) . Lgm Lrf1 −1 h1 (x) Lgm Lrfm −1 hm (x) (1.9) (1.10) Where D(x) is called the decoupling matrix of the system, and it is not always nonsingular, and therefore the linearization control is then achieved if and only if the decoupling matrix is invertible Lrfi hj (x) The lie derivative of h(x) along the vector field f (x) Lgm Lrfm −1 hm (x) The lie derivative of h(x) along the vector field g(x) Therefore, the linearization control law is then written in compact form as: u = D(x)−1 [−A(x) + v] (1.11) Where v is the new input control vector which has the same dimension as u. RELATIVE DEGREE OF MIMO SYSTEMS 1. r = r1 + r2 + ....rm = n then the system admits an exact 2. r = r1 + r2 + ....rm ≤ n then the system admits partial feedback linearization 3. r > n the system does not admit an input output feedback linearization for both types of systems 4 Feedback Linearization Control 1.3 RELATIVE DEGREE The relative degree of a dynamic systems is obtained by differentiating the output y until the input u appears Theorem 1 A nonlinear system is said to have a relative degree r at x iff: Lg Lr−1 h(x) 6= 0 f for r 6= n and r≤n Where Lf h is the lie derivative of h along the vector field f (x) Lf h(x) = i=1 X ∂h(x) n ∂xi fi (x) Where Lf h is the derivative of h along the vector field g(x) Lg h(x) = i=1 X ∂h(x) n 1.4 ∂xi gi (x) MATLAB® PROGRAM DESCRIPTION The technique of an inputoutput feedback linearization is used for many control applications, which transforms a complicated and coupled nonlinear system into an equivalent linear system that could be controlled using linear control system tools, such as pole placement technique. Thus, to find such control law a MATLAB script is developed to facilitate the tedious computations and avoiding errors due to a complexity of the system. 1.5 PROBLEM FORMULATION Let’s consider the following nonlinear mathematical system representation: Pi=1 ẋ = f (x) + m gi (x)ui (1.12) yj = hj (x) Where x ∈ <n is the state vector; x ∈ <n is the input vector of the system; hj (x)x ∈ <j Is an analytical function of x; f (x) and g(x) are infinitely differentiable vector fields. Problem Formulation 5 1.5.1 Programme flow chart The flow chart of Figure 1 gives a detailed explanation of how the program works; therefore, the following steps are used to obtain the nonlinear control law using the developed program: (a) Introduce the nonlinear functions f (x),g(x) and h(x) as a symbolic functions to the program (b) Find the lie derivative along the vector fields f (x) and g(x) (c) If the lie derivative along the vector fields g(x) = 0 and the number of differentiation is less than n (the system state number), then set f (x) = Lf h(x) and repeat step 2 (d) If the lie derivative along the vector fields Lg h(x) 6= 0 and the number of differentiation is or equal to n (the system state number), then prints the lie derivative along the vector fields f (x) and g(x) as well as the differentiation number r, which is the relative degree, which could be used to identify the controller type (e) If the lie derivative along the vector fields Lg h(x) = 0 and the number of differentiation is equal or greater than n (the system state number), then the system does not admit an input output feedback linearization Figure 1.1 The flow chart of the proposed algorithm 6 Feedback Linearization Control 1.6 MATLAB CODE OF LIE DERIVATIVE The aim of feedback linearization is to produce a transformation system whose states are the output y and its derivatives. Therefore, the lie derivative is then used, and since it’s an important tool for analysis and synthesis, a MATLAB program has been developed for any class of nonlinear system that could be written in the form of an equation (1.12). The two programs work as follows: I The LieDerivative(h, x) program finds the partial derivative of h(x) along x; as described by the following equation: f˙(x) = ∂h(x) ∂x ẋ; thus, the user should provide the program with the vector field II The solvelieder(Lh, f x, g) gives the lied derivatives of the vector fields f (x) and h(x) along the vector fields f (x) and g(x) respectively. Where the user has to provide the program with the function f (x) and g(x) as well as the output derivative from the function LieDerivative(h, x) function df=LieDerivative(h,x) % The LieDerivaive MATLAB function is used % to find the jacobian vector of a given output % h(x) : Is the output function % x : The state vector % df : The jacobian of h along x if nargin<2 & nargin==0 error('not enough input argument'); end df=[]; n=length(x); for ii=1:n xx=x(ii); dff=diff(H,xx); df=[df,dff]; end df; end function [lhf lhg]=solvelieder(Lh,fx,g) % The solvelieder MATLAB function is used to find % the lie derivatives of the functions f(x) and g(x) % along the vector field h(x) % Lh : The jacobian vector of h along x % fx : The function f(x) % g : The input function g(x) MATLAB Code of Lie Derivative 7 LHg=[]; lhf=Lh*fx; [n,b]=size(G); for ii=1:b Lgh=Lh*G(:,ii); LHg=[LHg,Lgh]; end lhg=LHg; 1.6.1 Example for SISO systems Find the lie derivative of the following system with h(x) = x1 ẋ1 = x2 (1.13) ẋ2 = −sin(x1 ) + u Hand Calculation The lie derivative of any nonlinear dynamical systems that has the form of Equation 1.1 is obtained by differentiating the output of the system; hence, the first lie derivative of Equation 1.13 is given by: ∂h(x) ẋ ∂x = 1 0 (f (x) + gu) ẏ = (1.14) Therefore, from Equation 1.14 the first lie derivative is given by: x2 ẏ = 1 0 (1.15) −sin(x1 ) + u ẏ =L1f h(x) = x2 (1.16) MATLAB Computation The first lie derivative of equation (1.13) is then obtained using MATLAB program described on the previous section as follows: syms x1 x2 u % symbolic presentation fx=[x2;−sin(x1)]; g=[0;1]; x=[x1 x2];H=x1; LH=Lie_Derivative(H,x) [lhf lhg]=solve_lie_der(LH,fx,g) Program output 8 Feedback Linearization Control LH = [ 1, 0] lhf = x2 lhg =0 The first lie derivative of the dynamical system in Equation 1.13 is displayed using MATLAB as Lf h(x) = lhf and Lg h = lhg. 1.7 CONTROLLER TYPES After having defined the matrix A(x) and D(x) as well as the relative degree of the system, which has a significant importance of finding the appropriate type of controller, and since that the transfer function of the linearized system is given in terms of the relative degree are as: y 1 = r (1.17) u s Hence, the controller type will be defined in an appropriate manner using values of the relative degree are as: • If r=1 then the appropriate controller is a Proportional P • If r=2 then the appropriate controller is Proportional Derivative PD • If r=3 or greater than that, the appropriate controller is ProportionalIntegraDerivative PID 1.8 FEEDBACK LINEARIZATION CONTROLLER EXAMPLES An illustrative examples will be used to show users how to use MATLAB code for finding the nonlinear control law. Therefore, for better readability of the program, nonlinear dynamical systems are used. 1.8.1 Example for SISO systems The nonlinear dynamical model of a pendulum is written in compact form as x2 0 ẋ = f (x) + gu = + u (1.18) −sin(x1 ) 1 Find the control law u that linearized model with h(x) = x2 ? Feedback Linearization Controller Examples 9 1.8.1.1 Solution Using Hand Following the steps mentioned in the flow chart of Figure 1, then the control law will be obtained by differentiating the output h till u appears as: ẏ(x) = ∂h(x) ∂h(x) ẋ = (f (x) + gu) ∂x ∂x (1.19) Where L1f h(x) x2 = −sin(x1 ) (1.20) −sin(x1 ) ∂h(x) 0 L1g h(x) = g(x) = [0 1] =1 (1.21) 1 ∂x ∂h(x) = f (x) = [0 1] ∂x Where the superscript on Equation 1.17 denotes the relative degree of the system which is 1, and Lf h, Lg h are the lie derivatives of the vector field h along the vector fields f(x) and g(x), respectively. Furthermore, the control law u is obtained using Equation 1.9 as: u = sin(x1 ) + v 1.8.1.2 (1.22) Solution Using MATLAB Equation 1.22 is then obtained using MATLAB script presented at the end of this document by: −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− The Nonlinear systems should be written in the following form−−Feedback Linearization Controller for a class of Nonlinear systems−−State space equations x=f(x)+g(x)u −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Parmeters parameters = Empty string: 1−by−0 Number of states:=2 Number of inputs:=1 The vector f(x):=[x2;−sin(x1)] The vector g(x):=[0;1] The output variables:=x2 The relative degree of h1 equal:=1 10 Feedback Linearization Control The feedbacklinearization controller Uc: Uc = u1 + sin(x1) By comparing the control law obtained in Equation 1.22 using hand calculation with that obtained using MATLAB script code shows the effectiveness of the program for single inputsingle output system. 1.8.2 Example for MIMO systems In order to show the effectiveness of the program for a system that has a multiinputmultioutput, the following nonlinear dynamcial system will be used: x1 + x1 x2 1 0 u1 ẋ = f (x) + gu = + (1.23) −sin(x1 ) 0 1 u2 h1 The output vector of the system is given by: h(x) = = h2 x1 x2 1.8.2.1 Soluting Using Hand Following the steps mentioned in the flow chart of Figure 1; then the control law will be obtained by differentiating the output h till u appears as: ẏ(x) = ∂h(x) ∂h(x) ẋ = (f (x) + gu) ∂x ∂x (1.24) Where L1f h1 (x) ∂h(x) = f (x) = [1 0] ∂x = x1 + x1 x2 (1.25) x1 + x1 x2 = −sin(x2 ) (1.26) −sin(x1 ) ∂h(x) 1 0 1 Lg h1 (x) = f (x) = [1 0] =1 (1.27) 0 1 ∂x ∂h(x) 1 0 1 Lg h2 (x) = f (x) = [0 1] =1 (1.28) 0 1 ∂x L1f h2 (x) = ∂h(x) f (x) = [0 1] ∂x x1 + x1 x2 −sin(x1 ) Feedback Linearization Controller Examples 11 Where the superscript on Equation 1.10 denotes the relative degree of the system which is 1, and Lf h, Lg h are the lie derivatives of the vector field h along the vector fields f(x)and g(x), respectively. Furthermore, the control law u is obtained using Equation 1.11 as: # " −L1f h1 (x) + v1 u1 1 0 = (1.29) u2 0 1 −L1f h2 (x) + v2 1.8.2.2 Solution Using MATLAB Equation 1.29 is then obtained using the MATLAB script presented at the end of that document as shown: −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− The Nonlinear systems should be written in the following form−−Feedback Linearization Controller for a class of Nonlinear systems−−State space equations x=f(x)+g(x)u −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Parmeters parameters = Empty string: 1−by−0 Number of states:=2 Number of inputs:=2 The vector f(x):=[x1+x1*x2;−sin(x1)] The vector g(x):=[1 0;0 1]; The output variables:=[x1;x2] The feedback linearization controller Uc: inv(Lhg)*(−Lhf+u) The relative degree of h1 equal:=1 The relative degree of h2 equal:=1 Lhf = x1 + x1*x2 −sin(x1) Lhg = [ 1, 0] [ 0, 1] By comparing the control law obtained in Equation 1.29 using hand calculation with that obtained using MATLAB script code 12 Feedback Linearization Control shows the effectiveness of the program for multiinputmultioutput systems. 1.9 MATLAB BASED FUNCTION: FEEDBACK LINEARIZATION eedback linearization problems are then solved using MATLABbased function; and for better readability of the programmes illustrated on the previous chapters, we will write them on another manner that simplify the use for users; hence, the program that should be used by the user will be written as: F 1.10 MATLAB TEST FUNCTION clear all;clc disp('−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'); disp('The Nonlinear systems should '); disp('be written in the following form '); disp('State space equations x=f(x)+g(x)u'); disp('−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'); % The your system contains % Input the extra parameters par=input('Parameters ','s'); eval(sprintf('syms %s',par)); parameters=sprintf('%s',par) %% Declare how many states and inputs n=input('Number of states:='); nin=input('Number of inputs:='); x=sym(zeros(1,n)); u=sym(zeros(1,nin)); for j=1:n eval(sprintf('syms x%d',j)) x(:,j)=sprintf('x%d',j); end for k=1:nin eval(sprintf('syms u%d',k)); u(:,k)=sprintf('u%d',k); end % Enter the functions from the keyboard f=input('The vector f(x):=','s'); g=input('The vector g(x):=','s'); Hc=input('The output variables:=','s'); %Represent all the functions %f(x), g(x) and h(x) on a symbolic format fx=sym(f); g=sym(g); Hc=sym(Hc); % MATLAB Test Function 13 % Use the inoutfeedbacklinearization.m % programm to generate the desired functions [Lhf Lhg]=inoutfeedbacklinearization(fx,g,Hc,x) “newlabel1.101537 1.10.1 Feedback linearization MATLAB function Thus the inoutf eedbacklinearization.m function is then written using a nested MATLAB functions instead of using the programs separately as shown on the previous chapters; therefore the whole code is given by: function [Lhf Lhg]=inoutfeedbacklinearization(fx,g,h,x) % The function inoutfeedbacklinearization is used to find the % the feedbacklinearization control law for SISO and MIMO % nonlinear systems using symbolic MATLAB library; % The user should provide the program with the following % inputs % fx : The system function f(x) % g : The system output function g(x) % h(x) : The vector of outputs h(x)=[x1;x2, ;xn] % x : The state vector x=[x1,x2, ,xn] % After having provided the program the necessary input % functions % The program will output the following variables % Lhf : The lie derivative of h(x) along the function f(x) % Lhg : The lie derivative of h(x) along the function g(x) % which is called the decoupling matrix % u : The vector of inputs u=[u1;u2;...;un] % The control law will be given by the following formula % u= inv(Lhg)*(−Lhg+v) if nargin <4 error('Not enough input argument'); end k=1; Lhg=[];Lhf=[]; nb=length(h); while k<length(h)+1 h1=h(k); for i=1:nb+1 % this Lie derivative function df=Lie_Derivative(h1,x); % solve for the g [lhf lhg]=solve_lie_der(df,fx,g); [n b]=size(lhg); for ii=1:n d=any(lhg(ii,:)˜=0); end if d==1; disp(['The relative degree of h',num2str(k)]), 14 Feedback Linearization Control disp(['equal:=',num2str(i)]); break; else h1=lhf; end if i==nb+1 && d==0 disp(['The system dose not admit NFL']); return; end end Lhg=[Lhg;lhg]; Lhf=[Lhf;lhf]; k=k+1; end function df=LieDerivative(H,x) % The LieDerivative MATLAB function is used % to find the jacobian vector of a given output % H(x) : Is the output function % x : The state vector % df : The jacobian of h along x if nargin<2 & nargin==0 error('not enough input argument'); end df=[]; n=length(x); for ii=1:n xx=x(ii); dff=diff(H,xx); df=[df,dff]; end df; end function [lhf lhg]=solvelieder(LH,fx,G) % The solvelieder MATLAB function is used to find % the lie derivatives of the functions f(x) and g(x) % along the vector field h(x) % LH : The jacobian vector of h along x % fx : The function f(x) % g : The input function g(x) LHg=[]; lhf=LH*fx; [n,b]=size(G); for ii=1:b Lgh=LH*G(:,ii); LHg=[LHg,Lgh]; end lhg=LHg; end end MATLAB Test Function 15 In order to use the two programmes, the user should follow the steps: • Save the function inoutf eedbacklinearization.m given on the code above as shown on Figure 1.2 Figure 1.2 inoutfeedbacklinearization MATLAB Code • The call program where the user has to provide the program with necessary input functions is given as clear all;clc disp('−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'); disp('The Nonlinear systems should be written in the following form'); disp('−−Feedback Linearization Controller for a class of Nonlinear systems−−'); disp(' State space equations x=f(x)+g(x)u '); disp('−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'); %% Declare how many states and inputs % The your system contains % Inout the extra parameters par=input('Parameters ','s'); eval(sprintf('syms %s',par)); parameters=sprintf('%s',par) n=input('Number of states:='); 16 Feedback Linearization Control nin=input('Number of inputs:='); x=sym(zeros(1,n)); u=sym(zeros(1,nin)); for j=1:n eval(sprintf('syms x%d',j)) x(:,j)=sprintf('x%d',j); end for k=1:nin eval(sprintf('syms u%d',k)); u(:,k)=sprintf('u%d',k); end %% Enter the functions from the keyboard f=input('The vector f(x):=','s'); g=input('The vector g(x):='); Hc=input('The output variables:=','s'); %% Represent all the functions f(x), g(x) and h(x) on a %% symbolic format fx=sym(f); %g=sym(g); Hc=sym(Hc); % %% Use the inoutfeedbacklinearization.m programm to generate %% the desired functions disp(['The feedbacklinearization controller Uc:']); disp(['inv(Lhg)*(−Lhf+u)']) [Lhf Lhg]=in_out_feedback_linearization(fx,g,Hc,x) 1.11 1.11.1 ILLUSTRATIVE EXAMPLES Aircraft altitude dynamics Let us determine the associated internal dynamics of the aircraft by defining the state x as [α, α̇h, ḣ], thus, the equations of motion can be written as: ẋ1 ẋ2 ẋ3 ẋ4 =x2 = − 4x2 − 4x1 + 3E =x4 =6x1 − E (1.30) (1.31) Where E is the input vector, α = x1 and α = x2 are the angle and angular speed of the aircraft, respectively; h is the altitude and ḣ is the altitude speed see Figure 1.3. By applying the MATLABbased Illustrative Examples 17 Figure 1.3 Dynamic charactercistics of an aircraft program the feedback linearization controller of the aircraft is given below: −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− The Nonlinear systems should be written in the following form−−Feedback Linearization Controller for a class of Nonlinear systems−−State space equations x=f(x)+g(x)u −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− parameters = Empty string: 1−by−0 Number of states:=4 Number of inputs:=1 The vector f(x):=[x2;−4*x2−4*x1;x4;6*x1] The vector g(x):=[0;3;0;−1]; The output variables:=x3 The feedbacklinearization controller Uc: inv(Lhg)*(−Lhf+u) The relative degree of h1 equal:=2 Lhf = 6*x1 Lhg = −1 From the output of the program shown above and Equation 1.9 the new control vector v is given by: E = 6x1 − v (1.32) 18 Feedback Linearization Control 1.11.2 Asynchronous motor speed control The dynamical model of an induction machine is given by: −γx1 + TKr x3 + pKx5 x4 −γx2 + TKr x4 − pKx5 x3 K 1 x − x − px x f (x) = (1.33) 5 4 Tr 1 Tr 3 K 1 x − x + px x 5 3 Tr 2 Tr 4 pM fm Tl (x x − x x ) − x − 3 2 4 1 Jm Lr Jm 5 Jm The control input matrix is defined by: g= 1 σLs 0 0 1 σLs 0 0 0 0 T Where the parameters σ,γ,Tr are defined as: (1.34) σ = 1− 2 M2 Lr Ls , Rs Lr γ = σL + RsrLM2 Tr = R Where σ is the scattering coefficient, s r r Tr is the time constant of the rotor dynamics, Jm is the rotor inertia, fm is the mechanical viscous damping, p is the number of pole pairs, τd is the unknown external load torque which will be estimated as well. The state variables isd , isq , φrd , usd , usq , are the stator currents, rotor flux linkages, stator terminal voltages respectively. and for the parameters Ls , Lr , M , Rr are the rotor inductance, stator inductance, mutual inductance, stator resistance, and rotor resistance, respectively u = [usα usβ ] x = [isα isβ φrα φrβ Ω] The output vector is then given by: 2 x3 + x24 h(x) = Ω = x5 (1.35) (1.36) Using the program, the output will be: −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− The Nonlinear systems should be written in the following form−−Feedback Linearization Controller for a class of Nonlinear systems−−State space equations x=f(x)+g(x)u −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Parameters Tl gamma K Tr p fm Jm Lr M Ls sigma Illustrative Examples 19 parameters = Tl gamma K Tr p fm Jm Lr M Ls sigma Number of states:=5 Number of inputs:=2 The vector f(x):=[−gamma*x1+(K/Tr)*x3+p*K*x5*x4; −gamma*x2+(K/Tr)*x4−p*K*x5*x3; (M/Tr)*x1−(1/Tr)*x3−p*x5*x4;(M/Tr)*x2 −(1/Tr)*x4+p*x5*x3; p*(M/(Jm*Lr))*(x3*x2−x4*x1) −(fm/Jm)*x5−Tl/Jm] The vector g(x):=[1/(sigma*Ls) 0;0 1/(sigma*Ls);0 0;0 0;0 0] The output variables:=[x3ˆ2+x4ˆ2;x5] The feedbacklinearization controller Uc: inv(Lhg)*(−Lhf+u) The relative degree of h1 equal:=2 The relative degree of h2 equal:=2 Lhf = ((4*x3)/Tr − (2*M*x1)/Tr)*(x3/Tr + p*x4*x5 − (M*x1)/Tr) − ((4*x4)/Tr − (2*M*x2)/Tr)*(p*x3*x5 − x4/Tr + (M*x2)/Tr) + (2*M*x3*((K*x3)/Tr − x1*gamma + K*p*x4*x5))/Tr − (2*M*x4*(x2*gamma − (K*x4)/Tr + K*p*x3*x5))/Tr ; (fm*(Tl/Jm + (fm*x5)/Jm + (M*p*(x1*x4 − x2*x3))/(Jm*Lr)))/Jm − (M*p*x3*(x2*gamma − (K*x4)/Tr + K*p*x3*x5))/(Jm*Lr) − (M*p*x4*((K*x3)/Tr − x1*gamma + K*p*x4*x5))/(Jm*Lr) − (M*p*x1*(p*x3*x5 − x4/Tr + (M*x2)/Tr))/(Jm*Lr) − (M*p*x2*(x3/Tr + p*x4*x5 − (M*x1)/Tr))/(Jm*Lr) Lhg = [ (2*M*x3)/(Ls*Tr*sigma), (2*M*x4)/(Ls*Tr*sigma)] [ −(M*p*x4)/(Jm*Lr*Ls*sigma), (M*p*x3)/(Jm*Lr*Ls*sigma)] CHAPTER 2 Sliding Mode Control n practical control problems there will be a mismatch between the real plant and its developed mathematical model used for control purposes. These mismatches arise from uncertainties due to changes in the plant parameters or due to external disturbances. The performance of any nonlinear dynamical systems that have such uncertainties becomes a challenging task for control engineering; a robust control method is developed to solve this problem which socalled Sliding mode control or Structure variable control [8] is used to construct the sliding mode surface; and, therefore the sliding mode controller for a class of nonlinear dynamical systems that can be written as: I 2.1 SLIDING MODE CONTROL THEORY Let’s consider the following nonlinear dynamical system:. ẋ = f (x, t) + g(x, t)u y = h(x, t) (2.1) (2.2) Where y and u denote the output and input variable, x is the state vector. The sliding mode control makes the output y tracks a desired input reference yr , so that the system motion is kept on the manifold S, which is defined by: S = σ(x, t) = 0 (2.3) S represents the sliding mode surface; and, therefore, the state variables has to be brought to the siding surface in order to obtain the control law u; which is given by: 21 22 Sliding Mode Control ueq : is the equivalent control vector, which is obtained from the derivative of Equation 2.3 un : is the discontinues control (the correction factor) vector which is given by: un = −kp sgn(S), Where kp is a controlled gain, S sgn is the function sign(S) = S The sliding mode surface S form takes the following form: S=σ=( d + k)r−1 e dt (2.4) Where r is the degree relative of the system, e is the errors between the output vector and the desired reference input; k is a positive parameter which can be chosen arbitrarily or using a simple method that could lead to the appropriate choice. 2.1.1 SISO Sliding Mode Control The sliding mode control law for SISO systems can be obtained using the equivalent and switching control law as follows: The equivalent control law: is given by setting the derivative of the sliding mode surface to zero as follows: Ṡ = 0 (2.5) And then solve for the control input law u which will be the equivalent control The switching Control is given by following equation: un = Ṡ = −kp sgn(S) (2.6) Therefore, the overall control law u = ueq + un is then given by setting: d d (( + k)r−1 e) = −kp sgn(S) (2.7) dt dt And solve for the control law u, the idea is better illustrated using examples Sliding Mode Control Theory 23 2.1.2 MIMO Sliding Mode Control Consider the MIMO nonlinear system given by: ẋ = f (x) + n X gi ui i=1 y1 = h1 (x) y2 = h2 (x) .. . yn = hn (x) (2.8) (2.9) The nonlinear system (2.8) has a vector relative degree r1 , ....., rn and has a vector output hi . We assign a sliding mode surface for each output; a sliding mode control for MIMO systems are obtained by following the steps outlined for SISO systems. The MIMO sliding mode control law is obtained by setting the derivatives of the sliding mode surfaces equal to the switching surfaces as shown: Ṡ1 = − Kp1 sgn(S1 ) Ṡ2 = − Kp2 sgn(S2 ) .. . (2.10) Ṡn = − Kpn sgn(Sn ) substituting the sliding mode surface given in (2.4) onto (2.10) gives: d d ( + k1 )r1 −1 e1 ) = − Kp1 sgn(S1 ) dt dt d d ( + k2 )r2 −1 e2 ) = − Kp2 sgn(S2 ) dt dt .. . d d ( + kn )rn −1 en ) = − Kpn sgn(Sn ) dt dt (2.11) Where k1 , k2 , ...kn and k1 , kp2 , ...kpn are a controlled parameters, e1 , e2 , ...en are the output errors of the system. The control law is then obtained by solving Equation 2.11 for the vector control ui . 24 Sliding Mode Control 2.2 SLIDING MODE CONTROL EXAMPLES 2.2.1 Van der pol system Consider the Van der Pol dynamical equations [4]: ẋ1 = x2 ẋ2 = − x1 + (1 − x21 )x2 + u y = x1 (2.12) Find the sliding mode controller for the Van der Pol system. 2.2.1.1 Solution Using Hand The sliding mode surface is then defined by: S=( d + k)r−1 e dt (2.13) Where the error e = (x1r − x1 ) is written in terms of the input reference x1r and the output state x1 ; k is a controlled parameter; the relative degree r = 2 in our problem. Therefore, the sliding mode surface of Equation 2.13 will be: d + k)2−1 e dt = ė + ke S =( (2.14) = (ḣ1r − ẋ1 ) + k(h1r − x1 ) To simpliy the computation, we use the lie derivative notion as follows: ė = ḣ1ref − ḣ1 ∂h1 ẋ = ḣ1ref − ∂x ∂h1 = ḣ1ref − f (x) ∂x Where Lf h(x) = ∂h1 f (x) ∂x (2.15) (2.16) (2.17) Sliding Mode Control Examples 25 In order to find the sliding mode control law u, Equation 2.7 will be used: d (ė + ke) = − kp sgn(S) dt ë + k ė = − kp sgn(S) (2.18) (ḧ1r − L2f h1 − Lg Lf h1 u) + k(ḣ1r − Lf h1 ) = − kp sgn(S) Where Lf h1 = x2 L2f h1 = − x1 + (1 − x21 )x2 (2.19) Lg Lf h1 = 1 Substitute Equations 2.19 onto equation 2.18: (ḧ1r − ẋ2 ) + k(ẋ1r − x2 ) = − kp sgn(S) (ḧ1r − (−x1 + (1 − x21 )x2 + u)) + k(ḣ1r − ẋ1 ) = − kp sgn(S) (2.20) Thus, the sliding mode control law u is obtained from Equation 2.20 by: u = ḧ1r + x1 − (1 − x21 )x2 + k(ḣ1r − ẋ1 ) + kp sgn(S) 2.2.1.2 (2.21) Solution Using MATLAB® −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− The Nonlinear systems should be written in the following form−−Sliding Mode Controller for a class of Nonlinear systems−−State space equations x=f(x)+gu −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Number of states:=2 Number of inputs:=1 Parameters e parameters = e The The The The vector f(x):=[x2;−x1+e*(1−x1ˆ2)*x2] vector g(x):=[0;1] output variables:=x1 sliding mode control law for SISO systems=: 26 Sliding Mode Control Uc = d3yr + x1 + kp*sgnS + k1*(d2yr − x2) + e*x2*(x1ˆ2 − 1) The Sliding mode surface:= Surf = d2yr − x2 + k1*(d1yr − x1) The derivative of Sliding mode surface:= dSurf = d3yr + x1 + k1*(d2yr − x2) + e*x2*(x1ˆ2 − 1) 2.2.2 DC motor angular position control The mathematical model of the DC motor [16] is given by the following state space representation: ẋ1 = x2 (2.22) b km x3 ẋ2 = − x2 + J J ke R 1 ẋ3 = − x2 − x3 + u L L L h1 = x1 (2.23) (2.24) Where x1 and x2 are the angular position and velocity of the shaft respectively, x3 is the current of the armature coil. u is the input voltage of the armature coil. The parameters are the resistance and inductance of the armature coil respectively, ke and km are the speed and torque constants, b is the viscous friction and J is the moment of inertia. We seek to control the angular position using sliding mode control. 2.2.2.1 Solution Using Hand The sliding mode surface is defined as: S=( d + k)r−1 e dt (2.25) Where the degree relative r = 3 in this example; the error e = h1ref − h1 , Equation 2.25 will be: S = ë + 2k ė + e (2.26) Sliding Mode Control Examples 27 The control law is given by differentiating the surface S: ... Ṡ = e + 2kë + k 2 ė (2.27) Using the notion of lie derivative the errors in Equation 2.27 will be: e = h1ref − h1 ė = ḣ1ref − ḣ1 = ḣ1ref − Lf h(x) ë = ḧ1ref − ḧ1 = ḧ1ref − L2f h(x) ... ... ... e = h 1ref − ḧ1 = h 1ref − L3f h(x) − Lg L2f h(x)u (2.28) After having defined the derivative of the sliding mode surface, then Equation 2.7 will be used to construct the sliding mode surface: ... e + 2kë + k 2 ė = −kp sgn(S) (2.29) Substituting Equation 2.28 onto 2.29 yields: ... 3 2 2 h 1ref − Lf h(x) − Lg Lf h(x)u + 2k(ḧ1ref − Lf h(x)) (2.30) + k 2 (ḣ1ref − Lf h(x)) = −kp sgn(S) The control law u is then given by: ... Lg L2f h(x)u = h 1ref − L3f h(x) + 2k(ḧ1ref − L2f h(x)) (2.31) 2 + k (ḣ1ref − Lf h(x)) + kp sgn(S) Where Lf h(x) = x2 b km x2 + x3 (2.32) J J 1 (bx2 − km x3 ) 1 (Rx3 + ke x2 ) L3f h(x) = (b ) + (km ) J J J L 1 Lg L2f h(x) = L Substituting Equation 2.32 onto Equation 2.31, the sliding mode control law is: ... ke R u = h 1ref + x2 + x3 L L 1 (bx2 − km x3 ) 1 (Rx3 + ke x2 ) + 2k(ḧ1ref − (b ) + (km )) J J J L (2.33) L2f h(x) = − + k 2 (ḣ1ref − x2 ) + kp sgn(S) 28 Sliding Mode Control 2.2.2.2 Solution Using MATLAB −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− The Nonlinear systems should be written in the following form−−Sliding Mode Controller for a class of Nonlinear systems−−State space equations x=f(x)+gu −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Number of states:=3 Number of inputs:=1 Parameters b J km ke L R parameters = b J km ke L R The vector f(x):=[x2;−(b/J)*x2+(km/J)*x3; −(ke/L)*x2−(R/L)*x3] The vector g(x):=[0;0;1/L] The output variables:=x1 The sliding mode control law for SISO systems=: Uc = d4yr + kp*sgnS + k1*(d3yr + (b*x2)/J − (km*x3)/J) + k2*(d2yr − x2) + (km*((R*x3)/L + (ke*x2)/L))/J − (b*((b*x2)/J − (km*x3)/J))/J The Sliding mode surface:= Surf = d3yr + k2*(d1yr − x1) + k1*(d2yr − x2) + (b*x2)/J − (km*x3)/J The derivative of Sliding mode surface:= dSurf = d4yr + k1*(d3yr + (b*x2)/J − (km*x3)/J) + k2*(d2yr − x2) + (km*((R*x3)/L + (ke*x2)/L))/J−(b*((b*x2)/J − (km*x3)/J))/J Sliding Mode Control Examples 29 2.2.3 Permanent Magnet Synchronous motor speed control The dynamical model of PMSM [15] describing the electrical and mechanical part is given by: R Lq 1 x1 + p x2 x3 + ud Ld Ld Ld R Lq Φ 1 ẋ2 = − x2 − p x1 x3 − p + uq Lq Ld Lq Lq Φf Lq − Ld f 1 ẋ3 = p x2 − p x1 x2 − x3 − τ J J J J ẋ1 = − (2.34) Where x1 and x2 are the d and q axis stator currents respectively; x3 is the mechanical speed of the motor; ud and uq are the d axis and q axis stator voltages respectively; R and Ld = Ld are the winding resistance and inductance on the d and q axis. J is mechanical inertia of the motor; τ is the electrical torque. The objective is to control the mechanical velocity x3 and the x1 current. h1 x1 h(x) = = (2.35) h2 x3 2.2.3.1 Solution Using Hand We note that the relative degrees of the current and the mechanical velocity are r1 = 1 and r2 = 2, respectively. Therefore, the sliding mode surfaces are: d + k)r1 −1 e1 = e1 dt d S2 = ( + k)r2 −1 e2 = ė2 + ke2 dt S1 = ( (2.36) Where the errors are e1 = h1ref − h1 and e2 = h2ref − h2 . Thus, the control law is then obtained by differentiating the sliding mode surfaces in Equation 2.37 and equating to (2.6), yields: ė1 = −kp1 sgn(S1 ) ë2 + k ė2 = −kp2 sgn(S2 ) (2.37) Using the notion of lie derivative Equation 2.37 will be: ḣ1ref − Lf h1 − Lg1 h1 ud = −kp1 sgn(S1 ) ḧ2ref − L2f h2 (2.38) − Lg1 Lf h2 ud − Lg2 Lf h2 uq + k(ḣ2ref − Lf h2 ) = −kp2 sgn(S2 ) 30 Sliding Mode Control Rearranging Equation 2.38 and solve for the control law ud and uq gives: −1 ud Lg1 Lf h1 0 = u Lg1 Lf h2 Lg2 Lf h2 q (2.39) ḣ1ref − Lf h1 + kp1 sgn(S1 ) ḧ2ref − L2f h2 + k(ḣ2ref − Lf h2 ) + kp2 sgn(S2 ) Where: Lg1 Lf h1 Lg1 Lf h2 0 Lg2 Lf h2 " = 1 Ld px2 (Ld −L) JLd 0 # pΦ+px1 (Ld −Lq ) JLd (2.40) R Lq x1 + p x2 x3 Ld Ld Φf Lq − Ld f 1 Lf h2 = p x2 − p x1 x2 − x3 − τ J J J J τ + f x3 − pΦx2 − ∗x1x2(Ld − Lq ) 2 Lf h2 = (f ) (2.41) J2 (pΦ + px1 (Ld − Lq ))(Rx2 + pΦ + pLq x1 x2 ) =− JLd px2 (Ld − Lq )(Rx1 − pLq x2 x3 ) =− JLd Lf h1 = − 2.2.3.2 Solution Using MATLAB −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− The Nonlinear systems should be written in the following form−−Sliding Mode Controller for MIMO Nonlinear systems−−State space equations x=f(x)+gu −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Number of states:=3 Number of inputs:=2 Parameters R Ld Lq phi f J p Tl The vector f(x):=[−(R/Ld)*x1+p*(Ld/Lq)*x2*x3; −(R/Lq)*x2−p*(Lq/Ld)*x1*x3−p*phi/Ld; p*(phi/J)*x2−p*((Lq−Ld)/J)*x1*x2 −(f/J)*x3−Tl/J] The vector g(x):=[(1/Ld) 0;0 (1/Lq);0 0] The output variables:=[x1;x3] The relative degree of h1 equal:=1 Tuning of Sliding Mode Control Parameter 31 The relative degree of h2 equal:=2 The sliding mode control law for MIMO systems −−−−−−Is Given by Uc=:inv(Lhg)*(S)−−−−−−−−−−−−− −−−−−−The function S:=−−−−−−−−−− S= d2yr1 + kp1*sgnS1 + (R*x1)/Ld − (Ld*p*x2*x3)/Lq ; d2yr2 + kp2*sgnS2 + Tl/J + k1*(d3yr2 + ((p*phi)/J + (p*x1*(Ld − Lq))/J)*((R*x2)/Lq + (p*phi)/Ld + (Lq*p*x1*x3)/Ld) − (f*(Tl/J + (f*x3)/J − (p*phi*x2)/J − (p*x1*x2*(Ld − Lq))/J))/J + (p*x2*(Ld − Lq)*((R*x1)/Ld − (Ld*p*x2*x3)/Lq))/J) + (f*x3)/J − (p*phi*x2)/J − (p*x1*x2*(Ld − Lq))/J −−−−−−The Matrix Lhg:=−−−−−−−−−− Lhg = [ 1/Ld, [ (p*x2*(Ld − Lq))/(J*Ld), ((p*phi)/J + (p*x1*(Ld − Lq))/J)/Lq] 0] The sliding mode control law for MIMO systems=: Uc =Ld*(d2yr1 + kp*sgnS +(R*x1)/Ld − (Ld*p*x2*x3)/Lq); (J*Lq*(d2yr2 + kp*sgnS + Tl/J + k1*(d3yr2 + ((p*phi)/J + (p*x1*(Ld − Lq))/J)*((R*x2)/Lq + (p*phi)/Ld + (Lq*p*x1*x3)/Ld) − (f*(Tl/J + (f*x3)/J − (p*phi*x2)/J − (p*x1*x2*(Ld − Lq))/J))/J + (p*x2*(Ld − Lq)*((R*x1)/Ld − (Ld*p*x2*x3)/Lq))/J) + (f*x3)/J − (p*phi*x2)/J − (p*x1*x2*(Ld − Lq))/J))/(p*(phi + Ld*x1 − Lq*x1)) − (Lq*x2*(Ld − Lq)*(d2yr1 + kp*sgnS + (R*x1)/Ld − (Ld*p*x2*x3)/Lq))/(phi + Ld*x1 − Lq*x1) 2.3 TUNING OF SLIDING MODE CONTROL PARAMETER The parameters of the sliding mode control law should be chosen in order to enhance the performance of the controlled system. However, those parameters are said to be chosen arbitrarily using trialanderror method, this method may take a longer time to find approximately the exact values. We will use a simple method that leads to approximately the exact values by identification with a characteristic of first or second order systems with the Equation 2.7. Let’s suppose that we have a nonlinear system with a relative degree r = 2; therefore, Equation 2.7 will be: ë + k ė = −kp sgn(S) 32 Sliding Mode Control since the sgn(s) = S S , equation will be: S S ė + ke ë + k ė = − kp S ë + k ė = − kp (2.42) We note that the S is a positive function written in terms of the error, which can be chosen as a small value S << 1. Thus, Equation 2.42 will be: ë + (k + kp k )ė + e=0 S S (2.43) Equation 2.43 takes the form of a second order system: s2 + 2ζωs + ω 2 = 0 (2.44) By identification to Equation 2.44 to 2.43, yields: (k + kp ) = 2ζω S k = ω2 S (2.45) The variable ω and ζ are chosen to meet specific requirements 2.4 MATLABBASED FUNCTION: SLIDING MODE CONTROL MATLAB programs listed on this chapter are used to find the sliding mode control law for SISO and MIMO systems using Symbolic MATLAB Library. To simplify the use for these programs a test function is developed. After calling this function, the user has to enter the necessary functions which are: f (x), (g) and the output vector h(x) using symbolic variables. The principle MATLAB functions are: NonContSidFed: This function calculates the lie derivatives of the given SISO dynamical nonlinear system SlidingModeTerms: This function calculates the sliding mode terms like the surface and its derivative, as well as the control law U MATLAB Programmes Description 33 The derivatives of the output y for SISO nonlinear systems are described by the following variables: 0 (2.46) y y .... y n = d1yr d2yr .... d(n + 1)yr MIMOSlidingModeLieDer: This function calculates the lie derivatives for MIMO dynamical nonlinear systems MIMOSlidingModeController: This function calculates the sliding mode terms and control law for MIMO nonlinear systems The derivatives of the output y for MIMO nonlinear systems are described by the following variables: 0 y1 y1 .... y1n d1yr1 d2yr1 .... d(n + 1)yr1 0 y2 y .... y n d1yr2 d2yr2 .... d(n + 1)yr2 2 2 . = .. . . . 0 n d1yrn d2yrn .... d(n + 1)yrn yn yn .... yn (2.47) 2.5 MATLAB PROGRAMMES DESCRIPTION The developed programmes are used to find the sliding mode control law for any types of nonlinear systems (SISO and MIMO) using MATLAB symbolic library. Hence, the user will put three separate MATLAB codes on the same folder which are: MATLAB name functions of SISO systems • Testfunction • NonContSidFed • SlidingModeTerms MATLAB name functions of MIMO systems • Testfunction • MIMOSlidingModeLieDer • MIMOSlidingModeController After calling the test functions by users, they will be asked to introduce the system functions f (x), g(x) and the output vector h(x) as symbolic functions. Therefore, each program from those listed above will output useful functions which are: 34 Sliding Mode Control (1) The functions MIMOSlidingModeLieDer and NonContSidFed will give us for variables which are: (a) The lie derivatives of h along the vector field f and g which are represented by: Lhf and the decoupling matrix Lhg (b) The vector of all lie derivatives along the vector field g (c) The relative degree r of the systems (2) The functions MIMOSlidingModeController and SlidingModeTerms will give us for variables which are: (a) The MIMOSlidingModeController will provide as with: [e, der, Surf, dSurf, U c, S], where e is the errors vector, der: represent the derivatives vector, Surf: is the sliding mode surface; dSurf: represent the derivative of the surface; S is a vector contain the switching terms such that the controller Uc is equal to U c = inv(Lhg) ∗ S (b) [Surf, dSurf, dd, K, U c] =SlidingM odeT erms(Hc, L, r, Lhg); Surf is the surface of a SISO system; dSurf: The derivative of the surface; K: The controller parameter vector; Uc: the control law for SISO systems 2.6 2.6.1 MATLAB CODES FOR SISO SLIDING MODE MATLAB test function for SISO systems clear all;clc disp('−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'); disp('The Nonlinear systems should be written in the following form'); disp('−−Sliding Mode Controller for a class of Nonlinear systems−−'); disp(' State space equations x=f(x)+gu '); disp('−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'); n=input('Number of states:='); nin=input('Number of inputs:='); x=sym(zeros(1,n)); u=sym(zeros(1,nin)); for j=1:n eval(sprintf('syms x%d',j)) x(:,j)=sprintf('x%d',j); end for k=1:nin eval(sprintf('syms u%d',k)); MATLAB Codes for SISO Sliding Mode 35 u(:,k)=sprintf('u%d',k); end syms u1 f=input('The vector f(x):=','s'); g=input('The vector g(x):=','s'); Hc=input('The output variables:=','s'); [Lhf,Lhg,dh,L,u,r]=NonContSidFed(f,g,Hc,x,u1); [Surf,dSurf,dd,K,Uc]=SlidingModeTerms(Hc,L,r,Lhg); 2.6.2 MATLAB function for SISO systems function [Lhf,Lhg,dh,L,u,r]=NonContSidFed(f,g,Hc,x,v) % The NonContSidFed MATLAB function finds the lie % derivatives and the decoupling matrix that has to be used % to find the Sliding mode controller, by providing this % function with: % f : The system function f(x) % g : The system output function g(x) % x : The state vector x=[x1,x2,....,xn] % v : The new input vector % Hc : The output of the system hn(x)=xn % The program has to give the user the following functions % Lhf : The lie derivative of the vector h(x) along % f(x) Lhf=[Lˆ{r−1}hfn] % Lhg : The lie derivative of the vector field h % along the function g; Lhg=[Lg1Lfhn] % L : The lie derivatives L=[Lhf1 Lˆ{2}hf1....... % Lˆ{r−1}hf1] % x=f(x)+gu L=[]; Lhf=[];Lhg=[]; if(nargin<4) error('Not enough input arguments!'); end n1=length(Hc); n=length(x); k=1;kk=1; while(k<n+1) dh=LieDer(Hc,x,n); Lg=dh*g; L=[L,dh*f]; if(Lg˜=0) r=k; Lhf=[Lhf;dh*f]; Lhg=[Lhg;Lg]; break; end Hc=dh*f; k=k+1; end u=inv(Lhg)*(Lhf−v); function dh=LieDer(Hc,x,n) 36 Sliding Mode Control dh=[]; for ii=1:n d=diff(Hc,x(ii)); dh=[dh,d]; end end r=k; end function [Surf,dSurf,dd,K,Uc]=SlidingModeTerms(Hc,L,r,Lhg) % The SlidingModeTerms MATLAB function finds the sliding mode % surface and its derivatives for SISO nonlinear systems % That takes the following form: % xp=f(x)+gu % y=h(x) % Hc : The output of the system Hc=x % L : The lie derivatives L=[Lhf1 Lˆ2hf1....... % Lˆ{r−1}hf1] % r : The relative degree of the system r=r1 % Surf : Sliding Mode surface for SISO systems % Surf=(d/dt+k)ˆ(r−1)e % dSurf : The derivative of the sliding surface % Surf=d((d/dt+k)ˆ(r−1)e)/dt % K : The controller parameter % vector K=[1 k1 k2,....kn] k=[]; syms kp Uc U sgnS if (r==1) K=1; else k=sym(zeros(1,r−1)); for jj=1:r−1 eval(sprintf('syms k%d',jj)); k(:,jj)=sprintf('k%d',jj); end K=[1 k]; end dd=sym(zeros(1,r)); for ii=1:r+1 eval(sprintf('syms d%dyr',ii)); dd(:,ii)=sprintf('d%dyr',ii); end e=[dd(1)−Hc]; %s=[dd(r)−Hc]; s=[]; k=1; for kk=2:r e=[e;(dd(kk)−L(k))]; k=k+1; end LL=fliplr(L); MATLAB Codes for MIMO Sliding Mode 37 dl=fliplr(dd); for kk=1:1:r s=[s;(dl(kk)−LL(kk))]; end S=flipud(e); Sp=s; Uc=Lhg*U; disp(['The sliding mode control law for SISO systems=:']); Uc=K*Sp+kp*sgnS disp(['The Sliding mode surface:=']); Surf=K*S disp(['The derivative of Sliding mode surface:=']); dSurf=K*Sp 2.7 2.7.1 MATLAB CODES FOR MIMO SLIDING MODE MATLAB test functions for MIMO systems clear all;clc disp('−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'); disp('The Nonlinear systems should be written in the following form'); disp('−−Sliding Mode Controller for MIMO Nonlinear systems−−'); disp(' State space equations x=f(x)+gu '); disp('−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−'); n=input('Number of states:='); nin=input('Number of inputs:='); x=sym(zeros(1,n)); u=sym(zeros(1,nin)); par=input('Parameters ','s'); eval(sprintf('syms %s',par)); parameters=sprintf('%s',par); for j=1:n eval(sprintf('syms x%d',j)) x(:,j)=sprintf('x%d',j); end for k=1:nin eval(sprintf('syms u%d',k)); u(:,k)=sprintf('u%d',k); end f=input('The vector f(x):=','s'); g=input('The vector g(x):='); h=input('The output variables:=','s'); f=sym(f);h=sym(h);g=sym(g); [Lhf Lhg L r]=MIMOSlidingModeLieDer(f,g,h,x); [e,der,Surf,dSurf,Uc]=MIMOSlidingModeController(h,L,r,Lhg); 38 Sliding Mode Control 2.7.2 MATLAB functions for MIMO systems function [Lhf Lhg L r]=MIMOSlidingModeLieDer(fx,g,h,x) % This programme finds a nonlinear controller which is the % input output feedback linearization controller where the % system should be given in symbolic format this function % works well with SISO and MIMO systems which is written in % compact form like dx=f(x)+gu; % y=h(x); % x : The state vector x=[x1,x2,...,xn] % h : The output vector h(x)=[x1;x2;...;xn] % fx : The f(x) the describes the system % g : The g.u vector of the output system % u : The output vector % Lhf : The lie derivative of the vector file % h along the function f(x) % Lhf=[Lˆ{r1−1}fh1;Lˆ{r2−1}fh2;...; % Lˆ{rn−1}fhn] % Lhg : The lie derivative of the vector % field h along the function g % Lhg=[Lg1Lfh1, Lg2Lfh1,.....,LgnLfh1; .........; % Lg1Lfhn,Lg2Lfhn,......, LgnLfhn] % r : The degree relative of the system % r=[r1;r2;........;rn] % L : The lie derivative vector % : L=[Lhf1 Lhf2....... Lhfn; % Lˆ2hf1 Lˆ2hf2....Lˆ2hfn; % % Lˆ(r1−1)hf1 Lˆ(r2−1)hf2..... % Lˆ(rn−1)hfn] ] if nargin <4 error('Not enough input argument'); end k=1;L=[];kk1=0; Lhg=[];Lhf=[];vc=1; nb=length(h); r=zeros(1,nb); while k<length(h)+1 h1=h(k); for i=1:nb+1 df=Lie_Derivative(h1,x); % this Lie derivative % function [lhf lhg]=solve_lie_der(df,fx,g); % solve for the g L=[L,lhf]; [n b]=size(lhg); for ii=1:n d=any(lhg(ii,:) ˜= 0); end if d==1; disp(['The relative degree of h',num2str(k)]); MATLAB Codes for MIMO Sliding Mode 39 disp(['equal:=',num2str(i)]); r(1,k)=i; break; else h1=lhf; end if i==nb+1 && d==0 disp(['The system dose not admit an input output feedback linearization']); return; end end Lhg=[Lhg;lhg]; Lhf=[Lhf;lhf]; k=k+1; end function df=Lie_Derivative(h,x) % The LieDerivative MATLAB function is used % to find the jacobian vector of a given output % h : Is the output function h(x)=[x1;x2;...;xn] % x : The state vector x=[x1,x2,.....,xn] % df : The jacobian of h along x if nargin<2 & nargin==0 error('not enough input argument'); end df=[]; n=length(x); for ii=1:n xx=x(ii); dff=diff(h,xx); df=[df,dff]; end df; end function [lhf lhg]=solve_lie_der(df,fx,G) % This equation solves the Lie derivativies that is % multiplied by % The output vectors Lhg=Lh*g*u where % LH : The Lie derivativies of h(x) along the vector % field fx % fx : The vector field f(x) that describes the system % G : The vector field of the input LHg=[]; lhf=df*fx; [n,b]=size(G); for ii=1:b Lgh=df*G(:,ii); LHg=[LHg,Lgh]; end lhg=LHg; end 40 Sliding Mode Control end function [e,der,Surf,dSurf,Uc,S]=MIMOSlidingModeController (h,L,r,Lhg) % The mimo nonlinear systems described by the following % xp=f(x)+gu % e : Is the error vector % e=[e1 e2 ....en;de1 de2 ....den;.....;dne1 % dNe.... dNen] % der : The derivative of the output vector % der=[h1 h2 ...hn;d1h1 d1h2....dNhn;......;dNh1 % dNe....dNen] % Surf : The Sliding Mode Surface for MIMO systems % Surf=(d/dt+k)ˆ(r−1)e % dSurf : The derivative of the sliding mode surface % dSurf=d((d/dt+k)ˆ(r−1)e)/dt % Uc : The Sliding mode control law % h : The output vector y=[h1;h2;....;hN] for MIMO % systems % L : The lie derivative vector of the MIMO system % L=[Lhf1 Lhf2....... Lhfn; % Lˆ2hf1 Lˆ2hf2....Lˆ2hfn; % % Lˆrhf1 Lˆrhf2..... Lˆrhfn] % r : The relative degree vector r=[r1,r2,r3,....,rn] % Lhg : The lie derivative of h along the vector field g % Lhg=[Lg1Lfh1, Lg2Lfh1,.....,LgnLfh1; .........; % Lg1Lfhn,Lg2Lfhn,......, LgnLfhn] e=[];kk=1; rr=max(r); der=[];S=[];Surf=[];Ss=[]; nb=length(h);d=[];qq=1;q=1; if (r==1)& (nb==1) error('The output vector h should be of length >=2'); end if nargin <4 error('Not enough input argument'); end LL=sym(zeros(rr+1,nb)); der=sym(zeros(rr+1,nb)); syms Uc U LL(1,:)=h; k=[]; K=sym(zeros(nb,rr)); KK=sym(zeros(nb,rr+1)); KK(:,1)=sym('1'); %K(:,1)=1; MATLAB Codes for MIMO Sliding Mode 41 for ll=1:nb R=r(ll); k=sym(zeros(1,R−1)); for jj=1:R−1 eval(sprintf('syms k%d',jj)); k(:,jj)=sprintf('k%d',jj); end K(ll,:)=[1 k]; end KK(:,nb:rr+1)=K; F=subs(KK(:,nb+1:rr+1),{1},{0}); KK(:,nb+1:rr+1)=F; %% The functions sgnS1, Sgn(S2),....sgn(Sn) % The parameters kp1, kp2,....kp3 sgns=sym(zeros(1,nb)); kp=sym(zeros(1,nb)); for jj=1:nb eval(sprintf('syms sgnS%d',jj)); sgns(:,jj)=sprintf('sgnS%d',jj); end for jj=1:nb eval(sprintf('syms kp%d',jj)); kp(:,jj)=sprintf('kp%d',jj); end %% for jj=1:nb R=r(jj); dd=sym(zeros(1,R)); for ii=1:R+1 eval(sprintf('syms d%dyr%d',ii,kk)); dd(:,ii)=sprintf('d%dyr%d',ii,kk); end d=[d,dd]; kk=kk+1; end for jj=1:nb R=r(jj); for mm=2:R+1 LL(mm,jj)=L(qq); qq=qq+1; end for nn=1:R+1 der(nn,jj)=d(q); q=q+1; end end 42 Sliding Mode Control e=flipud(der−LL); for bb=1:nb Kd=fliplr(KK(bb,nb:rr+1)); ee=e(1:rr,bb); nm=kp(bb)*sgns(bb); sc=Kd*ee+kp(bb)*sgns(bb); S=[S;sc]; Ss=[Ss;Kd*ee]; end es=flipud(e); for cc=1:nb R=r(cc); dK=fliplr(KK(cc,nb:R+1)); esf=(es(1:R,cc)); surface=dK*(esf); Surf=[Surf;surface]; end dSurf=Ss; Surf=Surf; [nh bh]=size(Lhg); disp(['The sliding mode control law for MIMO systems']); disp(['−−−−−−Is given by Uc=:inv(Lhg)*(S)−−−−−−−−−−−−−']); disp(['−−−−−−The function S:=−−−−−−−−−−']); S disp(['−−−−−−The Matrix Lhg:=−−−−−−−−−−']); Lhg for ii=1:nh invg=any(Lhg(ii,:)˜=0); end if(invg˜=0) disp(['The sliding mode control law for MIMO systems=:']); Uc=inv(Lhg)*(S) else disp(['The sliding mode controller is not possible']); disp(['for this output vector try to choose another one!']); end Bibliography [1] Shankar S. (1999). Nonlinear systems analysis, stability and control. Springer, Interdisciplinary applied mathematics. New York, 1999. [2] A. Isidori. (1989). Nonlinear control systems. Second Ed. Springer Verlag. Berlin, Heidelberg. [3] Knight A. (2000). Basics of MATLAB and Beyond. Chapman Hall/CRC Press. Boca Raton, FL. [4] Khalil, H. K. (1992). Nonlinear systems. Englewood Cliffs, NJ: Prentice Hall. [5] C Edwards, S Spurgeon. (1998). Sliding mode control: Theory and applications. CRC Press [6] Shihua Li, Xinghuo Yu, Leonid Fridman, Zhihong Man, Xiangyu Wang, Advances in Variable Structure Systems and Sliding Mode ControlTheory and Applications, Springer International Publishing 2018 [7] S. V. Emelyanov, VariableStructure Control Systems [in Russian], Nauka, Moscow (1967). [8] Yuri Shtessel, Christopher Edwards, Leonid Fridman. Sliding Mode Control and Observation. Birkhauser Boston Inc (2013) [9] Minsun Kim.TaeYong Kuc. Hyosin Kim Seokmin Wi.Jin S Lee: An adaptive learning controller for MIMO uncertain feedback linearizable nonlinear systems: Nonlyniear Dyn (2015) Springer Science [10] LeiPo Liu ZhuMu Fu, Xiaona Song Sliding mode control with disturbance observer for a class of nonlinear systems. International journal of automation and computing,october 2012, 487 43 44 Bibliography [11] Juan Fernandez Vargas, Gerard Ledwich, Variable structure control for power systems stabilization, International Journal of Electrical Power Energy System Vol 32, Issue 2, February (2010) [12] Boufadene, M., Belkheiri, M. and Rabhi A.: Adaptive nonlinear observer augmented by radial basis neural network for a nonlinear sensorless control of an induction machine, Int. J. Automation and Control, Vol. 12, No. 1, pp.2743 (2018) [13] LeiPo, L., ZhuMu, F. and Xiaona, S: Sliding mode control with disturbance observer for a class of nonlinear systems, International Journal of Automation and Computing, Vol. 9, No. 5, pp.487491 (2012) [14] Andreas, M. Recent Advances in Robust Control Novel Approaches and Design Methods, InTech, Croatia (2011) [15] htessel, Y., Edwards, C., Fridman, L., Levant, A.Sliding Mode Control and Observation (2014) [16] Marwa EZZAT, Jesus DE LEON, Nicolas GONZALEZ and Alain GLUMINEAU. Sensorless Speed Control of Permanent Magnet Synchronous Motor by using Sliding Mode Observer, VSS (2010), Mexico City, Mexico, 2628 June [17] N.P.Quang, J. A.Dittrich: Vector Control of ThreePhase AC Machine Springer (2008) [18] Q. Teng, J. Tian, J. Duan, H. Cui, J. Zhu and Y. Guo, “Slidingmode MRA observerbased model predictive current control for PMSM drive system with DClink voltage sensorless,” 2017 20th International Conference on Electrical Machines and Systems (ICEMS), Sydney, NSW, 2017, pp. 16. doi: 10.1109/ICEMS.2017.8056033