BoomFMU¶
- class py_crane.boom_fmu.BoomFMU(mass_rng: tuple[str, str] | None = None, boom_rng: tuple[tuple[Any, Any] | None | Sequence[Never], ...] = tuple(), animationLW: int = 5, **kwargs: Any)¶
Bases:
BoomThe FMU definitions of a
Boom- a stiff boom, attached to a parent boom, attached to thefixationboom of a crane.Defines the FMI interface of a
Boomusing thecomponent_model.variablemodule.BoomFMUshould be instantiated throughCraneFMU.add_boom(), omitting themodelandanchor0arguments (these are added automatically).Here we only list and explain additional arguments and attributes of
BoomFMU. Refer toBoomfor details on basic Boom arguments, which are also needed here.For every Boom the following interface variables are defined
- mass
The mass of the boom. If
mass_rangeis not defined the variable is a fixed parameter, otherwise a continuous input variable (the load).- boom
The length, polar angle and azimuth angle of the boom. The
boom_rngdefines the degrees of freedom for the boom (see below).- end
The cartesian position of the end point of the boom as read only (output) variable. Continuous change to the boom (length, polar-rotation, azimuthal-rotation) wrt. origin
- der(<name>.boom) (not defined for the fixation)
This is an example of a structured variable facilitating continuous (not abrupt) change the boom parameters.
- der(der(<name>.boom)) (not defined for fixation
Acceleration to the boom (length, polar-rotation, azimuthal-rotation) wrt. origin Another structured variable as aid for boom control.
- der(<name>.mass) (only if mass_rng is not None)
Continuous change to the mass (i.e. load change) if abrupt load changes are not desirable.
- Parameters:
mass_rng (tuple) – Optional range of the mass, if the mass can be changed. Normally only the last boom (the wire) has a variable mass (the load).
boom_rng (tuple) – Range for each of the boom components, i.e. how much the boom length can be changed and how (much) it can be rotated As normal, range elements specified as None denote fixed components and () freely moveable elements. E.g. ( (‘1m’,’50m’), None, ()) denotes a boom which length can be changed in the range 1 to 50 meters, which polar angle is fixed to the initial value and which can be freely rotated around the z-axis.
Todo
determine the range of forces
- __init__(mass_rng: tuple[str, str] | None = None, boom_rng: tuple[tuple[Any, Any] | None | Sequence[Never], ...] = tuple(), animationLW: int = 5, **kwargs: Any)¶
Methods
__init__([mass_rng, boom_rng, animationLW])boom_setter(val[, ch])Set length and angles of boom (if allowed) and ensure consistency with other booms.
calc_statics_dynamics([dt])After any movement the local c_m and the c_m of connected booms have changed.
damping([q_factor, damping_time])Change/set the damping properties of a flexible boom.
pendulum(dt)For a non-stiff connection, if the _c_m is not exactly below origin, the _c_m acts as a damped pendulum.
pendulum_relax()Relax the pendulum movement, leading to the CoM strictly downward.
rot([newval])Access the rotation object from outside the boom.
update_child([change])Update this boom after the parent boom has changed length, angles, position or rotation.
Attributes
c_mUpdates and returns the local center of mass point relative to self.origin.
c_m_subReturn the system center of mass as absolute position The _c_m_sub needs to be calculated/updated using calc_statics_dynamics.
endCalculate the cartesian coordinates of the end of the boom from .origin, .length and .direction.
forceCalculate the force resulting from linear acceleration.
lengthExtract the length parameter from .boom.
modelGet the Crane object which this boom is connected to.
nameGet the unique (within the crane) name of the boom.
torqueCalculate the torque from the CoM of this boom with respect to the fixation.