How to find equilibrium point to place stable poles?

12 views (last 30 days)
My nonlinear system of field controlled DC motor contains two equations for each state variable.
One of these variables, namely x1 is unobservable. I have designed a State Feedback Integral Controller that uses the observable state x2 to calculate control input for the plant DCmotor. Following are the images of SIMULINK model.
Following is the SIMULINK model for DC motor described by two nonlinear state equations:
and the state-feedback integral controller:
After building the model I wrote an m-file to perform the simulation.
clear all
close all
clc
% Defining the parameters
h = 0.001; % Sampling time [sec]
final_time = 2;
theta1 = 60;
theta2 = 0.5;
theta3 = 40;
theta4 = 6; % Model variable
theta5 = 40000; % Model variable
ref_in = 2; % Reference signal input
% Specify initial values. These are also equilibrium points.
y0 = ref_in; % Output guess
u0 = (theta1*theta4*ref_in)/(theta3*theta5); % Control input guess
x1_0 = theta3/theta1; % State x1 guess
x2_0 = y0; % State x2 guess
x0 = [x1_0 x2_0]'; % State vector
% Find equilibrium point
% Keep x2 state fixed because this is the only observable state. Also keep
% output fixed at the initial output which is the reference signal input.
[x, u, y] = trim('DCmotor', x0, u0, y0, 2, [], 1);
% Linearization about equilibirum point
[A,B,C,D] = linmod('DCmotor', x, u);
% Pole Placement for stability
p1 = -10 + 5i;
p2 = -10 - 5i;
K = place(A, B, [p1 p2]);
k1 = K(1,1);
k2 = K(1,2);
% Run the model
sim('mot_ctrl');
After executing "trim" command, I got x = [0.6666;0.6666]'. Clearly this is not correct because I specified(in trim) that x0's 2nd state must remain same as reference input itself. So the 2nd value in x above should have been 2. Consequently linearize and place does not give correct result.
I hope someone can help me with this.

Answers (1)

Samuel  Mitiku
Samuel Mitiku on 30 Dec 2021
syms x1 x2 ; assume (x1, 'real'); assume(x2, 'real'); F1(x1,x2)=-x1+2*x1*x2 F2(x1,x2)=-x2 e=[x1,x2]; f=[F1,F2]; J=jacobian(f,e) M=J(0,0) % M= Jeq Jeq=[-1 0 ; 0 -1] Q=[1 0; 0 1]; % P= lyap(Jeq,Q) %Solving the Lyapunov Equation Jeq'P+PJ+Q=0 P=lyap(Jeq,Q); disp('lyapnov solution in matrix='); disp(P); disp('Eigne Values of matrix p=') K=eig(P) if (K(1)>0 && K(2)>0) disp('The matrix P is positive definite matrix, Hence the system is stable at equilibrium point (0,0)') else disp('The matrix P is not positive definite matrix, Hence the system is unstable at equilibrium point (0,0)') end

Categories

Find more on Simulink in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!