Remove simscape file for disturbances

Now the new configurable simscape file is compatible with the
disturbance analysis
This commit is contained in:
Thomas Dehaeze 2020-02-18 17:30:27 +01:00
parent f5056db788
commit dfdfcff4db
14 changed files with 47 additions and 40 deletions

View File

@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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');