You are on page 1of 4

Project

DEADLINE 17 NOV 2014

MagLev Control
Simulink model

TASK: compare
1) PID
2) IMC
3) MPC
Report + Progs to:
Robain.DeKeyser@UGent.be

198 .1

Inp

s2 +10 s+1962

From
Workspace

Transfer Fcn 1

DisInp

DisOut

From
Workspace1

From
Workspace2

B (q 1 ) 0.0003933q 1 + 0.0003907 q 2
=
A(q 1 )
1 1.9724q 1 + 0.9802q 2
IMC speed parameter: a = 0.85

Out
To Workspace

sampling period: 2 ms

B( q 1 ) has bad zero !

N1 1,=
N 2 20,=
Nu 1
MPC parameters: =
MPC process model: use parallel model (EPSAC text p.8-9)
MPC disturbance model: C ( q 1 )= 1

D( q 1 )= (1 q 1 ) * A( q 1 )

Robin DE KEYSER Ghent University EeSA Department of Electrical energy, Systems & Automation

z
Z (s)
I (s)

2 gk
*
z=
m
2
s2 + * g
z

0.1981
s 2 + 1962

MAGnetic LEVitation
2 gk
floating train, 500 km/hr
Z (s) z* m
= =
air gap z=1cm
2
I (s)
s2 * g
2
2
levitation FL = k i z
z

i (t ) 2
force equilibrium (for left design): mz(t ) = FL (t ) mg = k
mg
2
z (t )
(m 10000
=
kg k 0.001 Nm 2 /A 2 )

nonlinear system; linearize around


=
z * 0.01
=
m; I * 99 A

0.1981
s 2 1962

Include small air-damping


and put z in mm:
Z (s)
198.1
= 2
I ( s ) s + 10 s + 1962

Robin DE KEYSER Ghent University EeSA Department of Electrical energy, Systems & Automation

% test of controllers - Robin De Keyser October 2014


State=[0 0]; Out=0; data=[];
Ns=401; Ts=0.002; %2ms sampling period
% for PID controller: remove % in following line
Ini_Pid; % WRITE A FILE Ini_Pid.m !!! [to initialize the PID controller]
% for IMC controller: remove % in following line
%Ini_Imc; % WRITE A FILE Ini_Imc.m !!! [to initialize the IMC controller]
% for MPC controller: remove % in following line
%Ini_Mpc; % WRITE A FILE Ini_Mpc.m !!! [to initialize the MPC controller]
for Tm=1:Ns,
Yt=Out(size(Out,1)); Wt=1;
% use Wt and Yt and produce Ut in your control program:
% for PID controller: remove % in following line
Con_Pid; %WRITE A FILE Con_Pid.m !!! [the PID controller]
% for IMC controller: remove % in following line
%
Con_Imc; %WRITE A FILE Con_Imc.m !!! [the IMC controller]
% for MPC controller: remove % in following line
%
Con_Mpc; %WRITE A FILE Con_Mpc.m !!! [the MPC controller]
% process simulation; don't change this !!!
if Tm<101, DtOut=0; else if Tm<201, DtOut=DtOut+0.01; end; end;
if Tm<301, DtInp=0; else DtInp=10; end;
Inp=[0 Ut]; DisInp=[0 DtInp]; DisOut=[0 DtOut];
[T,State]=sim('MagLev',Ts,simset('InitialState',State(size(State,1),:)));
data=[data; [Wt Yt Ut DtInp DtOut]];
end;
% plot results; don't change this !!!
figure(1); plot([data(:,1) data(:,2)]); axis([0 400 0 1.5]);
figure(2); plot([data(:,3) data(:,4) 20*data(:,5)]); axis([0 400 -25 25]);

Robin DE KEYSER Ghent University EeSA Department of Electrical energy, Systems & Automation

(partial results RdK in random order)


1) IMC for step at output - 2) PID - 3) IMC for step at input - 4) MPC for step at output - 5) IMC for ramp at output - 6) MPC for step at input
1.5

1.5

1.5

0.5

0.5

0.5

50

100

150

200

250

300

350

400

50

100

150

200

250

300

350

400

1.5

1.5

1.5

0.5

0.5

0.5

50

100

150

200

250

300

350

400

50

100

150

200

250

300

350

400

50

100

150

200

250

300

350

400

50

100

150

200

250

300

350

400

Robin DE KEYSER Ghent University EeSA Department of Electrical energy, Systems & Automation

You might also like