SMC_GetMaxSetVelocity (FB) ¶ FUNCTION_BLOCK SMC_GetMaxSetVelocity This function block may be employed to measure the maximum value of velocity of an axis. Measuring will be done if bEnable is TRUE , and will be reset to 0, if bEnable is FALSE . With dwTimeStamp you can provide a call counter, which is latched output in dwTimeAtMax with a new maximum value. InOut: Scope Name Type Initial Comment Inout Axis AXIS_REF_SM3 Input bEnable BOOL FALSE TRUE : Starts execution of the function block. dwTimeStamp DWORD Optional time stamp input; can be used to find out when the maximum occured. Output bValid BOOL FALSE bBusy BOOL TRUE : Parameter is available. fMaxVelocity LREAL 0 TRUE : Eecution of the function block is not finished yet. dwTimeAtMax DWORD 0 Maximum velocity in [u/s²]
SMC_GetTrackingError (FB) ¶ FUNCTION_BLOCK SMC_GetTrackingError This function block may be employed to measure the current and maximum lag error compensating the dead time, which can arise from the communication via a field bus and will be given in number of cycles ( byDeadTimeCycles ). Similar to SMC_GetMaxSetVelocity a time stamp ( dwTimeStamp ) can be used to measure the time at the maximum. InOut: Scope Name Type Initial Comment Inout Axis AXIS_REF_SM3 Input bEnable BOOL FALSE TRUE : Starts execution of the function block. byDeadTimeCycles BYTE 2 Number of dead time cycles dwTimeStamp DWORD Optional time stamp input; can be used to find out when the maximum occured. Output bValid BOOL TRUE : Parameter is available. bBusy BOOL TRUE : Execution of function block has not been finished yet. fActTrackingError LREAL 0 Current lag error fMaxTrackingError LREAL 0 Maximum lag error dwTimeAtMax DWORD 0 Maximum value of dwTimeStamp
SMC_InPosition (FB) ¶ FUNCTION_BLOCK SMC_InPosition This function block monitors the offset between the nominal and actual positions of an axis (drag error). This tests whether the drag error lies within a specified value range for over a defined period of time (position window). When using logical axes, it is possible with the function block to compare a real and a logical axis. This tests whether the logical axis, which is the mapping of a real axis compensated by communication time, is close to the values of the real axis. Instead of the deviation between the nominal and actual positions, the deviation of the actual position of the logical axis is used as the nominal position of the real axis. The function block SMC_InPosition can be used for this test under the following conditions: The motion type must be identical (limited/modulo). In the case of “modulo”, the position period must be the same. Identical offsets must be defined (e.g., set by MC_SetPosition ). If these conditions are not satisfied, then the compared positions will probably never match and therefore there is no point in using the FB. In this case, an error is not issued. InOut: Scope Name Type Comment Inout Axis AXIS_REF_SM3 Input bEnable BOOL TRUE : Starts execution of the function block. fPosWindow LREAL The drive is inside the position window, if fPosWindow >= Distance(actual position, set position) [u]. fPosTime LREAL Time that the FB has to stay inside the position window before bInPosition is set [s]. fTimeOut LREAL If the time since enabling the FB is larger than this value and bInPosition is not set, bTimeOut is set; this mechanism is deactivated, if fTimeOut = 0. Output bInPosition BOOL TRUE : Parameter is available. bBusy BOOL TRUE : Execution of the function block is not finished yet. bTimeOut BOOL TRUE : Error has occurred within the function block.
SMC_MeasureDistance (FB) ¶ FUNCTION_BLOCK SMC_MeasureDistance This function block may be employed on a rotary axis to measure the covered distance by regarding the wrap. InOut: Scope Name Type Comment Inout Axis AXIS_REF_SM3 Input bExecute BOOL Output fDistance LREAL bBusy BOOL Travelled distance since start of measurement. bError BOOL TRUE : Execution of the function block has nor been finished yet. nErrorID SMC_ERROR TRUE : Error has occurred within the function block.
SMC_ReadSetPosition (FB) ¶ FUNCTION_BLOCK SMC_ReadSetPosition This function block can be used for reading the currently set position of the drive. InOut: Scope Name Type Initial Comment Inout Axis AXIS_REF_SM3 Reference to axis Input Enable BOOL FALSE TRUE : Enables the execution of the function block. Output Valid BOOL FALSE TRUE : Parameter is available. Busy BOOL FALSE TRUE : Execution of function block has not been finished yet. Error BOOL FALSE TRUE : Error has occurred within the function block. ErrorID SMC_ERROR 0 Error identification Position LREAL 0 Position of drive
SMC_ReadSetValues (FB) ¶ FUNCTION_BLOCK FINAL SMC_ReadSetValues Reads the set position, velocity, acceleration, and jerk of an axis. Allows setting a positive TimeOffset to read future set values. With TimeOffset = 0 the set values from the beginning of the current cycle are read. Note Reading future set values requires setting a ForecastDuration using SMC_SetForecast . InOut: Scope Name Type Comment Inout Axis AXIS_REF_SM3 Reference to the axis Input Enable BOOL Read the set values continuously while enabled. TimeOffset LREAL Time offset relative to the current cycle for which the set values should be read. The TimeOffset must be between 0 and the ForecastDuration set using SMC_SetForecast . If the TimeOffset is outside this range the error SMC_INVALID_PARAMETER is reported. Output Valid BOOL TRUE : Valid outputs are available. Busy BOOL TRUE : Execution of the function block has not been finished yet. Error BOOL TRUE : Error has occurred within the function block. ErrorID SMC_ERROR Error identification Position LREAL The set position Velocity LREAL The set velocity Acceleration LREAL The set acceleration Jerk LREAL The set jerk
Movement ¶ Direct SMC_FollowPosition (FunctionBlock) SMC_FollowPositionVelocity (FunctionBlock) SMC_FollowSetValues (FunctionBlock) SMC_FollowVelocity (FunctionBlock) SMC_SetTorque (FunctionBlock) SMC_TrackAxis (FunctionBlock) SMC_TrackSetValues (FunctionBlock) MC_AccelerationProfile (FunctionBlock) MC_Halt (FunctionBlock) MC_HaltSuperImposed (FunctionBlock) MC_Home (FunctionBlock) MC_Jog (FunctionBlock) MC_MoveAbsolute (FunctionBlock) MC_MoveAdditive (FunctionBlock) MC_MoveRelative (FunctionBlock) MC_MoveSuperImposed (FunctionBlock) MC_MoveVelocity (FunctionBlock) MC_PositionProfile (FunctionBlock) MC_SetOverride (FunctionBlock) MC_Stop (FunctionBlock) MC_VelocityProfile (FunctionBlock) Master/Slave MC_CamIn (FunctionBlock) MC_CamOut (FunctionBlock) MC_GearIn (FunctionBlock) MC_GearInPos (FunctionBlock) MC_GearOut (FunctionBlock) MC_Phasing (FunctionBlock) SMC_BacklashCompensation (FunctionBlock) SMC_GetOverride (FunctionBlock) SMC_Homing (FunctionBlock) SMC_Inch (FunctionBlock) SMC_MoveContinuousAbsolute (FunctionBlock) SMC_MoveContinuousRelative (FunctionBlock)
MC_MoveAbsolute (FB) ¶ FUNCTION_BLOCK MC_MoveAbsolute This function block causes the axis to be moved to an absolute position and uses the values for Velocity , Deceleration , Acceleration and Jerk . If no further actions are pending, the execution ends with velocity 0. (See: standstill ) Example Use of MC_MoveAbsolute The following illustration shows two possibilities for combining two instances ( First and Second ) of the type MC_MoveAbsolute . In the left-hand part of the diagram the Second instance is called after the First instance. If First has reached the specified position of 6000 and the input Velocity is 0, then the Done output will cause the Second instance to move the axis to the position 10000. In the right-hand part of the diagram, the execution is started by Second while First is still operating. The motion caused by First is interrupted and aborted by the Test signal which is transmitted during the constant velocity phase of First . Second steers directly to position 10000, even though position 6000 has not yet been reached. InOut: Scope Name Type Initial Comment Inout Axis AXIS_REF_SM3 Input Execute BOOL TRUE : Starts execution. Position LREAL Target position of the motion in technical units [u], can be negative or positive. Velocity LREAL Maximum velocity in techincal units per second [u/s]. Is always positive. Is not necessarily reached. Acceleration LREAL Acceleration in [u/s²]. Is always positive. Increasing motor energy Deceleration LREAL Deceleration in [u/s²]. Is always positive. Decreasing motor energy Jerk LREAL Maximum magnitude of jerk in [u/s³] Direction MC_Direction shortest The direction is used for modulo axes to determine the modulo-period in which the target position is reached. For finite axes, the input is ignored. BufferMode MC_BUFFER_MODE Defines the chronological sequence of the FB relative to the previous block. If the function block is Busy, then only BufferMode=Aborting is allowed. Output Done BOOL TRUE : End position has been reached. Busy BOOL TRUE : Function block is in operation. If no further actions are pending, the execution ends with velocity 0. Active BOOL Indicates that the FB has control on the axis CommandAborted BOOL TRUE : The execution is interrupted by an other function block. Error BOOL TRUE : Error has occurred. ErrorID SMC_ERROR Error identification
MC_MoveAdditive (FB) ¶ FUNCTION_BLOCK MC_MoveAdditive This function block causes a controlled motion that adds the specified distance to the last specified target position. The axis is thereby in the discrete_motion mode. The current target position can result from a preceding motion of MC_MoveAdditive that was aborted. If the function block runs in the continuous_motion mode, the specified distance is added to the current position during the processing time. Example Use of MC_MoveAdditive The illustration shows how the First instance of the type MC_MoveAbsolute and the Second instance of the type MC_MoveAdditive are combined. The axis is in the discrete_motion mode. In the left-hand part of the illustration Second is called after First . If First has reached the specified position of 6000, the velocity is 0 and the Done is set, Second will cause the axis to move to the position 10000. In the right-hand part of the illustration, the execution is started by Second while First is still operating. The motion of First is interrupted and aborted by the Test signal which is transmitted during the constant velocity phase of First . The distance 4000 is added to the last commended position of 60000. Then Second moves the axis to the resulting position 10000. Sequence of two complete actions: Sequential execution of two complete motions Second motion interrupts first motion: Motion of “Second” interrupts the motion of “First” InOut: Scope Name Type Comment Inout Axis AXIS_REF_SM3 Reference to axis Input Execute BOOL TRUE : Starts execution Distance LREAL Relative distance for the motion in technical unit [u] Velocity LREAL Maximum velocity Is always positive in [u/s]. Does not need to be achieved. Acceleration LREAL Acceleration Is always positive in [u/s²]. Increasing motor energy Deceleration LREAL Deceleration Is always positive in [u/s²]. Decreasing motor energy Jerk LREAL Is always positive in [u/s³]. Output Done BOOL TRUE : Distance has been achieved. Busy BOOL TRUE : Function block is in operation. CommandAborted BOOL TRUE : Execution has been interrupted by another function block instance operating on the axis. Error BOOL TRUE : Error has occurred. ErrorID SMC_ERROR Error identification
MC_MoveRelative (FB) ¶ FUNCTION_BLOCK MC_MoveRelative This function block commands a controlled motion of a specified distance. The motion ends in standstill (unless blended to a followup movement). Example Use of MC_MoveRelative The illustration shows how two instances ( First and Second ) of type MC_MoveRelative are combined. In the left-hand part of the illustration, Second is called after First . If First has reached the specified position distance 6000, the velocity is 0 and First.Done is set. Then the Second instance will cause the axis to move to position 10000. In the right-hand part of the illustration, the execution is started by Second while First is still operating. The motion of First is interrupted and aborted by the Test signal, which is transmitted during the constant velocity phase of First . The distance 4000 is added to the actual position 3250. Then Second moves the axis to the resulting position 7250. InOut: Scope Name Type Comment Inout Axis AXIS_REF_SM3 Reference to axis Input Execute BOOL TRUE : Starts execution. Distance LREAL Relative distance for the motion in technical unit [u]. Velocity LREAL Maximum velocity in techincal units per second [u/s]. Is always positive. Is not necessarily reached. Acceleration LREAL Acceleration in [u/s²]. Is always positive. Increasing motor energy Deceleration LREAL Deceleration in [u/s²]. Is always positive. Decreasing motor energy Jerk LREAL Maximum magnitude of jerk in [u/s³] BufferMode MC_BUFFER_MODE Defines the chronological sequence of the FB relative to the previous block. If the function block is Busy, then only BufferMode=Aborting is allowed. Output Done BOOL TRUE : Distance has been achieved. Busy BOOL TRUE : Function block is in operation. Active BOOL Indicates that the FB has control on the axis CommandAborted BOOL TRUE : Execution has been interrupted by another function block instance operating on the axis. Error BOOL TRUE : Error has occurred. ErrorID SMC_ERROR Error identification