MC_MoveCircularRelative (FB) ¶ FUNCTION_BLOCK FINAL MC_MoveCircularRelative This function block commands a circular movement of an axis group to a relative position in the specified coordinate system. The arc segment can be described in several ways, depending on the value of input CircMode . In case of SMC_CIRC_MODE.BORDER or SMC_CIRC_MODE.CENTER , the auxiliary point is interpreted relative to the start position, too. Note The velocity/acc-/deceleration/jerk of each axis are properties of each axis and not specified within this function block. See also inputs VelFactor , AccFactor and JerkFactor . InOut: Scope Name Type Initial Comment Inout AxisGroup AXIS_GROUP_REF_SM3 Reference to a group of axes Input Execute BOOL Start the motion at rising edge CircMode SMC_CIRC_MODE Specifies the meaning of the inputs AuxPoint and CircDirection . See SMC_CIRC_MODE . The points are specified relatively, i.e. the perpendicular vector begins at the satrting point and ends in the spearhead point specified at the input signal AuxPoint . AuxPoint SMC_POS_REF Auxiliary point in the specified coordinate system. The point is relative to the starting point. See CircMode . EndPoint SMC_POS_REF End position in the specified coordinate system. The point is relative to the starting point. PathChoice MC_CIRC_PATHCHOICE Choice of path: clockwise or counter-clockwise. Velocity LREAL Maximum path velocity [u/s] for the coordinate system in which the path is defined. Always positive. Not necessarily reached. Acceleration LREAL Maximum path acceleration [u/s²]. Always positive. Not necessarily reached. Deceleration LREAL Maximum path deceleration [u/s²]. Always positive. Not necessarily reached. Jerk LREAL Maximum path jerk [u/s³]. Always positive. Not necessarily reached. CoordSystem SMC_COORD_SYSTEM Applicable coordinate system BufferMode MC_BUFFER_MODE Defines the chronological sequence of the FB relative to the previous block. TransitionMode MC_TRANSITION_MODE Defined the blending in case of a blending buffer mode TransitionParameter ARRAY [0..(SMC_RCNST.MAX_TRANS_PARAMS - 1)] OF LREAL Parameters for blending OrientationMode SMC_ORIENTATION_MODE Determines how the orientation is interpolated. VelFactor LREAL 1 The maximum velocity of each axis is multiplied by this factor, which must be in the range ]0, 1]. AccFactor LREAL 1 The maximum acceleration of each axis is multiplied by this factor, which must be in the range ]0, 1]. JerkFactor LREAL 1 The maximum jerk of each axis is multiplied by this factor, which must be in the range ]0, 1]. TorqueFactor LREAL 1 The maximum torque of each axis is multiplied by this factor, which must be in the range ]0, 1]. A dynamic model must have been set using SMC_GroupSetDynamics for this factor to have an effect. Output Done BOOL Commanded end positions reached for all axes Busy BOOL The FB is not finished Active BOOL Indicates that the FB has control on the axis CommandAborted BOOL Command is aborted by another command CommandAccepted BOOL The command has been accepted by the axis group. If the output becomes TRUE , the function block instance can be used to command the next movement with a new rising edge on Execute . While the output is FALSE , keep calling the function block without a new rising edge of Execute . The output is reset to FALSE on a falling edge of Execute . Error BOOL Signals that an error has occurred within the function block ErrorID SMC_ERROR Error identification MovementId SMC_Movement_Id The unique identifier of the movement. Valid if CommandAccepted or Done is TRUE .
MC_MoveDirectAbsolute (FB) ¶ FUNCTION_BLOCK FINAL MC_MoveDirectAbsolute This function block commands a movement of an axis group to the specified absolute position in the specified coordinate system. Each axis is moved to its target position independently, the movement is only synchronized such that all axes reach the target at the same time. This means that the path travelled by the TCP depends on the kinematic transformation used. In general, it will not be a line. (This is called a point to point or PTP movement.) Note The path travelled by the TCP results indirectly from the movement of the axes and the kinematic transformation. It is not easy to predict the path based on the start- and end-position of the movement. However, once a PTP movement has been taught-in, the path is not modified by changing the override, interrupting, halting, or stopping. In more detail: The path is independent of the override. The path is independent of the limits of the axes (limits for velocity, acceleration, deceleration, and jerk). The only exception is for determining the cutoff points in TMStartVelocity mode. In TMCornerDistance mode, the path is independent of the blending type (BlendingHigh/Low/Previous/Next). The path is not left on halt or stop (MC_GroupHalt/MC_GroupStop). The path is not left on interrupt or continue (MC_GroupInterrupt/MC_GroupContinue). The acceleration, constant velocity, and deceleration phase for all axes begins and ends at the same time. Note The velocity/acc-/deceleration/jerk limits of each axis are properties of each axis and not specified within this function block. See also inputs VelFactor , AccFactor and JerkFactor . The transition mode TMCornerDistance is only supported if the start- and end-position of the movement are given in the ACS. Otherwise, an error is reported. InOut: Scope Name Type Initial Comment Inout AxisGroup AXIS_GROUP_REF_SM3 Reference to a group of axes Input Execute BOOL Start the motion at rising edge Position SMC_POS_REF End position in the specified coordinate system MovementType SMC_PTP_MOVEMENT_TYPE Type of PTP movement. No longer supported. This obsolete input will be removed in future versions. CoordSystem SMC_COORD_SYSTEM Applicable coordinate system BufferMode MC_BUFFER_MODE Defines the chronological sequence of the FB relative to the previous block. TransitionMode MC_TRANSITION_MODE Defined the blending in case of a blending buffer mode TransitionParameter ARRAY [0..(SMC_RCNST.MAX_TRANS_PARAMS - 1)] OF LREAL Parameters for blending VelFactor LREAL 1 The maximum velocity of each axis is multiplied by this factor, which must be in the range ]0, 1]. AccFactor LREAL 1 The maximum acceleration of each axis is multiplied by this factor, which must be in the range ]0, 1]. JerkFactor LREAL 1 The maximum jerk of each axis is multiplied by this factor, which must be in the range ]0, 1]. TorqueFactor LREAL 1 The maximum torque of each axis is multiplied by this factor, which must be in the range ]0, 1]. A dynamic model must have been set using SMC_GroupSetDynamics for this factor to have an effect. Output Done BOOL Commanded end positions reached for all axes Busy BOOL The FB is not finished Active BOOL Indicates that the FB has control on the axis CommandAborted BOOL Command is aborted by another command CommandAccepted BOOL The command has been accepted by the axis group. If the output becomes TRUE , the function block instance can be used to command the next movement with a new rising edge on Execute . While the output is FALSE , keep calling the function block without a new rising edge of Execute . The output is reset to FALSE on a falling edge of Execute . Error BOOL Signals that an error has occurred within the function block ErrorID SMC_ERROR Error identification MovementId SMC_Movement_Id The unique identifier of the movement. Valid if CommandAccepted or Done is TRUE .
GeoPrim_EvalDerivs (FUN) ¶ FUNCTION GeoPrim_EvalDerivs : BOOL InOut: Scope Name Type Comment Inout errCtx SMRE.ErrorContext Inout Const ef ElemFun Inout u_x SM3M.SMC_DynV3State The position with derivatives, given in the coordinate system of the element function. Input x LREAL t LREAL Return GeoPrim_EvalDerivs BOOL
MC_MoveDirectRelative (FB) ¶ FUNCTION_BLOCK FINAL MC_MoveDirectRelative This function block commands a movement of an axis group by the specified relative distance in the specified coordinate system . Each axis is moved to its target position independently, the movement is only synchronized such that all axes reach the target at the same time. This means that the path travelled by the TCP depends on the kinematic transformation used. In general, it will not be a line. (This is called a point to point or PTP movement.) Note The path travelled by the TCP results indirectly from the movement of the axes and the kinematic transformation. It is not easy to predict the path based on the start- and end-position of the movement. However, once a PTP movement has been taught-in, the path is not modified by changing the override, interrupting, halting, or stopping. In more detail: The path is independent of the override. The path is independent of the limits of the axes (limits for velocity, acceleration, deceleration, and jerk). The only exception is for determining the cutoff points in TMStartVelocity mode. In TMCornerDistance mode, the path is independent of the blending type (BlendingHigh/Low/Previous/Next). The path is not left on halt or stop (MC_GroupHalt/MC_GroupStop). The path is not left on interrupt or continue (MC_GroupInterrupt/MC_GroupContinue). The acceleration, constant velocity, and deceleration phase for all axes begins and ends at the same time. Note The velocity/acc-/deceleration/jerk limits of each axis are properties of each axis and not specified within this function block. See also inputs VelFactor , AccFactor and JerkFactor . The transition mode TMCornerDistance is only supported if the start- and end-position of the movement are given in the ACS. Otherwise, an error is reported. The following example shows the behaviour of MC_MoveDirectRelative . All positions are related to the MCS: Starting at position p0 (10; 10) a MC_MoveLinearAbsolute to position p1 (80; 35) is commanded. While the TCP is moving towards p1, the MC_MoveLinearAbsolute command is aborted by a MC_MoveDirectRelative command. The actual position of the TCP, when MC_MoveDirectRelative becomes active, is (44.5; 21.63). The TCP leaves the line p0 .. p1 and moves to the new target position p2 (54.5; 41.63). The resulting trajectory depends on the kinematic transformation of the axis group. InOut: Scope Name Type Initial Comment Inout AxisGroup AXIS_GROUP_REF_SM3 Reference to a group of axes Input Execute BOOL Start the motion at rising edge Distance SMC_POS_REF Distance in the specified coordinate system. The relative orientation in Distance.A/.B/.C is interpreted as a rotation. The resulting orientation of the end position is then determined as Rot_End(u) = Rot_Rel(Rot_Start(u)) where Rot_Rel is the rotation and Rot_Start is the rotation that belongs to the start position of the movement. Note The rotation that belongs to an orientation is the function that transforms direction vectors u from the TCP coordinate system to the base coordinate system CoordSystem . The corresponding rotation matrix can be computed from A/B/C as R = Rz(A) * Ry(B) * Rz(C). MovementType SMC_PTP_MOVEMENT_TYPE Type of PTP movement. No longer supported. This obsolete input will be removed in future versions. CoordSystem SMC_COORD_SYSTEM Applicable coordinate system BufferMode MC_BUFFER_MODE Defines the chronological sequence of the FB relative to the previous block. TransitionMode MC_TRANSITION_MODE Defined the blending in case of a blending buffer mode TransitionParameter ARRAY [0..(SMC_RCNST.MAX_TRANS_PARAMS - 1)] OF LREAL Parameters for blending VelFactor LREAL 1 The maximum velocity of each axis is multiplied by this factor, which must be in the range ]0, 1]. AccFactor LREAL 1 The maximum acceleration of each axis is multiplied by this factor, which must be in the range ]0, 1]. JerkFactor LREAL 1 The maximum jerk of each axis is multiplied by this factor, which must be in the range ]0, 1]. TorqueFactor LREAL 1 The maximum torque of each axis is multiplied by this factor, which must be in the range ]0, 1]. A dynamic model must have been set using SMC_GroupSetDynamics for this factor to have an effect. Output Done BOOL Commanded end positions reached for all axes Busy BOOL The FB is not finished Active BOOL Indicates that the FB has control on the axis CommandAborted BOOL Command is aborted by another command CommandAccepted BOOL The command has been accepted by the axis group. If the output becomes TRUE , the function block instance can be used to command the next movement with a new rising edge on Execute . While the output is FALSE , keep calling the function block without a new rising edge of Execute . The output is reset to FALSE on a falling edge of Execute . Error BOOL Signals that an error has occurred within the function block ErrorID SMC_ERROR Error identification MovementId SMC_Movement_Id The unique identifier of the movement. Valid if CommandAccepted or Done is TRUE .
MC_MoveLinearAbsolute (FB) ¶ FUNCTION_BLOCK FINAL MC_MoveLinearAbsolute This function block commands a linear movement of an axis group to an absolute position in the specified coordinate system. Note The velocity/acc-/deceleration/jerk of each axis are properties of each axis and not specified within this function block. See also inputs VelFactor , AccFactor and JerkFactor . InOut: Scope Name Type Initial Comment Inout AxisGroup AXIS_GROUP_REF_SM3 Reference to a group of axes Input Execute BOOL Start the motion at rising edge Position SMC_POS_REF End position in the specified coordinate system Velocity LREAL Maximum path velocity [u/s] for the coordinate system in which the path is defined. Always positive. Not necessarily reached. Acceleration LREAL Maximum path acceleration [u/s²]. Always positive. Not necessarily reached. Deceleration LREAL Maximum path deceleration [u/s²]. Always positive. Not necessarily reached. Jerk LREAL Maximum path jerk [u/s³]. Always positive. Not necessarily reached. CoordSystem SMC_COORD_SYSTEM Applicable coordinate system BufferMode MC_BUFFER_MODE Defines the chronological sequence of the FB relative to the previous block. TransitionMode MC_TRANSITION_MODE Defined the blending in case of a blending buffer mode TransitionParameter ARRAY [0..(SMC_RCNST.MAX_TRANS_PARAMS - 1)] OF LREAL Parameters for blending OrientationMode SMC_ORIENTATION_MODE Determines how the orientation is interpolated. VelFactor LREAL 1 The maximum velocity of each axis is multiplied by this factor, which must be in the range ]0, 1]. AccFactor LREAL 1 The maximum acceleration of each axis is multiplied by this factor, which must be in the range ]0, 1]. JerkFactor LREAL 1 The maximum jerk of each axis is multiplied by this factor, which must be in the range ]0, 1]. TorqueFactor LREAL 1 The maximum torque of each axis is multiplied by this factor, which must be in the range ]0, 1]. A dynamic model must have been set using SMC_GroupSetDynamics for this factor to have an effect. Output Done BOOL Commanded end positions reached for all axes Busy BOOL The FB is not finished Active BOOL Indicates that the FB has control on the axis CommandAborted BOOL Command is aborted by another command CommandAccepted BOOL The command has been accepted by the axis group. If the output becomes TRUE , the function block instance can be used to command the next movement with a new rising edge on Execute . While the output is FALSE , keep calling the function block without a new rising edge of Execute . The output is reset to FALSE on a falling edge of Execute . Error BOOL Signals that an error has occurred within the function block ErrorID SMC_ERROR Error identification MovementId SMC_Movement_Id The unique identifier of the movement. Valid if CommandAccepted or Done is TRUE .
MC_MoveLinearRelative (FB) ¶ FUNCTION_BLOCK FINAL MC_MoveLinearRelative This function block commands a linear movement of an axis group by the specified relative distance in the specified coordinate system. Note The velocity/acc-/deceleration/jerk of each axis are properties of each axis and not specified within this function block. See also inputs VelFactor , AccFactor and JerkFactor . InOut: Scope Name Type Initial Comment Inout AxisGroup AXIS_GROUP_REF_SM3 Reference to a group of axes Input Execute BOOL Start the motion at rising edge Distance SMC_POS_REF Relative distance in the specified coordinate system Velocity LREAL Maximum path velocity [u/s] for the coordinate system in which the path is defined. Always positive. Not necessarily reached. Acceleration LREAL Maximum path acceleration [u/s²]. Always positive. Not necessarily reached. Deceleration LREAL Maximum path deceleration [u/s²]. Always positive. Not necessarily reached. Jerk LREAL Maximum path jerk [u/s³]. Always positive. Not necessarily reached. CoordSystem SMC_COORD_SYSTEM Applicable coordinate system BufferMode MC_BUFFER_MODE Defines the chronological sequence of the FB relative to the previous block. TransitionMode MC_TRANSITION_MODE Defined the blending in case of a blending buffer mode TransitionParameter ARRAY [0..(SMC_RCNST.MAX_TRANS_PARAMS - 1)] OF LREAL Parameters for blending OrientationMode SMC_ORIENTATION_MODE Determines how the orientation is interpolated. VelFactor LREAL 1 The maximum velocity of each axis is multiplied by this factor, which must be in the range ]0, 1]. AccFactor LREAL 1 The maximum acceleration of each axis is multiplied by this factor, which must be in the range ]0, 1]. JerkFactor LREAL 1 The maximum jerk of each axis is multiplied by this factor, which must be in the range ]0, 1]. TorqueFactor LREAL 1 The maximum torque of each axis is multiplied by this factor, which must be in the range ]0, 1]. A dynamic model must have been set using SMC_GroupSetDynamics for this factor to have an effect. Output Done BOOL Commanded end positions reached for all axes Busy BOOL The FB is not finished Active BOOL Indicates that the FB has control on the axis CommandAborted BOOL Command is aborted by another command CommandAccepted BOOL The command has been accepted by the axis group. If the output becomes TRUE , the function block instance can be used to command the next movement with a new rising edge on Execute . While the output is FALSE , keep calling the function block without a new rising edge of Execute . The output is reset to FALSE on a falling edge of Execute . Error BOOL Signals that an error has occurred within the function block ErrorID SMC_ERROR Error identification MovementId SMC_Movement_Id The unique identifier of the movement. Valid if CommandAccepted or Done is TRUE .
MC_GroupSetOverride (FB) ¶ FUNCTION_BLOCK MC_GroupSetOverride This FB allows to change the velocity, acceleration, or jerk of active and commanded movements. The given override factors are valid until a new override is set. The value 0 set to the VelFactor or PathVelFactor leads to halt on the path, if a CP movement (even in case of tracking) is active and to an absolute halt otherwise. If MC_GroupStop is currently active, an error is returned. Note The dynamics of MC_GroupStop are not influenced by the override factors. Reenabling the axis group does not reset the override factors. The default values of the override factors are 1. The FB does not change the state of the axis group. Single axis override factors set using MC_SetOverride for any axis of the axis group are overwritten by this function block. This function block sets the same override factors on all axes of the axis group. Individual override factors for each axis can be set using MC_SetOverride Warning Reducing the AccFactor and/or JerkFactor can lead to a position overshoot, a possible cause of damage. InOut: Scope Name Type Initial Comment Inout AxisGroup AXIS_GROUP_REF_SM3 Reference to a group of axis Input Enable BOOL If TRUE , we write the value of the override factors continuously. If FALSE , we keep the last value. VelFactor LREAL 1 Factor for axis velocities, [0 .. 1] AccFactor LREAL 1 Factor for axis accelerations and axis decelerations, ]0 .. 1] JerkFactor LREAL 1 Factor for axis jerks, ]0 .. 1] TorqueFactor LREAL 1 Factor for axis torques, ]0 .. 1]. A dynamic model must have been set using SMC_GroupSetDynamics for these factors to have an effect. PathVelFactor LREAL 1 Factor for path velocities, [0 .. 1] PathAccFactor LREAL 1 Factor for path accelerations and path decelerations, ]0 .. 1] PathJerkFactor LREAL 1 Factor for path jerks, ]0 .. 1] Output Enabled BOOL Signals that the override factors have been set successfully. Busy BOOL The FB is not finished Error BOOL Signals that an error has occurred within the function block. ErrorID SMC_ERROR Error identification
SMC_GroupReadAxisLimitFactors (FB) ¶ FUNCTION_BLOCK SMC_GroupReadAxisLimitFactors This function block reads the limit factors for each axis. The returned values are the last values set by SMC_GroupSetAxisLimitFactors , or the initial factors, and not the factors of the currently active movement. See SMC_GroupSetAxisLimitFactors for details. InOut: Scope Name Type Comment Inout AxisGroup AXIS_GROUP_REF_SM3 Reference to an axis group Input Execute BOOL Sets the factors on rising edge. Output Done BOOL The limits have been set successfully. Busy BOOL The FB is not finished. Error BOOL Signals that an error has occurred within the function block. ErrorID SMC_ERROR Error identification VelFactors ARRAY [0..(SMC_RCNST.MAX_AXES - 1)] OF LREAL The velocity factors for all axes AccFactors ARRAY [0..(SMC_RCNST.MAX_AXES - 1)] OF LREAL The acceleration factors for all axes JerkFactors ARRAY [0..(SMC_RCNST.MAX_AXES - 1)] OF LREAL The jerk factors for all axes TorqueFactors ARRAY [0..(SMC_RCNST.MAX_AXES - 1)] OF LREAL The torque factors for all axes
SMC_GroupSetAncillaryAxisLimits (FB) ¶ FUNCTION_BLOCK SMC_GroupSetAncillaryAxisLimits This function block configures so called ancillary dynamic axis limits for an axis group, that is ancillary limits for the velocity, acceleration, deceleration, and jerk of each axis. The ancillary limits allow an easy programming of different operating modes of a robot, for example a manual mode in which the robot may only move slowly for safety reasons. Initially, all ancillary limits are infinite. The limits are not reset when the axis group is disabled or enabled. If an axis is removed from the group, the ancillary limits for this axis are reset. If the axis is added again, later, then the ancillary limits are infinite. The effective dynamic limits for a movement are built from the following inputs: G: the global axis limits stored in the axis configuration, M: the factors given at the movement function blocks (inputs VelFactor, AccFactor, …), F: the factors set with SMC_GroupSetAxisLimitFactors , O: the current override factors, and A: the ancillary axis limits. The effective axis limits L are computed from these inputs as L = O * min(A, M * F * G). Note This function block may not be called in the states GroupDisabled or GroupErrorStop , and, if ExecutionMode equals Immediately , no MC_GroupStop may be active. No axis limit may be zero or negative. Otherwise, the function block returns an error. MC_GroupStop ignores ancillary limits. InOut: Scope Name Type Comment Inout AxisGroup AXIS_GROUP_REF_SM3 Reference to an axis group Input Execute BOOL Sets the limits on rising edge. ExecutionMode MC_EXECUTION_MODE Describes when the new limits become active. Limits ARRAY [0..(SMC_RCNST.MAX_AXES - 1)] OF SMC_DYN_LIMITS The ancillary dynamic limits Output Done BOOL The limits have been set successfully. Busy BOOL The FB is not finished. Error BOOL Signals that an error has occurred within the function block. ErrorID SMC_ERROR Error identification
SMC_GroupSetAncillaryPathLimits (FB) ¶ FUNCTION_BLOCK SMC_GroupSetAncillaryPathLimits This function block configures so called ancillary dynamic path limits for an axis group, that is ancillary limits for the velocity, acceleration, deceleration, and jerk along the path. The ancillary limits allow for an easy programming of different operating modes of a robot, for example a manual mode in which the robot may only move slowly for safety reasons. The effective dynamic path limits for a movement are built from the following inputs: C: the commanded path limits for a movement (inputs Velocity, Acceleration, …), O: the current path override factors, and A: the ancillary path limits. The effective path limits L are computed from these inputs as L = O * min(A, C). Note This function block may not be called in the states GroupDisabled or GroupErrorStop , and, if ExecutionMode equals Immediately , no MC_GroupStop may be active. No path limit may be zero or negative. Otherwise, the function block returns an error. MC_GroupStop ignores ancillary limits. InOut: Scope Name Type Comment Inout AxisGroup AXIS_GROUP_REF_SM3 Reference to an axis group Input Execute BOOL Sets the limits on rising edge. ExecutionMode MC_EXECUTION_MODE Describes when the new limits become active. Limits SMC_DYN_LIMITS The ancillary dynamic limits. fTorqueMax is ignored. Output Done BOOL The limits have been set successfully. Busy BOOL The FB is not finished. Error BOOL Signals that an error has occurred within the function block. ErrorID SMC_ERROR Error identification