towards pole placement
This commit is contained in:
@@ -9,7 +9,9 @@ function [pb]=DeltaTauParam(mot,mdl,param)
|
||||
pb=struct(...
|
||||
'Ts', 2E-4, ... % 0.2ms=5kHz
|
||||
'MaxDac' ,2011.968, ...
|
||||
'MaxPosErr', 10000);
|
||||
'MaxPosErr', 10000, ...
|
||||
'A',1,'B',1,'C',1,'D',1,'E',1,'F',1, ...
|
||||
'Kafb',0);
|
||||
desc=sprintf('mot:%d mdl:',mot.id);
|
||||
switch mdl
|
||||
case 1
|
||||
@@ -30,9 +32,9 @@ function [pb]=DeltaTauParam(mot,mdl,param)
|
||||
pb.ss_plt=mot.ss_cq;desc=desc+"cq"; pb.sel={3,[3]};
|
||||
case 9
|
||||
pb.ss_plt=mot.ss_cqr;desc=desc+"cqr"; pb.sel={3,[3]};
|
||||
case 10
|
||||
pb.ss_plt=mot.ss_dq;desc=desc+"dq"; pb.sel={3,[3]};
|
||||
end
|
||||
pb.A=[1];pb.B=[1];pb.C=[1];pb.D=[1];pb.E=[1];pb.F=[1];
|
||||
|
||||
desc=desc+" param:";
|
||||
if mot.id==1
|
||||
%!motor_servo(mot=1,ctrl='ServoCtrl',Kp=25,Kvfb=400,Ki=0.02,Kvff=350,Kaff=5000,MaxInt=1000)
|
||||
@@ -40,12 +42,52 @@ function [pb]=DeltaTauParam(mot,mdl,param)
|
||||
switch param
|
||||
case 0 %scratch
|
||||
desc=desc+"scratch";
|
||||
pl=[-300+550i -300-550i -2513];
|
||||
[Am,Bm,Cm,Dm]=ssdata(mot.ss_dq);
|
||||
K = place(Am,Bm,pl);
|
||||
V=-1./(Cm*(Am-Bm*K)^-1*Bm); %(from Lineare Regelsysteme2 (Glattfelder) page:173 )
|
||||
V=V(end);
|
||||
Kfb=K*(Cm^-1);
|
||||
pb.V=V;
|
||||
pb.Kfb=Kfb;
|
||||
|
||||
pb.Kp=V;
|
||||
pb.B=Kfb(3)/V;
|
||||
pb.Kvfb=Kfb(2)/pb.Ts;
|
||||
fprintf('Kp:%f B:%f Kvfb:%f Kafb:%f\n',pb.Kp,pb.B,pb.Kvfb,pb.Kafb);
|
||||
|
||||
pb.Kvff=1*pb.Kvfb;
|
||||
pb.Kafb=0;%Kfb(1)/(pb.Ts^2);
|
||||
pb.Kaff=1*1/(1.548e04*(pb.Ts^2));
|
||||
pb.Ki=0.02;
|
||||
pb.MaxInt=1000;
|
||||
case 1 %origin parameters
|
||||
desc=desc+"orig";
|
||||
pb.Kp=25;pb.Kvfb=400;pb.Ki=0.02;pb.Kvff=350;pb.Kaff=5000;pb.MaxInt=1000;
|
||||
case 2%enhances first step
|
||||
desc=desc+"2";
|
||||
pb.Kp=25;pb.Kvfb=350;pb.Ki=0.02;pb.Kvff=350;pb.Kaff=1/(1.548e04*(pb.Ts^2));pb.MaxInt=1000;
|
||||
case 3%pole placement on simplified motion tf
|
||||
pl=[-1400 -1440];
|
||||
pl=[-300+350i -300-350i];
|
||||
[Am,Bm,Cm,Dm]=ssdata(mot.ss_q);
|
||||
K = place(Am,Bm,pl);
|
||||
V=-1./(Cm*(Am-Bm*K)^-1*Bm); %(from Lineare Regelsysteme2 (Glattfelder) page:173 )
|
||||
V=V(end);
|
||||
Kfb=K*(Cm^-1);
|
||||
pb.V=V;
|
||||
pb.Kfb=Kfb;
|
||||
|
||||
pb.Kp=V;
|
||||
pb.B=Kfb(2)/V;
|
||||
pb.Kvfb=Kfb(1)/pb.Ts;
|
||||
fprintf('Kp:%f B:%f Kvfb:%f\n',pb.Kp,pb.B,pb.Kvfb);
|
||||
|
||||
pb.Kvff=pb.Kvfb;
|
||||
pb.Kafb=0;
|
||||
pb.Kaff=1/(1.548e04*(pb.Ts^2));
|
||||
pb.Ki=0.01; % lower
|
||||
pb.MaxInt=1000;
|
||||
end
|
||||
%pb.Kp=0.1;pb.Kvfb=0;pb.Ki=0.00;pb.Kvff=0;pb.Kaff=1/(1.548e04*(pb.Ts^2));pb.MaxInt=1000;
|
||||
%filter [z^0 z^-1 ... z^-n];
|
||||
|
||||
Reference in New Issue
Block a user