20 KiB
HAC-LAC applied on the Simscape Model
- Undamped System
Undamped System
<<sec:undamped_system>>
Introduction ignore
Identification of the plant
Initialize the Simulation
We initialize all the stages with the default parameters.
initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
initializeNanoHexapod('actuator', 'piezo');
initializeSample('mass', 50);
No disturbances.
initializeDisturbances('enable', false);
We set the references to zero.
initializeReferences();
And all the controllers are set to 0.
K = tf(zeros(6));
save('./mat/controllers.mat', 'K', '-append');
K_ine = tf(zeros(6));
save('./mat/controllers.mat', 'K_ine', '-append');
K_iff = tf(zeros(6));
save('./mat/controllers.mat', 'K_iff', '-append');
K_dvf = tf(zeros(6));
save('./mat/controllers.mat', 'K_dvf', '-append');
Identification
First, we identify the dynamics of the system using the linearize
function.
%% Options for Linearized
options = linearizeOptions;
options.SampleTime = 0;
%% Name of the Simulink File
mdl = 'sim_nass_hac_lac';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/HAC'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Compute Error in NASS base'], 2, 'openoutput'); io_i = io_i + 1;
%% Run the linearization
G = linearize(mdl, io, options);
G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
G.OutputName = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'};
load('mat/stages.mat', 'nano_hexapod');
G_cart = minreal(G*inv(nano_hexapod.J'));
G_cart.InputName = {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz'};
G_legs = minreal(inv(nano_hexapod.J)*G);
G_legs.OutputName = {'e1', 'e2', 'e3', 'e4', 'e5', 'e6'};
Display TF
<<plt-matlab>>
Obtained Plants for Active Damping
<<plt-matlab>>
<<plt-matlab>>
<<plt-matlab>>
Tomography Experiment
Simulation
We initialize elements for the tomography experiment.
prepareTomographyExperiment();
We change the simulation stop time.
load('mat/conf_simscape.mat');
set_param(conf_simscape, 'StopTime', '3');
And we simulate the system.
sim('sim_nass_active_damping');
Finally, we save the simulation results for further analysis
save('./active_damping/mat/tomo_exp.mat', 'En', 'Eg', '-append');
Results
We load the results of tomography experiments.
load('./active_damping/mat/tomo_exp.mat', 'En');
t = linspace(0, 3, length(En(:,1)));
<<plt-matlab>>
<<plt-matlab>>
Verification of the transfer function from nano hexapod to metrology
Initialize the Simulation
We initialize all the stages with the default parameters.
initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
initializeNanoHexapod('actuator', 'piezo');
initializeSample('mass', 50);
No disturbances.
initializeDisturbances('enable', false);
We set the references to zero.
initializeReferences();
And all the controllers are set to 0.
K = tf(zeros(6));
save('./mat/controllers.mat', 'K', '-append');
K_ine = tf(zeros(6));
save('./mat/controllers.mat', 'K_ine', '-append');
K_iff = tf(zeros(6));
save('./mat/controllers.mat', 'K_iff', '-append');
K_dvf = tf(zeros(6));
save('./mat/controllers.mat', 'K_dvf', '-append');
Identification
First, we identify the dynamics of the system using the linearize
function.
%% Options for Linearized
options = linearizeOptions;
options.SampleTime = 0;
%% Name of the Simulink File
mdl = 'sim_nass_hac_lac';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/HAC'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Compute Error in NASS base'], 2, 'openoutput'); io_i = io_i + 1;
%% Run the linearization
G = linearize(mdl, io, options);
G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
G.OutputName = {'Edx', 'Edy', 'Edz', 'Erx', 'Ery', 'Erz'};
load('mat/stages.mat', 'nano_hexapod');
G_cart = minreal(G*inv(nano_hexapod.J'));
G_cart.InputName = {'Fnx', 'Fny', 'Fnz', 'Mnx', 'Mny', 'Mnz'};
G_legs = minreal(inv(nano_hexapod.J)*G);
G_legs.OutputName = {'e1', 'e2', 'e3', 'e4', 'e5', 'e6'};
Display TF
<<plt-matlab>>
Obtained Plants for Active Damping
<<plt-matlab>>
<<plt-matlab>>
<<plt-matlab>>