towards matlab
This commit is contained in:
123
matlab/SCRATCH.m
Normal file
123
matlab/SCRATCH.m
Normal file
@@ -0,0 +1,123 @@
|
||||
|
||||
clear;
|
||||
clear global;
|
||||
[mot1,mot2]=identifyFxFyStage();
|
||||
[Kp,Kvfb,Ki,Kvff,Kaff,MaxInt,mot_num,mot_den,Ts,MaxDac,MaxPosErr,A,B,C,D]=simFxFyStage(mot1,1);
|
||||
|
||||
[Nbar,A,B,C,Ao,Bo,Co,Do,L,K]=StateSpaceControlDesign(mot1,1);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function f=SCRATCH()
|
||||
open('stage_closed_loop.slx')
|
||||
|
||||
|
||||
[m1,m2]=identifyFxFyStage();
|
||||
controlSystemDesigner(1,m2.tf_py); % <<<<<<<<< This opens a transferfiûnction that can be edited
|
||||
|
||||
%identification toolbox
|
||||
systemIdentification
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%opt=tfestOptions('Display','off');
|
||||
%opt=tfestOptions('Display','on','initializeMethod','svf');
|
||||
%opt=tfestOptions('Display','on','initializeMethod','iv','WeightingFilter',[]);
|
||||
%opt=tfestOptions('Display','on','initializeMethod','iv','WeightingFilter',[1,5;20,570]);
|
||||
%tf1 = tfest(mot1frq, 6, 4, opt);
|
||||
% Model refinement
|
||||
% Options = tf1.Report.OptionsUsed;
|
||||
% Options.WeightingFilter = 'prediction';
|
||||
% tf1_1 = pem(mot1frq, tf1, Options)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bodeplot(mot1frq,tf1)
|
||||
mag,phase=bode(tf1,frq)
|
||||
figure(1)
|
||||
subplot(211)
|
||||
|
||||
|
||||
bodeplot(tf1)
|
||||
|
||||
Opt = n4sidOptions('N4Horizon',[15 15 15]);
|
||||
n4s3 = n4sid(mot1frq, 3, Opt)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%tf([1 2],[1 0 10])
|
||||
%specifies the transfer function (s+2)/(s^2+10) while
|
||||
sys=tf([1],[1,0,0])
|
||||
bode(sys)
|
||||
step(sys)
|
||||
|
||||
sys=tf([1],[1,-1,2]) %instable
|
||||
|
||||
sys=tf([1],[1,1,2]) %stable
|
||||
|
||||
|
||||
%0dB at 12 Hz=12*2*pi rad/s =75.4=k^2 -> k=8.6833
|
||||
|
||||
sys=tf([10],[1,0,0])
|
||||
%1/s^2 -> 0dB at 1Hz -40dB/decade
|
||||
%10=+20dB
|
||||
|
||||
|
||||
sys=tf([1],[1,0,2]) %not damped constant sine after step
|
||||
|
||||
|
||||
sys=zpk([],[1,0,0],100) %stable
|
||||
|
||||
sys=zpk([],[-10,-10],100)
|
||||
|
||||
|
||||
%parker stage 1
|
||||
%!encoder_sim(enc=1,tbl=9,mot=9,posSf=13000./2048)
|
||||
%!encoder_inc(enc=1,tbl=1,mot=1,posSf=13000./650000)
|
||||
%!motor_servo(mot=1,ctrl='ServoCtrl',Kp=25,Kvfb=400,Ki=0.02,Kvff=350,Kaff=5000,MaxInt=1000)
|
||||
%!motor(mot=1,dirCur=0,contCur=800,peakCur=2400,timeAtPeak=1,IiGain=5,IpfGain=8,IpbGain=8,JogSpeed=10.,numPhase=3,invDir=True,servo=None,PhasePosSf=1./81250,PhaseFindingDac=100,PhaseFindingTime=50,SlipGain=0,AdvGain=0,PwmSf=10000,FatalFeLimit=200,WarnFeLimit=100,InPosBand=2,homing='enc-index')
|
||||
Ts=2E-4 % discrete sample time (servo period)
|
||||
Kp=25,Kvfb=400,Ki=0.02,Kvff=350,Kaff=5000,MaxInt=1000
|
||||
Kp=25,Kvfb=0,Ki=0,Kvff=0,Kaff=0,MaxInt=0
|
||||
|
||||
|
||||
num=7.32
|
||||
den=[5.995e-04 4.897e-02 1.]
|
||||
open('stage_closed_loop.slx')
|
||||
%sim('stage_closed_loop.slx')
|
||||
|
||||
sys=tf(num,den)
|
||||
bode(sys)
|
||||
G = tf(1.5,[1 14 40.02]);
|
||||
controlSystemDesigner('bode',sys);
|
||||
controlSystemDesigner
|
||||
linearSystemAnalyzer
|
||||
load ltiexamples
|
||||
linearSystemAnalyzer(sys_dc)
|
||||
|
||||
controlSystemDesigner('bode',sys);
|
||||
controlSystemDesigner(1,sys); % <<<<<<<<< This opens a transferfiûnction that can be edited
|
||||
|
||||
num=[8.32795069e-11, 1.04317228e-08, 6.68431323e-05, 3.31861324e-03, 7.32824533e+00];
|
||||
den=[5.26156641e-18, 1.12897840e-14, 7.67853031e-12, 1.03201301e-08, 2.05154780e-06, 1.34279894e-03, 7.19229912e-02, 1.00000000e+00];
|
||||
mot2=tf(num,den);
|
||||
controlSystemDesigner('bode',mot2);
|
||||
|
||||
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user