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
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
open('disturbances/matlab/sim_micro_station_disturbances.slx')
|
open('nass_model.slx')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Simscape Model
|
* 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.
|
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.
|
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=.
|
We load the configuration and we set a small =StopTime=.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
load('mat/conf_simulink.mat');
|
load('mat/conf_simulink.mat');
|
||||||
@ -210,15 +206,15 @@ We load the configuration and we set a small =StopTime=.
|
|||||||
We initialize all the stages.
|
We initialize all the stages.
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
initializeGround();
|
initializeGround();
|
||||||
initializeGranite();
|
initializeGranite('type', 'modal-analysis');
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod('type', 'modal-analysis');
|
||||||
initializeAxisc();
|
initializeAxisc('type', 'none');
|
||||||
initializeMirror();
|
initializeMirror('type', 'none');
|
||||||
initializeNanoHexapod('actuator', 'piezo');
|
initializeNanoHexapod('type', 'none');
|
||||||
initializeSample('mass', 50);
|
initializeSample('type', 'none');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Identification
|
* Identification
|
||||||
@ -231,27 +227,38 @@ options = linearizeOptions;
|
|||||||
options.SampleTime = 0;
|
options.SampleTime = 0;
|
||||||
|
|
||||||
%% Name of the Simulink File
|
%% Name of the Simulink File
|
||||||
mdl = 'sim_micro_station_disturbances';
|
mdl = 'nass_model';
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
%% Micro-Hexapod
|
%% Micro-Hexapod
|
||||||
% Input/Output definition
|
clear io; io_i = 1;
|
||||||
io(1) = linio([mdl, '/Dw'], 1, 'input'); % Ground Motion
|
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Dwz'); io_i = io_i + 1; % Vertical Ground Motion
|
||||||
io(2) = linio([mdl, '/Fty'], 1, 'input'); % Parasitic force Ty
|
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Fty_z'); io_i = io_i + 1; % Parasitic force Ty
|
||||||
io(3) = linio([mdl, '/Frz'], 1, 'input'); % Parasitic force Rz
|
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Frz_z'); io_i = io_i + 1; % Parasitic force Rz
|
||||||
io(4) = linio([mdl, '/Dgm'], 1, 'output'); % Absolute motion - Granite
|
io(io_i) = linio([mdl, '/Micro-Station/Granite/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1; % Absolute motion - Granite
|
||||||
io(5) = linio([mdl, '/Dhm'], 1, 'output'); % Absolute Motion - Hexapod
|
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1; % Absolute Motion - Hexapod
|
||||||
io(6) = linio([mdl, '/Vm'], 1, 'output'); % Relative Velocity hexapod/granite
|
% io(io_i) = linio([mdl, '/Vm'], 1, 'openoutput'); io_i = io_i + 1; % Relative Velocity hexapod/granite
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
% Run the linearization
|
% Run the linearization
|
||||||
G = linearize(mdl, io, 0);
|
G = linearize(mdl, io, 0);
|
||||||
|
|
||||||
|
% We Take only the outputs corresponding to the vertical acceleration
|
||||||
|
G = G([3,9], :);
|
||||||
|
|
||||||
% Input/Output names
|
% Input/Output names
|
||||||
G.InputName = {'Dw', 'Fty', 'Frz'};
|
G.InputName = {'Dw', 'Fty', 'Frz'};
|
||||||
G.OutputName = {'Dgm', 'Dhm', 'Vm'};
|
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
|
#+end_src
|
||||||
|
|
||||||
* Sensitivity to Disturbances
|
* 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');
|
initializeTy( 'type', 'modal-analysis');
|
||||||
initializeRy( 'type', 'modal-analysis');
|
initializeRy( 'type', 'modal-analysis');
|
||||||
initializeRz( 'type', 'modal-analysis');
|
initializeRz( 'type', 'modal-analysis');
|
||||||
initializeMicroHexapod('type', 'flexible');
|
initializeMicroHexapod('type', 'modal-analysis');
|
||||||
initializeAxisc( 'type', 'modal-analysis');
|
initializeAxisc( 'type', 'flexible');
|
||||||
|
|
||||||
initializeMirror( 'type', 'none');
|
initializeMirror( 'type', 'none');
|
||||||
initializeNanoHexapod( 'type', 'none');
|
initializeNanoHexapod( 'type', 'none');
|
||||||
@ -425,7 +425,7 @@ We use the =linearize= function in order to estimate the dynamics from forces ap
|
|||||||
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/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/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/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
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
|
Binary file not shown.
@ -864,7 +864,7 @@ The =rz= structure is saved.
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
arguments
|
||||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
|
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis'})} = 'flexible'
|
||||||
% initializeFramesPositions
|
% initializeFramesPositions
|
||||||
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
||||||
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
||||||
@ -935,6 +935,8 @@ Equilibrium position of the each joint.
|
|||||||
micro_hexapod.type = 1;
|
micro_hexapod.type = 1;
|
||||||
case 'flexible'
|
case 'flexible'
|
||||||
micro_hexapod.type = 2;
|
micro_hexapod.type = 2;
|
||||||
|
case 'modal-analysis'
|
||||||
|
micro_hexapod.type = 3;
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -987,7 +989,7 @@ The Simscape model of the Center of gravity compensator is composed of:
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
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
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -1012,8 +1014,6 @@ First, we initialize the =axisc= structure.
|
|||||||
axisc.type = 1;
|
axisc.type = 1;
|
||||||
case 'flexible'
|
case 'flexible'
|
||||||
axisc.type = 2;
|
axisc.type = 2;
|
||||||
case 'modal-analysis'
|
|
||||||
axisc.type = 3;
|
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
function [axisc] = initializeAxisc(args)
|
function [axisc] = initializeAxisc(args)
|
||||||
|
|
||||||
arguments
|
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
|
||||||
|
|
||||||
axisc = struct();
|
axisc = struct();
|
||||||
@ -13,8 +13,6 @@ switch args.type
|
|||||||
axisc.type = 1;
|
axisc.type = 1;
|
||||||
case 'flexible'
|
case 'flexible'
|
||||||
axisc.type = 2;
|
axisc.type = 2;
|
||||||
case 'modal-analysis'
|
|
||||||
axisc.type = 3;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
% Structure
|
% Structure
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
function [micro_hexapod] = initializeMicroHexapod(args)
|
function [micro_hexapod] = initializeMicroHexapod(args)
|
||||||
|
|
||||||
arguments
|
arguments
|
||||||
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
|
args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis'})} = 'flexible'
|
||||||
% initializeFramesPositions
|
% initializeFramesPositions
|
||||||
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
args.H (1,1) double {mustBeNumeric, mustBePositive} = 350e-3
|
||||||
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
args.MO_B (1,1) double {mustBeNumeric} = 270e-3
|
||||||
@ -56,6 +56,8 @@ switch args.type
|
|||||||
micro_hexapod.type = 1;
|
micro_hexapod.type = 1;
|
||||||
case 'flexible'
|
case 'flexible'
|
||||||
micro_hexapod.type = 2;
|
micro_hexapod.type = 2;
|
||||||
|
case 'modal-analysis'
|
||||||
|
micro_hexapod.type = 3;
|
||||||
end
|
end
|
||||||
|
|
||||||
save('./mat/stages.mat', 'micro_hexapod', '-append');
|
save('./mat/stages.mat', 'micro_hexapod', '-append');
|
||||||
|
Loading…
Reference in New Issue
Block a user