42 lines
1.8 KiB
Matlab
42 lines
1.8 KiB
Matlab
function [Kp,Kvfb,Ki,Kvff,Kaff,MaxInt,mot_num,mot_den,Ts,MaxDac,MaxPosErr,A,B,C,D]=simFxFyStage(mot,motid)
|
|
%global Kp Kvfb Ki Kvff Kaff MaxInt mot_num mot_den Ts MaxDac MaxPosErr A B C D
|
|
Ts=2E-4; % 0.2ms=5kHz
|
|
MaxDac=2011.968;
|
|
MaxPosErr=10000;
|
|
if motid==1
|
|
%!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')
|
|
Kp=25;Kvfb=400;Ki=0.02;Kvff=350;Kaff=5000;MaxInt=1000;
|
|
mot_num=mot.tf_mdl.Numerator;
|
|
mot_den=mot.tf_mdl.Denominator;
|
|
else
|
|
%!motor_servo(mot=2,ctrl='ServoCtrl',Kp=22,Kvfb=350,Ki=0.02,Kvff=240,Kaff=1500,MaxInt=1000)
|
|
%!motor(mot=2,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')
|
|
Kp=22;Kvfb=350;Ki=0.02;Kvff=240;Kaff=1500;MaxInt=1000;
|
|
mot_num=mot.tf_mdl.Numerator;
|
|
mot_den=mot.tf_mdl.Denominator;
|
|
end
|
|
|
|
mdlName='stage_closed_loop';
|
|
open(mdlName)
|
|
%ServoDeltaTau_z(motid)
|
|
[A,B,C,D]=tf2ss(mot_num,mot_den);
|
|
|
|
%mdlWks=get_param(mdlName,'ModelWorkspace');
|
|
%whos global
|
|
%whos(mdlWks)
|
|
%for k=["Kp","Kvfb","Ki","Kvff","Kaff","MaxInt","mot_num","mot_den","Ts","MaxDac","MaxPosErr"]
|
|
% assignin(mdlWks,k,eval(k))
|
|
%end
|
|
|
|
%assignin(mdlWks,'Ts',1234)
|
|
%getVariable(mdlWks,'Ts')
|
|
% in global space call:
|
|
%global Kp Kvfb Ki Kvff Kaff MaxInt
|
|
%global mot_num mot_den Ts MaxDac MaxPosErr
|
|
%[mot1,mot2]=identifyFxFyStage();
|
|
%simFxFyStage(mot1,mot2);
|
|
|
|
%
|
|
end
|