Name | Description |
---|---|
![]() | Measures the cut force |
![]() | Measures the cut torque |
![]() | Measures the power flow |
![]() | Measures the absolute position and motion |
![]() | Measures the relative position and motion |
The force is resolved in the inertial system.
Type | Name | Description |
---|---|---|
Frame_a | frame_a | |
Frame_b | frame_b | |
output RealOutput | force[3] | Cut force |
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;
The torque is resolved in the inertial system.
Type | Name | Description |
---|---|---|
Frame_a | frame_a | |
Frame_b | frame_b | |
output RealOutput | torque[3] | Cut torque |
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;
Type | Name | Description |
---|---|---|
Frame_a | frame_a | |
Frame_b | frame_b | |
output RealOutput | power | power |
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;
The quantities are provided at the output signal connector y in packed format in the order
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
Type | Name | Default | Description |
---|---|---|---|
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] |
Boolean | get_v_abs | false | = true, to measure the absolute velocity of the origin of frame_a in [m/s] |
Boolean | get_a_abs | false | = true, to measure the absolute acceleration of the origin of frame_a in [m/s^2] |
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] |
Boolean | get_w_abs | false | = true, to measure the absolute angular velocity of frame_a in [rad/s] |
Boolean | get_z_abs | false | = true, to measure the absolute angular acceleration to frame_a in [rad/s^2] |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | |
output RealOutput | out[n_out] |
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;
The quantities are provided at the output signal connector y in packed format in the order
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
Type | Name | Default | Description |
---|---|---|---|
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] |
Boolean | get_v_abs | false | = true, to measure the absolute velocity of the origin of frame_a in [m/s] |
Boolean | get_a_abs | false | = true, to measure the absolute acceleration of the origin of frame_a in [m/s^2] |
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] |
Boolean | get_w_abs | false | = true, to measure the absolute angular velocity of frame_a in [rad/s] |
Boolean | get_z_abs | false | = true, to measure the absolute angular acceleration to frame_a in [rad/s^2] |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | |
output RealOutput | out[n_out] | |
Frame_b | frame_b |
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;