MultiBondLib.Mechanics3D.MechSensors

Sensor elements

Package Content

NameDescription
MultiBondLib.Mechanics3D.MechSensors.CutForce CutForce Measures the cut force
MultiBondLib.Mechanics3D.MechSensors.CutTorque CutTorque Measures the cut torque
MultiBondLib.Mechanics3D.MechSensors.Power Power Measures the power flow
MultiBondLib.Mechanics3D.MechSensors.AbsoluteSensor AbsoluteSensor Measures the absolute position and motion
MultiBondLib.Mechanics3D.MechSensors.RelativeSensor RelativeSensor Measures the relative position and motion


MultiBondLib.Mechanics3D.MechSensors.CutForce MultiBondLib.Mechanics3D.MechSensors.CutForce

Measures the cut force

MultiBondLib.Mechanics3D.MechSensors.CutForce

Information


This sensor element measures the force that acts from frame a to frame b.

The force is resolved in the inertial system.


Connectors

TypeNameDescription
Frame_aframe_a 
Frame_bframe_b 
output RealOutputforce[3]Cut force

Modelica definition

model CutForce "Measures the cut force" 
  
  import SI = Modelica.SIunits;
  
  Interfaces.Frame_a frame_a;
  Interfaces.Frame_b frame_b;
  Modelica.Blocks.Interfaces.RealOutput force[3](redeclare each type SignalType
      =            SI.Force) "Cut force";
  Sensors.De de;
  Bonds.MultiBond multiBond;
  Bonds.MultiBond multiBond1;
  Interfaces.MBG2Mech mBG2Mech;
  Interfaces.Mech2MBG mech2MBG;
  inner Defaults MBG_defaults(n=3);
  Bonds.Utilities.MultiBondTail multiBondTail;
  Bonds.Utilities.MultiBondTail multiBondTail1;
  Bonds.MultiBond multiBond2;
  Bonds.MultiBond multiBond3;
  Junctions.J0 j0_1;
  Bonds.Utilities.MultiBondTail multiBondTail2;
equation 
  defineBranch(frame_a.P,frame_b.P);
  connect(mech2MBG.frame_a, frame_a);
  connect(mBG2Mech.frame_b, frame_b);
  connect(multiBond.MultiBondCon1, mech2MBG.MultiBondConTrans);
  connect(multiBond1.MultiBondCon2, mBG2Mech.MultiBondConTrans);
  connect(de.MultiBondCon1, multiBond2.MultiBondCon2);
  connect(de.e_out, force);
  connect(multiBond3.MultiBondCon2, mBG2Mech.MultiBondConRot);
  connect(mech2MBG.R, mBG2Mech.R);
  connect(mech2MBG.x, mBG2Mech.x);
  connect(multiBond3.MultiBondCon1, mech2MBG.MultiBondConRot);
  connect(j0_1.MultiBondCon2, multiBond1.MultiBondCon1);
  connect(j0_1.MultiBondCon1, multiBond.MultiBondCon2);
  connect(j0_1.MultiBondCon3, multiBond2.MultiBondCon1);
end CutForce;

MultiBondLib.Mechanics3D.MechSensors.CutTorque MultiBondLib.Mechanics3D.MechSensors.CutTorque

Measures the cut torque

MultiBondLib.Mechanics3D.MechSensors.CutTorque

Information


This sensor element measures the torque that acts from frame a to frame b.

The torque is resolved in the inertial system.


Connectors

TypeNameDescription
Frame_aframe_a 
Frame_bframe_b 
output RealOutputtorque[3]Cut torque

Modelica definition

model CutTorque "Measures the cut torque" 
  
  import SI = Modelica.SIunits;
  
  Interfaces.Frame_a frame_a;
  Interfaces.Frame_b frame_b;
  Modelica.Blocks.Interfaces.RealOutput torque[3](redeclare each type 
      SignalType = SI.Force) "Cut torque";
  Sensors.De de;
  Bonds.MultiBond multiBond;
  Bonds.MultiBond multiBond1;
  Junctions.J0 j0_1;
  Interfaces.MBG2Mech mBG2Mech;
  Interfaces.Mech2MBG mech2MBG;
  inner Defaults MBG_defaults(n=3);
  Bonds.Utilities.MultiBondTail multiBondTail1;
  Bonds.MultiBond multiBond2;
  Bonds.MultiBond multiBond3;
  Bonds.Utilities.MultiBondTail multiBondTail2;
  Bonds.Utilities.MultiBondTail multiBondTail3;
equation 
  defineBranch(frame_a.P,frame_b.P);
  connect(mech2MBG.frame_a, frame_a);
  connect(mBG2Mech.frame_b, frame_b);
  connect(multiBond1.MultiBondCon1, j0_1.MultiBondCon2);
  connect(multiBond.MultiBondCon2, j0_1.MultiBondCon1);
  connect(de.MultiBondCon1, multiBond2.MultiBondCon2);
  connect(de.e_out, torque);
  connect(multiBond2.MultiBondCon1, j0_1.MultiBondCon3);
  connect(multiBond.MultiBondCon1, mech2MBG.MultiBondConRot);
  connect(multiBond3.MultiBondCon2, mBG2Mech.MultiBondConTrans);
  connect(multiBond1.MultiBondCon2, mBG2Mech.MultiBondConRot);
  connect(mech2MBG.x, mBG2Mech.x);
  connect(mBG2Mech.R, mech2MBG.R);
  connect(multiBond3.MultiBondCon1, mech2MBG.MultiBondConTrans);
end CutTorque;

MultiBondLib.Mechanics3D.MechSensors.Power MultiBondLib.Mechanics3D.MechSensors.Power

Measures the power flow

MultiBondLib.Mechanics3D.MechSensors.Power

Information


This sensor element measures the power that virtually flows from frame a to frame b.

Connectors

TypeNameDescription
Frame_aframe_a 
Frame_bframe_b 
output RealOutputpowerpower

Modelica definition

model Power "Measures the power flow" 
  
  import SI = Modelica.SIunits;
  
  Interfaces.Frame_a frame_a;
  Interfaces.Frame_b frame_b;
  Modelica.Blocks.Interfaces.RealOutput power(redeclare each type SignalType = 
                   SI.Force) "power";
  Bonds.MultiBond multiBond;
  Bonds.MultiBond multiBond1;
  Interfaces.MBG2Mech mBG2Mech;
  Interfaces.Mech2MBG mech2MBG;
  inner Defaults MBG_defaults(n=3);
  Bonds.MultiBond multiBond3;
  Bonds.MultiBond multiBond4;
  Compositions.Composition composition;
  Compositions.Composition composition1;
  Bonds.MultiBond multiBond5(n=6);
  Sensors.PMultiBond pMultiBond(n=6);
public 
  Passive.mTF_flow mTF_flow;
public 
  Passive.mTF_effort mTF_effort;
  Bonds.Utilities.MultiBondTail multiBondTail2;
  Bonds.Utilities.MultiBondTail multiBondTail3;
  Bonds.MultiBond multiBond2;
  Bonds.MultiBond multiBond6;
  Junctions.J1 j1_1(n=6);
equation 
  defineBranch(frame_a.P,frame_b.P);
  connect(mech2MBG.frame_a, frame_a);
  connect(mBG2Mech.frame_b, frame_b);
  connect(multiBond1.MultiBondCon2, mBG2Mech.MultiBondConRot);
  connect(multiBond3.MultiBondCon2, mBG2Mech.MultiBondConTrans);
  connect(mech2MBG.MultiBondConTrans, multiBond4.MultiBondCon1);
  connect(composition1.MultiBondCon2, multiBond3.MultiBondCon1);
  connect(multiBond5.MultiBondCon2, composition1.MultiBondCon3);
  connect(pMultiBond.MultiBondCon1, composition.MultiBondCon3);
  connect(pMultiBond.P, power);
  connect(multiBond.MultiBondCon1, mech2MBG.MultiBondConRot);
  connect(multiBond4.MultiBondCon2, composition.MultiBondCon2);
  connect(mTF_flow.MultiBondCon2, multiBond.MultiBondCon2);
  connect(mech2MBG.R, mTF_flow.M);
  connect(multiBond2.MultiBondCon2, composition.MultiBondCon1);
  connect(mTF_flow.MultiBondCon1, multiBond2.MultiBondCon1);
  connect(mTF_effort.MultiBondCon2, multiBond1.MultiBondCon1);
  connect(multiBond6.MultiBondCon1, composition1.MultiBondCon1);
  connect(mTF_effort.MultiBondCon1, multiBond6.MultiBondCon2);
  connect(mTF_effort.M, mBG2Mech.R);
  connect(j1_1.MultiBondCon2, multiBond5.MultiBondCon1);
  connect(j1_1.MultiBondCon1, pMultiBond.MultiBondCon2);
  connect(mech2MBG.x, mBG2Mech.x);
  connect(mech2MBG.R, mBG2Mech.R);
end Power;

MultiBondLib.Mechanics3D.MechSensors.AbsoluteSensor MultiBondLib.Mechanics3D.MechSensors.AbsoluteSensor

Measures the absolute position and motion

MultiBondLib.Mechanics3D.MechSensors.AbsoluteSensor

Information


This sensor element measures the positional variables and their derivatives.
All these variables are resolved with respect to the inertial system.

The quantities are provided at the output signal connector y in packed format in the order

  1. absolute position vector (= r_abs)
  2. absolute velocity vectory (= v_abs)
  3. absolute acceleration vector (= a_abs)
  4. 3 angles to rotate the world frame into frame_a (= angles)
  5. absolute angular velocity vector (= w_abs)
  6. absolute angular acceleration vector (= z_abs)

For example, if parameters get_v and get_w are true and all other get_XXX parameters are false, then y contains 6 elements:

 y[1:3] = absolute velocity
 y[4:6] = absolute angular velocity

Parameters

TypeNameDefaultDescription
Booleanget_r_abstrue= true, to measure the position vector from the origin of the world frame to the origin of frame_a in [m]
Booleanget_v_absfalse= true, to measure the absolute velocity of the origin of frame_a in [m/s]
Booleanget_a_absfalse= true, to measure the absolute acceleration of the origin of frame_a in [m/s^2]
Booleanget_Rfalse= true, to measure the 3 rotation angles to rotate the world frame into frame_a along the axes defined in 'sequence' below in [rad]
Booleanget_w_absfalse= true, to measure the absolute angular velocity of frame_a in [rad/s]
Booleanget_z_absfalse= true, to measure the absolute angular acceleration to frame_a in [rad/s^2]

Connectors

TypeNameDescription
Frame_aframe_a 
output RealOutputout[n_out] 

Modelica definition

model AbsoluteSensor "Measures the absolute position and motion" 
  
  import SI = Modelica.SIunits;
  
  parameter Boolean get_r_abs=true 
    "= true, to measure the position vector from the origin of the world frame to the origin of frame_a in [m]";
  parameter Boolean get_v_abs=false 
    "= true, to measure the absolute velocity of the origin of frame_a in [m/s]";
  parameter Boolean get_a_abs=false 
    "= true, to measure the absolute acceleration of the origin of frame_a in [m/s^2]";
  parameter Boolean get_R=false 
    "= true, to measure the 3 rotation angles to rotate the world frame into frame_a along the axes defined in 'sequence' below in [rad]";
  parameter Boolean get_w_abs=false 
    "= true, to measure the absolute angular velocity of frame_a in [rad/s]";
  parameter Boolean get_z_abs=false 
    "= true, to measure the absolute angular acceleration to frame_a in [rad/s^2]";
  
  final parameter Integer n_out = ((if get_r_abs then 3 else 
                0) + (if get_v_abs then 3 else 0) + (if get_a_abs then 3 else 
                0) + (if get_R then 9 else 0) + (if get_w_abs then 3 else 
                0) + (if get_z_abs then 3 else 0));
  
  Interfaces.Frame_a frame_a;
  Modelica.Blocks.Interfaces.RealOutput out[n_out](redeclare each type 
      SignalType = 
        SI.Force);
protected 
  parameter Integer i1=1;
  parameter Integer i2=if get_r_abs then i1 + 3 else i1;
  parameter Integer i3=if get_v_abs then i2 + 3 else i2;
  parameter Integer i4=if get_a_abs then i3 + 3 else i3;
  parameter Integer i5=if get_R then i4 + 9 else i4;
  parameter Integer i6=if get_w_abs then i5 + 3 else i5;
  
  Bonds.MultiBond multiBond;
  Interfaces.Mech2MBG mech2MBG;
  inner Defaults MBG_defaults(n=3);
  Modelica.Blocks.Continuous.Der der_v[3];
  Bonds.MultiBond multiBond1;
  Modelica.Blocks.Continuous.Der der_w[3];
  Bonds.MultiBond multiBond2;
  Sensors.Df Df_v;
  Sensors.Df Df_w;
  Passive.mTF_effort mTF_effort;
equation 
  
  if get_r_abs then
    out[i1:i1 + 2] = mech2MBG.x;
  end if;
  
  if get_v_abs then
    out[i2:i2 + 2] = Df_v.f_out;
  end if;
  
  if get_a_abs then
    out[i3:i3 + 2] = der_v.y;
  end if;
  
  if get_R then
    out[i4:i4 + 2] = mech2MBG.R[1,1:3];
    out[i4+3:i4+5] = mech2MBG.R[2,1:3];
    out[i4+6:i4+8] = mech2MBG.R[3,1:3];
  end if;
  
  if get_w_abs then
    out[i5:i5 + 2] = Df_w.f_out;
  end if;
  
  if get_z_abs then
    out[i6:i6 + 2] = der_w.y;
  end if;
  
  connect(mech2MBG.frame_a, frame_a);
  connect(multiBond.MultiBondCon1, mech2MBG.MultiBondConTrans);
  connect(multiBond1.MultiBondCon1, mech2MBG.MultiBondConRot);
  connect(Df_v.f_out, der_v.u);
  connect(Df_w.MultiBondCon1, multiBond2.MultiBondCon2);
  connect(Df_w.f_out, der_w.u);
  connect(mTF_effort.MultiBondCon2, multiBond1.MultiBondCon2);
  connect(mTF_effort.MultiBondCon1, multiBond2.MultiBondCon1);
  connect(mech2MBG.R, mTF_effort.M);
  connect(Df_v.MultiBondCon1, multiBond.MultiBondCon2);
end AbsoluteSensor;

MultiBondLib.Mechanics3D.MechSensors.RelativeSensor MultiBondLib.Mechanics3D.MechSensors.RelativeSensor

Measures the relative position and motion

MultiBondLib.Mechanics3D.MechSensors.RelativeSensor

Information


This sensor element measures the relative positional variables and their derivatives between
the two frames. All these variables are resolved with respect to the inertial system.

The quantities are provided at the output signal connector y in packed format in the order

  1. absolute position vector (= r_abs)
  2. absolute velocity vectory (= v_abs)
  3. absolute acceleration vector (= a_abs)
  4. 3 angles to rotate the world frame into frame_a (= angles)
  5. absolute angular velocity vector (= w_abs)
  6. absolute angular acceleration vector (= z_abs)

For example, if parameters get_v and get_w are true and all other get_XXX parameters are false, then y contains 6 elements:

 y[1:3] = absolute velocity
 y[4:6] = absolute angular velocity

Parameters

TypeNameDefaultDescription
Booleanget_r_abstrue= true, to measure the position vector from the origin of the world frame to the origin of frame_a in [m]
Booleanget_v_absfalse= true, to measure the absolute velocity of the origin of frame_a in [m/s]
Booleanget_a_absfalse= true, to measure the absolute acceleration of the origin of frame_a in [m/s^2]
Booleanget_Rfalse= true, to measure the 3 rotation angles to rotate the world frame into frame_a along the axes defined in 'sequence' below in [rad]
Booleanget_w_absfalse= true, to measure the absolute angular velocity of frame_a in [rad/s]
Booleanget_z_absfalse= true, to measure the absolute angular acceleration to frame_a in [rad/s^2]

Connectors

TypeNameDescription
Frame_aframe_a 
output RealOutputout[n_out] 
Frame_bframe_b 

Modelica definition

model RelativeSensor "Measures the relative position and motion" 
  
  import SI = Modelica.SIunits;
  
  parameter Boolean get_r_abs=true 
    "= true, to measure the position vector from the origin of the world frame to the origin of frame_a in [m]";
  parameter Boolean get_v_abs=false 
    "= true, to measure the absolute velocity of the origin of frame_a in [m/s]";
  parameter Boolean get_a_abs=false 
    "= true, to measure the absolute acceleration of the origin of frame_a in [m/s^2]";
  parameter Boolean get_R=false 
    "= true, to measure the 3 rotation angles to rotate the world frame into frame_a along the axes defined in 'sequence' below in [rad]";
  parameter Boolean get_w_abs=false 
    "= true, to measure the absolute angular velocity of frame_a in [rad/s]";
  parameter Boolean get_z_abs=false 
    "= true, to measure the absolute angular acceleration to frame_a in [rad/s^2]";
  
  final parameter Integer n_out = ((if get_r_abs then 3 else 
                0) + (if get_v_abs then 3 else 0) + (if get_a_abs then 3 else 
                0) + (if get_R then 9 else 0) + (if get_w_abs then 3 else 
                0) + (if get_z_abs then 3 else 0));
  
  Interfaces.Frame_a frame_a;
  Modelica.Blocks.Interfaces.RealOutput out[n_out](redeclare each type 
      SignalType = 
        SI.Force);
protected 
  parameter Integer i1=1;
  parameter Integer i2=if get_r_abs then i1 + 3 else i1;
  parameter Integer i3=if get_v_abs then i2 + 3 else i2;
  parameter Integer i4=if get_a_abs then i3 + 3 else i3;
  parameter Integer i5=if get_R then i4 + 9 else i4;
  parameter Integer i6=if get_w_abs then i5 + 3 else i5;
  
  Bonds.MultiBond multiBond;
  Interfaces.Mech2MBG mech2MBG;
  inner Defaults MBG_defaults(n=3);
  Modelica.Blocks.Continuous.Der der_v[3];
  Bonds.MultiBond multiBond1;
  Modelica.Blocks.Continuous.Der der_w[3];
  Bonds.MultiBond multiBond2;
  Sensors.Df Df_v;
  Sensors.Df Df_w;
  Passive.mTF_effort mTF_effort;
  Interfaces.MBG2Mech mBG2Mech;
public 
  Interfaces.Frame_b frame_b;
protected 
  Junctions.J0 j0_1;
  Junctions.J0 j0_2;
  
  Bonds.MultiBond multiBond3;
  Bonds.MultiBond multiBond4;
  Bonds.Utilities.MultiBondTail multiBondTail;
  Bonds.Utilities.MultiBondTail multiBondTail1;
  
  Bonds.MultiBond multiBond5;
  Bonds.MultiBond multiBond6;
  Passive.mTF_flow mTF_flow;
  Bonds.MultiBond multiBond7;
  Bonds.Utilities.MultiBondTail multiBondTail2;
  Real Rrel[3,3];
equation 
  
  Rrel = mBG2Mech.R*transpose(mech2MBG.R);
  
  if get_r_abs then
    out[i1:i1 + 2] = mech2MBG.x-mBG2Mech.x;
  end if;
  
  if get_v_abs then
    out[i2:i2 + 2] = Df_v.f_out;
  end if;
  
  if get_a_abs then
    out[i3:i3 + 2] = der_v.y;
  end if;
  
  if get_R then
    out[i4:i4 + 2] = Rrel[1,1:3];
    out[i4+3:i4+5] = Rrel[2,1:3];
    out[i4+6:i4+8] = Rrel[3,1:3];
  end if;
  
  if get_w_abs then
    out[i5:i5 + 2] = Df_w.f_out;
  end if;
  
  if get_z_abs then
    out[i6:i6 + 2] = der_w.y;
  end if;
  
  connect(mech2MBG.frame_a, frame_a);
  connect(multiBond.MultiBondCon1, mech2MBG.MultiBondConTrans);
  connect(multiBond1.MultiBondCon1, mech2MBG.MultiBondConRot);
  connect(Df_v.f_out, der_v.u);
  connect(Df_w.f_out, der_w.u);
  connect(mech2MBG.R, mTF_effort.M);
  connect(mBG2Mech.frame_b,frame_b);
  connect(multiBond3.MultiBondCon1, j0_1.MultiBondCon4);
  connect(Df_v.MultiBondCon1, multiBond3.MultiBondCon2);
  connect(multiBond4.MultiBondCon2, mBG2Mech.MultiBondConTrans);
  connect(multiBond4.MultiBondCon1, j0_1.MultiBondCon2);
  connect(multiBond2.MultiBondCon2, mBG2Mech.MultiBondConRot);
  connect(j0_2.MultiBondCon1, multiBond1.MultiBondCon2);
  connect(multiBond5.MultiBondCon1, j0_2.MultiBondCon2);
  connect(multiBond5.MultiBondCon2, mTF_effort.MultiBondCon2);
  connect(multiBond6.MultiBondCon1, mTF_effort.MultiBondCon1);
  connect(mTF_flow.MultiBondCon1, multiBond6.MultiBondCon2);
  connect(mTF_flow.MultiBondCon2, multiBond2.MultiBondCon1);
  connect(mTF_flow.M, mBG2Mech.R);
  connect(multiBond7.MultiBondCon1, j0_2.MultiBondCon3);
  connect(Df_w.MultiBondCon1, multiBond7.MultiBondCon2);
end RelativeSensor;

HTML-documentation generated by Dymola Thu Aug 31 09:47:55 2006.