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 13:37]
marijn.nijenhuis
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 input actuator force (force in x-direction on the end-effector) to output 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-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. 
  
-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 
 +  * 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.
  
-{{::transfer pfg.png?direct|}}+{{::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 and plotting the transfer function is provided below. An example file for providing the input for SPACAR Light and plotting the transfer function is provided below.
Line 51: 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 61: 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;                %2 beam elements for simulating these elements +eprops(1).nbeams   = 2;                %2 beam elements for simulating these flexures 
-eprops(1).flex     = 1:6;            %Full flexible beam +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 and 4 eprops(2).elems    = [2 4];            %Add this set of properties to element 2 and 4
Line 77: Line 86:
 eprops(2).dim      = [50e-3 25e-3];    %Width: 50 mm, thickness: 25 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 88: 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.1526470673.txt.gz · Last modified: 2018/05/16 13:37 by marijn.nijenhuis