Remove simscape file for disturbances
Now the new configurable simscape file is compatible with the disturbance analysis
This commit is contained in:
parent
f5056db788
commit
dfdfcff4db
@ -185,7 +185,7 @@ This file is divided in the following sections:
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
open('disturbances/matlab/sim_micro_station_disturbances.slx')
|
||||
open('nass_model.slx')
|
||||
#+end_src
|
||||
|
||||
* Simscape Model
|
||||
@ -197,10 +197,6 @@ However, we here constrain all the stage to only move in the vertical direction.
|
||||
We add disturbances forces in the vertical direction for the Translation Stage and the Spindle.
|
||||
Also, we measure the absolute displacement of the granite and of the top platform of the Hexapod.
|
||||
|
||||
#+begin_src matlab
|
||||
open('disturbances/matlab/sim_micro_station_disturbances.slx');
|
||||
#+end_src
|
||||
|
||||
We load the configuration and we set a small =StopTime=.
|
||||
#+begin_src matlab
|
||||
load('mat/conf_simulink.mat');
|
||||
@ -210,15 +206,15 @@ We load the configuration and we set a small =StopTime=.
|
||||
We initialize all the stages.
|
||||
#+begin_src matlab
|
||||
initializeGround();
|
||||
initializeGranite();
|
||||
initializeGranite('type', 'modal-analysis');
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
initializeNanoHexapod('actuator', 'piezo');
|
||||
initializeSample('mass', 50);
|
||||
initializeMicroHexapod('type', 'modal-analysis');
|
||||
initializeAxisc('type', 'none');
|
||||
initializeMirror('type', 'none');
|
||||
initializeNanoHexapod('type', 'none');
|
||||
initializeSample('type', 'none');
|
||||
#+end_src
|
||||
|
||||
* Identification
|
||||
@ -226,32 +222,43 @@ We initialize all the stages.
|
||||
The transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup with the code below.
|
||||
|
||||
#+begin_src matlab
|
||||
%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'sim_micro_station_disturbances';
|
||||
%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
%% Micro-Hexapod
|
||||
% Input/Output definition
|
||||
io(1) = linio([mdl, '/Dw'], 1, 'input'); % Ground Motion
|
||||
io(2) = linio([mdl, '/Fty'], 1, 'input'); % Parasitic force Ty
|
||||
io(3) = linio([mdl, '/Frz'], 1, 'input'); % Parasitic force Rz
|
||||
io(4) = linio([mdl, '/Dgm'], 1, 'output'); % Absolute motion - Granite
|
||||
io(5) = linio([mdl, '/Dhm'], 1, 'output'); % Absolute Motion - Hexapod
|
||||
io(6) = linio([mdl, '/Vm'], 1, 'output'); % Relative Velocity hexapod/granite
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Dwz'); io_i = io_i + 1; % Vertical Ground Motion
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Fty_z'); io_i = io_i + 1; % Parasitic force Ty
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Frz_z'); io_i = io_i + 1; % Parasitic force Rz
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Granite/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1; % Absolute motion - Granite
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1; % Absolute Motion - Hexapod
|
||||
% io(io_i) = linio([mdl, '/Vm'], 1, 'openoutput'); io_i = io_i + 1; % Relative Velocity hexapod/granite
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
% Run the linearization
|
||||
G = linearize(mdl, io, 0);
|
||||
% Run the linearization
|
||||
G = linearize(mdl, io, 0);
|
||||
|
||||
% Input/Output names
|
||||
G.InputName = {'Dw', 'Fty', 'Frz'};
|
||||
G.OutputName = {'Dgm', 'Dhm', 'Vm'};
|
||||
% We Take only the outputs corresponding to the vertical acceleration
|
||||
G = G([3,9], :);
|
||||
|
||||
% Input/Output names
|
||||
G.InputName = {'Dw', 'Fty', 'Frz'};
|
||||
G.OutputName = {'Agm', 'Ahm'};
|
||||
|
||||
% We integrate 1 time the output to have the velocity and we
|
||||
% substract the absolute velocities to have the relative velocity
|
||||
G = (1/s)*tf([-1, 1])*G;
|
||||
|
||||
% Input/Output names
|
||||
G.InputName = {'Dw', 'Fty', 'Frz'};
|
||||
G.OutputName = {'Vm'};
|
||||
#+end_src
|
||||
|
||||
* Sensitivity to Disturbances
|
||||
|
Binary file not shown.
BIN
figs/sensitivity_dist_frz.pdf
Normal file
BIN
figs/sensitivity_dist_frz.pdf
Normal file
Binary file not shown.
BIN
figs/sensitivity_dist_frz.png
Normal file
BIN
figs/sensitivity_dist_frz.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 62 KiB |
BIN
figs/sensitivity_dist_fty.pdf
Normal file
BIN
figs/sensitivity_dist_fty.pdf
Normal file
Binary file not shown.
BIN
figs/sensitivity_dist_fty.png
Normal file
BIN
figs/sensitivity_dist_fty.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 69 KiB |
BIN
figs/sensitivity_dist_gm.pdf
Normal file
BIN
figs/sensitivity_dist_gm.pdf
Normal file
Binary file not shown.
BIN
figs/sensitivity_dist_gm.png
Normal file
BIN
figs/sensitivity_dist_gm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 66 KiB |
@ -293,8 +293,8 @@ We initialize all the stages.
|
||||
initializeTy( 'type', 'modal-analysis');
|
||||
initializeRy( 'type', 'modal-analysis');
|
||||
initializeRz( 'type', 'modal-analysis');
|
||||
initializeMicroHexapod('type', 'flexible');
|
||||
initializeAxisc( 'type', 'modal-analysis');
|
||||
initializeMicroHexapod('type', 'modal-analysis');
|
||||
initializeAxisc( 'type', 'flexible');
|
||||
|
||||
initializeMirror( 'type', 'none');
|
||||
initializeNanoHexapod( 'type', 'none');
|
||||
@ -420,12 +420,12 @@ We use the =linearize= function in order to estimate the dynamics from forces ap
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Modal Analysis/F_hammer'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Modal Analysis/F_hammer'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Granite/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Tilt Stage/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Spindle/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/CoM Alignement System/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
|
Binary file not shown.
@ -864,7 +864,7 @@ The =rz= structure is saved.
|
||||
:END:
|
||||
#+begin_src matlab
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis'})} = 'flexible'
|
||||
% initializeFramesPositions
|
||||
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
||||
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
||||
@ -935,6 +935,8 @@ Equilibrium position of the each joint.
|
||||
micro_hexapod.type = 1;
|
||||
case 'flexible'
|
||||
micro_hexapod.type = 2;
|
||||
case 'modal-analysis'
|
||||
micro_hexapod.type = 3;
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -987,7 +989,7 @@ The Simscape model of the Center of gravity compensator is composed of:
|
||||
:END:
|
||||
#+begin_src matlab
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -1012,8 +1014,6 @@ First, we initialize the =axisc= structure.
|
||||
axisc.type = 1;
|
||||
case 'flexible'
|
||||
axisc.type = 2;
|
||||
case 'modal-analysis'
|
||||
axisc.type = 3;
|
||||
end
|
||||
#+end_src
|
||||
|
||||
|
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
function [axisc] = initializeAxisc(args)
|
||||
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
|
||||
end
|
||||
|
||||
axisc = struct();
|
||||
@ -13,8 +13,6 @@ switch args.type
|
||||
axisc.type = 1;
|
||||
case 'flexible'
|
||||
axisc.type = 2;
|
||||
case 'modal-analysis'
|
||||
axisc.type = 3;
|
||||
end
|
||||
|
||||
% Structure
|
||||
|
@ -1,7 +1,7 @@
|
||||
function [micro_hexapod] = initializeMicroHexapod(args)
|
||||
|
||||
arguments
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
|
||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis'})} = 'flexible'
|
||||
% initializeFramesPositions
|
||||
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
||||
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
||||
@ -56,6 +56,8 @@ switch args.type
|
||||
micro_hexapod.type = 1;
|
||||
case 'flexible'
|
||||
micro_hexapod.type = 2;
|
||||
case 'modal-analysis'
|
||||
micro_hexapod.type = 3;
|
||||
end
|
||||
|
||||
save('./mat/stages.mat', 'micro_hexapod', '-append');
|
||||
|
Loading…
Reference in New Issue
Block a user