diff --git a/identification/index.org b/identification/index.org index 1d3724e..620f1a7 100644 --- a/identification/index.org +++ b/identification/index.org @@ -238,6 +238,9 @@ initializeRz(); %% Initialize Hexapod Symétrie initializeMicroHexapod(); + +%% Initialize Center of gravity compensation +initializeAxisc(); #+end_src ** Center of Mass of each solid body @@ -381,15 +384,16 @@ initializeMicroHexapod(); end #+end_src +** Bis For Granite Fx to Tx/Ty/Tz/Rx/Ry/Rz #+begin_src matlab dirs = {'x', 'y', 'z', 'rx', 'ry', 'rz'}; stages = {'gtop', 'ty', 'ry', 'rz', 'hexa'} - n_stg = 2; - n_exc = 2; + n_stg = 5; + n_exc = 3; - f = logspace(1, 3, 1000); + f = logspace(0, 3, 1000); figure; for n_dir = 1:6 diff --git a/simscape/index.org b/simscape/index.org index 6ecb903..e8b8651 100644 --- a/simscape/index.org +++ b/simscape/index.org @@ -1070,6 +1070,16 @@ This Matlab function is accessible [[file:../src/initializeGranite.m][here]]. #+begin_src matlab function [granite] = initializeGranite() + %% Default values for opts + opts = struct('rigid', false); + + %% Populate opts with input parameters + if exist('opts_param','var') + for opt = fieldnames(opts_param)' + opts.(opt{1}) = opts_param.(opt{1}); + end + end + %% granite = struct(); @@ -1083,22 +1093,27 @@ This Matlab function is accessible [[file:../src/initializeGranite.m][here]]. granite.mass_top = 4000; % [kg] TODO %% Dynamical Properties - granite.k.x = 4e9; % [N/m] + if opts.rigid + granite.k.x = 1e12; % [N/m] + granite.k.y = 1e12; % [N/m] + granite.k.z = 1e12; % [N/m] + granite.k.rx = 1e10; % [N*m/deg] + granite.k.ry = 1e10; % [N*m/deg] + granite.k.rz = 1e10; % [N*m/deg] + else + granite.k.x = 4e9; % [N/m] + granite.k.y = 3e8; % [N/m] + granite.k.z = 8e8; % [N/m] + granite.k.rx = 1e4; % [N*m/deg] + granite.k.ry = 1e4; % [N*m/deg] + granite.k.rz = 1e6; % [N*m/deg] + end + granite.c.x = 0.1*sqrt(granite.mass_top*granite.k.x); % [N/(m/s)] - - granite.k.y = 3e8; % [N/m] granite.c.y = 0.1*sqrt(granite.mass_top*granite.k.y); % [N/(m/s)] - - granite.k.z = 8e8; % [N/m] granite.c.z = 0.5*sqrt(granite.mass_top*granite.k.z); % [N/(m/s)] - - granite.k.rx = 1e4; % [N*m/deg] granite.c.rx = 0.1*sqrt(granite.mass_top*granite.k.rx); % [N*m/(deg/s)] - - granite.k.ry = 1e4; % [N*m/deg] granite.c.ry = 0.1*sqrt(granite.mass_top*granite.k.ry); % [N*m/(deg/s)] - - granite.k.rz = 1e6; % [N*m/deg] granite.c.rz = 0.1*sqrt(granite.mass_top*granite.k.rz); % [N*m/(deg/s)] %% Positioning parameters @@ -1126,9 +1141,9 @@ This Matlab function is accessible [[file:../src/initializeTy.m][here]]. %% Populate opts with input parameters if exist('opts_param','var') - for opt = fieldnames(opts_param)' - opts.(opt{1}) = opts_param.(opt{1}); - end + for opt = fieldnames(opts_param)' + opts.(opt{1}) = opts_param.(opt{1}); + end end %% @@ -1176,11 +1191,12 @@ This Matlab function is accessible [[file:../src/initializeTy.m][here]]. %% Y-Translation - Dynamicals Properties if opts.rigid - ty.k.ax = 1e10; % Axial Stiffness for each of the 4 guidance (y) [N/m] + ty.k.ax = 1e12; % Axial Stiffness for each of the 4 guidance (y) [N/m] + ty.k.rad = 1e12; % Radial Stiffness for each of the 4 guidance (x-z) [N/m] else - ty.k.ax = 1e7; % Axial Stiffness for each of the 4 guidance (y) [N/m] + ty.k.ax = 5e7; % Axial Stiffness for each of the 4 guidance (y) [N/m] + ty.k.rad = 5e7; % Radial Stiffness for each of the 4 guidance (x-z) [N/m] end - ty.k.rad = 1e8; % Radial Stiffness for each of the 4 guidance (x-z) [N/m] ty.c.ax = 0.1*sqrt(ty.k.ax*ty.m); ty.c.rad = 0.1*sqrt(ty.k.rad*ty.m); @@ -1207,9 +1223,9 @@ This Matlab function is accessible [[file:../src/initializeRy.m][here]]. %% Populate opts with input parameters if exist('opts_param','var') - for opt = fieldnames(opts_param)' - opts.(opt{1}) = opts_param.(opt{1}); - end + for opt = fieldnames(opts_param)' + opts.(opt{1}) = opts_param.(opt{1}); + end end %% @@ -1237,15 +1253,17 @@ This Matlab function is accessible [[file:../src/initializeRy.m][here]]. %% Tilt Stage - Dynamical Properties if opts.rigid - ry.k.tilt = 1e10; % Rotation stiffness around y [N*m/deg] + ry.k.tilt = 1e10; % Rotation stiffness around y [N*m/deg] + ry.k.h = 1e12; % Stiffness in the direction of the guidance [N/m] + ry.k.rad = 1e12; % Stiffness in the top direction [N/m] + ry.k.rrad = 1e12; % Stiffness in the side direction [N/m] else - ry.k.tilt = 1e3; % Rotation stiffness around y [N*m/deg] + ry.k.tilt = 1e4; % Rotation stiffness around y [N*m/deg] + ry.k.h = 1e8; % Stiffness in the direction of the guidance [N/m] + ry.k.rad = 1e8; % Stiffness in the top direction [N/m] + ry.k.rrad = 1e8; % Stiffness in the side direction [N/m] end - ry.k.h = 357e6/4; % Stiffness in the direction of the guidance [N/m] - ry.k.rad = 555e6/4; % Stiffness in the top direction [N/m] - ry.k.rrad = 238e6/4; % Stiffness in the side direction [N/m] - ry.c.h = 0.1*sqrt(ry.k.h*ry.m); ry.c.rad = 0.1*sqrt(ry.k.rad*ry.m); ry.c.rrad = 0.1*sqrt(ry.k.rrad*ry.m); @@ -1276,9 +1294,9 @@ This Matlab function is accessible [[file:../src/initializeRz.m][here]]. %% Populate opts with input parameters if exist('opts_param','var') - for opt = fieldnames(opts_param)' - opts.(opt{1}) = opts_param.(opt{1}); - end + for opt = fieldnames(opts_param)' + opts.(opt{1}) = opts_param.(opt{1}); + end end %% @@ -1302,15 +1320,17 @@ This Matlab function is accessible [[file:../src/initializeRz.m][here]]. rz.m = 250; % [kg] %% Spindle - Dynamical Properties - % Estimated stiffnesses - rz.k.ax = 2e9; % Axial Stiffness [N/m] - rz.k.rad = 7e8; % Radial Stiffness [N/m] - rz.k.tilt = 1e8*(2*pi/360); % Rotational Stiffness [N*m/deg] if opts.rigid - rz.k.rot = 1e10; % Rotational Stiffness [N*m/deg] + rz.k.rot = 1e10; % Rotational Stiffness (Rz) [N*m/deg] + rz.k.tilt = 1e10; % Rotational Stiffness (Rx, Ry) [N*m/deg] + rz.k.ax = 1e12; % Axial Stiffness (Z) [N/m] + rz.k.rad = 1e12; % Radial Stiffness (X, Y) [N/m] else - rz.k.rot = 1e6; % TODO what value should I put? [N*m/deg] + rz.k.rot = 1e6; % TODO - Rotational Stiffness (Rz) [N*m/deg] + rz.k.tilt = 1e6; % Rotational Stiffness (Rx, Ry) [N*m/deg] + rz.k.ax = 2e9; % Axial Stiffness (Z) [N/m] + rz.k.rad = 7e8; % Radial Stiffness (X, Y) [N/m] end % Damping @@ -1337,13 +1357,13 @@ This Matlab function is accessible [[file:../src/initializeMicroHexapod.m][here] #+begin_src matlab function [micro_hexapod] = initializeMicroHexapod(opts_param) %% Default values for opts - opts = struct(); + opts = struct('rigid', false); %% Populate opts with input parameters if exist('opts_param','var') - for opt = fieldnames(opts_param)' - opts.(opt{1}) = opts_param.(opt{1}); - end + for opt = fieldnames(opts_param)' + opts.(opt{1}) = opts_param.(opt{1}); + end end %% Stewart Object @@ -1380,7 +1400,7 @@ This Matlab function is accessible [[file:../src/initializeMicroHexapod.m][here] Leg.stroke = 10e-3; % Maximum Stroke of each leg [m] Leg.k.ax = 5e7; % Stiffness of each leg [N/m] - Leg.ksi.ax = 3; % Maximum amplification at resonance [] + Leg.ksi.ax = 0.1; % Modal damping ksi = 1/2*c/sqrt(km) [] Leg.rad.bottom = 25; % Radius of the cylinder of the bottom part [mm] Leg.rad.top = 17; % Radius of the cylinder of the top part [mm] Leg.density = 8000; % Density of the material [kg/m^3] @@ -1431,10 +1451,10 @@ This Matlab function is accessible [[file:../src/initializeMicroHexapod.m][here] %% function [element] = updateDamping(element) - field = fieldnames(element.k); - for i = 1:length(field) - element.c.(field{i}) = 1/element.ksi.(field{i})*sqrt(element.k.(field{i})/element.m); - end + field = fieldnames(element.k); + for i = 1:length(field) + element.c.(field{i}) = 2*element.ksi.(field{i})*sqrt(element.k.(field{i})*element.m); + end end %% diff --git a/simscape/sim_micro_station_modal_analysis_com.slx b/simscape/sim_micro_station_modal_analysis_com.slx index 3a38ad9..3a0bf32 100644 Binary files a/simscape/sim_micro_station_modal_analysis_com.slx and b/simscape/sim_micro_station_modal_analysis_com.slx differ