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
|
||||
@ -231,27 +227,38 @@ options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'sim_micro_station_disturbances';
|
||||
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);
|
||||
|
||||
% We Take only the outputs corresponding to the vertical acceleration
|
||||
G = G([3,9], :);
|
||||
|
||||
% Input/Output names
|
||||
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
|
||||
|
||||
* 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');
|
||||
@ -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/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