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
#+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.

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

View File

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

View File

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

View File

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