User Tools

Site Tools


parallel_flexure_guide_transfer

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
parallel_flexure_guide_transfer [2018/05/16 09:41]
mark.naves
parallel_flexure_guide_transfer [2021/05/05 14:17] (current)
marijn.nijenhuis
Line 3: Line 3:
 ===== Example: Compute transfer function of a parallel flexure guide ===== ===== Example: Compute transfer function of a parallel flexure guide =====
  
-This example shows the computation of the transfer function from actuator force (force in x-direction on the end-effector) to stage displacement (motion in x-direction of the end-effector) of a parallel flexure guide. +This example shows the computation of the transfer function from input actuator force (force in x-direction on the end-effector) to output stage displacement and velocity (motion in x-direction of the end-effector) of a parallel flexure guide. 
 {{::parallel flexure guide.png?direct|}} {{::parallel flexure guide.png?direct|}}
  
-The transfer function (state-space equations) can be computed by specifying the input and output for the transfer function. For this example, actuation force in x-direction on node 3 (a node on the end-effector) is used for input, and displacement in x-direction of node 3 is used for the outputThis can be specified with the ''nprops(i).transfer_in'' and ''nprops(i).transfer_out'' arguments. Furthermore, for computation of the state-space equations, the optional argument ''opt.transfer'' is required. For this specific case this results in:+The state-space equations (from which the transfer function follows) can be computed by specifying the input and output for the transfer function. For this example, actuation force in x-direction on node 3 (a node on the end-effector) is used for input. Two desired outputs are specified: the first is the displacement in x-direction of node 3; the second is the velocity in x-direction of node 5These can be specified with the ''nprops(i).transfer_in'' and ''nprops(i).transfer_out'' arguments. Furthermore, to enable the computation of the state-space equations, the optional field ''opt.transfer'' has to be set to ''true''. For details, see the [[full_syntax|SPACAR Light full syntax]]. For this case, the MATLAB file that defines the flexure mechanism is supplemented with
 <code matlab> <code matlab>
-nprops(3).transfer_in  = {'force_x'};       %Input for state-space equations +nprops(3).transfer_in  = {'force_x'};       %Input for state-space equations 
-nprops(3).transfer_out = {'displ_x'};       %Output for state-space equations{'displ_x'};+nprops(3).transfer_out = {'displ_x'};       %Output for state-space equations 
 +nprops(5).transfer_out = {'veloc_x'};       %Output 2 for state-space equations
 ... ...
 opt.transfer = {true 0.01};       %Calculation of state-space equations (with relative damping 0.01) opt.transfer = {true 0.01};       %Calculation of state-space equations (with relative damping 0.01)
 </code> </code>
-It has to be noted that the state-state equations can only be computed for an undeformed flexure mechanism. Therefore, no external loads (actuation force) or input displacements are allowed when computing state-space equations. 
  
-The resulting transfer function is plotted in the figure below, with the first eiqenfrequency at approximately 10 rad/s and the first disturbing frequency at 360 rad/s. +Note that 
-{{::transfer pfg.png?direct|}}+  * the state-space equations can only be computed for an undeformed flexure mechanism. Therefore, no external loads (actuation force) or input displacements are allowed when computing state-space equations. (An error message will appear.) 
 +  * velocity outputs are supported as well; 
 +  * relative damping for all modes of the system can be specified optionally by means of the ''opt.transfer'' field. 
 +For details, see the [[full_syntax|SPACAR Light full syntax]]. 
 + 
 +The resulting transfer function between the input and the first output is plotted in the figure below. The first eigenfrequency is approximately 10 rad/s;  the first parasitic eigenfrequency appears at 360 rad/s. 
 + 
 +{{::bode.png?direct|}}
  
 +Note that in case of multiple inputs and/or outputs, the resulting state-space structure in MATLAB will also indicate with named labels what these inputs and outputs are (i.e. node number and displacement, velocity or force).
  
-An example file for providing the input for SPACAR Light is provided below.+An example file for providing the input for SPACAR Light and plotting the transfer function is provided below.
 <code matlab example.m> <code matlab example.m>
 % EXAMPLE SCRIPT FOR RUNNING SPACAR LIGHT % EXAMPLE SCRIPT FOR RUNNING SPACAR LIGHT
Line 50: Line 58:
 %node 3 %node 3
 nprops(3).transfer_in  = {'force_x'};       %Input for state-space equations nprops(3).transfer_in  = {'force_x'};       %Input for state-space equations
-nprops(3).transfer_out = {'displ_x'};       %Output for state-space equations+nprops(3).transfer_out = {'displ_x'};       %Output nr 1 (displ. in x-direction on node 3) for state-space equations 
 +nprops(5).transfer_out = {'veloc_x'};       %Output nr 2 (veloc. in x-direction on node 5) for state-space equations
  
 %node 4 %node 4
Line 60: Line 69:
 eprops(1).elems    = [1 3];            %Add this set of properties to elements 1 and 3 eprops(1).elems    = [1 3];            %Add this set of properties to elements 1 and 3
 eprops(1).emod     = 210e9;            %E-modulus [Pa] eprops(1).emod     = 210e9;            %E-modulus [Pa]
-eprops(1).smod     = 70e9;             %G-modulus [Pa]+eprops(1).smod     = 70e9;             %Shear modulus [Pa]
 eprops(1).dens     = 7800;             %Density [kg/m^3] eprops(1).dens     = 7800;             %Density [kg/m^3]
 eprops(1).cshape   = 'rect';           %Rectangular cross-section eprops(1).cshape   = 'rect';           %Rectangular cross-section
 eprops(1).dim      = [50e-3 0.2e-3];   %Width: 50 mm, thickness: 0.2 mm eprops(1).dim      = [50e-3 0.2e-3];   %Width: 50 mm, thickness: 0.2 mm
 eprops(1).orien    = [0 0 1];          %Orientation of the cross-section as a vector pointing along "width-direction" eprops(1).orien    = [0 0 1];          %Orientation of the cross-section as a vector pointing along "width-direction"
-eprops(1).nbeams   = 2;                %beam elements for simulating these elements +eprops(1).nbeams   = 2;                %beam elements for simulating these flexures 
-eprops(1).flex     = 1:6;            %Model out-of-plane bending (modes 3 and 4) as flexible +eprops(1).flex     = 1:6;              %Fully flexible beam 
-eprops(1).color    = 'grey'; +eprops(1).color    = 'grey';           %Color of elements 
-eprops(1).opacity  = 0.7; +eprops(1).opacity  = 0.7;              %Opacity of elements 
-eprops(1).cw       = true;+eprops(1).warping  = true;             %Enable modeling of warping, e.g. for the effect of constrained warping 
 %Property set 2 %Property set 2
-eprops(2).elems    = [2 4];            %Add this set of properties to element 2+eprops(2).elems    = [2 4];            %Add this set of properties to element 2 and 4
 eprops(2).dens     = 7800;             %Density [kg/m^3] eprops(2).dens     = 7800;             %Density [kg/m^3]
 eprops(2).cshape   = 'rect';           %Rectangular cross-section eprops(2).cshape   = 'rect';           %Rectangular cross-section
-eprops(2).dim      = [50e-3 25e-3];    %Width: 50 mm, thickness: 10 mm+eprops(2).dim      = [50e-3 25e-3];    %Width: 50 mm, thickness: 25 mm
 eprops(2).orien    = [0 0 1];          %Orientation of the cross-section as a vector pointing along "width-direction" eprops(2).orien    = [0 0 1];          %Orientation of the cross-section as a vector pointing along "width-direction"
-eprops(2).nbeams   = 1;                %1 beam element for simulating this element +eprops(2).nbeams   = 1;                %1 beam element for simulating this component 
-eprops(2).color    = 'darkblue';+eprops(2).color    = 'darkblue';       %Color of elements
  
  
 %% OPTIONAL ARGUMENTS %% OPTIONAL ARGUMENTS
 opt.transfer = {true 0.01};       %Calculation of state-space equations (with relative damping 0.01) opt.transfer = {true 0.01};       %Calculation of state-space equations (with relative damping 0.01)
 +opt.filename = 'file';            %Names of files that are produced
  
 %% CALL SPACAR_LIGHT %% CALL SPACAR_LIGHT
Line 87: Line 98:
  
 %% Plot transfer function %% Plot transfer function
-figure +%set some convenient defaults for the plot. Not necessary, but they can improve the plots 
-bode(out.statespace,{1,10000}) +bodeopt = bodeoptions; 
-grid minor+bodeopt.Title.String = 'Title for this plot'; 
 +bodeopt.FreqUnits = 'Hz'; %default frequency units 
 +bodeopt.Xlim = [1,4000]; %frequency axis limits 
 +bodeopt.Grid = 'on'; %show a grid 
 + 
 +bodeopt.Title.FontSize = 14; %font size for title 
 +bodeopt.XLabel.FontSize = 12; %font size for xlabels 
 +bodeopt.YLabel.FontSize = 12; %font size for ylabels 
 +bodeopt.TickLabel.FontSize = 12; %font size for the ticks (numbers on axes) 
 +bodeopt.InputLabels.FontSize = 12; 
 +bodeopt.OutputLabels.FontSize = 12; 
 + 
 +bodeopt.PhaseMatching = 'on'; %phase matching: adding multiples of 360 so that: 
 +bodeopt.PhaseMatchingFreq = 1; %--at this frequency 
 +bodeopt.PhaseMatchingValue = 0; %--the phase is close to this value 
 + 
 +h = bodeplot(out.statespace,bodeopt); %make the plot
 </code> </code>
parallel_flexure_guide_transfer.1526456501.txt.gz · Last modified: 2018/05/16 09:41 by mark.naves