M_Functions ¶ SMC_GetMParameters (FunctionBlock) SMC_PreAcknowledgeMFunction (FunctionBlock)
NCDecoder_Help_Functions ¶ SMC_GetGWORD (FunctionBlock)
SMC_AvoidLoop (FB) ¶ FUNCTION_BLOCK SMC_AvoidLoop SMC_AvoidLoop removes loops from the path. It copies the input path, but cuts out the loops created by self-intersections. The resulting output path is free of self-intersections. For a typical application see SMC_ToolRadiusCorr . This function block needs to be activated/deactivated in the G-Code with G61/G60. Note The effectiveness and efficiency of SMC_AvoidLoop depend on the appropriate size of the input queue poqDataIn . A loop containing more objects than can be stored in poqDataIn is not detected. On the other hand, for each element, an intersection check is executed with all following elements of the queue. If the queue is large, completing these checks may take a long time. SMC_AvoidLoop does not support ellipses (G08/G09). An error is reported if an ellipse element is detected while loop avoidance is active. SMC_AvoidLoop only works in 2.5D mode (see G15). An error is reported if elements with full 3D mode (such as G10 elements) are detected while loop avoidance is active. InOut: Scope Name Type Comment Input bExecute BOOL Execution starts on the rising edge. bAbort BOOL If TRUE , the current processing of this function block is aborted bAppend BOOL As long as this input remains FALSE , poqDataOut is cleared at each reset. As long as it remains TRUE , newly incoming data is written to the end of poqDataOut . poqDataIn POINTER TO SMC_OUTQUEUE This variable points to the SMC_OUTQUEUE structure which contains the SMC_GEOINFO objects of the path. Typically it points on the output poqDataOut of the preceding function block (e.g. the SMC_NCInterpreter ). nSizeOutQueue UDINT This variable contains the size of the data buffer in bytes. This buffer must be able to hold at least five SMC_GEOINFO objects. It is recommended to create the buffer as described by the example below. ExampleBuf: Array[1..50] of SMC_GeoInfo The appropriate buffer size can then be computed using SIZEOF(ExampleBuf) . pbyBufferOutQueue POINTER TO ARRAY [0..0] OF SMC_GEOINFO This input must point to the first byte of the memory area that is allocated for the SMC_OUTQUEUE structure. This area must be at least as big as defined in nSizeOutQueue . Typically the allocation of the memory buffer is done in the declaration part of the IEC-program by defining an array of SMC_GEOINFO e.g. BUF: ARRAY[1..50] OF SMC_GEOINFO ; for a buffer that can store 50 path elements). Output bDone BOOL Set if the entire path has been processed bBusy BOOL TRUE , while execution of function block is not finished bError BOOL Signals, that an error has occurred within the function block wErrorID SMC_ERROR Error identification poqDataOut POINTER TO SMC_OUTQUEUE This variable points to a SMC_OUTQUEUE structure, which manages the SMC_GEOINFO objects of the output path. iStatus SMC_AL_STATUS This enum variable shows the current state of the function block. Structure: SMC_AvoidLoopInit (Action) SMC_DoBeforeLeave (Action)
SMC_CheckForLimits (FB) ¶ FUNCTION_BLOCK SMC_CheckForLimits The function block checks whether a path leaves its specific, rectangular range. Typically, poqDataOut of the previous function block is fed to the input poqDataIn . Subsequent function blocks should in turn use poqDataOut of this FB. In contrast to other pre-processing function blocks, SMC_CheckForLimits works on the SMC_Outqueue -structure only, it doesn’t need a buffer and does not change the path (whose data is still held by the buffer of the previous function block). InOut: Scope Name Type Initial Comment Input bExecute BOOL FALSE Execution starts on the rising edge. bAbort BOOL FALSE TRUE : Aborts the processing of the function block poqDataIn POINTER TO SMC_OUTQUEUE SMC_NULL Pointer to data of structure SMC_OUTQUEUE containing the path objects of type SMC_GEOINFO . wAddAxis WORD Bit field of the axes that will be tested X: Bit 0 Y: Bit 1 Z: Bit 2 A: Bit 3 B: Bit 4 C: Bit 5 P: Bit 6 Q: Bit 7 U: Bit 8 V: Bit 9 W: Bit 10 Example: 16#104 causes test of Z and U piMin SMC_POSINFO Lower edge of permissible range piMax SMC_POSINFO Upper edge of permissible range d3dCheckDistance LREAL In case of an 3D-object, the distance between the points that are checked. If 0, the number of points per object will be the object’s length divided by 10, plus start- and end-position. diMinNoPoints DINT 5 Apart from start- and end-position, the minimal number of points per object that are checked. diMaxNoPoints DINT 100 Analogously. -1 means that there is no maximum number. Output bBusy BOOL FALSE TRUE : Function block in execution bError BOOL FALSE TRUE : Error has occurred wErrorID SMC_ERROR SMC_NO_ERROR Error identification wAxisOutOfLimits WORD Axes that have left the boundary iSourceLine_No DINT INVALID_LINE_NUMBER Line number of the first object that has exceeded the limit. The line number is zero based and the value -1 shows that no line with exceeding limits was found. poqDataOut POINTER TO SMC_OUTQUEUE SMC_NULL Pointer to data of structure SMC_OUTQUEUE containing the path elements of type SMC_GEOINFO that has been checked wLimitSwPositive WORD Axes that have exceeded the upper limit wLimitSwNegative WORD Axes that have exceeded the lower limit Structure: CheckSinglePoint (Action) DoBeforeLeave (Action)
SMC_TrafoResult_4AxisPalletizer (ENUM) ¶ TYPE SMC_TrafoResult_4AxisPalletizer : InOut: Name Initial T4AP_Result_OK 0 T4AP_Result_InvalidConfig 1 T4AP_Result_OutOfWorkingSpace 2
SMC_TrafoResult_ArticulatedRobot_6DOF (ENUM) ¶ TYPE SMC_TrafoResult_ArticulatedRobot_6DOF : InOut: Name Initial TA6DOF_Result_OK 0 TA6DOF_Result_InvalidConfig 1 TA6DOF_Result_PosOutOfWorkingSpace 2 TA6DOF_Result_OrientationAxesOutOfRange 3
SMC_VECTORDIR (ENUM) ¶ TYPE SMC_VECTORDIR : This enumeration variable is used as an input variable at SMC_CalcDirectionFromVector to define if the angle of the vector itself, its inverse or one of the two perpendiculars shall be used. InOut: Name Initial Comment SMC_tangential 0 No offset; tangential direction SMC_orthogonal_r -90 Offset -90; orthogonal direction clockwise SMC_orthogonal_l 90 Offset 90; orthogonal direction counterclockwise SMC_opp_tangential 180 Offset 180; opposite direction Input eDir indcates, whether the direction is calculated parallel to the path tangent ( MC_tangential ), opponent ( SMC_opp_tangent ) or orthogonal ( SMC_orthogonal_r = right of the path tangent, SMC_orthogonal_l = left of the path tangent).
SM_Trafo_POUs ¶ The objects in the folders below SM_Trafo_POUs ➔ SoftMotion Transformations are used for axis control and for transformation from GEO coordinates to positions of the axes and vice versa. This collection encloses function blocks that control the axes with respect to target values. They are kept under surveillance by the dand, at the same time, the module will detect possible jumps within the path. Forward and inverse transformation ¶ There are modules for mathematic forward and inverse transformation for some usual kinematics. Modules referring to a special kinematics problem belong together in pairs, whereby the module named SMC_TRAFO_<kinematics> performs an inverse transformation (i.e. from geo coordinates to coordinates related to the axes positions) and the one named SMC_TRAFOF_<kinematics> performs a forward calculation (i.e. from the axes point of view in geo coordinates). Each instance of a SMC_TRAFOF_<kinematics>-module can be connected to a visualization template named SMC_VISU_<kinematics> . Note Instances of the forward transformation modules can be connected with the also provided visualization-templates allowing an immediate and simple visualization. SMC_TRAFOV_ ¶ Additionally, some of the inverse transformations will make use of the path velocity and the path direction to control the axes. The name of these transformation modules starts with SMC_TRAFOV_ instead of SMC_TRAFO_ . As further inputs the modules are passed the path tangent ( v ) and path velocity ( dVel ) by the interpolator. Both the target positions and the target velocities ( dvx / dvy / dvz ) are returned by these modules. The advantage of this method is that the lag error in the drive can be minimized by doing an anticipatory control of the velocity, assuming the drive supports this method. For this reason each axis should be controlled by the modules SMC_ControlAxisByPos or SMC_ControlAxisByPosVel . SoftMotion Transformations Gantry systems SMC_TRAFOF_5Axes (FunctionBlock) SMC_TRAFOF_Gantry2 (FunctionBlock) SMC_TRAFOF_Gantry2Tool1 (FunctionBlock) SMC_TRAFOF_Gantry2Tool2 (FunctionBlock) SMC_TRAFOF_Gantry3 (FunctionBlock) SMC_TRAFOF_Gantry3D (FunctionBlock) SMC_TRAFOF_GantryCutter2 (FunctionBlock) SMC_TRAFOF_GantryCutter3 (FunctionBlock) SMC_TRAFOF_GantryH2 (FunctionBlock) SMC_TRAFOF_GantryT2 (FunctionBlock) SMC_TRAFOF_GantryT2_O (FunctionBlock) SMC_TRAFOV_Gantry2 (FunctionBlock) SMC_TRAFOV_Gantry3 (FunctionBlock) SMC_TRAFOV_GantryCutter2 (FunctionBlock) SMC_TRAFOV_GantryCutter3 (FunctionBlock) SMC_TRAFOV_GantryH2 (FunctionBlock) SMC_TRAFOV_GantryT2 (FunctionBlock) SMC_TRAFOV_GantryT2_O (FunctionBlock) SMC_TRAFO_5Axes (FunctionBlock) SMC_TRAFO_Gantry2 (FunctionBlock) SMC_TRAFO_Gantry2Tool1 (FunctionBlock) SMC_TRAFO_Gantry2Tool2 (FunctionBlock) SMC_TRAFO_Gantry3 (FunctionBlock) SMC_TRAFO_GantryCutter2 (FunctionBlock) SMC_TRAFO_GantryCutter3 (FunctionBlock) SMC_TRAFO_GantryH2 (FunctionBlock) SMC_TRAFO_GantryT2 (FunctionBlock) SMC_TRAFO_GantryT2_O (FunctionBlock) Parallel Systems Bipod_Arm SMC_TRAFOF_Bipod_Arm (FunctionBlock) SMC_TRAFO_Bipod_Arm (FunctionBlock) Tripod SMC_TRAFOF_Tripod (FunctionBlock) SMC_TRAFO_Tripod (FunctionBlock) Tripod_Arm SMC_TRAFOF_Tripod_Arm (FunctionBlock) SMC_TRAFO_Tripod_Arm (FunctionBlock) Tripod_Lin SMC_TrafoF_Tripod_Lin (FunctionBlock) SMC_Trafo_Tripod_Lin (FunctionBlock) Robot Kinematiks SMC_TrafoF_4AxisPalletizer (FunctionBlock) SMC_TrafoF_ArticulatedRobot_6DOF (FunctionBlock) SMC_Trafo_4AxisPalletizer (FunctionBlock) SMC_Trafo_ArticulatedRobot_6DOF (FunctionBlock) Scara System SMC_TRAFOF_Polar (FunctionBlock) SMC_TRAFOF_Scara2 (FunctionBlock) SMC_TRAFOF_Scara3 (FunctionBlock) SMC_TRAFO_Polar (FunctionBlock) SMC_TRAFO_Scara2 (FunctionBlock) SMC_TRAFO_Scara3 (FunctionBlock) additional FBs SMC_CalcDirectionFromVector (FunctionBlock)
SM_Trafo_Data types ¶ SMC_ArticulatedRobot_6DOF_J0_State (Enum) SMC_ArticulatedRobot_6DOF_J1_State (Enum) SMC_ArticulatedRobot_6DOF_J4_State (Enum) SMC_TrafoConfig_4AxisPalletizer (Struct) SMC_TrafoConfig_ArticulatedRobot_6DOF (Struct) SMC_TrafoResult_4AxisPalletizer (Enum) SMC_TrafoResult_ArticulatedRobot_6DOF (Enum) SMC_VECTORDIR (Enum)
SMC_ArticulatedRobot_6DOF_J0_State (ENUM) ¶ TYPE SMC_ArticulatedRobot_6DOF_J0_State : The possible configuration states of joint 0 of the 6DOF robot arm. InOut: Name Comment SMC_AR_ARMFORWARD The arm is pointing towards the wrist center SMC_AR_ARMBACKWARDS The arm is pointing opposite to the wrist center SMC_AR_ARMSTRAIGHT The wrist center is directly above joint 0 (singular case)