Name | Description |
---|---|
PartialAbsoluteSensor | Partial absolute sensor model for sensors defined by components |
PartialAbsoluteBaseSensor | Partial absolute sensor models for sensors defined by equations (frame_resolve must be connected exactly once) |
PartialRelativeSensor | Partial relative sensor model for sensors defined by components |
PartialRelativeBaseSensor | Partial relative sensor models for sensors defined by equations (frame_resolve must be connected exactly once) |
BasicAbsolutePosition | Measure absolute position vector (same as Sensors.AbsolutePosition, but frame_resolve is not conditional and must be connected) |
BasicAbsoluteAngularVelocity | Measure absolute angular velocity |
BasicRelativePosition | Measure relative position vector (same as Sensors.RelativePosition, but frame_resolve is not conditional and must be connected) |
BasicRelativeAngularVelocity | Measure relative angular velocity |
BasicTransformAbsoluteVector | Transform absolute vector in to another frame |
BasicTransformRelativeVector | Transform relative vector in to another frame |
ZeroForceAndTorque | Set force and torque to zero |
PartialCutForceSensor | Base model to measure the cut force and/or torque between two frames, defined by components |
PartialCutForceBaseSensor | Base model to measure the cut force and/or torque between two frames, defined by equations (frame_resolve must be connected exactly once) |
BasicCutForce | Measure cut force vector (frame_resolve must be connected) |
BasicCutTorque | Measure cut torque vector (frame_resolve must be connected) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system at which the kinematic quantities are measured |
partial model PartialAbsoluteSensor "Partial absolute sensor model for sensors defined by components" extends Modelica.Icons.RotationalSensor;Modelica.Mechanics.MultiBody.Interfaces.Frame_a frame_a "Coordinate system at which the kinematic quantities are measured"; equation assert(cardinality(frame_a) > 0, "Connector frame_a must be connected at least once");end PartialAbsoluteSensor;
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system from which kinematic quantities are measured |
Frame_resolve | frame_resolve | Coordinate system in which vector is optionally resolved |
model PartialAbsoluteBaseSensor "Partial absolute sensor models for sensors defined by equations (frame_resolve must be connected exactly once)" extends Modelica.Icons.RotationalSensor;Modelica.Mechanics.MultiBody.Interfaces.Frame_a frame_a "Coordinate system from which kinematic quantities are measured"; Modelica.Mechanics.MultiBody.Interfaces.Frame_resolve frame_resolve "Coordinate system in which vector is optionally resolved"; equation assert(cardinality(frame_a) > 0, "Connector frame_a must be connected at least once"); assert(cardinality(frame_resolve) == 1, "Connector frame_resolve must be connected exactly once"); frame_a.f = zeros(3); frame_a.t = zeros(3); frame_resolve.f = zeros(3); frame_resolve.t = zeros(3);end PartialAbsoluteBaseSensor;
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system a |
Frame_b | frame_b | Coordinate system b |
partial model PartialRelativeSensor "Partial relative sensor model for sensors defined by components" extends Modelica.Icons.RotationalSensor;Modelica.Mechanics.MultiBody.Interfaces.Frame_a frame_a "Coordinate system a"; Modelica.Mechanics.MultiBody.Interfaces.Frame_b frame_b "Coordinate system b"; equation assert(cardinality(frame_a) > 0, "Connector frame_a must be connected at least once"); assert(cardinality(frame_b) > 0, "Connector frame_b must be connected at least once");end PartialRelativeSensor;
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system a (measurement is between frame_a and frame_b) |
Frame_b | frame_b | Coordinate system b (measurement is between frame_a and frame_b) |
Frame_resolve | frame_resolve | Coordinate system in which vector is optionally resolved |
model PartialRelativeBaseSensor "Partial relative sensor models for sensors defined by equations (frame_resolve must be connected exactly once)" extends Modelica.Icons.RotationalSensor;Modelica.Mechanics.MultiBody.Interfaces.Frame_a frame_a "Coordinate system a (measurement is between frame_a and frame_b)"; Modelica.Mechanics.MultiBody.Interfaces.Frame_b frame_b "Coordinate system b (measurement is between frame_a and frame_b)"; Modelica.Mechanics.MultiBody.Interfaces.Frame_resolve frame_resolve "Coordinate system in which vector is optionally resolved"; equation assert(cardinality(frame_a) > 0, "Connector frame_a must be connected at least once"); assert(cardinality(frame_b) > 0, "Connector frame_b must be connected at least once"); assert(cardinality(frame_resolve) == 1, "Connector frame_resolve must be connected exactly once"); frame_a.f = zeros(3); frame_a.t = zeros(3); frame_b.f = zeros(3); frame_b.t = zeros(3); frame_resolve.f = zeros(3); frame_resolve.t = zeros(3);end PartialRelativeBaseSensor;
Type | Name | Default | Description |
---|---|---|---|
ResolveInFrameA | resolveInFrame | Modelica.Mechanics.MultiBody... | Frame in which output vector r is resolved (1: world, 2: frame_a, 3: frame_resolve) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system from which kinematic quantities are measured |
Frame_resolve | frame_resolve | Coordinate system in which vector is optionally resolved |
output RealOutput | r[3] | Absolute position vector frame_a.r_0 resolved in frame defined by resolveInFrame [m] |
model BasicAbsolutePosition "Measure absolute position vector (same as Sensors.AbsolutePosition, but frame_resolve is not conditional and must be connected)" import Modelica.Mechanics.MultiBody.Types.ResolveInFrameA; extends Modelica.Mechanics.MultiBody.Sensors.Internal.PartialAbsoluteBaseSensor;Modelica.Blocks.Interfaces.RealOutput r[3](each final quantity="Position", each final unit = "m") "Absolute position vector frame_a.r_0 resolved in frame defined by resolveInFrame"; parameter Modelica.Mechanics.MultiBody.Types.ResolveInFrameA resolveInFrame= Modelica.Mechanics.MultiBody.Types.ResolveInFrameA.frame_a "Frame in which output vector r is resolved (1: world, 2: frame_a, 3: frame_resolve)"; equation if resolveInFrame == ResolveInFrameA.world then r = frame_a.r_0; elseif resolveInFrame == ResolveInFrameA.frame_a then r = Frames.resolve2(frame_a.R, frame_a.r_0); elseif resolveInFrame == ResolveInFrameA.frame_resolve then r = Frames.resolve2(frame_resolve.R, frame_a.r_0); else assert(false, "Wrong value for parameter resolveInFrame"); r = zeros(3); end if;end BasicAbsolutePosition;
Type | Name | Default | Description |
---|---|---|---|
ResolveInFrameA | resolveInFrame | Modelica.Mechanics.MultiBody... | Frame in which output vector w is resolved (1: world, 2: frame_a, 3: frame_resolve) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system from which kinematic quantities are measured |
Frame_resolve | frame_resolve | Coordinate system in which vector is optionally resolved |
output RealOutput | w[3] | Absolute angular velocity vector [rad/s] |
model BasicAbsoluteAngularVelocity "Measure absolute angular velocity" import Modelica.Mechanics.MultiBody.Frames; import Modelica.Mechanics.MultiBody.Types.ResolveInFrameA; extends Modelica.Mechanics.MultiBody.Sensors.Internal.PartialAbsoluteBaseSensor;Modelica.Blocks.Interfaces.RealOutput w[3](final quantity="AngularVelocity",final unit = "rad/s") "Absolute angular velocity vector"; parameter Modelica.Mechanics.MultiBody.Types.ResolveInFrameA resolveInFrame= Modelica.Mechanics.MultiBody.Types.ResolveInFrameA.frame_a "Frame in which output vector w is resolved (1: world, 2: frame_a, 3: frame_resolve)"; equation if resolveInFrame == ResolveInFrameA.world then w = Frames.angularVelocity1(frame_a.R); elseif resolveInFrame == ResolveInFrameA.frame_a then w = Frames.angularVelocity2(frame_a.R); elseif resolveInFrame == ResolveInFrameA.frame_resolve then w = Frames.resolveRelative(Frames.angularVelocity1(frame_a.R), frame_a.R, frame_resolve.R); else assert(false, "Wrong value for parameter resolveInFrame"); w = zeros(3); end if;end BasicAbsoluteAngularVelocity;
Type | Name | Default | Description |
---|---|---|---|
ResolveInFrameAB | resolveInFrame | Modelica.Mechanics.MultiBody... | Frame in which output vector r_rel is resolved (1: world, 2: frame_a, 3: frame_b, 4: frame_resolve) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system a (measurement is between frame_a and frame_b) |
Frame_b | frame_b | Coordinate system b (measurement is between frame_a and frame_b) |
Frame_resolve | frame_resolve | Coordinate system in which vector is optionally resolved |
output RealOutput | r_rel[3] | Relative position vector frame_b.r_0 - frame_a.r_0 resolved in frame defined by resolveInFrame [m] |
model BasicRelativePosition "Measure relative position vector (same as Sensors.RelativePosition, but frame_resolve is not conditional and must be connected)" import Modelica.Mechanics.MultiBody.Types.ResolveInFrameAB; extends Modelica.Mechanics.MultiBody.Sensors.Internal.PartialRelativeBaseSensor;Modelica.Blocks.Interfaces.RealOutput r_rel[3](each final quantity="Position", each final unit = "m") "Relative position vector frame_b.r_0 - frame_a.r_0 resolved in frame defined by resolveInFrame"; parameter Modelica.Mechanics.MultiBody.Types.ResolveInFrameAB resolveInFrame= Modelica.Mechanics.MultiBody.Types.ResolveInFrameAB.frame_a "Frame in which output vector r_rel is resolved (1: world, 2: frame_a, 3: frame_b, 4: frame_resolve)"; equation if resolveInFrame == ResolveInFrameAB.frame_a then r_rel = Frames.resolve2(frame_a.R, frame_b.r_0 - frame_a.r_0); elseif resolveInFrame == ResolveInFrameAB.frame_b then r_rel = Frames.resolve2(frame_b.R, frame_b.r_0 - frame_a.r_0); elseif resolveInFrame == ResolveInFrameAB.world then r_rel = frame_b.r_0 - frame_a.r_0; elseif resolveInFrame == ResolveInFrameAB.frame_resolve then r_rel = Frames.resolve2(frame_resolve.R, frame_b.r_0 - frame_a.r_0); else assert(false, "Wrong value for parameter resolveInFrame"); r_rel = zeros(3); end if;end BasicRelativePosition;
Type | Name | Default | Description |
---|---|---|---|
ResolveInFrameAB | resolveInFrame | Modelica.Mechanics.MultiBody... | Frame in which output vector w_rel is resolved (1: world, 2: frame_a, 3: frame_b, 4: frame_resolve) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system a (measurement is between frame_a and frame_b) |
Frame_b | frame_b | Coordinate system b (measurement is between frame_a and frame_b) |
Frame_resolve | frame_resolve | Coordinate system in which vector is optionally resolved |
output RealOutput | w_rel[3] | Relative angular velocity vector [rad/s] |
model BasicRelativeAngularVelocity "Measure relative angular velocity" import Modelica.Mechanics.MultiBody.Frames; import Modelica.Mechanics.MultiBody.Types.ResolveInFrameAB; extends Modelica.Mechanics.MultiBody.Sensors.Internal.PartialRelativeBaseSensor;Modelica.Blocks.Interfaces.RealOutput w_rel[3](final quantity="AngularVelocity",final unit = "rad/s") "Relative angular velocity vector"; parameter Modelica.Mechanics.MultiBody.Types.ResolveInFrameAB resolveInFrame= Modelica.Mechanics.MultiBody.Types.ResolveInFrameAB.frame_a "Frame in which output vector w_rel is resolved (1: world, 2: frame_a, 3: frame_b, 4: frame_resolve)"; protected Modelica.Mechanics.MultiBody.Frames.Orientation R_rel "Relative orientation object from frame_a to frame_b"; equation R_rel = Frames.relativeRotation(frame_a.R, frame_b.R); if resolveInFrame == ResolveInFrameAB.frame_a then w_rel = Frames.angularVelocity1(R_rel); elseif resolveInFrame == ResolveInFrameAB.frame_b then w_rel = Frames.angularVelocity2(R_rel); elseif resolveInFrame == ResolveInFrameAB.world then w_rel = Frames.resolve1(frame_a.R, Frames.angularVelocity1(R_rel)); elseif resolveInFrame == ResolveInFrameAB.frame_resolve then w_rel = Frames.resolveRelative(Frames.angularVelocity1(R_rel), frame_a.R, frame_resolve.R); else assert(false, "Wrong value for parameter resolveInFrame"); w_rel = zeros(3); end if;end BasicRelativeAngularVelocity;
Type | Name | Default | Description |
---|---|---|---|
ResolveInFrameA | frame_r_in | Modelica.Mechanics.MultiBody... | Frame in which vector r_in is resolved (1: world, 2: frame_a, 3: frame_resolve) |
ResolveInFrameA | frame_r_out | frame_r_in | Frame in which vector r_out (= r_in in other frame) is resolved (1: world, 2: frame_a, 3: frame_resolve) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system from which absolute kinematic quantities are measured |
Frame_resolve | frame_resolve | Coordinate system in which vector is optionally resolved |
input RealInput | r_in[3] | Input vector resolved in frame defined by frame_r_in |
output RealOutput | r_out[3] | Input vector r_in resolved in frame defined by frame_r_out |
model BasicTransformAbsoluteVector "Transform absolute vector in to another frame" import Modelica.Mechanics.MultiBody.Frames; import Modelica.Mechanics.MultiBody.Types.ResolveInFrameA; extends Modelica.Icons.RotationalSensor; parameter Modelica.Mechanics.MultiBody.Types.ResolveInFrameA frame_r_in= Modelica.Mechanics.MultiBody.Types.ResolveInFrameA.frame_a "Frame in which vector r_in is resolved (1: world, 2: frame_a, 3: frame_resolve)"; parameter Modelica.Mechanics.MultiBody.Types.ResolveInFrameA frame_r_out= frame_r_in "Frame in which vector r_out (= r_in in other frame) is resolved (1: world, 2: frame_a, 3: frame_resolve)";Modelica.Mechanics.MultiBody.Interfaces.Frame_a frame_a "Coordinate system from which absolute kinematic quantities are measured"; Modelica.Mechanics.MultiBody.Interfaces.Frame_resolve frame_resolve "Coordinate system in which vector is optionally resolved"; Blocks.Interfaces.RealInput r_in[3] "Input vector resolved in frame defined by frame_r_in"; Blocks.Interfaces.RealOutput r_out[3] "Input vector r_in resolved in frame defined by frame_r_out"; protected Modelica.Mechanics.MultiBody.Frames.Orientation R1 "Orientation object from world frame to frame in which r_in is resolved"; equation assert(cardinality(frame_a) > 0, "Connector frame_a must be connected at least once"); assert(cardinality(frame_resolve) == 1, "Connector frame_resolve must be connected exactly once"); frame_a.f = zeros(3); frame_a.t = zeros(3); frame_resolve.f = zeros(3); frame_resolve.t = zeros(3); if frame_r_out == frame_r_in then r_out = r_in; R1 = Frames.nullRotation(); else if frame_r_in == ResolveInFrameA.world then R1 = Frames.nullRotation(); elseif frame_r_in == ResolveInFrameA.frame_a then R1 = frame_a.R; elseif frame_r_in == ResolveInFrameA.frame_resolve then R1 = frame_resolve.R; else assert(false, "Wrong value for parameter frame_r_in"); R1 = Frames.nullRotation(); end if; if frame_r_out == ResolveInFrameA.world then r_out = Frames.resolve1(R1, r_in); elseif frame_r_out == ResolveInFrameA.frame_a then r_out = Frames.resolveRelative(r_in, R1, frame_a.R); elseif frame_r_out == ResolveInFrameA.frame_resolve then r_out = Frames.resolveRelative(r_in, R1, frame_resolve.R); else assert(false, "Wrong value for parameter frame_r_out"); r_out = zeros(3); end if; end if;end BasicTransformAbsoluteVector;
Type | Name | Default | Description |
---|---|---|---|
ResolveInFrameAB | frame_r_in | Modelica.Mechanics.MultiBody... | Frame in which vector r_in is resolved (1: world, 2: frame_a, 3: frame_b, 4: frame_resolve) |
ResolveInFrameAB | frame_r_out | frame_r_in | Frame in which vector r_out (= r_in in other frame) is resolved (1: world, 2: frame_a, 3: frame_b, 4: frame_resolve) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system a (measurement is between frame_a and frame_b) |
Frame_b | frame_b | Coordinate system b (measurement is between frame_a and frame_b) |
Frame_resolve | frame_resolve | Coordinate system in which vector is optionally resolved |
input RealInput | r_in[3] | Input vector resolved in frame defined by frame_r_in |
output RealOutput | r_out[3] | Input vector r_in resolved in frame defined by frame_r_out |
model BasicTransformRelativeVector "Transform relative vector in to another frame" import Modelica.Mechanics.MultiBody.Frames; import Modelica.Mechanics.MultiBody.Types.ResolveInFrameAB; extends Modelica.Mechanics.MultiBody.Sensors.Internal.PartialRelativeBaseSensor; parameter Modelica.Mechanics.MultiBody.Types.ResolveInFrameAB frame_r_in= Modelica.Mechanics.MultiBody.Types.ResolveInFrameAB.frame_a "Frame in which vector r_in is resolved (1: world, 2: frame_a, 3: frame_b, 4: frame_resolve)"; parameter Modelica.Mechanics.MultiBody.Types.ResolveInFrameAB frame_r_out= frame_r_in "Frame in which vector r_out (= r_in in other frame) is resolved (1: world, 2: frame_a, 3: frame_b, 4: frame_resolve)";Blocks.Interfaces.RealInput r_in[3] "Input vector resolved in frame defined by frame_r_in"; Blocks.Interfaces.RealOutput r_out[3] "Input vector r_in resolved in frame defined by frame_r_out"; protected Modelica.Mechanics.MultiBody.Frames.Orientation R1 "Orientation object from world frame to frame in which r_in is resolved"; equation if frame_r_out == frame_r_in then r_out = r_in; R1 = Frames.nullRotation(); else if frame_r_in == ResolveInFrameAB.world then R1 = Frames.nullRotation(); elseif frame_r_in == ResolveInFrameAB.frame_a then R1 = frame_a.R; elseif frame_r_in == ResolveInFrameAB.frame_b then R1 = frame_b.R; else R1 = frame_resolve.R; end if; if frame_r_out == ResolveInFrameAB.world then r_out = Frames.resolve1(R1, r_in); elseif frame_r_out == ResolveInFrameAB.frame_a then r_out = Frames.resolveRelative(r_in, R1, frame_a.R); elseif frame_r_out == ResolveInFrameAB.frame_b then r_out = Frames.resolveRelative(r_in, R1, frame_b.R); else r_out = Frames.resolveRelative(r_in, R1, frame_resolve.R); end if; end if;end BasicTransformRelativeVector;
Type | Name | Description |
---|---|---|
Frame_a | frame_a |
model ZeroForceAndTorque "Set force and torque to zero" extends Modelica.Blocks.Interfaces.BlockIcon;Interfaces.Frame_a frame_a; equation frame_a.f = zeros(3); frame_a.t = zeros(3);end ZeroForceAndTorque;
This is a base class for 3-dim. mechanical components with two frames and one output port in order to measure the cut-force and/or cut-torque acting between the two frames and to provide the measured signals as output for further processing with the blocks of package Modelica.Blocks.
Extends from Modelica.Icons.RotationalSensor (Icon representing a round measurement device).
Type | Name | Default | Description |
---|---|---|---|
ResolveInFrameA | resolveInFrame | Modelica.Mechanics.MultiBody... | Frame in which output vector(s) is/are resolved (1: world, 2: frame_a, 3: frame_resolve) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system a |
Frame_b | frame_b | Coordinate system b |
Frame_resolve | frame_resolve | Output vectors are optionally resolved in this frame (cut-force/-torque are set to zero) |
partial model PartialCutForceSensor "Base model to measure the cut force and/or torque between two frames, defined by components" extends Modelica.Icons.RotationalSensor;Modelica.Mechanics.MultiBody.Interfaces.Frame_a frame_a "Coordinate system a"; Modelica.Mechanics.MultiBody.Interfaces.Frame_b frame_b "Coordinate system b"; Modelica.Mechanics.MultiBody.Interfaces.Frame_resolve frame_resolve if resolveInFrame==Modelica.Mechanics.MultiBody.Types.ResolveInFrameA.frame_resolve "Output vectors are optionally resolved in this frame (cut-force/-torque are set to zero)"; parameter Modelica.Mechanics.MultiBody.Types.ResolveInFrameA resolveInFrame= Modelica.Mechanics.MultiBody.Types.ResolveInFrameA.frame_a "Frame in which output vector(s) is/are resolved (1: world, 2: frame_a, 3: frame_resolve)"; protected outer Modelica.Mechanics.MultiBody.World world; equation assert(cardinality(frame_a) > 0, "Connector frame_a of cut-force/-torque sensor object is not connected"); assert(cardinality(frame_b) > 0, "Connector frame_b of cut-force/-torque sensor object is not connected");end PartialCutForceSensor;
This is a base class for 3-dim. mechanical components with two frames and one output port in order to measure the cut-force and/or cut-torque acting between the two frames and to provide the measured signals as output for further processing with the blocks of package Modelica.Blocks.
Extends from Modelica.Icons.RotationalSensor (Icon representing a round measurement device).
Type | Name | Default | Description |
---|---|---|---|
ResolveInFrameA | resolveInFrame | Modelica.Mechanics.MultiBody... | Frame in which output vector is resolved (1: world, 2: frame_a, 3: frame_resolve) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system a |
Frame_b | frame_b | Coordinate system b |
Frame_resolve | frame_resolve | The output vector is optionally resolved in this frame (cut-force/-torque are set to zero) |
partial model PartialCutForceBaseSensor "Base model to measure the cut force and/or torque between two frames, defined by equations (frame_resolve must be connected exactly once)" extends Modelica.Icons.RotationalSensor;Modelica.Mechanics.MultiBody.Interfaces.Frame_a frame_a "Coordinate system a"; Modelica.Mechanics.MultiBody.Interfaces.Frame_b frame_b "Coordinate system b"; Modelica.Mechanics.MultiBody.Interfaces.Frame_resolve frame_resolve "The output vector is optionally resolved in this frame (cut-force/-torque are set to zero)"; parameter Modelica.Mechanics.MultiBody.Types.ResolveInFrameA resolveInFrame= Modelica.Mechanics.MultiBody.Types.ResolveInFrameA.frame_a "Frame in which output vector is resolved (1: world, 2: frame_a, 3: frame_resolve)"; protected outer Modelica.Mechanics.MultiBody.World world; equation Connections.branch(frame_a.R, frame_b.R); assert(cardinality(frame_a) > 0, "Connector frame_a of cut-force/-torque sensor object is not connected"); assert(cardinality(frame_b) > 0, "Connector frame_b of cut-force/-torque sensor object is not connected"); // frame_a and frame_b are identical frame_a.r_0 = frame_b.r_0; frame_a.R = frame_b.R; // force and torque balance zeros(3) = frame_a.f + frame_b.f; zeros(3) = frame_a.t + frame_b.t; frame_resolve.f = zeros(3); frame_resolve.t = zeros(3);end PartialCutForceBaseSensor;
Extends from Modelica.Mechanics.MultiBody.Sensors.Internal.PartialCutForceBaseSensor (Base model to measure the cut force and/or torque between two frames, defined by equations (frame_resolve must be connected exactly once)).
Type | Name | Default | Description |
---|---|---|---|
ResolveInFrameA | resolveInFrame | Modelica.Mechanics.MultiBody... | Frame in which output vector is resolved (1: world, 2: frame_a, 3: frame_resolve) |
Boolean | positiveSign | true | = true, if force with positive sign is returned (= frame_a.f), otherwise with negative sign (= frame_b.f) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system a |
Frame_b | frame_b | Coordinate system b |
Frame_resolve | frame_resolve | The output vector is optionally resolved in this frame (cut-force/-torque are set to zero) |
output RealOutput | force[3] | Cut force resolved in frame defined by resolveInFrame [N] |
model BasicCutForce "Measure cut force vector (frame_resolve must be connected)" import SI = Modelica.SIunits; import Modelica.Mechanics.MultiBody.Types.ResolveInFrameA; import Modelica.Mechanics.MultiBody.Frames; extends Modelica.Mechanics.MultiBody.Sensors.Internal.PartialCutForceBaseSensor;Modelica.Blocks.Interfaces.RealOutput force[3](final quantity="Force", final unit="N") "Cut force resolved in frame defined by resolveInFrame"; parameter Boolean positiveSign=true "= true, if force with positive sign is returned (= frame_a.f), otherwise with negative sign (= frame_b.f)"; protected parameter Integer csign=if positiveSign then +1 else -1; equation if resolveInFrame == ResolveInFrameA.world then force = Frames.resolve1(frame_a.R, frame_a.f)*csign; elseif resolveInFrame == ResolveInFrameA.frame_a then force = frame_a.f*csign; elseif resolveInFrame == ResolveInFrameA.frame_resolve then force = Frames.resolveRelative(frame_a.f, frame_a.R, frame_resolve.R)*csign; else assert(false,"Wrong value for parameter resolveInFrame"); force = zeros(3); end if;end BasicCutForce;
Extends from Modelica.Mechanics.MultiBody.Sensors.Internal.PartialCutForceBaseSensor (Base model to measure the cut force and/or torque between two frames, defined by equations (frame_resolve must be connected exactly once)).
Type | Name | Default | Description |
---|---|---|---|
ResolveInFrameA | resolveInFrame | Modelica.Mechanics.MultiBody... | Frame in which output vector is resolved (1: world, 2: frame_a, 3: frame_resolve) |
Boolean | positiveSign | true | = true, if torque with positive sign is returned (= frame_a.t), otherwise with negative sign (= frame_b.t) |
Type | Name | Description |
---|---|---|
Frame_a | frame_a | Coordinate system a |
Frame_b | frame_b | Coordinate system b |
Frame_resolve | frame_resolve | The output vector is optionally resolved in this frame (cut-force/-torque are set to zero) |
output RealOutput | torque[3] | Cut torque resolved in frame defined by resolveInFrame [N.m] |
model BasicCutTorque "Measure cut torque vector (frame_resolve must be connected)" import SI = Modelica.SIunits; import Modelica.Mechanics.MultiBody.Types.ResolveInFrameA; import Modelica.Mechanics.MultiBody.Frames; extends Modelica.Mechanics.MultiBody.Sensors.Internal.PartialCutForceBaseSensor;Modelica.Blocks.Interfaces.RealOutput torque[3](final quantity="Torque", final unit= "N.m") "Cut torque resolved in frame defined by resolveInFrame"; parameter Boolean positiveSign=true "= true, if torque with positive sign is returned (= frame_a.t), otherwise with negative sign (= frame_b.t)"; protected parameter Integer csign=if positiveSign then +1 else -1; equation if resolveInFrame == ResolveInFrameA.world then torque = Frames.resolve1(frame_a.R, frame_a.t)*csign; elseif resolveInFrame == ResolveInFrameA.frame_a then torque = frame_a.t*csign; elseif resolveInFrame == ResolveInFrameA.frame_resolve then torque = Frames.resolveRelative(frame_a.t, frame_a.R, frame_resolve.R)*csign; else assert(false,"Wrong value for parameter resolveInFrame"); torque = zeros(3); end if;end BasicCutTorque;