Home

Softmotion User Manual

image

Contents

1. 3000 dLastWayPos yecActTangent bAbort We want to control a portal system with this example program For this reason we insert an instance of the backward and forward transformation modules from library SM_Trafo lib The forward transformation module as inputs gets the drives the Z drive is allocated with a otherwise not used variable dummy of type AXIS_REF the backward module must get the target position of the Interpolator trafof SMC_TRAFOF_Gantry2 dx IbjectSourceNo dvel vecActTangent The outputs of the module that means the axes coordinates now must be written to the drives For that the function blocks SMC_ControlAxisByPos are used Due to the fact that our application does not guarantee continuous outputs of the Interpolator e g the path ends at a point different to that where it starts we should activate gap avoiding functions bAvoidGaps fGapVelocity fGapAcceleration fGapDeceleration we should connect the Stoplpo output with the bEmergency_Stop of the Interpolator and we should connect the Interpolator output iStatus with the corresponding inputs of the axes control modules pl SMC_ControlAxis By Pos smci i bCommand Aborted SMC _Interpolator bSlow_Stop wErorlD SMC_TRAF O_Gantry2 f Gap elocity lb Emergency _Stop piSet Position pi dx a0 Gap Acceleration b Wait At Next Stop iStatus dOffsetX dy 50 t cap deceleration dQverride bitiorking dOtfsetY 7X Dr
2. SoftMotion can be divided in the following components e Drive Interface This component is responsible for the communication with the drives It consists of the library Drive_Basic lib and drive and bussystem specific libraries and drivers e In the Configuration editor in CoDeSys the developer maps the structure and configuration of the drive hardware Basing on this CoDeSys using the functions of the Drive Interface libraries will create IEC data structures which represent the drives abstractedly Automatically i e without additional effort by the IEC programmer the Drive Interface will communicate with the drives and by that will take care of the topicality of the drive data structures as well as of the transfer of the data which have been updated Based on this structures the drive controlling IEC program either works with the aid of standard modules of the SoftMotion libraries SM_CNC lib SM_PLCOpen lib or with special modules created by the IEC programmer for this purpose The target value always is set cyclically that means per each IEC task cycle target values positions velocities accelerations etc are calculated and transferred from the Drive Interface to the drives The possibility to instruct the drives like setting a target position so that the drive is moving on its own initiative and giving a message as soon as the instruction has been executed successfully is not provided Reasons In this case no coordinated m
3. bAgpend bError bStepSuppress weErrorD g_ncDecoder bExecute p StarPosibon pogDatadut nSizeOutQueue Status poyBufferOutOusue iLineNumberDecoded ncprog P neprot 10000 ADRibufloy si gt The interpolating part of the IEC program nearly remains at it was except that the data input of the Interpolator is not the CNC program name ADR Example but the OutQueue output of the path preprocessing modules here g_ncDecoder poqDataOut Besides that function SMC_RestoreQueue should not be called 11 12 SoftMotion in CoDeSys 2 3 Chapter 11 Programming Examples 4 Creating the operation and test interface For a visualization of the previous example it is useful to add templates of the new modules SMC_NCDecoder and SMC_CheckVelocities Besides that the global variables g_x and g_y should be editable in order to be able to check their function later at start up 5 Start up The program now can be compiled without errors and started It will process the CNC program as soon as the Execute inputs of the Decoder and Interpolator have been set If you change the values of the global variables those will be read at a re start of the Decoder and the path will be adjusted accordingly Also regard the function of the Append input of the Decoder 11 7 3 CNC Example 3 Path Preprocessing online See the corresponding sample project coming with SoftMotion CNCprepro pro We want to ex
4. e PLCopen Library The PLCopen motion control library SM_PLCopen lib contains among other modules which help to program and realize easily as well the controlling of a single axis motion but also of the synchronized motion of two axes Besides library elements which can be used for status checks for the parametrizing and for operating in general there are also function blocks which can move an axis according to the defined speed and acceleration parameters in different ways If two axes should be synchronized then one axis serves as master and controls a second axis slave according to a certain prescript This prescript e g can be a CAM which has been designed in the CAM editor and which uses available POUs to link the slave axis to the master axis Further on there are function blocks which allow electronic gear or phase shifts e File Service Library The library SM_FileFBs lib bases on the system library SysLibFile lib and therefore can only be used on target systems which are supporting this library e Error Library The library SM_Error lib contains all error outputs which can be produced by the modules of the other libraries Further on it can be used to create German and English error messages from the numeric error variables Portability Apart from some drivers of the Drive Interface which are serving hardware components directly all SoftMotion runtime components are programmed in IEC1131 3 Thus the maximum platfor
5. wSProfile in the same way describes for the additional axes all besides X Y axes whether they should be interpolated by the Interpolator module linearly FALSE or in sigmoid S shape TRUE Bit2 stands for the Z axis Bit6 for P Bit7 for Q Bit8 for U Bit9 for V and Bit10 for W SMC_GEOINFO This structure which is part of the SMC_CNC lib contains the path objects A path object is a segment of the programmed path which due to its geometrical properties completely can be stored in the following structure TYPE SMC GEOINFO STRUCT iObjNo INT iSourceLineNo INT iMoveType MOVTYP piStartPos SMC POSINFO piDestPos SMC POSINFO aP1 L q dP2 dP3 dP4 dP5 dP APT dP8 aTl dT2 daTool dvel dVelE dAccel LRE dDecel LREAL dLength LREAL byInternMa END STRUCT END TYPE Bo 5d Bo oo Bo Bo fd 50 0 D iObjNo INT This integer value describes any desired object number It has no meaning for the actual path description iSourceLineNo INT This integer value typically describes the source code line number of the CNC program It has no meaning for the actual path description 6 16 SoftMotion in CoDeSys 2 3 Chapter 6 The Library SM_CNC lib iMoveType MOVTYP INT This enumeration contains the following valid values and describes the object type LIN 1
6. This variable gets TRUE as soon as the set velocity has been reached CommandAborted BOOL Default FALSE This variable gets TRUE as soon as the commanded motion was interrupted by any motion function block acting on the same axis except MoveSuperlmposed Error BOOL Default FALSE This variable gets TRUE when an error has occurred in the function block ErrorlD INT Error number MC_PositionProfile This function block which is part of the SM_PLCopen lib follows a defined position profile For this purpose a variable of type structure MC_TP_REF must be defined and filled MC_TP_REF contains the following variables Variable Type Init value Description Number_of_pairs INT 0 Number of profile position points IsAbsolute BOOL TRUE Positions absolute or relative MC_TP_Array ARRAY 1 100 OF MC_TP Position points MC_TP contains the following variables Variable Type Init value Description delta_time TIME t 0s Period of time between reaching the last and the current position point osition REAL 0 Absolute relative position of the p profile position point The module creates a path through the given position points which is a double continuously differentiable curve composed of cubic polynomials Regard that the axis normally will reach the end of the predefined profile with a velocity and acceleration unequal 0 This can be compensated by the call of a MC_MoveAbsolut
7. dDirection LREAL Direction angle of the last joint in degrees 0 W 90 N dOffsetA dOffsetB dOffsetC LREAL Offset for A B and C axis dArmLength1 dArmLength2 dArmLength3 LREAL Length of the arms bElbowLow BOOL Elbow 1 and 2 joint down TRUE resp top FALSE bError BOOL TRUE Invalid values dA dB dC LREAL Axis position A B C axis SoftMotion in CoDeSys 2 3 Transformation function blocks SMC_TRAFOF_Scara3 SMC_TRAFOF_SCARA3 dAlpha dBeta dGamma dpx a N dpy DriveC AXIS_REF VAR_IN_OUT dppx dppy dnx dny dR1 dR2 dR3 DriveA AXIS_LREF VAR_IN_OUT DriveB AXIS_REF VAR_IN_OUT Drive AXIS_REF VAR_IN_OUT dOffsetA dOffsetB dOffsetC LREAL Offset for A B and C axis Same values as described for SMC_TRAFO_Scara3 dArmLength1 dArmLength2 dArmLength3 LREAL Lenght of the arms DriveA DriveB DriveC AXIS_REF A B and C axis bError BOOL TRUE Invalid values dx dy LREAL x y Position in Geo coordinates dAlpha dBeta Gamma LREAL Joint angle axis positions without offset for visualization dpx dpy LREAL Standardized position of the first joint 1 1 for visualization dppx dppy LREAL Standardized position of the second joint 1 1 for visualization dnx dny LREAL Standardized position of the manipulator 1 1 for visualization dR1 dR2 dR3 LREAL Relative arm lengths dR1 dR2 dR3 1 0 1 for visualiza
8. Default FALSE TRUE indicates that the desired distance has been covered Error BOOL Default FALSE TRUE indicates that an error has occurred in the function block ErrorlD SMC_Error INT Error number CAMTablelD MC_CAM_ID Output describing the CAM Serves as an input for the homonymous input in MC_CamtIn MC_Camin Using this module which is provided by the library SM_PLCopen lib you can realize a CAM which has been selected by MC_CAMTABLESELECT In addition to the offsets and scaling also the start mode can be defined Regard that the modes ramp_in ramp_in_pos and ramp_in_neg which would effect a continuous approximation of the slave target value to the CAM target value in case at start time the actual slave value would differ from the CAM target value is not yet implemented This module provides an additional function It detects tappets and via the output Tappets can hand over the tappet info to one or several SMC_GetTappetValue function blocks see SMC_GetTappetValue Regard that the Camin Module cannot register more than three tappets per cycle The module SMC_CAMRegister works without this limitation MC_CAMIN Execute BOOL InSyne BOOL MasterOffset LREAL CommandAborted BOOL SlaveOffset LREAL Error BOOL MasterScaling LREAL ErrorlD WORD SlaveScaling LREAL EndOfProfile BOOL StartMode MC_StartMode Tappets SMC_TappetData CamTablelD MC_CAM_ID Master AXIS_REF VAR_IN_OUT VelocityDiff L
9. This value can be predefined but later it can only get modified during a reset In Outputs VAR_IN OUT of the module ncprog BYTE In this IN OUT variable the CNC program structure SM_CNC_REF Drive_Basic lib will be passed on This program may have been created by the IEC program or in the CNC Editor Outputs of the module bDone BOOL This variable is set to TRUE as soon as the processing of the program has been finished Thereafter the SMC_NCDecoder will not perform any actions until it gets a reset If input bExecute is FALSE bDone will be set back to FALSE bError BOOL In case of an error this input gets TRUE wErrorlD SMC_ ERROR INT This enum output describes an error which might be occurred during decoding After an error the processing will be stopped until a reset is done poqDataOut POINTER TO SMC_OUTQUEUE This variable points to a SMC_OUTQUEUE structure which manages the decoded SMC_GEOINFO objects iStatus SMC_DEC_STATUS INT This enum variable shows the current status of the module Possible states WAIT_PROG 0 Program not yet found READ WORD 1 Word read PROG_READ 2 End of program reached iLineNumberDecoded INT This variable contains the line number not the sentence number of the last processed line 6 2 SoftMotion in CoDeSys 2 3 Chapter 6 The Library SM_CNC lib iErr SMC_DEC_ERROR INT This enum variable describes an error which may have occurre
10. e g BusTask in the line below enter the cycle time of the task in usec e g 3000 See below for the creation of this task The other AxisGroup parameters depend on which Businterface has been chosen In our example wParam1 defines the baud rate in MBit e g enter 2 and wParam2 defines the intensity of the LED SoftMotion in CoDeSys 2 3 Chapter 11 Programming Examples e Create a task for the drive control with the following attributes in the Task configuration Task configuration Iof x El Task configuration Ee g 4 Taskattibutes pe g System events zi Name Busta sd Priority 0 15 iS Type cyclic freewheeling C triggered by event triggered By extemallevent m Properties Interval e g t 200ms T 3ms ms z e Now the drives have to be inserted We assume that there are four drives three linear drives serving a X Y Z portal system and one drive turning the tool around the Z axis Insert each drive by the command Append Drive which is available in the context menu when the entry AxisGroup is selected dotted line in the configuration tree The names of the drives can be modified For this purpose click on the entry with the right mouse button to open an edit field For our example choose the following names E APLC Configuration 4 a 4 Businterface VAR Module parameters 4 El AxisGroup VAR H gP X_Drive VAR om Y _
11. modulo 2 5 Modulparameter 2 1 Motion 1 1 Move program 3 6 N New CNC program 3 4 O OUTQUEUE 6 15 override 6 7 6 10 P path object 6 16 path section 6 16 Path preprocessing 6 6 periodic CAM 4 2 PLC Configuration for drives Example 11 1 PLC Configuration for SoftMotion 2 1 PLCopen lib 1 2 Point 4 4 polynomial compilation 4 7 Portal systems 8 3 8 5 Position data 6 15 Position saving 6 15 Properties of a CAM 4 2 Read CAM from file 4 7 Reference move 2 9 Rename CNC Program 3 5 Rotate program 3 6 Rotation of a path 6 15 Rotatory drive 2 11 RotDrive 2 11 Round off path 3 10 Round path 6 7 running order 3 2 S Scara Systems 8 7 8 9 Select elements in the CAM Editor 4 7 Select Mode in the CNC Editor 3 8 3 9 SercosDrive lib 2 12 SoftMotion in CoDeSys 2 3 Set epsilon values 3 11 Settings in the CAM Editor 4 6 Settings of a CAM 4 2 Shifted path 6 3 Show bounds 4 6 Show complete CAM 4 6 Show Interpolation Points 3 11 sign value 2 5 Single axis motion control 11 4 slave axis 4 1 slur path 6 6 Slur path 3 10 SM_CAN lib 2 12 SM_CNC libraries 1 2 SM_CNC lib 1 2 6 1 OUTQUEUE 6 19 SM_CNCDiagnostic lib 1 2 7 1 SM_Error lib 9 1 SM_Error lib 1 2 SM_FileFBs lib 1 2 SM_PLCopen lib 1 1 5 1 MC_PositionProfile 5 11 SM_Trafo lib 1 2 SMC sgn 2 5 SMC_atan2 2 5 SMC_AvoidLoop 6 5 SMC_CAMEditor 5 19 SMC_CAMRegister 5 20 SMC_CAMTable_ lt variables type gt _ lt number of elements gt _1 4 9 SMC_CAMTable_
12. the actual set position will be shifted by the size of Position MC_SETPOSITION ErrorlD WORD Axis AXIS_REF VAR_LIN_OUT Axis AXIS_REF WAR IN_OLUT Basically the module can be called at any time But regard that at a path controlled motion if the target positions are given to the module directly e g via SMC_ControlAxisByPos a jump of the target position break can result MC_TouchProbe This function block which is part of the SM_PLCopen lib can be used to detect very precisely the position of the drive via a fast input Because this as a rule must work faster than in the normal PLC in many cases either the drive is impinged with this function or it is executed independently from the PLC cycles via interrupts or the like MC_TOUCHPROBE Execute BOOL WindowOnly BOOL FirstPosition LREAL LastPosition LREAL RecordedPosition LREAL Axis gt AXIS_REF VAR_IN_OUT CommandAborted BOOL Triggerlnput TRIGGER_REF VAR_IN_OUT Axis AXIS REF VAR_IN_OUT Triggerlnput TRIGGER_REF WAR_IN_OUT Input Triggerlnput is of type TRIGGER_REF and describes the trigger input in detail Variable Type Initial value Description bFastLatching BOOL TRUE quick latching via Drivelnterface TRUE or latching according to PLC cycle FALSE iTriggerNumber INT 1 only for bFastLatching TRUE Trigger number depending on Drivelnterface blnput BOOL FALSE only for bFastLatching TRUE Input signal TRUE
13. 2 3 9 5 The enumeration SMC_Error Error Module Enum value Description no 2201 SMC_ReadCAM SMC_RCAM_TOO_MUCH_DATA saved CAM to big 2202 SMC_ReadCAM SMC_RCAM_WRONG_COMPILE_TYPE wrong compilation mode 2203 SMC_ReadCAM SMC_RCAM_WRONG_VERSION File has wrong version 2204 SMC_ReadCAM SMC_RCAM_UNEXPECTED_EOF unexpected end of file 5000 SMC_Encoder SMC_ENC_DENOM_ZERO Nominator of the conversion factor dwRatioTechUnits Denom of the Encoder reference is 0 5001 SMC_Encoder SMC_ENC_AXISUSEDBYOTHERFB Other module trying to process motion on the Encoder axis 9 6 SoftMotion in CoDeSys 2 3 Chapter 10 The library SM_FileFBs lib 10 The library SM_FileFBs lib 10 1 Overview This library provides modules for the file functionality They can only be used if the 3S system libraries SysLibFile lib and Standard lib are also available 10 2 CNC function blocks SMC_ReadNCQueue This module reads an OutQueue file which has been created by the CNC editor see chapter 3 3 from the PLC file system and provides an OutQueue structure which typically is processed by the Interpolator SMC_READNCGQUEUE bExecute BOOL sFileName STRINGS puffer POINTER TO BYTE ErrorliD SMC_ERROR dwuffersize DWORD pogDataut POINTER TO SMe_OIJTALEJE iObjectsRead UIT Inputs of the module bExecute BOOL At a rising edge the module starts with reading the queue sFileName STRING
14. 3 5 Rotate program 3 6 Split object 3 6 Start 3 4 Index Stretch program 3 6 Text editor 3 7 Code Generation 2 5 Compile options 4 6 Convert splines ellipses to lines 3 10 D Define queue size 3 5 Define start position 3 5 delete CNC program 3 5 Diagnosis 2 10 Divide object 3 7 don t compile 4 7 Drive 2 1 2 2 2 3 Drive Interface Sample Configuration 11 1 Drivelnterface 1 1 Driver 2 11 E Editing Modes in the CNC Editor 3 8 element optimized point table 4 7 Ellipses 3 10 Encoder 2 11 Encoder 2 2 equidistant point table 4 7 Error handling 9 1 Error numbers 9 1 Export CAM as ASCll table 4 7 Extras Avoid loop 3 10 Circle CCW Insert Mode 3 9 Circle CW Insert Mode 3 9 Compile options 4 6 Convert splines ellipses to lines 3 10 Export CAM as ASCll table 4 7 Fit to Screen 3 9 Line Insert Mode 3 9 Read CAM from file 4 7 Renumber program 3 7 3 9 Round off path 3 10 Select Mode 3 9 Set epsilon values 3 11 Settings 4 4 4 6 Show bounds 4 6 Show complete CAM 4 4 4 6 Show grid 3 9 Show Interpolation Points 3 11 Slur path 3 10 Spline Insert Mode 3 9 Step Suppress 3 10 Tool radius correction 3 10 Write CAM to file 4 7 Extras Menu in the CAM Editor 4 6 F File for CNC program 3 1 Fit to Screen 3 9 G GantryCutter 8 5 global Variables in SM_CNC lib 6 15 SoftMotion in CoDeSys 2 3 Graphic Editor 3 8 Info on CNC Program 3 5 Insert Insert line in the CAM Editor 4 8 Insert point in the CAM Editor
15. 4 8 Insert tappet in the CAM Editor 4 8 New CAM 4 2 Properties 4 2 Select elements in the CAM Editor 4 7 Insert line 4 8 Insert Menu in the CAM Editor 4 6 Insert Mode in the CNC Editor 3 8 Insert point 4 8 Insert tappet 4 8 Interpolation 6 13 Invert direction 3 6 Library Drive_Basic lib 2 5 Manufacturer specific Drive Lib 2 5 SM_CNC lib 6 1 SM_CNCDiagnostic lib 7 1 SM_Error lib 9 1 SM_PLCopen lib 5 1 LinDrive 2 11 LinDrive_V 2 11 Line Insert Mode in the CNC Editor 3 9 line number 3 2 Linear drive 2 11 Loop 6 5 master axis 4 1 Mathematic modules 2 5 MC_AbortTrigger 5 14 MC_AccelerationProfile 5 13 MC_CamIn 5 16 MC_CamOut 5 17 MC_CamTableSelect 5 15 MC_GearlIn 5 18 MC_GearOut 5 18 MC_Home 5 5 MC_MoveAbsolute 5 6 MC_MoveAdditive 5 7 MC_MoveRelative 5 8 MC_MoveSuperlmposed 5 9 MC_MoveVelocity 5 10 MC_Phasing 5 18 MC_PositionProfile 5 11 MC_Power 5 4 MC_ReadActualPosition 5 4 MC_ReadActualTorque 5 4 MC_ReadActualVelocity 5 4 MC_ReadAxisError 5 2 MC_ReadBoolParameter 5 3 MC_ReadParameter 5 3 MC_ReadStatus 5 2 MC_SetPosition 5 14 MC_Stop 5 5 MC_TouchProbe 5 14 Index MC_VelocityProfile 5 12 MC_WriteBoolParameter 5 3 MC_WriteParameter 5 3 Menu CNC program Define queue size 3 5 Define start position 3 5 Delete 3 5 Divide object 3 7 Info 3 5 Invert direction 3 6 Move program 3 6 New CNC program 3 4 Rename CNC Program 3 5 Rotate program 3 6 Split object 3 6 Stretch program 3 6 Write outqueue in file 3 7
16. A movement creating module which gets interrupted by an other one will indicate this by setting its CommandAborted output The outputs of the Execute started modules after having set their Done Output remain unchanged as long as the Execute Input is set By a falling edge they get deleted If a falling edge has been detected before termination the outputs will be set for one cycle and in the succeeding cycle will be deleted SoftMotion in CoDeSys 2 3 5 1 Modules for Controlling Single Axis Motions All motion generating modules require that in the corresponding axis the controller enable is done and the brake is released Otherwise an error will be reported 5 3 Modules for Controlling Single Axis Motions MC_ReadStatus This function block which is part of the SM_PLCopen lib provides some particular states of an axis MC_READSTATUS Enable BOOL Axis AXIS_REF VAR_IN_OUT ErrorlD WORD Errorstop Stopping Standstill DiscreteMotion ContinuousMotion SynchronizedMotion Homing Constant elocity Accelerating Decelerating FBErrorOccured Axis AXIS_LREF VAR_IN_OUT MC_ReadAxisError This function block which is part of the SM_PLCopen lib provides information on general errors which have occurred at the drive MC_READAXISERROR Enable BOOL Done BOOL Axis AXIS_REF VAR_IN_OUT Error BOOL ErrorlD WORD AxisError BOOL AxisErrorlD WORD Axis AXIS_REF VAR_IN_OUT
17. AXIS_LREF VAR_IN_OUT ErrorlD WORD Torque LREAL Axis AXIS_LREF VAR_IN_OUT MC_Power This function block which is part of the SM_PLCopen lib controls the ON OFF switch power and the status of the brakes of the drive If a drive has not been switched ON in this way if the controller has not been unblocked or if the brake has not been released no motion control is possible MC_POWER Enable BOOL bRegulatorOn BOOL bDriveStart BOOL Axis AXIS_REF VAR_IN_OUT Axis AXIS_REF WAR_IN_OUT Inputs of the function block Enable BOOL Default FALSE As long as this variable is TRUE the drive is switched on bRegulatorOn BOOL Default FALSE Switches on off the regulation bDriveStart BOOL Default FALSE Applies resp releases the brake in the drive 5 4 SoftMotion in CoDeSys 2 3 Chapter 5 The Library SM_PLCopen lib In Output VAR_IN OUT of the function block Axis AXIS_REF Here the structure is passed which has been filled in the Drive Interface Drive_Basic lib with the axis data Outputs of the function block Status BOOL Default FALSE Indicates whether the drive currently is in TRUE or out FALSE of regulation Error BOOL Default FALSE TRUE indicates an error in the function block ErrorlD INT Error number MC_Home This function block which is part of the SM_PLCopen lib starts a manufacturer specific reference move in the drive This moti
18. Additional Elements of the SM_PLCopen lib SMC_GetCamSlaveSetPosition This module calculates the current target position of an axis slave for the case that the axis would be coupled via a CAM to the motion of another axis Master Therby both axes are not moved or affected The module can be used if a slave axis prior to connecting to a CAM should be moved to the target position which has resulted by that Due to the fact that the module calculates the corresponding value within a cylce a done output is not needed In Outoputs VAR_IN_ OUT of the module CamTablelD MC_CAM_ID CAM Output of MC_CamTableSelect Master AXIS_REF Master axis Slave AXIS_REF Axis for which the CAM target position is calculated Inputs VAR_IN of the module all inputs not described in the folllowing correspond to those of MC Camin Enable BOOL Activates the module Outputs of the module fStartPosition LREAL Calculated target position for the slave Error BOOL Default FALSE TRUE indicates that in the module an error has occured ErrorlD SMC_Error INT Error number SMC_CAMEditor SMC_CAMVisu With these modules an Online CAM Editor can be created SMC_CAMEditor must be called in the SoftMotion task whereas SMC_CAMVisu should be called in a slower task of lower priority Both modules should be connected with the corresponding visualization template SMC_CAMEditor which represents the given CAM and allows
19. CoDeSys will automatically create the following variables and structures In the Global Variables folder Drive Configuration Data you will find three instances of the modules SercosDriveExecute_Start SercosDriveExecute_End and SercosDrivelnit elements of the Sercos library with the names AxisGroupStartCycle AxisGroupEndCycle and AxisGrouplnit which are responsible for the communication with the drives In the Global Variables folder Drive_Globale_Variablen of the library Drive_Basic lib there is a structure variable g DRIVESTRUCT which contains all entries of the PLC Configuration i e all BusInterfaces AxisGroups and Drives Besides that for each drive globally a structure variable has been created e g X_Drive which can be monitored e g in the Watch and Receipt Manager This structure can be accessed by the SoftMotion modules and the Drivelnterface will keep it up to date On this drive structures the Motion modules of the IEC program which we will create in the following in Ipo will work 11 3 Example Single Axis Motion Control See the corresponding sample project coming with SoftMotion PLCopenSingle pro basing on the configuration file softmotion cfg This example shows how a drive can be controlled via modules conforming to the PLCopen standards Besides the libraries of the Drive Interfaces the library SM_PLCopen lib must be included in the project In the PLC Configuration a
20. E Unit nd Editor fa 00 000 100 000 fi mm PLC fp 000 z 4 6 SoftMotion in CoDeSys 2 3 Chapter 4 The CAM Editor Basically there are three modes of compilation 1 polynomial During compilation structure variables of type MC_CAM_REF are created They contain for each segment the description of the 5 exponent polynom which describes the CAM Structures of this type are used as input of the MC_Camln module The structure is part of the library SM_DriveBasic lib 2 equidistant point table According to the settings in the lower part of the dialog a table of base points is created The table is of type SMC_CAMTable_ lt datatype gt _ lt number of elements gt _1 The position array of the dialog contains the slave values of the CAM referring to the master values which are arranged evenly on the defined range of the master axis The first value of the table refers to the slave position at the master minimum of the CAM The last value at non periodic CAMS refers to the slave position at the master maximum At periodic CAMs this value needs not to be re written because it is the same as that at the master minimum for this reason the intervals are made slightly narrower and the last value of the table describes the slave position at Master End Master End Master Start Number of elements 3 element optimized point table According to the setting in the lower part of the dialog a two dimensional typically not e
21. GEOINFO structure objects SM_CNC lib One line of the program is decoded per cycle Inputs of the module bExecute BOOL The function block will do a reset and start the decoding as soon as a rising edge is detected at this input SoftMotion in CoDeSys 2 3 6 1 Modules bAppend BOOL As long as this input is FALSE at each reset the DataOutQueue will be cleared As long as it is TRUE newly incoming data will be written to the end of the DataOutQueue bStepSuppress BOOL If this input is TRUE default lines of the CNC program starting with will be ignored At FALSE default they will be processed anyway piStartPosition Position of the point to be moved at the beginning of the path nSizeOutQueue UDINT Size of the data buffer to which the list of GEOINFO structure objects should be written This buffer must be at least five times as big as a GEOINFO structure this means about 2KB If this is not the case SMC_NCDecoder will not execute any actions at all The value can be set but may only be modified later during a reset pbyBufferOutQueue POINTER TO BYTE This input must point to the first byte of the memory area which has been allocated for the 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 a byte array e g BUF ARRAY 1 10000 OF BYTE for a 10000 byte memory area
22. Modules SMC_ChangeGearingRatio 2 2 4 With the aid of this module the IEC program can change the gearing ratio and the type of the drive After execution of this module the axis group should be restarted by SMC_ResetAxisGroup bKeepRatioSettings TRUE in order to guarantee that all variables are initialized correctly Inputs VAR_INPUT of the module bExecute BOOL At a rising edge the module will start dwRatioTechUnitsDenom DWORD iRatioTechUnitsNum DWORD SoftMotionUnit increments conversion ratio of see 2 1 fPositionPeriod LREAL Position period modulo value only for rotatory drives see 2 1 iMovementType INT o rotatory axis 1 linear axis In Outputs VAR_IN OUT of the module Axis AXIS_REF Drive for which the gearing ratio should be changed Outputs VAR OUTPUT of the module bDone BOOL TRUE as soon as the action has been executed bError BOOL TRUE if error occurred nErrorlID SMC_Error Error description Controller Mode Modules SMC_SetControllerMode If supported by the drive this module can be used to switch to another controller mode Inputs VAR_INPUT of the module bExecute BOOL Mit einer steigenden Flanke wird der Baustein aktiv nControllerMode SMC_CONTROLLER_MODE Desired controller mode SMC_torque torque SMC_velocity velocity SMC_position position SMC_current current In Outputs VAR_IN OUT of the module Axis AXIS_REF VAR_IN_OUT Drive
23. Q STRUCT pbyBufferQ POINTER TO BYTER nSizeQ UDINTR nReadPosQ UDINTR nWritePosQ UDINTR bFullQ BOOLR bEndOfListQ BOOLR byGeneratorQ BYTER END_STRUCT END_TYPE The variable byGenerator describes the originator of the queue This information is used by the Interpolator to check whether module SMC_CheckVelocities has been processed as last one as prescribed The following values are defined originator value SMC_NCDecoder 1 SMC_AvoidLoop 10 SMC_LimitCircularVelocity 11 SMC_RoundPath 12 SMC_SmoothPath 13 SMC_ToolCorr 14 SMC_RotateQueue2D 30 SMC_ScaleQueue3D 31 SMC_TranslateQueue3D 32 SMC_CheckVelocities 254 CNC Editor 255 The SoftMotion library SM CNC lib provides the following modules for the handling of a SMC OUTQUEUE structure object BOOL SMC_RESTOREQUEUE Enable BOOL POQ POINTER TO SMC_OUTQUEUE This function restores an already interpolated resp otherwise processed structure This is only possible if the list at POQ can contain the complete path POINTER TO SMC_OUTQUEUE SMC_APPENDOBJ POQ POINTER TO SMC_OUTQUEUE PGI POINTER TO SMC_GEOINFO This boolean function appends the GEOINFO object which is passed by PGI to the end of the list POQ if this list has been initialized correctly and is not yet filled completely In case of success the function returns a pointer to the new list element otherwise 0 SoftMotion in CoDeSys
24. REAL 0 internal deceleration at begin of cycle SoftMotion in CoDeSys 2 3 2 15 Variables of the AXIS_REF structure No Name Data type Initi value comments 1140 fSetJerk REAL 0 Commanded Jerk in technical units sec3 1141 fActJerk REAL 0 Actual Jerk in technical units sec 1142 16 fMaxJerk REAL 100 Maximum Jerk in techn units sec 1143 fSWMaxJerk REAL 100 Maximum Jerk for implicit movements in techn units sec 1146 fMarkJerk REAL 0 internal Jerk Mark 1150 fSetCurrent REAL 0 Set current A 1151 fActCurrent REAL 0 Actual Current A 1152 fMaxCurrent REAL 100 Maximum Current A 1153 fLimitCurrent REAL 0 Maximum current for implicit movements in techn units sec 1160 fSetTorque REAL 0 Commanded torque in Nm resp N linear 1161 fActTorque REAL 0 Current torque in Nm resp N linear 1162 fMaxTorque REAL 0 Maximum torque value in Nm resp N linear 1200 2 fSWLimitPositive REAL 0 Position limit in positive direction in techn units sec 1201 3 fSWLimitNegative REAL 0 Position limit in negative direction in techn units 1202 fCaptPosition REAL 0 Capture position in techn units 1205 bSWLimitEnable BOOL FALSE Enable Software end switch 1204 bSWEndSwitchActive BOOL FALSE Software end switch active 1206 bHWLimitEnable BOOL FALSE Enable disable hardware end switch to be used after overtravel 1207 bCaptureOccurred BOOL FALSE C
25. Slow_Stop TRUE and Vel 0 Wait_At_Next_Stop TRUE and Vel 0 bWorking BOOL This output gets TRUE as soon as the processing of the list has been started but is not yet finished IPRO_ACCEL or IPO_CONSTANT or IPO_DECEL or IPO_WAIT Otherwise bWorking is FALSE iActObjectSourceNo INT Here you find the value of SourceLine_Nr of the currently passed GEOINFO object of the Dataln queue If the SMC_Interpolator does not work any longer Working FALSE the value is 1 dVel LREAL This variable contains the current velocity which results if an object is moving from the preceeding position to Set_Position within the given time po_ Time vecActTangent SMC_VECTOR3D This structure contains the direction of the path valid for the position Set_Position lf Vel 0 vecAct_ Tangent is filled up with zeros iLastSwitch INT This output shows the number of the last passed switch Regard If several switches have been passed within one cycle only the last one will be shown dwSwitches DWORD This DWORD describes the current switch status of all switches 1 32 BitO of the DWORD represents switch1 Bit31 represents switch321 Bit31 for auxiliary mark 32 Thereby in contrast to iLastSwitch it can be avoided that any switch is not regarded dWayPos LREAL For a description see above input dLastWAyPos At each call the SMC_Interpolator will calculate and provide regarding the given parameters the velocity history a
26. Y100 E100 F100 E 200 N20 G01 240 F20 N30 G03 X 100 R200 F100 A SoftMotion CNC program must start with a In the same line optionally can be added separated by an empty space or by a TAB the program name The actual CNC program is composed of several sentences Each sentence line consists of as many words as needed A word consists of a letter word identifier and a subsequent number e g G01 see also the list below There is no case sensitivity and leading zeros are ignored GO1 g1 The first word of each sentence is built by the sentence number N lt number gt e g N01 The sentence number currently does not have any effect but is expected for conformity reasons The words of a sentence are separated by empty spaces of TABs They are processed from the right to the left Thereby all words except for the instructions G lt number gt e g G02 see the list below will effect that the sentence number will be assigned to a variable as defined by the sentence letter This variable finally will be accessed by the instruction Each sentence only may contain one instruction which must follow right to the sentence number If you do not enter an instruction in a sentence automatically that of the last sentence will be added A sentence starting wit the character will be skipped during processing if the option Step Suppress is activated Characters which are embraced by parenthesis will be interp
27. all important modules the library provides visualization templates which are linked to an instance of the corresponding module and visualize its in and outputs These visualizations may be very useful during the programming and testing of an application Preconditions This library is basing on the library Drive_Basic lib This library provides the structure AXIS_REF which is accessed by the library modules 5 2 PLCopen Specification Function blocks for motion control Version 1 0 It is recommended to read besides the on hand description also the PLCopen Specification Function blocks for motion control Version 1 0 The main items are summarized in short in the following Modules get activated in two ways a Enable Input If the module has an enable input like e g MC_ReadParameter it will be active exactly as long as Enable is TRUE b Execute Input The module gets activated by a rising edge Transition from FALSE to TRUE of the Execute Input and not will get active again until it has been terminated its movement or another module has taken control on the axis AXIS_REF or it has got a new rising edge at the Execute Input thus re starting the movement Please also regard that all input variables only will be read in case of a rising edge By the Done Output or another logical output the modules indicate either the validity of the outputs e g MC_ReadStatus or the termination of the movement e g MC_MoveAbsolute
28. and sent to the drives SoftMotion in CoDeSys 2 3 Chapter 6 The Library SM_CNC lib SMC_INTERPOLATOR bExecute BOOL poqDataln POINTER TO SMC_OUTQUEUE bSlow_Stop BOOL wErrorlD SMC_ERROR bEmergency_Stop BOOL piSetPosition SMC_POSINFO biWaitAtNextStop BOOL iStatus SMC_INT_STATUS dOverride LREAL bVVorking BOOL ivelMode SMC_INT_VELMODE iActObjectSourceNo INT dwipoTime DWORD d el LREAL dLastayPos LREAL vecActTangent SMC_VECTOR3D bAbort BOOL iLastSwitch INT dwSwitches DWORD diWayPos LREAL Inputs of the function block bExecute BOOL The function block will do a reset and start the path correction rounding path as soon as a rising edge is detected at this input poqDataln POINTER TO SMC_OUTQUEUE This variable points to the SMC_OUTQUEUE structure object which contains the SMC_GEOINFO objects of the unsmoothed path typically it points to the output DataOut of the preceeding module SMC_CheckVelocities bSlow_Stop BOOL If this variable is set to FALSE default the path will be passed non stop With TRUE the SMC_Interpolator will be caused to reduce the velocity to 0 according to the defined velocity profile byVelMode see below and the maximum delay of the current GEOINFO object dDecel see below and to wait until bSlow_Stop will be reset to FALSE bEmergency_Stop BOOL This input per default is FALSE As soon as it gets TRUE the SMC_Interpolator will cause an
29. can be catched by it The object list queue finally will be passed on first to the CheckVelocities module and finally to the Interpolator which will process it further on In this example you also see how a kinematic transformation which is not provided by the 3S library SM_TRAFO lib can be programmed manually The modules SMC_TRAFO and SMC_TRAFOF which are included in the project show this for the example of a cartesian X Y system 11 16 SoftMotion in CoDeSys 2 3 12 Index angle value 2 5 Avoid loop 3 10 Axis group 2 5 AXIS_REF structure 2 12 Axisgroup 2 1 BuslInterface 2 1 CAM 4 1 Edit mode 4 3 editing 4 4 Element properties 4 4 master axis 4 1 periodic 4 2 Properties 4 2 slave axis 4 1 CAM definition for SoftMotion 4 1 CAM disc master axis 4 1 CAM Element Properties 4 6 CAM Function Blocks 10 3 CAM_REF 4 8 CAM Editor 1 2 4 1 Create new CAM 4 2 Definition of a CAM for SoftMotion 4 1 Insert Select elements 4 7 Insert line 4 8 Insert point 4 8 Insert tappet 4 8 Start 4 1 CAMXYVA 4 9 Circle CCW Insert Mode 3 9 Circle CW Insert Mode 3 9 CNC language 3 2 CNC program 3 4 line number 3 2 sentence 3 2 sentence number 3 2 word 3 2 3 3 word identifier 3 2 CNC program Menu in the CNC Editor 3 4 CNC Editor 1 2 3 1 3 4 create program 3 4 Define queue size 3 5 Define start position 3 5 Delete 3 5 Divide object 3 7 Graphic Editor 3 8 Info 3 5 Invert direction 3 6 Move program 3 6 Rename CNC Program
30. error at stop 9 2 SoftMotion in CoDeSys 2 3 Chapter 9 The Library SM_Error lib Error Module Enum value Description no 181 MC_Stop SMC_MS_INVALID_ ACCDEC_VALUES Invalid velocity or acceleration values 182 MC_Stop SMC_MS_DIRECTION_NOT_APPLICABLE Direction shortest not applicable 183 MC_Stop SMC_MS_AXIS_IN_ERRORSTOP Drive is in errorstop status Stop cannot be executed 201 MC_MoveAbsolute SMC_MA_INVALID_VELACC_VALUES Invalid velocity or acceleration values 202 MC_MoveAbsolute SMC_MA_INVALID_DIRECTION Direction error 226 MC_MoveRelative SMC_MR_INVALID_VELACC_VALUES Invalid velocity or acceleration values 227 MC_MoveRelative SMC_MR_INVALID_DIRECTION Direction error 251 MC_MovedAdditive SMC_MAD_INVALID_VELACC_VALUES Invalid velocity or acceleration values 252 MC_MovedAdditive SMC_MAD_INVALID_DIRECTION Direction error 276 MC_MoveSuperlmposed SMC_MSI_INVALID_VELACC_VALUES Invalid velocity or acceleration values 277 MC_MoveSuperlmposed SMC_MSI_INVALID_ DIRECTION Direction error 301 MC_MoveVelocity SMC_MV_INVALID_ ACCDEC_VALUES Invalid velocity or acceleration values 302 MC_MoveVelocity SMC_MV_DIRECTION_NOT_APPLICABLE Direction shortest fastest not applicable 325 MC_PositionProfile SMC_PP_ARRAYSIZE Erroneous array size 326 MC_PositionProfile SMC_PP_STEPOMS Step time t 0s 350 MC_VelocityProfile SMC_VP_ARRAYSIZE erroneous
31. for which the controller mode should be changed SoftMotion in CoDeSys 2 3 2 7 SM_DriveBasic lib and automatic Code Generation Outputs VAR_ OUTPUT of the module bDone BOOL VAR_OUTPUT TRUE as soon as action has been executed bError BOOL VAR_OUTPUT TRUE if error occurred nErrorID SMC_Error VAR_OUTPUT Error description 2 2 5 Virtual time axis SMC_TIMEAXISFB bExecute BOOL Axis AXIS_REF bPeriodic BOOL fTaskCycle LREAL This function block creates a time axis which will be given out by the output Axis AXIS_REF At a rising edge in input bExecute the target position of the time axis starts to count up in seconds starting with 0 If input bPeriodic is set then it will restart with O as soon as the time given by fPeriod has been reached Input fOverride gives a time multiplicator which per default is set to 1 A 2 would make the time running twice as fast Input fRamp nTime defines how long the function block can take to ramp on the new override after the new target values have been read In input TaskCycle define the cycle time seconds of that task which is calling the function block 2 2 6 Referencing via digital hardware inputs SMC_Homing SMC_HOMING bExecute BOOL bDone BOOL fHomePosition LREAL bCommandAborted BOOL fvelocitySlow LREAL bError BOOL fvelocityF ast LREAL nErrorlD INT fAcceleration LREAL bStartLatchinglndex BOOL fDeceleration LREAL Axis AXIS_REF VAR_I
32. lt variable type gt _ lt number of elements gt _2 4 10 SMC_CAMVisu 5 19 SMC_CNC_REF data 7 1 SMC_ControlAxisByPos 8 1 SMC_ControlAxisByPosVel 8 2 SMC_ControlAxisByVel 8 2 SMC_Error 9 1 SMC_ErrorString 9 1 SMC_fmod 2 5 SMC_GEOINFO 6 15 6 16 SMC_GetAxisGroupState 2 5 SMC_GetCamSlaveSetPosition 5 19 SMC_GetMaxSetAccDec 2 10 SMC_GetMaxSetVelocity 2 10 SMC_GetTappetValue 5 21 SMC_GetTrackingError 2 10 SMC_Homing 2 9 SMC_lInterpolator 6 10 SMC_NCDECODER 6 1 SMC_OutQueue data 7 1 SMC_POSINFO 6 15 SMC_ReadCAM 10 3 SMC_ReadNCQueue 10 1 SMC_ReadSetPosition 5 22 SMC_Reset 5 2 SMC_ROTATEQUEUE2D_2D 6 15 SMC_RoundPath 6 7 6 19 SMC_SetTorque 5 22 SMC_ShowCNCREF 7 1 SMC_ShowQueue 7 1 SMC_SmoothPath 6 6 SMC_TimeAxisFB 2 8 SMC_ToolCorr 6 3 SMC_TRAFO_Gantry2 8 3 SMC_TRAFO_Gantry2 8 6 SMC_TRAFO_Gantry3 8 4 Index SMC_TRAFO_Scara2 8 7 SMC_TRAFO_Scara3 8 9 SMC_TRAFOF_Gantry2 8 3 SMC_TRAFOF_Gantry2 8 6 SMC_TRAFOF_Gantry3 8 4 SMC_TRAFOF_Scara2 8 8 SMC_TRAFOF_Scara3 8 10 SMC_TRAFOV_Gantry 8 5 SMC_TRANSLATEQUEUE3D_2D 6 15 SMC_VARLIST 10 2 SMC_VECTORSD 6 15 6 18 SMC_VECTOR6D 6 19 smooth path 6 6 SNC_ChangeGearingRatio 2 7 SNC_ISAxisGroupReady 2 5 SNC_ResetAxisGroup 2 6 SNC_SetControllerMode 2 7 SoftMotion CNC Library 6 1 SoftMotion Drive Interface 2 1 SoftMotion_CNC_Globals 6 15 Spline Insert Mode 3 9 Splines 3 10 Split object 3 6 standard language 3 2 Step Suppress 3 2 3 10 Stretch program 3 6 Tappet 4 4 Time axis 2 8 To
33. radius for correction G40 42 resp for Round of Path G50 51 max acceleration gt 0 deceleration lt 0 path units sec Velocity path units sec Instruction see below Switch on Switch point gt 0 Switch off lt 0 X coordinate of the circle ellipse centre G02 G03 G08 G09 or X coordinate of the parable tangent intersection point Y coordinate of the circle ellipse centre G02 G03 G08 G09 or Y coordinate of the parable tangent intersection point Direction of the ellipse main axis in mathematical sense 0 W 90 S absolute switch position see above H measured from start position gt 0 resp end position lt 0 of the path object relative switch see above H position 0 1 Target position of the additional axis P Target position of the additional axis Q Radius G02 G03 alternatively to I J or length relation subaxis main axis G08 G09 0 1 Switch on gt 0 off lt 0 the S profile for linear axes 3 Z axis 7 P axis 8 Q axis 9 U axis 10 V axis 11 W axis Target position of the additional axis U Target position of the additional axis V Target position of the additional axisW X coordinate of the target position Y coordinate of the target position Target position of the additional axis Z Drive instructions G00 G01 G02 G03 G05 G06 G08 G09 G40 G41 direct movement without tool contact Positioning linear straight movement with tool contact
34. rising edge at this variable the module will start the motion 5 6 SoftMotion in CoDeSys 2 3 Chapter 5 The Library SM_PLCopen lib Position REAL Target position for the motion technical unit u Velocity REAL Value of the target velocity not necessarily to be reached u s Acceleration REAL Desired acceleration increasing energy of the motor u s 2 Deceleration REAL Desired deceleration decreasing energy of the motor u s 2 nDirection MC_Direction Default shortest This enumeration provides the desired direction only relevant for rotating axes modulo axis see Drive_Basic lib Permissible values current current direction positive negative shortest seen from the current position fastest direction which would finish movement as fast as possible Outputs of the function block Done BOOL Default FALSE This variable gets TRUE as soon as the commanded position has been reached this means as soon as the drive has been stopped CommandAborted BOOL Default FALSE This variable gets TRUE as soon as the commanded motion was interrupted by any motion function block acting on the same axis except MoveSuperlmposed Error BOOL Default FALSE This variable gets TRUE when an error has occurred in the function block ErrorlD INT Error number MC_MoveAdditive This function block which is part of the SM _PLCopen lib has two different modes of action depending on the current
35. sec and which at least contains one inverting tappet with ID1 for example Kurvenscheiben of x 200t u 175t u 150t u 125t u 100t u x 75tu 7 50t u 25t u Ot u O Osec 1 0sec 20sec 30sec 40sec 50sec 60sec 70sec 80sec 9 0sec 10 0sec roe Ty OK Activate with Action invert Group ID fi Apply Cancel Delay us p Duration us fp Master position fa 879 Slave position fi 75 125 ikl SoftMotion in CoDeSys 2 3 11 7 Example Changing CAMs 3 Create the program ipo in FBD and include the calls of the following modules PROGRAM Ipo VAR Power MC Power TimeAxis SMC_TimeAxisFB TableSelect MC CamTableSelect SlaveAbsolute TRUE amIn MC CamIn StartMode ramp_ in VelocityDiff 100 Acceleration 100 Deceleration 100 Tappet SMC _GetTappetValue END _ VAR After the Power module MC_Power for the slave axis first the time axis module will be called SMC_TimeAxis Give it a period of 10 seconds because the CAM is configured for this time The task cycle time must be inserted manually TableSelect will select the desired CAM and Camin will realize it The Tappet module checks the position of the tappet Due to the fact that the tappet is configured inverted it will switch every 10 seconds Now you can compile the program and start it on the controller In order to control the target resp current position create a visualizat
36. state of the axis 1 discrete_motion The Distance value will be added to the target position of the module which is currently processing on the axis The motion will aim at the new target position then 2 continuous_motion or standstill The Distance will be covered referring to the current position regarding the given parameters MC_MOVEADDITIVE Done BOOL CommandAborted BOOL Acceleration LREAL 3 Deceleration LREAL Axis AXIS_REF VAR_IN_OUT Axis AXIS_REF VAR_IN_OUT In Output VAR_IN_OUT of the function block Axis AXIS_REF This variable passes the structure which has been feded with the axis data by the Drive Interface Drive_Basic lib SoftMotion in CoDeSys 2 3 5 7 Modules for Controlling Single Axis Motions Inputs of the function block Execute BOOL Default FALSE At a rising edge at this variable the module will start the motion Distance REAL Relative distance for the motion in technical unit u Velocity REAL Value of the target velocity not necessarily to be reached u s Acceleration REAL Desired acceleration increasing energy of the motor u s 2 Deceleration REAL Desired deceleration decreasing energy of the motor u s 2 Outputs of the function block Done BOOL Default FALSE This variable gets TRUE as soon as the commanded position has been reached this means as soon as the drive has been stopped CommandAborted BOOL Default FALSE This
37. straight movement G01 CLW 2 circle in clockwise direction G02 CCLW 3 circle in counterclockwise direction G03 SPLINE 5 spline parable G05 G06 ELLCLW 8 Ellipse clockwise G08 ELLCCLW 9 Ellipse counterclockwise G09 LINPOS 100 straight positioning G00 INITPOS 110 blind positioning start point not yet known a continuous position will be added by the SMC_Interpolator piStartPos SMC_POSINFO This structure describes the exact start position of the object will be ignored if Move_Type INITPOS piDestPos SMC_POSINFO This structure describes the exact end position of the object dP1 dP8 LREAL These variables contain depending on the Move_Type see above further path describing information LIN not relevant because the complete information already is contained in Start_Pos and LINPOS Dest_Pos CLW dP1 X coordinate of the circle centre CELW dP2 Y coordinate of the circle centre dP3 Circle radius SPLINE spline parameter ELLCLW P1 X Coordinate of the circle centre PERG OEN P2 Y Coordinate of the circle centre P3 X Component of the mainaxis 1 vector P4 Y Component of the mainaxis 1 vector P5 Lenght of the main axis P6 Length of the sub axis P7 Direction of the main axis P8 Ratio P6 P5 INITPOS not relevant dT1 dT2 LREAL These variables contain the start and the end position of the parameter Depending on the Move_Type this means SoftMotion in
38. switched to be a point then it will automatically get a certain length if a point is switched to be a line automatically the coordinates of the start point of the line will be applied Master start Master end Start and end values on the X axis Master unit see Extras Settings Slave start slave end Start and end values on the Y axis Slave unit see Extras Settings Velocity only for Points Acceleration only for Points Tappet By a double click on the element in the CAM editor window the dialog Tappet properties gets opened where the following settings can be made 4 4 SoftMotion in CoDeSys 2 3 Chapter 4 The CAM Editor Activate with E Action on ba Group ID noO o Apply Delay us pooo Duration ps ot Cancel Master position 67 000 Slave position fp 000 Activate with The tappet gets activated this means that the boolean variable tappet bit which is assigned to the tappet GroupID see below will be set to TRUE when the CAM is run through one of the following options can be set to define when exactly this should happen positive pass if the CAM is passed through from the left to the right after confirming with Apply the green arrow above the tappet symbol will point to the right negative pass if the CAM is passed through from the right to the left after confirming with Apply the green arrow above the tappet symbol will point to the left each pass at each pass of the CAM af
39. the programming examples in Chapter 11 Definition of a CAM for SoftMotion 4 3 A CAM describes seen in a simplified manner the functional dependence of a value Slave on another Master In order to describe this dependency the master axis is divided up in different segments For each segment interval a b CoDeSys provides two possibilities to image a functional mapping of the master axis on the slave axis e Line The dependency is described by a linear image In this kind of segment the first derivative velocity is constant according to the slope of the line the second derivative is 0 e 5 exponent Polynom In this kind of segment the dependency is described by a 5 exponent polynomial Thus the first and the second derivative become 4 and 3 exponent polynomials The functions in these segments must follow on each other in a way that at the transition points as well the function value as also at least the first and second derivatives are continuous In the CAM Editor single base points and lines can be inserted The remaining sections between will be filled up automatically by the editor with 5 exponent polynomials Thereby the requirements concerning continuity and differentiation are regarded Along a line the function value the first derivative velocity in this case constant and the second derivative acceleration in this case always 0 are defined A point however can be defined with any first and second deriv
40. the x y and Z axes SMC_TRAFO_Gantry2 SMC_TRAFO_GANTR Y2 pi Ski _Posinfa dx LREAL dOffsets LREAL dy LREAL dOtfsety LREAL pi SMC_PosInfo Target position vector Output of the Interpolator dOffsetX dOffsetY LREAL Offset for x and y axis dx dy LREAL Target values for x and y axis SMC_TRAFOF_Gantry2 ShiC_TRAFOF_GANTRY2 de dy cnx dny ratio dncttsetk Driver AXIS_ REF VAR_IN_ OUT dndtsety Drive AXIS REF WARI OUT Drives ASIS_REF AR_IN_OUT Drive AXIS REF MAR_IN_OUT dOffsetX dOffsetY LREAL Offset for x and y axis Same values as described for SMC_TRAFO_Gantry2 minX maxX minY maxY LREAL Move range for visualization DriveX DriveY AXIS_REF X y axis dx dy LREAL x y position in Geo coordinates dnx dny dnOffsetX dnOffsetY LREAL SoftMotion in CoDeSys 2 3 8 3 Transformation function blocks Standardized x and y position 0 1 and offsets for visualization ratio LREAL Ratio of x interval and y interval for visualization SMC_TRAFO_Gantry3 SMC_TRAFO_GANTRY3 pi SMC_Posinfo dx LREAL dOffsetX LREAL dy LREAL dOffsetyY LREAL dz LREAL dOffsetZ LREAL pi SMC_Poslinfo Target position vector Output of the Interpolator dOffsetX dOffsetY dOffsetZ LREAL Offset for x y und z axis dx dy dz LREAL Target values for x y and z axis SMC_TRAFOF_Gantry3 ShiC_TRAFOF_GANTRYS dnx dry ra
41. tool bar to insert a new point in the CAM A point symbol will be added to the cursor Position the cursor where you want to set the new point and press the left mouse button The point symbol red filled circle with a hair cross will be displayed on the curve and additionally a horizontal tangent representing the slope will be shown If you loose the mouse button the point will be inserted and automatically it will be switched to the select mode Select elements If you keep the left mouse button pressed during inserting the new point you can immediately modify the slope of the tangent Velocity by moving the mouse Insert Insert line L Select this command in the Insert menu or press the button in the tool bar to insert a line in the CAM A line symbol will be added to the cursor Position the cursor where you want to start the line left end point and keep the mouse button pressed Move the cursor to the desired endpoint which must be to the right of the start point and to the left of the next defined point line or tappet As soon as you loose the left mouse button the end point will be applied and automatically it will be switched to the select mode Select elements Insert Insert tappet Select this command in Insert menu or press the button in the tool bar to insert a tappet in the CAM A tappet symbol will be added to the cursor Position the cursor on the desired position for the new tappet You do not h
42. top FALSE bError BOOL TRUE Invalid values dA dB LREAL Axis position A resp B axis SoftMotion in CoDeSys 2 3 Transformation function blocks SMC_TRAFOF_Scara2 SMC_TRAFOF_SCARA2 dAlpha DriveA AXIS_LREF VAR_IN_OUT dBeta DriveB AXIS_REF VAR_IN_OUT dpx dpy dnx dny dR1 dR2 DriveA AXIS_REF VAR_IN_OUT DriveB AXIS_REF VAR_IN_OUT dOffsetA dOffsetB LREAL Offset for A and B axis Identical values like at SMC_TRAFO_Scaraz2 dArmLength1 dArmLength2 LREAL Length of first and second arm DriveA DriveB AXIS_REF A B axis bError BOOL TRUE Invalid values dx dy LREAL X y position in geo coordinates dAlpha dBeta LREAL Joint angle axis positions without offset for visualization dpx dpy LREAL Standardized position of the first joint 1 1 for visualization dnx dny LREAL Standardized position of the manipulator 1 1 for visualization dR1 dR2 LREAL Relative arm lengths dR1 dR2 1 0 1 for visualization 8 8 SoftMotion in CoDeSys 2 3 Chapter 8 The Library SM_Trafo lib 8 3 4 3 Jointed Scara Systems SMC_TRAFO_Scara3 SMC_TRAFO_SCARAS pi SkIC_Posinfa bError BOL dDirection LREAL dA LREAL dOffset4 LREAL dB LREAL d fsetB LREAL dc LREAL doffsetC LREAL gdArmLengthi LREAL darmLength LREAL darmLengths LREAL bElbowLow POOL pi SMC_PosInfo Target position vector Output of the Interpolator
43. variable dRadius The value of dRadius is dominant This means that only if dRadius 0 the value of the object will be regarded If the defined value is higher than the half length of one of the both SMC_GEOINFO objects then the half length will be used The function block SMC_RoundPath is working as described in the following SoftMotion in CoDeSys 2 3 6 7 Modules All SMC_GEOINFO objects which are found in the Input OUTQUEUE Structure will be checked one after the other If in one of the objects Bit5 of the variable Intern _Mark is set then starting there angles will be rounded as long as in one of the subsequent objects Bit3 of Intern_Mark is set The SMC_NCDecoder module will set these bits as a reaction to the instructions G52 G50 In other words The Round Path functionality will be executed for all objects which are placed between the instructions G50 and G51 Inputs of the module bExecute BOOL The function block will do a reset and start the path correction rounding path as soon as a rising edge is detected at this input bAppend BOOL As long as this input is FALSE at each reset the DataOutQueue will be cleared As long as it is TRUE newly incoming data will be written to the end of the DataOutQueue poqDataln POINTER TO SMC_OUTQUEUE This variable points to the SMC_OUTQUEUE structure object which contains the SMC_GEOINFO objects of the unsmoothed path typically on the output DataOut of the preceeding module
44. variable gets TRUE as soon as the commanded motion was interrupted by any motion function block acting on the same axis except MoveSuperlmposed Error BOOL Default FALSE This variable gets TRUE when an error has occurred in the function block ErrorlD INT Error number MC_MoveRelative This function block which is part of the SM_PLCopen lib moves the axis by a relative distance according to the defined velocity deceleration and acceleration values The distance can have positive or negative values MC_MOVERELATIVE Acceleration LREAL Deceleration LREAL Axis AXIS_REF VAR_IN_OUT Axis AXIS_REF VAR_IN_OUT In Output VAR_IN OUT of the function block Axis AXIS_REF This variable passes the structure which has been feded with the axis data by the Drive Interface Drive_Basic lib Inputs of the function block Execute BOOL Default FALSE At a rising edge at this variable the module will start the motion Distance REAL Relative distance for the motion in technical unit u 5 8 SoftMotion in CoDeSys 2 3 Chapter 5 The Library SM_PLCopen lib Velocity REAL Value of the target velocity not necessarily to be reached u s Acceleration REAL Desired acceleration increasing energy of the motor u s 2 Deceleration REAL Desired deceleration decreasing energy of the motor u s 2 Outputs of the function block Done BOOL Default FALSE This variable gets TRUE as
45. 1 X40 000000 Y50 000000 N20 G01 X123 000000 Y 73 550000 The resulting new Y subposition will be automatically adapted according to the path progression 3 6 SoftMotion in CoDeSys 2 3 Chapter 3 The CNC Editor in CoDeSys Read CNC program from file You can load a CNC program which is stored in a file in ASCII format The standard dialog for opening a file will be available where you can select the desired txt file In the next dialog you must insert a name for the program before it can get loaded to the editor Write CNC program to file You can write the current CNC program to a file in ASCII format txt If the file you define is existing already CoDeSys will ask for a confirmation Import DXF file Use this command if you want to import a DXF file to your CNC program The standard dialog for opening a file will be opened where you can browse for the desired DXF file Then the dialog DXF import options will open where you enter a base name for the CNC program s Program base name which should be created from the DXF file and where you activate one of the following options e One NC program for whole DXF file all pathes described in the DXF file will be written to one CNC program e One NC program for each DXF layer for each DXF layer a separate CNC program will be created e One NC program for each coherent segment for each coherent path segment a separate CNC program will be created Due to the fact that in a D
46. 160 180 200 220 240 260 280 300 320 340 360 For editing the above described settings the properties dialog for the currently marked CAM can get reopened anytime by a double click on the entry in the CAM list or by using the command Settings which is available in the Extras menu or the context menu CAM tree In the left part of the editor window a tree is displayed showing all CAMs B and CAM switches tappets These elements always are sorted in a way that all elements which have the same master scaling that means which potentially refer to the same axis have the same father 4 4 Editing a CAM In the left column of the editor select the CAM which you want to edit For this purpose perform a mouse click on the entry which hence will be displayed selected shaded and displayed in the editor windows By simultaneously pressing the lt Ctrl gt key and performing a mouse click on one or several further CAMs which have the same master see chapter 4 3 CAM tree those will be displayed additonally 4 4 1 General Editor Settings For a description of the corresponding commands in the Extras and Insert menus see Chapter 4 4 3 The Edit mode can be selected in the Insert menu or by the corresponding button in the tool bar i Select elements iH insert point 4 Insert line l l Insert tappet SoftMotion in CoDeSys 2 3 4 3 Editing a CAM Editing the general properties of the CAM disc In o
47. 2 3 6 19 Structures in the SM_CNC lib BOOL SMC_DELETEOBJ POQ POINTER TO SMC_OUTQUEUE N UINT This boolean function deletes the N th object from the list POQ whereby counting starts with 0 If N 1 is greater than the number of GEOINFO objects stored in the list nothing will happen and FALSE will be returned otherwise TRUE UINT SMC_GETCOUNT POQ POINTER TO SMC_OUTQUEUE This function of data type UINT returns the number of objects which are stored in the SMC_OUTQUEUE list POQ POINTER TO SMC_GEOINFO GETOBJFROMEND POQ POINTER TO SMC_OUTQUEUE N UINT This function returns provided that POQ is initialized correctly and that there are at least N 7 elements a pointer to the N th GEO NFO object start counting from the end of the list POQ so for N 0 the last list element would be returned Initialization of the structure The SoftMotion modules SMC_NCDecoder SMC_SmoothPath SMC_RoundPath SMC_AvoidLoop and SMC_ToolCorr which provide a pointer to an internally handled OUTQUEUE structure automatically will do the initialization of this structure The modules SMC_SmoothPath SMC_RoundPath SMC_ToolCorr SMC_AvoidLoop and SMC_Interpolator need the pointer on a correct OUTQUEUE list as an input If this list is programmed and filled manually then the correct initialization also must be done manually For this purpose the first two variables buffer size have to be set It is strictly recommended to use the above des
48. 7 Example Drive Control via the CNC EGitor 0 c eeseeeeeeeeeeeeeeeseeenteeseeenen 11 8 11 7 1 CNC Example 1 Direct Creation of the OUtQUEUE cccceccceccceeeeeeeeeeteeees 11 8 11 7 2 CNC Example 2 Decoding online with use of variables cceeeeeeeeeeteeees 11 11 11 7 3 CNC Example 3 Path Preprocessing online cccccecccecccceeeceeeceeeeeeeeeteeees 11 13 11 8 Dynamic SoftMotion ProgramMming eceeeeeeeeeeeeeeeeeeeeaeeeeeeeeeeeeenaaeeeeeeeeneee 11 15 12 Index l ii SoftMotion in CoDeSys 2 3 Chapter 1 Softmotion Concept and Components Overview 1 Softmotion Concept and Components Overview SoftMotion allows to realize movements simple single axis movements and CAMs as well as complex motions in more dimensions in the development environment of CoDeSys Particularly applications where not solely the motion functionality but also sequence and process control or auxiliary functions are the main thing of the application are an ideal implementation area for SoftMotion SoftMotion is a kind of toolkit suitable to exert influence also during the runtime without demanding big effort and detailed know how for the realization of the desired motions The complete program logic is handled in the PLC program and just the pure motion information is executed by the library functions E on a minm GA GMA i SOTET Drive Interface CAN E SERCOS M 10V W clockdir
49. 8 MC_CamlIn SMC_CI_SCALING_INCORRECT Scaling variables fEditor TableMasterMin Max are not correct 675 MC_GearlIn SMC_GI_RATIO_DENOM RatioDenominator 0 676 MC_GearlIn SMC_GIL_INVALID_ACC Acceleration invalid 677 MC_GearlIn SMC_GI_INVALID_DEC Deceleration invalid 725 MC_Phase SMC_PH_INVALID_VELACCDEC Velocity Deceleration or Acceleration values invalid 726 MC_Phase SMC_PH_ROTARYAXIS_PERIODO Rotation axis with fPositionPeriod 0 1001 SMC_Interpolator SMC_INT_VEL_ZERO Path not unfahrbar da Soll Geschwindigkeit 0 1002 SMC_Interpolator SMC_INT_NO_STOP_AT_END Last path object has Vel_End gt 0 1003 SMC_Interpolator SMC_INT_DATA_UNDERRUN GEOINFO List processed in Dataln but end of list not set Reason Forgotten to set EndOfList of the queue in Dataln or SMC_Interpolator is faster than the path generating modules 9 4 SoftMotion in CoDeSys 2 3 Chapter 9 The Library SM_Error lib Error Module Enum value Description no 1004 SMC_Interpolator SMC_INT_VEL_NONZERO_AT_STOP Velocity at Stop gt 0 1005 SMC_Interpolator SMC_INT_TOO_MANY_RECURSIONS To much SMC_Interpolator recursions SoftMotion Error 1006 SMC_Interpolator SMC_INT_NO_CHECKVELOCITIES Input OutQueue Dataln has not as last processed module SMC_CHeckVelocities 1080 SMC _Interpolator SMC_WAR_INT_OUTQUEUE_TOO_SMALL Warning OutQueue Dataln dimensioned too smal
50. 80 File path and name pBuffer POINTER TO BYTE Pointer on a sufficiently large free data area buffer which is allocated in the IEC application dwBufferSize DWORD Size of the buffer in Byte Outputs of the module bDone BOOL Gets set after the queue has been read completely bError BOOL TRUE Error has occurred ErrorlD SMC_ERROR Error number poqDataOut POINTER TO SMC_OUTQUEUE Pointer on a queue which has been read in iObjectsRead UDINT Number of the SMC_Geolnfo objects which have been read and written to the queue up to now SoftMotion in CoDeSys 2 3 10 1 CNC function blocks SMC_ReadNCFile This module reads a NC ASCII file from the file system of the controller in order to make it available for the SMC_NCDecoder Thus at runtime a NC program can be read in and realized SMC_READNCFILE bExecute BOOL bDone BOOL sFileName STRING 80 bError BOOL pBuffer POINTER TO BYTE ErrorlD SMC_ERROR dwBufferSize DWORD neprog SMC_CNC_REF Inputs of the function block bExecute BOOL At a rising edge the module starts to read in the program sFileName STRING 80 File path and name pyl POINTER TO SMC_VARLIST Pointer on a SMC_VARLIST object see below If no variables are used in the CNC program this input will not be used pBuffer POINTER TO BYTE Pointer to a free data area which is allocated in the IEC application and which is big enough dwBufferSize DWORD Size of the data are
51. BufferOutQueue POINTER TO BYTE This input must point to the first byte of the memory area which 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 a byte array e g BUF ARRAY 1 10000 OF BYTE fora 10000 byte memory area The value can be predefined but later it only may be modified during a reset Outputs of the function block bDone BOOL This variable will be set to TRUE as soon as the input data from Dataln are processed completely Thereafter the module will not perform any further actions until it gets reset If input bExecute is FALSE bDone will be reset to FALSE bError BOOL In case of an error this input gets TRUE wErrorlID SMC_ERROR INT In case of an error this input shows the error number poqDataOut POINTER TO SMC_OUTQUEUE This output variable points to a SMC OUTQUEUE structure which manages the slured SMC_GEOINFO objects SMC_RoundPath The SMC_RoundPath function block is very similar to the SMC_SmoothPath module It rounds angles which result at the junction of two lines by circular arcs For this purpose the path will be cut in distance r to the angle and a spline will be inserted The distance is given on the one hand by the SMC_GEOINFO structure object of the first object which should be smoothed and on the other hand by the input
52. Circle segment clockwise Circle segment counterclockwise Point of a cardinal spline Parable Ellipse segment clockwise Ellipse segment counterclockwise End of the tool radius correction Start the tool radius correction to the left of the work piece SoftMotion in CoDeSys 2 3 3 3 Start Inserting and Managing of CNC Programs G42 Start the tool radius correction to the right of the work piece G50 End of round off path slur path function G51 Start the slur path function G52 Start the round off path function G60 End of the avoid loop function G61 Start of the avoid loop function G90 Start interpreting the following coordinate values for X Y Z P W as absolute values default G91 Start interpreting the following coordinate values for X Y Z P W as relative values G98 Start interpreting the following coordinate values of I J as absolute values G99 Start interpreting the following coordinate values of I J as values relative to the starting point standard Please regard that the library SM_CNC lib must be included to enable an error free compilation of the project 3 3 Start Inserting and Managing of CNC Programs The CNC Editor is to be started in the Resources tab in the Object Organizer A tripartite window will open the title is CNC program list In the left column there is a list of the existing programs The upper right window part serves as a text editor where the CNC program can be written accordi
53. CoDeSys 2 3 6 17 Structures in the SM_CNC lib LIN not relevant because the complete information already is contained Start_Pos and LINPOS Dest_Pos CLW dT1 start angle in mathematical sense degree 0 East 90 North 180 West 360 South dT2 apex angle of the circle length of the circular arc degree e g 90 quarter of a circle 180 semicircle CCLW dT1 start angle in mathematical sense degree 0 East 90 North 180 West 360 South dT2 negative apex angle of the circle e g 90 quarter of circle 180 semicircle SPLINE start and end value of parameter t see description of a spline Default 0 and 1 INITPOS not relevant dToolRadius LREAL This variable contains the information necessary for the path preprocessing see The SMC_ToolCorr Module The SMC_RoundPath Module The entry is without any meaning if none of the appropriate path preprocessing modules is called SMC_ToolCorr SMC_RoundPath dVel dVelEnd LREAL These variables which must be assigned in any case contain information on the velocity profile of the object dVe describes the target velocity which should be reached dVelEnd describes the velocity which must be run at the end of the object see The SMC_Interpolator Module path units sec dAccel dDecel LREAL dAccel describes the maximum allowed acceleration dDecel the maximum allowed deceleration path units sec Both variables
54. DrivelVAR oo Z_Drive VAR wContralType CONFIG x POS gt i MF wCyclicDataS1 SetPosit wCyclicDataS2 SetTorque wCyclicDataS3 x u e Now we are going to parameterize the drives For this purpose we open the Modulparameter Dialog e First define the ID wDriveld according to the drive configuration In our example 1 2 3 and 4 In the following it will be described how the settings in tab Module parameters have to be done much easier and self explanatory that also can be done via the dialogs e The portal drives each can be moved between 50cm and 50cm We configure their weighting translational We use an increment of 10 7 m resp 10 7m s for all position and velocity data Thus all position and velocity data basically have to be evaluated with the unit 10 7m resp 10 7m s If we want to change this to a unit of mm sec we have to enter 10000 for the parameter dwRatio TechUnitsDenom 10000 and 1 for iRatioTechUnitsNum Due to the fact that it is a linear drive fPositionPeriod has no meaning But you still have to specify the data which will be sent and received cyclically For example If we refer to master telegram it is sufficient to choose POS VEL gt POS VEL in the scroll list of wControlType This will cause that cyclically the position and velocity target values will be sent and the current position and velocity values will be received In order to have an ad
55. EF Describes the axis structure see Chapter 2 4 which should switch the tappets CamTable MC_CAM_REF Description of a maybe empty CAM containing the description of the tappets SoftMotion in CoDeSys 2 3 Chapter 5 The Library SM_PLCopen lib bTappet ARRAY 1 MAX_NUM_TAPPETS OF BOOL Tappet bits Inputs of the function block Enable BOOL Default FALSE At TRUE the function block starts to switch the tappets MasterOffset REAL Offset to be added to the master position MasterScaling REAL Default 1 General scale factor for master axis TappetHysteresis REAL Hysteresis around tappets DeadTimeCompensation REAL Dead time in sec The position of the master axis to be expected will be calculated by linear extrapolation Outputs of the function block Error BOOL Default FALSE TRUE indicates that an error has occurred in the function block ErrorlD INT Error number EndOfProfile BOOL At the transition from the end of the path profile to the start this output gets true for the time period of one cycle SMC_CAMREGISTER Enable BOOL Error BOOL MasterOffset LREAL ErrorlD WORD MasterScaling LREAL EndoOfProfile BOOL TappetHysteresis LREAL Master AXIS_REF VAR_IN_OUT DeadTimeCompensation LREAL CamTable MC_CAM_REF VAR_IN_OUT Master AXIS_REF VAR_IN_OUT bTappet ARRAY 1 MAX_NUM_TAPPETS OF BOOL VAR_IN_OUT CamTable MC_CAM_REF VAR_IN_OUT bTappet ARRAY 1 MAX
56. IS REF VAR_IM_ OUT Inputs of the function block iStatus SMC_INT_STATUS State of the Interpolation module Gets connected with the homonymous output of SMC_Interpolator bEnable BOOL Controls the axis as long as is TRUE bAvoidGaps BOOL TRUE The module watches position and velocity If the velocity exceeds the limit which is stored in the axis fSWMaxVelocity then the module will set output bStoplpo and move the axis according to the parameters fGapVelocity fGapAcceleration and fGapDeceleration to this position and then will delete output bStoplpo fSetPosition LREAL Target position of the axis Typically this is an output of the Transformation module fGapVelocity fGapAcceleration fGapDeceleration LREAL Move parameters for bridging a jump Outputs of the function block bCommandAborted BOOL Default FALSE TRUE The module has been aborted by another one bError BOOL Default FALSE TRUE An error has occurred in the module SoftMotion in CoDeSys 2 3 8 1 Transformation function blocks iErrorlD SMC_Error INT Error number bStoplpo BOOL Default FALSE TRUE the module has detected a jump in velocity or position and is just adjusting to the new position For this reason this output should be connected to the EmergencyStop input of the SMC_Interpolator so that the Interpolator will wait until the axis is positioned correctly SMC_ControlAxisByPosVel This module works similar to SMC_ControlAx
57. MC_Reset This function block which is part of the SM_PLCopen lib reset the axis state SMC_AXIS_STATE from error_stop to standstill MC_RESET Execute BOOL Axis AXIS_REF VAR_IN_OUT Axis AXIS_REF VAR_IN_OUT 5 2 SoftMotion in CoDeSys 2 3 Chapter 5 The Library SM_PLCopen lib MC_ReadParameter MC_ReadBoolParameter These function blocks which are part of the SM_PLCopen lib can be used to read some standard parameters of the drive structure Their numbers partially are specified by PLCopen partially they are defined by the 3S Smart Software Solutions GmbH Drive Interface These modules also can be used to read manufacturer specific data from the drive This modules also can be used to read manufacturer specific data from the drive A document belonging to the particular drive library XXXDrive lib will describe the coding of the drive specific parameter numbers MC_READPARAMETER Enable BOOL ParameterNumber DINT Axis AXIS_REF VAR_IN_OUT ErrorlD WORD Yalue LREAL Axis AXIS_LREF VAR_IN_OUT MC_READBOOLPARAMETER Enable BOOL ParameterNumber DINT Axis AXIS_REF VAR_IN_OUT ErrorlD WORD value BOOL Axis AXIS_REF VAR_IN_OUT MC_WriteParameter MC_WriteBoolParameter These function blocks which are part of the SM _PLCopen lib can be used to set some standard parameters of the drive structure Their numbers partially are specified by PLCopen partially they are defin
58. Mode is If this option is activated you can select a graphic element in the CNC Editor by a mouse click A selected element will be marked red colored and in the text editor the corresponding line will also be marked By a click on the end point of an element and keeping the mouse button pressed the element can be shifted by moving the mouse Extras Line Insert Mode Ail If this option is activated a mouse click within the editor panel will insert a G01 line element The line will start behind the currently selected red marked element The mouse position defines the second end point of the line Extras Circle CW Insert Mode G2 If this option is activated a mouse click within the editor panel will insert a G02 circle element used for a motion of clockwise rotation The new element will be inserted behind the currently marked red colored element The mouse position defines the second end point The radius of the circle will be set to 100 by default and if necessary must be modified in the text editor Extras Circle CCW Insert Mode ay If this option is activated a mouse click within the editor panel will insert a G03 circle element which is used for a motion of counterclockwise rotation The new element will be inserted behind the currently marked red colored element The mouse position defines the second end point The radius of the circle will be set to 100 by default and if necessary mus
59. N_OUT nDirection MC_Direction bEndSwitch BOOL fSignalDelay LREAL nHomingMode SMC_HOMING_MODE bReturnToZero BOOL bindexOccured BOOL findexPosition LREAL blgnoreH Limit BOOL Axis AXIS_REF VAR_IN_OUT 2 8 SoftMotion in CoDeSys 2 3 Chapter 2 The SoftMotion Drive Interface This function block can execute the reference move of an axis As an ON switch a boolean value is used typically a hardware input After the module has been started with a rising edge in bExecute it moves the axis at a velocity fVelocityFast in a direction defined by nDirection until the bEndSwitch FALSE i e the reference switch will be closed Then the axis will be slowed down and driven in the opposite direction according to fVelocitySlow The reference position will be set and the drive will be stopped at exactly that point where the reference switch opens bEndSwitch TRUE Inputs of the module bExecute BOOL Default FALSE At a rising edge the reference motion of the drive will be started fHomePosition REAL Absolute position on the reference position u fVelocitySlow fVelocityFast REAL Target velocity for phase 1 and 2 in u s fAcceleration fDeceleration REAL Target acceleration and deceleration in u s nDirection MC_Direction Default negative Direction of the reference motion permissible values positive negative bEndSwitch BOOL Default TRUE Reference switch TRUE open FALSE closed fSi
60. OL Error BOOL Deceleration LREAL ErrorlD INT Axis AXIS_LREF VAR_IN_OUT Axis AXIS_REF VAR_IN_OUT In Output VAR_IN OUT of the function block Axis AXIS_REF This variable passes the structure which has been feded with the axis data by the Drive Interface Drive_Basic lib Inputs of the function block Execute BOOL Default FALSE At arising edge at this variable the module will start the motion SoftMotion in CoDeSys 2 3 5 9 Modules for Controlling Single Axis Motions Distance REAL Relative distance for the motion in technical unit u VelocityDiff REAL Value of the maximum velocity difference to the ongoing motion not necessarily reached u s Acceleration REAL Desired acceleration increasing energy of the motor u s 2 Deceleration REAL Desired deceleration decreasing energy of the motor u s 2 Outputs of the function blocke Done BOOL Default FALSE This variable gets TRUE as soon as the commanded position has been reached Busy BOOL Default FALSE This variable is TRUE as long as the superimposed motion currently is being processed CommandAborted BOOL Default FALSE This variable gets TRUE as soon as the commanded motion was interrupted by any motion function block acting on the same axis Error BOOL Default FALSE This variable gets TRUE when an error has occurred in the function block ErrorlD INT Error number MC_MoveVelocity This functio
61. OOL RatioNumerator INT CommandAborted BOOL RatioDenominator UINT Error BOOL Acceleration LREAL ErrorlD WORD Deceleration LREAL Master AXIS_REF VAR_IN_OUT Master AXIS_REF VAR_IN_OUT Slave AXIS_REF VAR_IN_OUT Slave AXIS_REF VAR_IN_OUT MC_GearOut Using this module which is provided by the library SM_PLCopen lib you can disengage the slave drive from the master The slave will be driven on with the current velocity MC_GEAROUT Execute BOOL Slave AXIS_REF VAR_IN_OUT ErrorlD WORD Slave AXIS_REF VAR_IN_OUT MC_Phasing Using this module which is provided by the library SM_PLCopen lib you can effect a constant distance between master axis and slave axis In this case master and slave of course have identically velocity and acceleration For this purpose the slave axis by acceleration or deceleration gets the same velocity as the master axis When this state has been reached on the master axis an additional movement will be executed similarly to MC_MoveSuperlmposed which will effect the desired phase shift The MC_Phasing module will stay active until it will be interrupted by another Stein MC_PHASING Done BOOL CommandAborted BOOL Error BOOL ErrorlD WORD Deceleration LREAL Master AXIS_REF WAR_IN_OUT Master AXIS_REF VAR_IN_OUT Slave AXIS_REF VAR_IN_OUT Slave AXIS_REF VAR_IN_OUT SoftMotion in CoDeSys 2 3 Chapter 5 The Library SM_PLCopen lib 5 5
62. RABLE manual configuration via wCyclicDataS1 S2 S3 and wCyclicDataR1 R2 R3 see below wCyclicDataS 1 Definition of the send S and return data R ifl wCyclicDataS2 wControlType is defined as CONFIGURABLE options wCyclicDataS2 depending on the drive driver basically possible wCyclicDataR1 Act SetPosition Defines the position wCyclicDataR2 Act SetVelocity Defines the velocity wCyclicDataR3 Act SetTorque Defines the torque Act SetCurrent Defines the current Act SetUserDef user defined dwRatioTechUnitsDenom Denominator and numerator for the conversion factor at the iRatioTechUnitsNum conversion of bus data to technical units u DWORD resp INT iMovementType two options for the motion type linear rotary For Encoder wEncoderld ID of the Encoder WORD dwRatioTechUnitsDenom Denominator and numerator for the conversion factor of bus data iRatioTechUnitsNum drive increments to technical units units used in application Softmotion units u DWORD resp INT iMovementType Encoder type Selection options linear or rotary fPositionPeriod Period for rotatory axes depends on the conversion factors dwRatioTechUnitsDenom and iRatioTechUnitsNum bSWLimitEnable Enable software position check only linear drives which effects that later the axis connected via SMC_Encoder will be set to error state as soon as it leaves the position window fSWLimitNegative negative posit
63. REAL Slave AXIS_REF VAR_IN_OUT Acceleration LREAL Deceleration LREAL TappetHysteresis LREAL Master AXIS_REF VAR_IN_OUT Slave AXIS_REF VAR_IN_OUT In Outputs VAR_IN OUT of the module Master AXIS_REF Master axis Slave AXIS_REF Slave axis SoftMotion in CoDeSys 2 3 Chapter 5 The Library SM_PLCopen lib Inputs of the module Execute BOOL Default FALSE At a rising edge the module starts the movement MasterOffset LREAL Default 0 additional offset on master position SlaveOffset LREAL Default 0 additional offset on slave position StartMode MC_StartMode absolute relative ramp_in ramp_in_pos ramp_in_neg Default absolute CAM either is started relative relative to the current position or absolutely absolute to this or with slow ramping in ramp_in in positive ramp_in_pos or negative ramp_in_neg direction CamTablelD MC_CAM_ID Output of MC_CamTableSelect Velocity Acceleration Deceleration LREAL Default 0 additonal velocity acceleration deceleration for ramp_in mode TappetHysteresis LREAL Default 0 Width of the hysteresis band around the tappets Outputs of the module InSync BOOL Default FALSE TRUE indicates that the movement is on the CAM CommandAborted BOOL Default FALSE The started movement has been aborted by another function block which effects the same axis Exception MoveSuperlmposed Error BOOL Default FALSE TRUE ind
64. SetVelocity REAL 0 Commanded velocity in technical units sec 1111 10 fActVelocity REAL 0 Actual Velocity of axes in techn units sec 1112 9 fMaxVelocity REAL 100 Maximum velocity in techn units sec 1113 fSWMaxVelocity REAL 100 Maximum velocity for implicit movements in techn units sec 1115 bConstantVelocity BOOL FALSE Axes is driving with constant velocity 1116 fMarkVelocity REAL 0 internal velocity mark 1117 fSaveVelocity REAL 0 internal velocity at begin of cycle 1120 fSetAcceleration REAL 0 Set acceleration in techn units sec 1121 fActAcceleration REAL 0 Actual acceleration in techn units sec 1122 13 fMaxAcceleration REAL 100 Maximum acceleration in techn units sec 1123 fSWMaxAcceleration REAL 100 Maximum acceleration for implicit movements in techn units sec 1125 bAccelerating BOOL FALSE axis is accelerating currently 1126 fMarkAcceleration REAL 0 internal acceleration mark 1127 fSaveAcceleration REAL 0 internal acceleration at begin of cycle 1130 fSetDeceleration REAL 0 Commanded deceleration in techn units sec 1131 fActDeceleration REAL 0 Actual deceleration in technical techn units sec 1132 15 fMaxDeceleration REAL 100 Maximum deceleration in techn units sec 1133 fSWMaxDeceleration REAL 100 Maximum deceleration for implicit movements in techn units sec2 1135 bDecelerating BOOL FALSE Axis is currently decelerating 1137 fSaveDeceleration
65. Softmotion in CoDeSys 2 3 User Manual This manual is an add on to the User Manual for the CoDeSys Programming System cS SV Copyright 2003 2004 2005 by 3S Smart Software Solutions GmbH All rights reserved We have gone to great lengths to ensure this documentation is correct and complete However since it is not possible to produce an absolutely error free text please feel free to send us your hints and suggestions for improving it Trademark Intel is a registered trademark and 80286 80386 80486 Pentium are trademarks of Intel Corporation Microsoft MS and MS DOS are registered trademarks Windows is a trademark of Microsoft Corporation Publisher 3S Smart Software Solutions GmbH Memminger Strasse 151 D 87435 Kempten Tel 49 831 540 31 0 Fax 49 831 5 40 31 50 Last update 04 03 2005 CoDeSys V2 3 4 1 Version 2 4 Content Content 1 Softmotion Concept and Components Overview 1 1 2 The SoftMotion Drive Interface 2 1 2 1 PLC Configuration for SoftMotion 0 eee eee eter ee eeeeeaaaeeeeeeeeeeeeeeeneneneeeees 2 1 2 2 SM_DriveBasic lib and automatic Code Generation cccccccsceeseeeeeeeeeeees 2 5 2 2 1 Mathematic auxiliary modules of SM_DriveBasic lib 0 0 0 eeeeeeeeeeeeeeees 2 5 2 2 2 VAIS group MOGUI CS derompi iais earna AA A KARA A Aa ial AEKA aai 2 5 2 2 9 COnnguration MOGULS scien fine banshee rrie abn tel ide ohana 2 7 2 2 4 Controller Mode MOdules c
66. Structures in the SM_CNC lib See in the following a selection of structures provided by the library SM_CNC lib which are used by the library modules for managing the position data the path segments objects and vectors SMC_POSINFO SMC_GEOINFO SMC_VECTOR3D SMC_VECTOR6D Further on the SMC_OUTQUEUE structure allows to manage GEOINFO objects in a list of defined size SMC_POSINFO This structure which is part of the SMC_CNC lib describes the coordinates and the position of the additional axes for the particular position points SoftMotion in CoDeSys 2 3 6 15 Structures in the SM_CNC lib TYPE SMC_POSINFO STRUCT iFrame Nr INT wAuxData WORD wSProfile WORD dX LREAL dY LREAL dZ LREAL dA LREAL dB LREAL dc LREAL dAl LREAL dA2 LREAL dA3 LREAL dA4 LREAL dA5 LREAL dA6 LREAL END STRUCT END TYPE The variables dX dY and dZ describe the position in the coordinate system dA1 dA6 describe the position of the additional axes In iFrame_Nr the user can store further information which is not relevant for the SoftMotion modules dA dB and dC currently are not used wAuxData describes bit by bit which of the position axes should be calculated by the SMC_Interpolator wAuxData will be initialized with 2 111 that means that X Y and Z axis get interpolated If the first bit is set the dX position gets calculated Bit 7 for example effects a processing of dA2
67. TQUEUE This input points to the SMC_OUTQUEUE structure object which describes the SMC_GEOINFO objects of the path typically it points to the output poqDataOut of the preceeding module e g SMC_NCDecoder SMC_SmoothPath dAngleTol REAL This input describes the tolerance angle angle leeway up to which at a sharp bend of the path no stop should be done Outputs of the module bError BOOL Gets TRUE in case of an error wErrorlID SMC_ERROR INT In case of an error this output shows the error number poqDataOut POINTER TO SMC_OUTQUEUE This output points on the SMC _OUTQUEUE structure object which contains the path with the permissible velocity values and now should be fed to the Interpolator SMC_LimitCircularVelocities This module SM_CNC lib checks the particular elements of the OutQueue and limits the path velocities of circular elements against their radii The path acceleration if moving with constant velocity v across an transition from a line to a circle with radius r according to amount will jump from O to value i EQ X E n 7 In order to limit this acceleration jump to value Acc the velocity of the arc at the transition EQ r a r must not exceed The module controlls the tranisition of two elements line on circular arc circular arc on line and circular arc on circular arc and adapts the end velocity of the first element so that the acceleration jump does not exceed the value dMaxAccJump Fur
68. UE structure of the Decoder module As soon as this OUTQUEUE is filled the modules of the slow task will pause until the OUTQUEUE isn t full any longer this means until the fast task has processed the first GEOINFO object and removed it from the OUTQUEUE In this case the modules of the slow task get active again and re fill the OUTQUEUE structure In the fast task per each cycle one path position point of that OUTQUEUE structure to which the Dataln parameter of the Interpolator is currently pointing will be calculated and processed Due to the fact that a GEOINFO object generally consists of several position points it will take several cycles until the first GEOINFO object has been processed completely and will be removed by the Interpolator Since the processing of a GEOINFO object obviously takes more cycles than the creating the slow task actually can be called more rarely than the fast However the task times must be defined in a way which makes sure that in the last OUTQUEUE of the slow task always enough GEOINFO objects are available so that no data underrun can occur A data underrun would result if the Interpolator does not get any GEOINFO objects from Dataln while the end of the path has not yet been reached In program Path the decoding of the NC program and the velocity check are done alo x DOT PR OGRAM Path BOOZVAR 0003 nut ARRAY D 9999 OF BYTE DNO4END_VaR 2005 ERAK S l g_neDecoder 8wC_NCDecoder a bExecute bDone
69. XF file the single path objects are stored without a certain order CoDeSys tries to connect the objects in a way that results in a coherent path Write outqueue to file With this function you can convert the complete CNC program to an OutQueue which is a list of GEOINFO structures objects and save this list in a file which then can be downloaded to the controller s file system and can be read there during run time see chapter 3 1 option b It is recommended to proceed in this way if you have CNC programs which are to big for the global data memory of the controller or which must be exchanged without a change of the CoDeSys project 3 4 CNC Text editor The text editor is in the upper right part of the CNC program list window Here you can enter and modify a CNC program according to DIN66025 see Chapter 3 2 for the supported elements The program will be displayed accordingly in the graphic Editor and can be modified there In this case the text part will be updated vice versa For working in the editor there are commands available in the menus CNC program and Extras See a description in chapter 3 5 Graphic Editor Hint Have a look to the programming examples in Chapter 1 By pressing lt F2 gt the input assistant will open and you can select global variables to be inserted in the CNC program The variables will be displayed in the graphic editor by their initial value if available Note Please regard that re
70. YH2 pi SWC _Posinfa da LREAL dOffsets LREAL db LREAL dOffset LREAL pi SMC_Posinfo Target position vector Output of the Interpolator dOffsetX dOffsetY LREAL Offset for x and y axis da db LREAL Target values for A and B axis SMC_TRAFOF_GantryH2 SMC_TRAFOF_GANTRYH2 dx dy dns dny ratio dnoitsets Drive AXIS REF AR_IN_OUT dndtisety DriveB AXIS REF MAR_IN_ OUT Drives AXIS REF VAR_IM_OUT Driveb AXIS REF VAR_IM_OUT dOffsetX dOffsetY LREAL Offset for x and y axis Same values as described for SMC_TRAFO_GantryH2 minX maxX minY maxY LREAL Move range for visualization DriveA DriveB AXIS_REF A B axis dx dy LREAL x y position in Geo coordinates dnx dny dnOffsetX dnOffsetY LREAL Standardized x and y position 0 1 and offset for visualization ratio LREAL Ratio of x interval and y interval for visualization 8 6 SoftMotion in CoDeSys 2 3 Chapter 8 The Library SM_Trafo lib 8 3 3 2 Jointed Scara Systems SMC_TRAFO_Scara2 SMC_TRAFO_SCARA2 pi SMC_Posinfo bError BOOL dOffsetA LREAL dA LREAL dOffsetB LREAL dB LREAL dArmLength1 LREAL dArmLength2 LREAL bElbowLow BOOL pi SMC_Poslnfo Target position vector Output of the Interpolator dOffsetA dOffsetB LREAL Offset for A and B axis dArmLength1 dArmLength2 LREAL Length of first and second arm bElbowLow BOOL Elbow down TRUE or
71. _NUM_TAPPETS OF BOOL VAR_IN_OUT SMC_GetTappetValue This function block evaluates the output Tappets of function block MC_Camln and contains the current tappet status In Outoputs VAR_IN_ OUT of the function block Tappets SMC_TappetData Inputs of the function block ilD INT Group ID of the tappet to be evaluated Outputs of the function block bTappet BOOL Default FALSE Tappet value SoftMotion in CoDeSys 2 3 5 21 Additional Elements of the SM_PLCopen lib SMC_GETTAPPETVALUE ilD INT bTappet BOOL Tappets SMC_TappetData VAR_IN_OUT Tappets SMC_TappetData VAR_IN_OUT SMC_ReadSetPosition This module reads the current set position of the drive Shic_READSETPOSITION Enable BOOL Axis AXIS REF VAR_IN_ OUT ErrorlD WORD Position LREAL Axis ARIS REF VAR_IN_OUT SMC_SetTorque This module can be used to create a torque if the drive is in controller mode torque SMC_SETTORQUE Axis AXIS_REF VAR_IN_OUT Position LREAL Axis AXIS_REF VAR_IN_OUT 5 22 SoftMotion in CoDeSys 2 3 Chapter 6 The Library SM_CNC lib 6 The Library SM_CNC lib 6 1 Overview This library provides modules for realizing the SoftMotion functionality in an IEC program For this purpose it has to be included in the IEC program Among them there are modules and structures which on the one hand execute the movements which have been designed in the editors and on the other hand can rea
72. a in Bytes Outputs of the function block bDone BOOL Is set as soon as the program has been read in completely bError BOOL TRUE Error occurred ErrorlD SMC_ERROR Error number bExecuteDecoder BOOL Signal which should trigger the input Execute of the SMC_NCDecoder module ncprog SMC_CNC_REF CNC program Input of the succeeding SMC_NCDecoder module SMC_VARLIST structure The standard IEC1131 3 does not describe a possibility to acquire the value of a variable from its symbolic name which e g is be available as a string This however is necessary if the variable functionality see 3 2 which is available for the user by compile option Create program variable on compile see 3 7 also should be available for reading in the CNC program from a file This can be managed by using the structure SMC_VARLIST It provides a variable wNumberVars which contains the number of all used variables as well as a pointer psvVarList on the first element of an array of SMC_SingleVar which contains the variable description and values A SMC_SingleVar object contains the string strVarName which provides the name of the variable as used in the NC program in capital letters Besides that the object provides the value of the variable which can be used depending on the type as DINT diValue or REAL fValue parameter SoftMotion in CoDeSys 2 3 Chapter 10 The library SM_FileFBs lib An example In the NC program which is read by
73. al CAM table only contains tappets Scaling master axis Define here the scaling of the master axis If option 360 is activated the settings Minimum Maximum Step and Unit will be set automatically 0 360 20 otherwise you can define them manually Scaling slave axis Define here the scaling of the slave axis See for the defaults in the picture shown above Properties If the option periodic is activated it will be guaranteed that the function values and the first and second derivatives of the start and end point of the CAM are matching Any modifications of the endpoint parameters which have been done during the editing of the curve will be ignored Close the dialog with OK to confirm the settings Hereupon in the CAM list on the left side of the window the name of the new CAM appears As long as this entry is marked the CAM is displayed in the Editor and can be edited In the right part of the window the new CAM will be visualized You see the horizontal blue master axes the vertical blue position axis slave in the upper window and the velocity dark blue and acceleration scale green in the lower window The following picture corresponds to the default settings in the CAM Properties dialog 4 2 SoftMotion in CoDeSys 2 3 Chapter 4 The CAM Editor 0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 3 0 Imm O 20 40 60 80 100 120 140
74. ant master velocity 1 Start and end point of the CAM must be contained at least SMC_CAMTable_ lt variables type gt _ lt number of elements gt _1 In this data structure an equidistant curve table is described The particular slave positions are stored in Table ARRAY 0 lt Anzahl Elemente gt 1 OF lt Variablen Typ The start and end points of the CAM must be contained at least SoftMotion in CoDeSys 2 3 4 9 CAM data structures The variables fEditorMasterMin fEditorMasterMax ffableMasterMin fTfableMasterMax descirbe an additional scaling of the tables by storing the range of definitions values in SoftMotion units fEditorMaster fEditorSlave and scaled on table units fTableMaster fTableSlave SMC_CAMTable_ lt variable type gt _ lt number of elements gt _2 A non equidistant curve table is stored in Table ARRAY 0 lt number of elements gt 1 OF ARRAY 0 1 OF lt variables type gt Contrary to the equidistant form the first element is the master position the second one the slave position 4 5 1 Example for a manually created CAM This example shows how a CAM is created in the IEC program i e without using the editor declaration part CAM MC_CAM REF byType 2 non equidistant byVarType 2 UINT nElements 128 xStart 0 xEnd 360 Table SMC_CAMTable UINT 128 1 fEditorMasterMin 0 fEditorMasterMax 360 fTableMasterMin 0 TableMasterMax 65536 fEditorSlav
75. apture signal occurred acknowledged by writing 1208 bStartCapturing BOOL FALSE Start stop capture of the current trigger 1210 bStartReference BOOL FALSE TRUE start reference 1211 fReference REAL 0 Reference position 2 16 SoftMotion in CoDeSys 2 3 Chapter 2 The SoftMotion Drive Interface No Name Data type Initi value comments 1215 fOffsetPosition REAL 0 Shift of zero point 1220 fFirstCapturePosition REAL 0 Window start position for capture 1221 fLastCapturePosition REAL 0 Window end position for capture 1222 tiTriggerlnput TRIGGER Description of the capture input _REF 1223 bCaptureWindowActive BOOL FALSE Capture limited to window 1230 dwPosOffsetForResiduals DWORD 0 Internal variable for residual values handling 1231 dwOneTurn DWORD 0 Internal variable for residual values handling 1232 fLastPosition REAL 0 Internal variable for residual values handling 1234 iRestNumerator INT 0 Internal variable for residual values handling 1235 iTurn INT 0 Internal variable for residual values handling 1236 dwBusModuloValue DWORD 0 internal variable for residual values handling 1237 dwPosOffsetForResidualsH DWORD 0 internal variable for residual values oming handling 1300 bDisableDrivelnAxisGRoup BOOL FALSE remove drive from axis group 1301 bErrorDuringStartup BOOL FALSE will be set as soon as an error occurs during startup pMS POINTER 0 Poi
76. are predefined with 100 dLength LREAL This variable which must be assigned in any case contains the length of an object path units bylIntern_Mark BYTE This variable describes start and end of path preprocessing actions Bit 0 set Stop tool radius correction after this object Bit 1 set Start tool radius correction to the left of this object Bit 2 set Start tool radius correction to the right of this object Bit 3 set Stop path rounding smoothing after this object Bit 4 set Start path rounding smoothing at this object Bit 4 set Start path rounding at this object Bit 6 set Stop avoiding loops after this object Bit 7 set Start avoiding loops at this object SMC_VECTOR3D This structure which is part of the SM_CNC lib describes a three dimensional vector TYPE SMC_VECTOR3DQ STRUCT dXQLREALR dYOQLREALR 6 18 SoftMotion in CoDeSys 2 3 Chapter 6 The Library SM_CNC lib dZQLREALR END_ STRUCT END_TYPE SMC_VECTOR6D This structure which is part of the SM_CNC lib describes a six dimensional vector TYPE SMC_VECTOR6DQ STRUCT dXOQLREALR dYOLREALR dZQOLREALR dAQLREALR dBOLREALR dCQLREALR END_ STRUCT END_TYPE SMC_OUTQUEUE and its Functions This structure which is part of the SM_CNC lib can be used to manage GEOINFO objects in a list of defined size TYPE SMC_OUTQUEUE
77. array size 351 MC_VelocityProfile SMC_VP_STEPOMS Step time t 0s 375 MC_AccelerationProfile SMC_AP_ARRAYSIZE erroneous array size 376 MC_AccelerationProfile SMC_AP_STEPOMS Step time t 0s 400 MC_TouchProbe SMC_TP_TRIGGEROCCUPIED Trigger already active 401 MC_TouchProbe SMC_TP_COULDNT_SET_WINDOW Drivelnterface does not support the window function 402 MC_TouchProbe SMC_TP_COMM_ERROR Communication error SoftMotion in CoDeSys 2 3 9 3 The enumeration SMC_Error Error Module Enum value Description no 410 MC_AbortTrigger SMC_AT_TRIGGERNOTOCCUPIED Trigger already de allocated 500 SMC_ControlAxisByPos SMC_CAP_GAP_VELACCDEC_INVALID Invalid velocity or acceleration values 510 SMC_ControlAxisByPosV SMC_CAPV_GAP_VELACCDEC_INVALID Invalid velocity or acceleration el values 520 SMC_ControlAxisByVel SMC_CAV_GAP_VELACCDEC_INVALID Invalid velocity or acceleration values 600 SMC_CamRegister SMC_CR_NO_TAPPETS_IN_CAM CAM does not contain any tappets 601 SMC_CamRegister SMC_CR_TOO_MANY_TAPPETS Tappet GroupID exceeds MAX_NUM_TAPPETS 602 SMC_CamRegister SMC_CR_MORE_THAN_32_ACCESSES more than 32 accesses on one CAM_REF 625 MC_CamIN SMC_CI_NO_CAM_SELECTED no CAM selected 626 MC_CamIN SMC_CI_MASTER_OUT_OF_SCALE Master axis out of valid range 627 MC_CamIn SMC_CI_RAMPIN_NEEDS_VELACC_VALU for the ramp_in function velocity ES and acceleration values must be specified 62
78. ase the SMC_SmoothPath module will not perform any actions The value can be set but only may be modified during a reset afterwards pbyBufferOutQueue POINTER TO BYTE This input must point on the first byte of the memory available for the OUTQUEUE structure This memory area at least must be as big as defined in Size SMC_OUTQUEUE Typically the the storage allocation is done in the declaration part of the IEC program via a byte array e g BUF ARRAY 1 10000 OF BYTE for a memory of 10000 Byte Also this value can be set but only may be modified afterwards during a reset Outputs of the module bDone BOOL This variable is set TRUE as soon as the input data from Dataln have been processed completely Afterwards the module will not perform any further action until a reset If bExecute Eingang gets FALSE bDone will be reset to FALSE bError BOOL In case of an error this variable gets TRUE wErrorlID SMC_ERROR INT In case of an error this variable gets the error number poqDataOut POINTER TO SMC_OUTQUEUE This output points on a SMC_OUTQUEUE structure managing the new SMC_GEOINFO objects SMC_Interpolator The SMC_Interpolator function block is used to convert a continuous path which is described by SMC_GEOINFO objects into discrete path position points thereby regarding a defined velocity profile and time pattern These position points typically afterwards will be transformed by the IEC program e g to drive axis positions
79. ast long distances slow small distances is possible Extras Set epsilon values The internal check of a value x for zero must be replaced by an examination for x lt because of the inaccuracy of a floating point calculation The size of the e value eventually e g if 32 bit floating point values are used instead of 64 bit or at import of a CNC program with limited accuracy must be adapted For this purpose use the dialog Zero tolerance values which will be opened by the here described command Please regard For standard use any modification of the tolerance values should not be necessary and should be avoided 3 7 Automatic structure filling in the CNC Editor As soon as the IEC program is compiled automatically a global variables folder CNC Data will be created There the CNC programs will be stored in homonymous data structures According to chapter 3 1 Text editor Overview you can choose between three possible options a c for each CNC program which can be selected in the menu CNC Program in the text editor 1 Create program variable on compile This option corresponds to variant a see chapter 3 1 The CNC program is stored to a structure SMC _CNC_REF which is defined in the library SM_CNC lib This structure Obwohl diese Variante erh hten online Rechenbedarf hat bietet sie die M glichkeit Variablen im NC Programm zu verwenden bzw Modulationen des NC Programms durch das SPS Progra
80. ative Additionally the user has the possibility to place tappets i e binary position switches on the CAM disk Starting the CAM Editor and Inserting a new CAM Start The CAM Editor is started in the Resources tab A tripartite window titled CAM program list will open As long as no CAM has been defined the window is empty In the lower right part of the window three different types of display can be chosen see Menu Extras Visualization of the first blue curve velocity and second green curve acceleration derivatives Visualization of a table showing all CAM elements points lines or Visualization of a table showing all CAM switches tappets The tables can be edited The menus Insert and Extras see chapter 4 4 1 General editor settings provide commands for the creation and editing of CAMs SoftMotion in CoDeSys 2 3 4 1 Starting the CAM Editor and Inserting a new CAM Extras Create new CAM Choose the command New CAM in the Insert menu or in the context menu and do the desired settings CAM Properties Ed Name of CAM am Type CAM Digital CAM table m Scaling master axis IV 360 Minimum Step Maximum Unit m Scaling slave axis Minimum i0000 Step 25 000 2 Maximum fi 00 000 Unit mm m Properties V periodic Name of CAM A name for the new CAM Type A CAM contains CAM elements points lines as well as tappets A Digit
81. ave to care for the Y Position for the tappet will be displayed appropriately to the chosen X value on the CAM curve As long as you keep the left mouse button pressed you can move the tappet along the curve As soon as you loose the button the tappet will be inserted and automatically it will be switched to the select mode 4 5 CAM data structures During compilation of the project a global variables list named CAM Data will be created from the CAM data produced in the CAM Editor The description of each single CAM will be written to a structure of type MC_CAM_REF corresponding to the settings in dialog Compile options and by that made accessible for the EC program resp the CAM preprocessing functions and function blocks In order to get an error free compilation the appropriate structure definitions must be available in the IEC program Hint Have a look at the programming examples in chapter 11 Of course the corresponding data structures also can be created resp filled from the IEC program during run time For this reason they will be described more detailed in the following Not mentioned variables of the structure are used only internally MC_CAM_REF This data structure represents a generic CAM and contains the following elements xStart xEnd LREAL Domain of the CAM Start and end position of the master byType BYTE This variable describes the CAM type i e the way in which the CAM is represented 1 equidistant 1
82. causes latching bActive BOOL FALSE internal variable The window function activated and defined via WindowOnly FirstPosition LastPosition is dependent on being supported by the Drivelnterface and will return an error if this is not the case The module is independent from the axis state and is active until a position will be latched resp the process will be aborted by MC_AbortTrigger MC_AbortTrigger This function block which is part of the SM_PLCopen lib aborts a latching which is currently done on the trigger input 5 14 SoftMotion in CoDeSys 2 3 Chapter 5 The Library SM_PLCopen lib MC_ABORTTRIGGER Execute BOOL Axis AXIS_REF VAR_IN_OUT Triggerlnput TRIGGER_REF VAR_IN_OUT Axis AXIS_REF VAR_IN_OUT Triggerinput TRIGGER_REF VAR_IN_OUT 5 4 Modules for Synchronized Motion Control MC_CamTableSelect Using this module which is provided by the library SM_PLCopen lib you can select a CAM determine the master and the slave axes for this CAM and do some pre settings The object CamTableID which is available as an output later will be passed on to the CAM module MC_CamIn The master axis can be virtual this means that it must not exist physically If the variable bRegulatorOn is TRUE the target values of the master axis will be used otherwise the actual values The CAM defining the motion either can be programmed manually in an structure object of type MC_CAM_REF or it can be cr
83. cribed functions for working with a SMC_OUTQUEUE structure and to avoid after the initialization any modifications of the other parameters Components of the structure pbyBuffer POINTER TO BYTE This variable contains the address of a coherent memory buffer which is allocated for the GEOINFO objects This buffer must be assigned in the IEC program and its address then be written to this variable The assignment in the declaration part e g can be done by using a byte array BUF ARRAY 1 10000 OF BYTE for a 10000 byte memory area nSize UDINT The size of the memory area which is allocated by pbyBuffer nReadPos UDINT Relative address of the first object in the list referring to the first byte of the allocated memory buffer nWritePos UDINT Relative Address of the first free byte following the object list referring to the first byte of the allocated memory buffer bFull BOOL This variable will be set to TRUE by the function APPENDOBJ as soon as the list is filled up and only space is left for three further GEOINFO objects safety buffer DELETEOBU will set it back to FALSE as soon as elements get removed from the list bEndOfList BOOL The SoftMotion modules which get an OUTQUEUE structure as an input do not start the processing of this queue until it has been filled completely in order to avoid e g a data underrun SMC_Interpolator Due to the fact that during working on the last SMC_GEOINFO objects of a pat
84. ct type start position X Y Z end position X Y Z set velocity and final velocity SMC_SHOWOQUEUE hEnable BODL iNumberElements UINT pog POINTER TO SMC_Outqueue iMaxMumberElements UINT apGl ARRAY 0 CMAKEL OF POINTER TO SMC_Geaolnfo SoftMotion in CoDeSys 2 3 7 1 Function blocks for analysis of SMC_OutQueue data 7 2 SoftMotion in CoDeSys 2 3 Chapter 8 The Library SM_Trafo lib 8 The Library SM_Trafo lib 8 1 Overview This library is an extension for the SM_CNC lib and provides modules which can be used for transformation of GEO to drive coordinates and the axis control There are modules which control drives with target values and simultaneously watch the target values and detect jumps Besides that there are modules for mathematic forward and backward transformation for some usual kinematics Instances of the forward transformation modules can be connected with the also provided visualization templates which allow an immediate and simple visualization 8 2 ControlAxis function blocks SMC_ControlAxisByPos This function block writes target positions n to a drive structure and checks the structure for jumps SMC_CONTROLAAISBYPOS iStatus ShiC_INT_STATUS bCommandAborted AOL bEnable BOOL bError BOOL bAvoidGaps BOOL iErrorlD SMWMC_ERROR tSetFosition LREAL bStoplpo BOOL tGapvelocity LREAL Axis AIS REF VAR_IN_ OUT fSapAcceleration LREAL fSapDeceleration LREAL Axis AX
85. ction block Axis AXIS_REF This variable passes the structure which has been feded with the axis data by the Drive Interface Drive_Basic lib Inputs of the function block Execute BOOL Default FALSE At a rising edge at this variable the module will get active this means will start the deceleration Deceleration REAL Value of the deceleration decreasing energy of the motor u s Outputs of the function block Done BOOL Default FALSE This variable gets TRUE as soon as the commanded position has been reached this means as soon as the drive has been stopped Error BOOL Default FALSE This variable gets TRUE when an error has occurred in the function block ErrorlD INT Error number MC_MoveAbsolute This function block which is part of the SM_PLCopen lib moves the axis to an absolute position according to the defined velocity deceleration and acceleration values In case of linear axes the direction value is not regarded in case of rotating axes it determines the direction of rotation MC_MOVEABSOLUTE Done BOOL CommandAborted BOOL Deceleration LREAL Axis AXIS_LREF VAR_IN_OUT Direction MC_Direction Axis AXIS_LREF VAR_IN_OUT In Output VAR_IN_ OUT of the function block Axis AXIS_REF This variable passes the structure which has been feded with the axis data by the Drive Interface Drive_Basic lib Inputs of the function block Execute BOOL Default FALSE At a
86. ctivated the rounded off path will be displayed showing the effect the function block SMC_RoundPath SM_CNC lib has on the originally programmed path Preconditions In the CNC program the start G52 and the end G50 of the path segment where the correction should be done as well as the rounding radius D lt angle gt must be defined The original path will be displayed as a reference colored light grey Extras Avoid loop w If this option is activated that path will be displayed which results if loops are cut This means that if the path crosses itself at the crossing points the loop part will be deleted which shortens the path So loops can be avoided This command corresponds to the effect of the funktion block SMC_AvoidLoop SM_CNC lib Preconditions In the CNC program the start G61 and the end G60 of the path segment where the correction should be done must be defined The original path will be displayed as a reference colored light grey Extras Extras Step Suppress If this option is activated all lines of the text editor starting wit will be ignored SoftMotion in CoDeSys 2 3 Chapter 3 The CNC Editor in CoDeSys Extras Extras Show Interpolation points cl If this option is activated interpolation points will be displayed in 100 ms pulse this means that the tool positions will be indicated by small grey crosses every 100 ms Thus a rough estimation of the velocity behaviour f
87. cture MC_TA_REF the position points are defined by their acceleration values MC_TA_REF contains the following variables Variable Type Init value Description Number_of_pairs INT 0 Number of profile position points IsAbsolute BOOL TRUE Positions absolute or relative MC_TA_Array ARRAY 1 100 OF Position points MC_TA MC_TA contains the following variables Variable Type Init value Description delta_time TIME t 0s Period of time between reaching the last and the current position point acceleration REAL 0 Absolute relative velocity of the position point The module creates a path through the given position points which is a continuous curve consisting of lines The velocity of the curve results from the velocity at the start of the profile and the and the integrated acceleration The position of the axis results from the start position and the integrated velocity MC_ACCELERATIONPROFILE Done BOOL CommandAborted BOOL Error BOOL ErrorlD WORD fal 2 Axis AXIS_REF WAR_IN_OUT TimeAcceleration MC_TA_REF VAR_IN_OUT TimeAcceleration MC_TA_REF WAR_IN_OUT SoftMotion in CoDeSys 2 3 5 13 Modules for Controlling Single Axis Motions MC_SetPosition This module shifts the zero point of the axis so that e in absolute mode Mode FALSE Default the value which is set by input Position will become the actual set position resp e in relative mode Mode TRUE
88. d during decoding ERR_DEC_NO_ ERROR 0 No error detected ERR_DEC_ACC_TOO LITTLE 1 Maximum acceleration is lower than one path unit sec ERR_DEC_RET_TOO_LITTLE 2 Maximum delay is lower than one path unit sec As soon as an error has occurred the processing gets stopped until a reset will be done SMC_ToolCorr Module The SMC_ToolCorr module can be used for path preprocessing It creates a shifted path basing on the originally defined profile In the shifted path each point of each path object has a definable distance to the original point and the immediate neighbour points Tool radius correction Thus the shifted path guarantees that each of its points has a fix distance to the original path A typical application is the milling of a programmed contour with a milling drill of defined diameter In order to compensate the radius of the drill the milling drill must follow an appropriately shifted path which can be created by using the SMC_ToolCorr Module The following restriction must be regarded If the outline and the drilling radius are chosen in a manner that cross over points would result within the shifted path which would effect that the desired contour would be destroyed during passing the shifted path then this will not be regarded see the drawing to the right of this paragraph To avoid such intersections use the module SMC_AvoidLoop The SMC_ToolCorr module is working as described in the foll
89. defined in sTask only to be defined if the controller does not support tasks and automatically is calling PLC_PRG Default task wParam1 Card Drive specific parameter of type WORD wParam4 dwParam1 Card Drive specific parameter of type DWORD dwParam4 For Drive wid ID of the drive in the axis group WORD wControlType predefined control and return message types WORD lt Send data gt gt lt Return data gt 1 TOR gt Torque gt 2 VEL gt VEL Velocity gt Velocity 3 VEL gt POS Velocity gt Position 4 POS gt POS Position gt Position 5 POS VEL gt POS VEL Position gt Velocity 6 VEL gt Velocity gt SoftMotion in CoDeSys 2 3 Chapter 2 The SoftMotion Drive Interface 7 CONFIGURABLE manual configuration via wCyclicDataS1 S2 S3 and wCyclicDataR1 R2 R3 see below wCyclicDataS1 wCyclicDataS2 wCyclicDataS2 wCyclicDataR1 wCyclicDataR2 wCyclicDataR3 Definition of the send S and return data R if wControlType is defined as CONFIGURABLE options depending on the drive driver basically possible Act SetPosition Defines the position Act SetVelocity Defines the velocity Act SetTorque Defines the torque Act SetCurrent Defines the current Act SetUserDef user defined dwRatioTechUnitsDenom iRatioTechUnitsNum Denominator and numerator for the conversion factor at the conversion of bus data to techn
90. dimensional table of slave positions 4 8 SoftMotion in CoDeSys 2 3 Chapter 4 The CAM Editor 2 non equidistant 2 dimensional table of master slave point pairs 3 polynomial description on particular points consisting of masterposition slave position velocitiy and acceleration XYVA byVarType BYTE nur f r byType 1 oder byType 2 Variable type the curve table consists of 0 INT 1 UINT 2 DINT 3 UDINT 4 REAL 5 LREAL nElements INT Number of elements so depending on type number of slave positions master slave positions or XYVA points bylnterpolationQuality BYTE nur fur byType 1 oder byType 2 Fine interpolation degree 1 linear default 3 cubic pce POINTER TO BYTE Pointer on the actual data element depending on type Type 1 equidistant SMC_CAMTable_ lt VarType gt _ lt nElements gt _1 2 non equidistant SMC_CAMTable_ lt VarType gt _ lt nElements gt _2 3 XYVA ARRAY OF SMC_CAMXYVA nTappets INT Number of switch actions pt POINTER TO SMC_CAMTappet Pointer on an ARRAY OF SMC_CAMTappet strCAMName STRING Name of the CAM SMC_CAMXYVA A XYVA CAM consists of an array of SMC_CAMXYVA Each variable of that array describes a point of the CAM via dX master position dY slave position dV first derivative dY dX corresponds to the slave velocity at a constant master velocitiy 1 and dA second derivative d Y dX corresponds the slave acceleration at a const
91. ditional control of any exceeding of the valid range 50cm 5000mm 50 cm 5000mm the application should be programmed in a way that this is not possible at all we activate a control function by setting SWLimitEnable TRUE SWLimitNegative 5000 and SWLimitPositive 5000 SoftMotion in CoDeSys 2 3 11 3 Example Single Axis Motion Control e We assume a rotation of 65536 increments for the used rotatory drive can be rotated arbitrarily Thus we define in order to get an internal unit of angle degrees 65536 for dwRatioTechUnitsDenom and 360 for iRatioTechUnitsNum This drive for example might be designed for turning a screwtop on a bottle Therefore we want to send cyclically the position and the torque values because we later want to be able to switch by a change of the operation mode from a behaviour which is controlled by the position to a behaviour which is controlled by the torque To do this settings select CONFIGURABLE for wControlType and fSetPosition resp fSetTorque for wCyclicDataS1 resp wCyclicDataS2 In order to get returned the current position set the option fActPosition for wCyclicDataR7 e In order to get a program ready for an error free compilation a program call has to be appended to the task BusTask For example create a program Ipo which later will do the motion control and call it by BusTask Now compile the program no errors should occur and load it to the controller and start it
92. e Drive Interface for the communication with the hardware see command Create program variable on compile b The CNC program is written as a list QUTQUEUE Structure of GEOINFO structure objects to a data structure and thus can directly be fed to the interpolator In comparison to a by this method you can avoid calling the Decoder and the Path Preprocessing Modules But in exchange you do not have the possibility to change the program during runtime See command Create OutQueue file on compile c The CNC program is written as described in a resp b to the file system of the controller and is read and executed at runtime step by step This method particularly is suitable for big programs which cannot be kept completely in the memory kartesische Koordinaten Motorstellungen Konfigurationsraum Drive Interface SoftMotion in CoDeSys 2 3 3 1 3 2 Supported and extended elements of the CNC language DIN66025 Supported and extended elements of the CNC language DIN66025 In order to provide an easy way for programming geometric motion profiles SoftMotion supports parts of the CNC language DIN66025 Since the whole SoftMotion concept is embedded in the much more powerful language IEC61131 only those parts of DIN66025 are supported which serve to create a path Prescribed structure of a CNC program 2 N lt number gt G lt number gt N lt number gt G lt number gt Example example N10 G01 X100
93. e g the SMC_NCDecoder bEnable BOOL If this input is set to FALSE default the module currently is in waiting status this means that it will not perform any actions Getting TRUE it will start resp continue to round the path bReset BOOL By setting this variable to TRUE the module will be reset to the start state Thereby also the content of the SMC_OUTQUEUE structure DataOut will be removed Thereafter the module cannot get active again until bReset is reset to FALSE default dRadius LREAL This input variable contains the value which defines the minimum distance to an angle at which the particular objects will be cut and replaced by a spline see above This value can be modified online Thus it is possible to predefine offline by the SMC_GEOINFO structure and to modulate online Default 0 dAngleTol REAL This input describes the angle tolerance value up to which a path bend should not be smoothed nSizeOutQueue UDINT This variable contains the size of the data buffer to which the list of GEOINFO structure objects will be written This buffer must be at least five times as big as a GEOINFO structure this means about 2KB If this is not the case SMC_NCDecoder will not execute any actions at all The value can be predefined but later it may only be modified during a reset pbyBufferOutQueue POINTER TO BYTE This input must point to the first byte of the memory area which is allocated for the SMC_OUTQUEUE st
94. e or a SMC_Stop module subsequently to the module MC_PositionProfile after this has terminated its work SoftMotion in CoDeSys 2 3 5 11 Modules for Controlling Single Axis Motions MC_POSITIONPROFILE Done BOOL CommandAborted BOOL Error BOOL ErrorlD WORD Axis AXIS_REF VAR_IN_OUT Axis AXIS_REF VAR_IN_OUT TimePosition MC_TP_REF VAR_IN_OUT TimePosition MC_TP_REF WAR_IN_OUT In Output VAR_IN OUT of the function block Axis AXIS_REF Here the structure is passed which has been filled in the Drive Interface Drive_Basic lib with the axis data Inputs of the function block Execute BOOL Default FALSE At a rising edge at this variable the module will start the motion ArraySize INT Dimension of array for position points max 1 100 Scale REAL Default 1 General scaling factor of the profile Offset REAL General offset of profile u TimePosition MC_TP_REF Information on time and position values see above Outputs of the function block Done BOOL Default FALSE This variable gets TRUE as soon as the commanded position has been reached CommandAborted BOOL Default FALSE This variable gets TRUE as soon as the commanded motion was interrupted by any motion function block acting on the same axis except MoveSuperlmposed Error BOOL Default FALSE This variable gets TRUE when an error has occurred in the function block ErrorlD INT Error number MC_Veloci
95. eMin 0 fEditorSlaveMax 360 fTableSlaveMin 0 fTableSlaveMax 65536 program part Create CAM a line for example unique FOR i 0 TO 127 DO Table Table i 0 Table Table i 1 REAL_ TO UINT i 127 0 65536 END FOR connect pointers must be done in each cycle CAM pce ADR Table The CAM created in this way now can be used as input for module MC_CamTableSelect and the output of this module in turn can be used for MC_Camin 4 10 SoftMotion in CoDeSys 2 3 5 Chapter 5 The Library SM_PLCopen lib The Library SM_PLCopen lib 5 1 Overview The modules provided by the library SM_PLCopen lib follow the PLCopen specification Function blocks for motion control Version 1 0 This description is based on this specification and treats the functionalities which are not covered by the PLCopen The function blocks which are completely programmed according to the IEC1131 3 standard can be classified in three categories 1 Modules for the general operating control and parametrizing of single drives See a description in chapter 5 3 2 Modules for the independent motion control of single drives These modules help to move single axes autonomously in different ways 3 Modules for the motion control or a drive slave against a further drive master These modules enable realizing CAMs electronic gears and phase shifts See a description in chapter 5 4 Additional modules see chapter 5 5 Besides that for
96. each cycl 1004 wCyclicDataS3 lt BusInterfaceName gt Drive lib 1006 wCyclicDataR1 WORD PLC Config or Init FB Number of 3S parameters to be 1007 wCyclicDataR2 of received each cycle 1008 wCyclicDataR3 lt BusInterfaceName gt Drive lib 1010 bRegulatorOn BOOL bRealDrive regulator power on off 1011 bDriveStart BOOL bRealDrive set unset halt 1012 bCommunication BOOL FALSE TRUE Drive answers 1015 bRegulatorRealState BOOL FALSE State of the regulator 1016 bDriveStartRealState BOOL FALSE State of the halt 1020 wAxisGroupld WORD PLC Config Index of the axis group in the configuration 1021 wDriveld WORD PLC Config Node number of the drive on the field bus 1022 iOwner INT 0 Id Number of the current owner FB 1023 iNoOwner INT 0 Number of the previous and the current owners 1024 bMovedInThisCycle BOOL FALSE has drive been moved in this IEC cycle 1025 fTaskCycle REAL PLC Config Cycle time of task in ms 1026 bRealDrive BOOL PLC Config TRUE generated by Config FALSE generated by IEC 1030 bError BOOL FALSE error occurred 1031 wErrorID WORD 0 error id number SoftMotion in CoDeSys 2 3 2 13 Variables of the AXIS_REF structure No Name Data type Initi value comments 1032 bErrorAckn BOOL FALSE Acknowledge error 1035 wF BErrorlD WORD 0 FB error id number 1051 dwRatioTechUnitsDenom DWORD _ PLC Config Converstion of tech
97. eated in the CAM editor which is integrated in the CoDeSys programming system see document SoftMotion CAM Editor If the variable Periodic is TRUE after a complete pass the processing of the CAM will be restarted otherwise just one run will be done The variables MasterAbsolute und SlaveAbsolute define whether the CAM mapping of the master axis to the slave axis should refer to absolute values TRUE or to increments FALSE MC_CAMTABLESELECT MasterAbsolute BOOL ErrorlD WORD SlaveAbsolute BOOL CamTablelD MC_CAM_ID Master AXIS_REF VAR_IN_OUT Master AXIS_REF VAR_IN_OUT Slave AXIS_REF VAR_IN_OUT Slave AXIS_REF VAR_IN_OUT CamTable MC_CAM_REF VAR_IN_OUT CamTable MC_CAM_REF VAR_IN_OUT In Outputs VAR_IN_ OUT of the module Master AXIS_REF Master axis Slave AXIS_REF Slave axis CamTable MC_CAM_REF Description of the CAM Inputs of the module Execute BOOL Default FALSE At a rising edge the module chooses a new CAM Periodic BOOL Default TRUE periodic non periodic CAM SoftMotion in CoDeSys 2 3 5 15 Modules for Synchronized Motion Control MasterAbsolute BOOL Default TRUE CAM refers to absolute relative referring to position at rising edge in Execute of CAMIn master position SlaveAbsolute BOOL Default TRUE CAM refers to absolute relative referring to position at rising edge in Execute of CAMIn slave position Outputs of the module Done BOOL
98. ecseeeeceeeceeeeeeeeeeeeeaeeeaeesaeaaaaeeaeasaaaeaaeeseeese 2 7 2 2 5 Virtual time AXiS 0 A E E E 2 8 2 2 6 Referencing via digital hardware inputs eee eeeeeee teeter eee eeentaeeeeeeeeeeeeee 2 8 224 DIAGNOSIS modules irsin aue aeaea aAA ADE AAEE REEN ENa 2 10 2 2 9 ENCOdE iin aa e a aa aa e a Aaah aae 2 11 2 2 9 Visualization templates c ccccccceeeeeeeceeeeeeeeeeeeeaeeeaeeaaeeaaeeeaaesaaeeaaeaseeeneeenes 2 11 2 3 Drive Driver lt BuslnterfaceName gt Drive lib ccccccccceccceecceeeeceeeeeeeeeeeeeeetees 2 11 2 36 SECOS DAVA TID sess ccscncleeccnctdentecgcedaccasagcesnanasnensdsedssigacaasesadesneapacasiaadlaSaalshancesscigegs 2 12 29 A OM PANINI e ae PR a Sh lee Slee fen te Se Oe ata 2 12 2 4 Variables of the AXIS_REF Structure 0 0ccceeseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeees 2 12 3 The CNC Editor in CoDeSys 3 1 3 1 OVENI Waa a E acataatidantusneudoacameacineaenyes 3 1 3 2 Supported and extended elements of the CNC language DIN66025 3 2 3 3 Start Inserting and Managing of CNC Programs cceeeeeeeeeeeeeeeeeeeeeeeeeeees 3 4 3 4 CNG Texted itt seiere secevccetuvedens calencedves vives cesaeteeen conden cdudvccdesecerenceran sees 3 7 3 5 CNC Graphic Ed OT a r a e aaa aa ar aTe A T E aaa a inbidia 3 8 3 6 Commands and Options in the CNC Editor cccccccceeccceeceeeeeeeeeeeeeeeeeeeeees 3 8 3 7 Automatic structure filling in the CNC Editor e
99. ed by the 3S Smart Software Solutions GmbH Drive Interface These modules also can be used to send manufacturer specific data to the drive In this case they must get passed the negative drive specific parameter number A document belonging to the particular drive library XXXDrive lib will describe the coding of the drive specific parameter numbers MC_WRITEPARAMETER Execute BOOL ParameterNumber DINT value LREAL Axis AXIS_LREF VAR_IN_OUT Axis AXIS_REF VAR_IN_OUT MC_VWRITEBOOLPARAMETER Execute BOOL ParameterNumber DINT value BOOL Axis AXIS_LREF VAR_IN_OUT Axis AXIS_REF VAR_IN_OUT SoftMotion in CoDeSys 2 3 5 3 Modules for Controlling Single Axis Motions MC_ReadActualPosition This function block which is part of the SM_PLCopen lib provides the current position of the drive MC_READACTUALPOSITION Enable BOOL Done BOOL Axis AXIS_REF VAR_IN_OUT Error BOOL ErrorlD WORD Position LREAL Axis AXIS_REF VAR_IN_OUT MC_ReadActualVelocity This function block which is part of the SM_PLCopen lib provides the current velocity of the drive MC_READACTUALVELOCITY Enable BOOL Axis AXIS REF VAR_IN_OUT ErrorlD WORD Velocity LREAL Axis AXIS_LREF VAR_IN_OUT MC_ReadActualTorque This function block which is part of the SM_PLCopen lib provides the current torque resp the current power of the drive MC_READACTUALTORQUE Enable BOOL Axis
100. ee ceceeeeeeeeeeeeeeennnneeeeeeeeeeeeeeee 3 11 4 The CAM Editor 4 1 4 1 OVE IVC Wirren a teed chek dvbee ds chan candle Tansee nage a vox he verducdebeneneetens 4 1 4 2 Definition of a CAM for SoftMotion ccccccccccccccceeeceecceeeeeeeeeeeeeeeeeeeeeeeeeeseeeess 4 1 4 3 Starting the CAM Editor and Inserting a new CAM ecceeeceeeeeeeeeeeeeeneaeeees 4 1 4 4 sto liiale Ee AEA so fo caisatst cepie ck pa E A baatcck uden ududce T 4 3 4 4 1 General Editor SettingS sssri ts an seat ceen teak aca ela th tho tla talitesieia in chan unesete 4 3 4 4 2 Editing the properties of a particular CAM element seeseeeseeeeeeeees 4 4 4 4 3 Commands of the Extras and Insert MeNnuS seeeeeeeeeeeeeeeeeeeeteeesneeees 4 6 4 5 CAM data Structures cccccccccceccceccceeccececeeeceeccceceeecececeeececeseceeeeseseaeeeeeseneesaaes 4 8 4 5 1 Example for a manually created CAM c cccceeeeeeeeeeeeeeteeeeeeeeteeeenaaeeeeeeeeneee 4 10 5 The Library SM PLCopen lib 5 1 5 1 COVE IVIOW 2 sconce conc RacetTnsp a0 se s acecuhe tetet Cetesentsacttanes a a e E E a 5 1 5 2 PLCopen Specification Function blocks for motion control Version 1 0 5 1 5 3 Modules for Controlling Single Axis Motions 0 0 0 eeeeeneeeeeeeeeeeeneeeeeeeeeees 5 2 5 4 Modules for Synchronized Motion Control ccccceeeeeeeeeeeeeeeeeeeeeeeeeneneeeeeees 5 15 SoftMotion in CoDeSys 2 3 Content 5 5 Additional Elemen
101. een the end points and moving the cursor Tappet If you select a tappet in the CAM editor the frame of the tappet symbol square gets red The tappet can be moved along the CAM curve by moving the cursor Commands of the Extras and Insert Menus Extras Settings This command opens the dialog CAM Element Properties which you have edited during creating the CAM See the picture in Chapter 4 3 Here you can modify the scaling and the units Extras Show complete CAM Show bounds If this option is activated a check is displayed before the command in the Insert menu the button in the tool bar appears pressed additionally the 5 exponent polynomials which are filling the intervals between the CAM elements points lines and or tappets will be displayed Otherwise just the elements are visible If this option is activated a check is displayed before the command in the Insert menu the button in the tool bar appears pressed besides the CAM and their derivatives also its bound values are displayed Maximum Minimum Compile options This command opens a dialog where the compilation of the CAM can be configured Compile options CAM Ea m Compile option polynomial equidistant point table Cancel C element optimized point table Elements 256 Data type UINT m Master scaling Start Unit End Editor p 000 260 000 fi i PLC fp 000 m Slave scaling Start
102. er position X position of the tappet Slave position Y position of the tappet not editable because determined by the curve progression The settings in the properties dialogs can be confirmed by OK or Apply The CAM curve in the editor will be displayed correspondingly OK will also close the dialog whereas it will stay open with Apply Editing the properties of particular CAM elements 2 By selecting and moving in the editor window An element can be selected by a mouse click To move an element keep the mouse key pressed and move the cursor to the desired position This will cause an modification of the corresponding values in the properties dialog of the element SoftMotion in CoDeSys 2 3 4 5 4 4 3 Editing a CAM Point If you select a point in the CAM editor a little red square will be displayed representing the slope Velocity By moving this square point on the square with the cursor so that the cursor symbol will be displayed as a cross and then move the cursor the velocity value for the point can be modified The slope will be displayed with the aid of an auxiliary tangent Also the point itself can be moved Line If you select a line in the CAM editor little red squares will be displayed at the end points You can change the slope velocity of the line by moving one of the end points point on the square with the cursor and move the cursor you can move the line without changing the slope by pointing on the line betw
103. etting BOOL Axis group just getting reinitialized 200 lt wState lt 210 bErrorDuringStartUp BOOL During startup an error occurred wState gt 1000 pErrorDrive POINTER TO AXIS_REF Pointer on the error causing axis Only valid if bErrorDuringStartUp TRUE With the aid of this output the erroneous axis can be removed from the axis group during runtime by setting the variable DisableDrivelnAxisGroup Then the axis can be reinitialized and the drive can be continued with the remaining axis if there are redundancies available in the machine SMC_ResetAxisGroup With this function block a complete axis group can be reinitialized Inputs VAR_INPUT of the function block bExecute BOOL If this input is TRUE the module starts reinitializing the axis group bKeepRatioSettings BOOL If this input is TRUE the recent drive settings dwRatioTechunitsDenom and iRatioTechUnitsNum the modulo value fPositionPeriod and the axis type iMovementType linear rotatory will be kept and not be replaced by the values which are set in the PLC Configuration In Outputs VAR_IN_ OUT of the function block AxisGroup SMC_AXISGROUP_REF Axis group to be reinitialized Outputs VAR OUTPUT of the function block bDone BOOL TRUE if process is terminated bError BOOL Error occured nErrorID SMC_ERROR Error description 2 6 SoftMotion in CoDeSys 2 3 2 2 3 Chapter 2 The SoftMotion Drive Interface Configuration
104. ex pulse If this entry is TRUE the hardware control of the end switches will be intermitted Choose this option if you use the same physical switch as hardware end and reference switch SoftMotion in CoDeSys 2 3 2 9 SM_DriveBasic lib and automatic Code Generation blgnoreHWLimit BOOL Default FALSE As long as this input is TRUE the hardware control of the end switches will not be done Use this option if you are using the same physical switch for the hardware end switch and the reference switch Outputs of the module bDone BOOL Default FALSE If TRUE the drive is referenced and in standstill bCommandAborted BOOL Default FALSE If TRUE the command has been aborted by another one bError BOOL Default FALSE TRUE indicates an function block error nErrorID SMC_Error Error number 2 2 7 Diagnosis modules SMC_GetMaxSetVelocity This function block can measure the value of the maximum target velocity of an axis The measuring will be done if bEnable is TRUE and it will be set back to 0 as long as bResetMax is TRUE With dwTimeStamp you can read any DWORD e g call counter which is mit einem neuen Maximalwert bernommen und ausgegeben wird SMC_GETMASSETVELOCITY bEnable BOOL filaxVelocity LREAL bResethax BOOL dwTimesthax WORD dwTimeStamp DWORD Axis AXIS REF VAR_IM_ OUT Axis AXIS_REF VAR_IN_ OUT SMC_GetMaxSetAccDec This function block works analogically to SMC_GetMaxSe
105. ferences to global variables in the Decoder module will be evaluated as soon as a rising edge in input Execute occurs If you have chosen variant b which makes CoDeSys creating a ready OutQueue structure during compilation then the reference on the global variable of course will be replaced by the initial value already during compilation which makes the use of global variables senseless in this context SoftMotion in CoDeSys 2 3 3 7 CNC Graphic Editor 3 5 CNC Graphic Editor The graphic editor is in the lower right part of the CNC program list window On the one hand it visualizes the CNC program which is described in the text editor on the other hand also in the graphic editor you can modify the program using the mouse and these changes will be updated automatically and immediately in the program text in the upper window part Display A coordinate system is displayed There are pitch lines marking the intervals on the coordinate axes and additionally a light grey colored grid can be displayed which can switched on and off via the command Show grid Extras menu resp context menu By keeping pressed the left mouse button the display of the CNC program can be moved as desired Using mouse wheel and lt Ctrl gt key the zoom factor can be changed Positionings G00 are displayed green colored all other elements blue colored The currently marked object the cursor is placed on the corresponding code line in the text editor
106. first object which should be smoothed we Sah and on the other hand by one of its inputs The sum of both values is taken fi A as the radius of a circle which has its centre point in the path angle and Pi which will intersect the surrounding objects SMC_SmoothPath is working as described in the following All SMC_GEOINFO objects which are found in the Input OUTQUEUE structure will be checked one after the other If in one of the objects Bit4 of the variable Intern_Mark is set then the slurring will be started for all subsequent objects until in one of them Bit3 of Intern_Mark is set The SMC_NCDecoder module will set these start and stop bits as a reaction to the instructions G51 G50 In other words The Smooth Path functionality will be executed for all objects which are placed between the instructions G51 and G50 Inputs of the function block bExecute BOOL The function block will do a reset and start the path correction smoothing path as soon as a rising edge is detected at this input bAppend BOOL As long as this input is FALSE at each reset the DataOutQueue will be cleared As long as it is TRUE newly incoming data will be written to the end of the DataOutQueue poqDataln POINTER TO SMC_OUTQUEUE This variable points to the SMC_OUTQUEUE structure object which contains the SMC_GEOINFO objects of the unsmoothed path typically it points to the output DataOut of the preceeding module e g the SMC_NCDecoder bEnab
107. gnalDelay REAL Default 0 0 Transmission time of the reference switch in s If a time gt 0 is set the module will not use the position at which the bEndSwitch has got TRUE as a reference position but that position which the axis had fSignalDelay seconds before nHomingMode SMC_HOMING_MODE Default FAST_BSLOW_S_ STOP FAST_BSLOW_S_STOP The drive will be moved to the given direction at velocity fVelocityFast FAST until the input bEndSwicth gets FALSE then will be stopped and moved to the opposite direction at velocity fVelocitySlow BSLOW until bEndSwitch gets TRUE again At this position the reference point will be set S and it will be stopped STOP FAST_BSLOW_STOP_S In contrast to FAST _ BSLOW_S_STOP after the free move first a stop is done and afterwards the reference point is set FAST_BSLOW_I_S_STOP In contrast to FAST BSLOW_S STOP after the first free move an index impulse bIndexOccured TRUE and its position flndexPosition set as reference point will be awaited Not until then it will be stopped bReturnToZero BOOL Default FALSE If this flag is set the module will set the position on the zero point after having terminated the procedure which is defined by nHomingMode bIndexOccured BOOL Default FALSE Only for nHomingMode FAST_BSLOW_I _S_STOP Indicates whether the index pulse has occurred findexPosition REAL Default 0 0 Only for nHomingMode FAST_BSLOW_ _S_ STOP Latched position of the ind
108. h the OUTQUEUE is not full any longer bEndOfList must be set to TRUE as soon as the last SMC_GEOINFO object has been stored in order to keep the processing running If the list is empty thereafter but should be filled up again bEndOfList must be reset to FALSE SoftMotion in CoDeSys 2 3 Chapter 7 The library SM_CNCDiagnostic lib T The library SM_CNCDiagnostic lib This library provides auxiliary modules which can be very useful during the implementation phase because they help to display the data which are exchanged between the modules 7 1 Function blocks for the analysis of SMC_CNC_REF data 7 1 1 The function block SMC_ShowCNCREF This module can display the first ten lines of a NC program which is available in form of a data structure SMC_CNC_REF in text strings Din66025 The output is given in an array of string cnostr containing the text lines The visualization template VISU_SMC_ShowCNCRef can display these outputs SMC _SHOWCM CREF bEnable BOOL astr ARRAY 0 CNOSTR OF STRINGZ00 ncprag SMC OCNC_LREF VARIN OUT neprog SkiC_CNC_REF VWAR_IN_OUT 7 2 Function blocks for analysis of SMC_OutQueue data 7 2 1 The function block SMC_ShowQueue This module provides the first ten SMC_Geolnfo objects of an OutQueue in form of an ARRAY OF POINTER TO SMC_Geolnfo Some important elements can then be displayed by the visualization template VISU_SMC_ShowQueue Among them are object number line number obje
109. hat of the modules MC_ReadParameter and MC_WriteParameter 2 4 Variables of the AXIS_REF structure During compiling the project CoDeSys will create a structure variable of type AXIS_REF defined in SM_DriveBasic lib see Chapter 2 2 The structure AXIS REF is used as an interface between application and drive interface Via AXIS_REF cyclic and acyclic data are exchanged Most variables of the structure are not relevant for the user but are used internally by the system The user always should use function blocks and never directly access the structure at least not in a writing manner No Name Data type Initi value comments 1000 nAxisState INT standstill State of the Axis power_off errorstop stopping standstill discrete_motion continuous_ motion synchronized_motion homing NOORWNAO 2 12 SoftMotion in CoDeSys 2 3 Chapter 2 The SoftMotion Drive Interface No Name Data type Initi value comments 1001 wControlT ype WORD PLC Config Number indicates which parts of the structure are cyclically sended and received 0 defined by param 1002 1008 1 SetTorque 2 SetVelocity ActVelocity 3 SetVelocity ActPosition 4 SetPosition ActPosition 5 SetVelocity SetPosition ActVelocity ActPosition 6 SetVelocity 1002 wCyclicDataS 1 WORD PLC Config or Init FB Number of 3S parameters to be 1003 wCyclicDataS2 of send
110. he DataOutQueue SoftMotion in CoDeSys 2 3 6 3 Modules poqDataln POINTER TO SMC_OUTQUEUE This is a pointer to the SMC_OUTQUEUE structure object which contains the SMC_GEOINFO objects of the path to be shifted typically it points on the output DataOut of the preceeding module e g the SMC_NCDecoder dToolRadius LREAL This variable contains the value which determines added to the current ToolRadius of the SMC_GEOINFO object the tool radius by which the path should be shifted see above This value can be modified online Thus it is possible to predefine the value offline by the SMC_GEOINFO structure and to modulate it online Thereby regard that a tool radius correction which is initiated during the block is just being shifted will cause an abort of the path correction and therefore should be avoided But it is possible to do the radius correction during a reset or in a phase where it is guaranteed that the module is not currently shifting a block Status TC_ORIG Default 0 nSizeOutQueue UDINT This variable contains the size of the data buffer to which the list of GEOINFO structure objects will be written This buffer must be at least five times as big as a GEOINFO structure this means about 2KB If this is not the case SMC_NCDecoder will not execute any actions at all The value can be set but may only be modified later during a reset pbyBufferOutQueue POINTER TO BYTE This input variable must point to
111. he desired file has been selected the dialog CAM properties will be opened where a name for the CAM must be defined and the scaling of the slave axis must be adapted Due to the fact that during the creation of a CAM only that information is output which is needed for the execution of the CAM a read CAM can be different from the original Extras Export CAM as ASCII Table This command can be used to export the current CAM in an ASCII text file The number of points can be specified The start and end point always will be contained as first resp last point A text file with the following structure will be created lt Master Position gt lt Slave Position gt lt CR gt lt LF gt The resulting text file for example can be imported in other programs and can be used for the layout of drive line Insert Select elements is Use this command to switch on and off the select mode As long as the select mode is activated a check is displayed before the command in the Insert menu the button in the tool bar appears SoftMotion in CoDeSys 2 3 4 7 CAM data structures pressed you can select an CAM element by positioning the cursor on the desired element point line tappet and pressing the left mouse button Hereupon the corresponding position marks little red squares will be displayed and the element can be edited Insert Insert point E Select this command in the Insert menu or press the button in the
112. he examples shown above the maximum acceleration Accel is lower than the maximum deceleration Decel This causes the different slope values of the velocity curve at acceleration and deceleration The advantage of a sigmoid velocity profile is that the associated acceleration in contrast to the trapezoid is continuous and thereby brings a relief especially for heavy machines This must be paid by a slightly increased calculating time As the sigmoid velocity profile blue is designed in a way that changing to the trapezoid profile red does not result in a change of the time needed for the passing the complete path the restrained increase of the acceleration at the beginning and the end must be compensated by a higher acceleration in the midway Thereby you must regard that the maximum acceleration resp deceleration which is programmed in the SMC_GEOINFO objects will be exceeded in the maximum by the factor 11 2 a if t Any online change will not be applied like described for dOverride until a currently running acceleration or deceleration has been terminated In order to interpolate also the additional axes in the sigmoid form blue see drawing below instead of linearly red the corresponding bits must be set in the variable wSProfile of piStartPos of the current object This will effect that the additional axis does not get interpolated linearly concerning the path length in the X Y Z space but i
113. ical units u DWORD resp INT iMovementType two options for the motion type linear rotary fPositionPeriod Period for rotatory axes depends on the conversion factors dwRatioTechUnitsDenom and iRatioTechUnitsNum see above fSWMaxVelocity Maximum velocity for software check fSWMaxAcceleration Maximum acceleration for software check fSWMaxDeceleration Maximum deceleration for software check bSWLimitEnable Switching on a software position check only linear drives which effects that the axis will be set to error status as soon as leaving the permissible position range fSWLimitNegative negative position limit only linear drives fSWLimitPositive positive position limit only linear drives bHWLimitEnable Switching on a hardware position check only linear drives which effects that the axis will be set to error status as soon as leaving the permissible position range For Drive wld ID of the drive in the axis group WORD wControlType predefined control and return message types WORD lt Send data gt gt lt Return data gt 1 TOR gt Torque gt 2 VEL gt VEL Velocity gt Velocity 3 VEL gt POS Velocity gt Position 4 POS gt POS Position gt Position 5 POS VEL gt POS VEL Position gt Velocity 6 VEL gt Velocity gt SoftMotion in CoDeSys 2 3 2 3 PLC Configuration for SoftMotion 7 CONFIGU
114. icates an error in the function block ErrorlD SMC_Error INT Error number EndOfProfile BOOL Indicates the end of a CAM At periodic CAMS this output will be pulsed Tappets SMC_TappetData Tappet output The particular tappet positions finally will be evaluated by the SMC_GetTappetValue module MC_CamOut Using this module which is provided by the library SM_PLCopen lib you can disengage the slave drive from the master The slave will be driven on with the current velocity MC_CAMOUT Execute BOOL Slave AXIS_REF VAR_IN_OUT ErrorlD WORD Slave AXIS_REF VAR_IN_OUT SoftMotion in CoDeSys 2 3 5 17 Modules for Synchronized Motion Control MC_Gearln Using this module which is provided by the library SM_PLCopen lib you can couple the slave axis to the master axis Thereby the slave velocity is f times the velocity of the master axis The value of factor f results from the quotient of the input parameters RatioNumerator und RatioDenominator The module accelerates resp decelerates the slave axis as long as its velocity will have the desired ratio whereby the values of Acceleration and Deceleration will be regarded As soon as this has been reached the slave axis velocity derives from the master axis If the variable bRegulatorOn structure AXIS_REF Drive_Basic lib of the master axis is TRUE the set values of the velocity will be used otherwise the actual values MC_GEARIN Execute BOOL InGear B
115. ideally can be used for diagnosis purposes As the writing of data on a data medium usually needs some time this module stores the collected data in a buffer of size SkByte and the data will not be written until module action WriteToFile is called This action call should be placed in a slower ca 50 ms task of lower priority in order to not hinder the actual motion task and not to disturb the motion behaviour As soon as the buffer exceeds the module will create an error output SoftMotion in CoDeSys 2 3 10 3 Diagnosis function blocks SMC_AXISDIAGNOSTICLOG bExecute BOOL bCloseFile BOOL sFileName STRING 80 ErrorlD SMC_ERROR bSetPosition BOOL bRecording BOOL bActPosition BOOL Axis AXIS_REF VAR_IN_OUT bSet elocity BOOL bActVelocity BOOL bSetAcceleration BOOL bActAcceleration BOOL bySeparatorChar BYTE sRecordSeparatorString STRING 3 Axis AXIS REF VAR_IN_OUT Inputs of the module bExecute BOOL At a rising edge the module starts processing If there is already a file with the same name this will be overwritten bCloseFile BOOL The module closes the file as soon as this input gets TRUE sFileName STRING 80 File path and name bSetPosition bActPosition bSetVelocity bActVelocity bSetAcceleration bActAcceleration BOOL These inputs define whether the associated values of the axis should be written to the file bySeparatorChar BYTE Default TAB ASCIll Code of the le
116. immediate stop this means that the position will be retained Thus the velocity will be set to 0 immediately bWaitAtNextStop BOOL As long as this variable is FALSE default the path is passed non stop With TRUE the SMC_lInterpolator will be caused to retain the position at the next regular stop this means at position points where the velocity is 0 typically at path angles and to pause until bWaitAtNextStop will be reset to FALSE dOverride LREAL This variable can be used to handle the override Valid values are higher than 0 01 dOverride is multiplied with the scheduled velocity of the particular objects and thus allows to increase resp reduce the scheduled velocity in online mode For example dOverride 1 default effects that the programmed scheduled velocities will be executed while an dOverride 2 would double them Please regard The override can be modified at any time but the modification will only be applied if currently no acceleration or deceleration is in progress iVelMode SMC_INT_VELMODE This input defines the velocity profile The value TRAPEZOID default effects a velocity profile which has a trapezoid form SIGMOID one which has a S form Example of a trapezoid velocity profile byVel_ Mode 0 SoftMotion in CoDeSys 2 3 6 11 Modules r wa fh Lt Ly av 200 2p a ie Example of a sigmoid velocity profile byVel_Mode 1 20 f 930 oo o o 4150 480 20 240 270 aooo In t
117. ion which will help to check the paticular modules and the position of the axes Regard that the master of the CAM not only can be a virtual time axis but of course any desired AXIS_REF data structure For drives which are currently on regulation the target values will be regarded for drives which are not on regulation the current values 11 6 Example Changing CAMs See the corresponding sample project coming with SoftMotion PLCopenMultiCAM pro basing on the configuration file softmotion cfg Preconditions The libraries DriveBasic lib and SM_PLCopen lib are included This example shows how a CAM movement with two alternating CAMs can be realized It has been programmed in ST and performs the same actions like shown in the preceeding example At the end of the first CAM the MC_Camin module sets the output bEndOfProfile which will cause that the currently other MC_CamTableSelect will be used and restarted together with MC_CamIn 11 7 Example Drive Control via the CNC Editor 11 7 1 In three parts this CNC Example will show the basic structure of a possible CoDeSys IEC program which can realize the pathes designed in the CNC Editor Like described there are two possibilities to compile and to use a CNC program The first part of the example shows the direct creation of an OutQueue the second part shows the online decoding of the program by using variables The third part of the example shows how additionally to use a pa
118. ion block SMC_ReadFBError it can be checked whether resp which module error has occurred at last Via function SMC_ClearFBError that error can be deleted 9 1 Function blocks 9 1 1 SMC_ErrorString SMC _ERRORSTRING Error ShMC_Error SMC Errorstring STRING 00 Language SMC_LANGUAGE_TYPE Depending on the inputs ErrorlD SMC_Error and Language SMC_LANGUAGE_TYPE english german the function SMC_ErrorString returns a string representing the error 9 2 The enumeration SMC_Error The enumeration SMC_Error contains all error numbers which might be returned by SoftMotion function blocks Error Module Enum value Description no 0 all SMC_NO_ERROR no error 10 Drivelnterface SMC_DI_SWLIMITS_EXCEEDED Position outside of permissible range SWLimit 20 all motion generating SMC_REGULATOR_OR_START_NOT_SET Controller enable not done or brake modules applied 30 Drivelnterface SMC_FB_WASNT_CALLED_DURING_MOTI Motion creating module has not ON been called again before end of the motion SoftMotion in CoDeSys 2 3 9 1 The enumeration SMC_Error Error Module Enum value Description no 50 SMC_Homing SMC_3SH_INVALID_VELACC_VALUES invalid velocity or acceleration values 70 SMC_SetControllerMode SMC_SCM NOT SUPPORTED Mode not supported 80 SMC_ResetAxisGroup SMC_RAG_ERROR_DURING_STARTUP Error at startup of the a
119. ion limit only linear encoders fSWLimitPositive positive position limit only linear encoders For the elements BuslInterface AxisGroup and Drive spezial dialogs are available providing functions which make configuration easier For BusInterface simply the appropriate driver is selected For each axisgroup the task to which the axisgroup should belong can be selected and if needed event controlled tasks the cycle time can be defined For standard busses like CAN and Sercos also bus specific settings e g baudrate which are hidden in module parameters wParam resp dwParam can be done by the user Also the parameterizing of the driver is made a lot easier by the dialogs For CAN and Sercos drives additional tabs are available Those can be used to create initialisation parameters drive parameters which get transferred during the startup of an axisgroup in the form of tables or to write read that parameters to from a XML file 2 4 SoftMotion in CoDeSys 2 3 2 2 Chapter 2 The SoftMotion Drive Interface SM_DriveBasic lib and automatic Code Generation 2 2 1 If the library SM_DriveBasic lib is included in the IEC1131 application in CoDeSys CoDeSys will automatically generate structure objects based on the drive image which has been configured in the PLC Configuration editor These structures can be accessed by the IEC program Besides that to the IEC1131 application there must be linked a manufacture
120. is displayed red colored For Splines G05 the convex mantle of the cubic poynoms is displayed light grey colored 3 6 Commands and Options in the CNC Editor The Extras menu provides commands and options for the working and the display in the editor Of course you also can program by entering the corresponding instructions in the text editor Additionally in the toolbar the appropriate buttons are available An activated option gets marked by a check in the Extras menu and the button in the toolbar appears pressed You can choose one of the following edit modes is Select mode Ail Line Insert Mode G2 Circle CW Insert Mode al Circle CCW Insert Mode ei Spline Insert Mode You can set the view and path correction options via the following commands al Fit to Screen Renumber program Show grid Convert splines ellipses to lines Step Suppress cl Show Interpolation points im Tool radius correction bl Round off path E Slur path 3 8 SoftMotion in CoDeSys 2 3 Chapter 3 The CNC Editor in CoDeSys w Avoid loop Set epsilon values Note It is possible to choose more than one of the options Tool correction Round off path Slur path and Avoid loop Thus the effect of series connected path preprocessing elements can be simulated Only the preprocessing options Tool correction and Round off path resp Slur path cannot be activated at the same time Extras Select
121. isByPos but additionally the velocity can be defined SMC_CONTROLAKISBYPOSVEL iStatus SMC_INT_STATUS bCommandAborted BOOL bEnable BOOL bError BOOL bAvoidGaps BOOL iErrorlD SMC_ERROR fSetPosition LREAL bStoplpo BOOL fSetvelocity LREAL Axis AXIS_REF VAR_IN_OUT fGapVelocity LREAL fGapAcceleration LREAL fGapDeceleration LREAL Axis AXIS_REF VAR_IN_OUT SMC_ControlAxisByVel This module works similar to SMC_ControlAxisByPos but the axis is not controlled by the position but by the velocity SMC_CONTROLARKISBYVEL iStatus SMC_INT_STATUS bCommandAborted BOOL bEnable BOOL bError BOOL bAvoidGaps BOOL iErrorlD SMC_ERROR fSet elocity LREAL bStoplpo BOOL fGapAcceleration LREAL Axis AXIS_REF WAR_IN_OUT fGapDeceleration LREAL Axis AXIS_REF VAR_IN_OUT 8 3 Transformation function blocks The modules which refer to a special kinematics belong together in pairs whereby that module which is named SMC_TRAFO_ lt Kinematics gt proceeds a backward calculation and that which is named SMC_TRAFOF_ lt Kinematics gt proceeds a forward calculation Each instance of a SMC_TRAFOF_ lt Kinematics gt module can be connected to a visualization template which is named SMC_VISU_ lt Kinematics gt 8 2 SoftMotion in CoDeSys 2 3 Chapter 8 The Library SM_Trafo lib 8 3 1 Portal Systems For portal systems no transformation must be done thus the modules just add offset on
122. ive HAis ivelMinde iAct Object Source No 3000 _ _jduipoTime dr l SMC _ControlAnis By Pos veoActTangent iStatus bCommandborted iLast Switch lb Enable du Switches bAwoidGaps f Set Position if Gapvelocity aH f GapAcceleration ao f Gap Deceleration C iive Hais SMC _Restore Queue SMC _Restore Queue Please regard during programming in CFC the correct order of the elements 11 10 SoftMotion in CoDeSys 2 3 Chapter 11 Programming Examples 4 Creating the operation and test interface Create a new visualization and insert two visualization elements of type Visualization The first one is the Interpolator template the second one is the Transformation template They get linked to the corresponding function block instances here Ipo smci resp Ipo trafof via the placeholder functionality 5 Starting The program now can get compiled without errors and can be started It will execute the CNC program as soon as the Execute input of the Interpolators gets set After having been processed completely an other rising edge will cause a new run Regard the function of the path switches which are also displayed in the visualization of the Interpolator module 11 7 2 CNC Example 2 Decoding online with use of variables See the corresponding sample project coming with SoftMotion CNConline pro 1 Creating the NC program in the CNC Editor Like in the previous example we create a CNC p
123. l Meeting of stops cannot be guaranteed 1081 SMC_Interpolator SMC_WAR_END_VELOCITIES_INCORREC Warning End velocities T inconsistent 1100 SMC_CheckVelocities SMC_CV_ACC_DEC_VEL_NONPOSITIVE Velocity Deceleration or Acceleration values impermissible 1200 SMC_NCDecoder SMC_DEC_ACC_TOO_LITTLE Acceleration value impermissible 1201 SMC_NCDecoder SMC_DEC_RET_TOO_LITTLE Acceleration value impermissible 1202 SMC_NCDecoder SMC_DEC_OUTQUEUE_RAN_EMPTY Data underrun Queue has been read and is empty 2000 SMC_ReadNCFile SMC_RNCF_FILE_DOESNT_EXIST File does not exist 2001 SMC_ReadNCFile SMC_RNCF_NO_BUFFER No buffer allocated 2002 SMC_ReadNCFile SMC_RNCF_BUFFER_TOO_SMALL Buffer too small 2003 SMC_ReadNCFile SMC_RNCF_DATA_UNDERRUN Data underrun Buffer has been read is empty 2004 SMC_ReadNCFile SMC_RNCF_VAR_COULDNT_BE_REPLAC placeholder variable could not be ED replaced 2050 SMC_ReadNCQueue SMC_RNCQ_FILE_DOESNT_EXIST File could not be opened 2051 SMC_ReadNCQueue SMC_RNCQ_NO_BUFFER no buffer defined 2052 SMC_ReadNCQueue SMC_RNCQ_BUFFER_TOO_SMALL Buffer too small 2053 SMC_ReadNCQueue SMC_RNCQ_UNEXPECTED_EOF unexpected end of file 2100 SMC_AxisDiagnosticLog SMC_ADL_FILE_CANNOT_BE_OPENED File could not be opened 2101 SMC_AxisDiagnosticLog SMC_ADL_BUFFER_OVERRUN Buffer overrun WriteToFile must be called more frequently 2200 SMC_ReadCAM SMC_RCAM_FILE_DOESNT_EXIST File could not be opened SoftMotion in CoDeSys
124. le BOOL If this input is set to FALSE default the module is in waiting status this means that it will not perform any actions With TRUE it will start resp continue to slur the path 6 6 SoftMotion in CoDeSys 2 3 Chapter 6 The Library SM_CNC lib bReset BOOL By setting this variable to TRUE the module will be reset to the start state Thereby also the content of the SMC_OUTQUEUE structure DataOut will be removed Thereafter the module cannot get active again until bReset is reset to FALSE default dEdgeDistance LREAL This input variable contains the value which added to the corresponding Too Radius value of the SMC_GEOINFO object determines the minimum distance to an angle at which the particular objects will be cut and replaced by a spline see above This value can be modified online Thus it is possible to predefine offline by the SMC_GEOINFO structure and to modulate online Default 0 dAngleTol REAL This input describes the angle tolerance value see chapter 3 3 up to which a path bend should not be smoothed nSizeOutQueue UDINT This variable contains the size of the data buffer to which the list of GEOINFO structure objects will be written This buffer must be at least five times as big as a GEOINFO structure this means about 2KB If this is not the case SMC_NCDecoder will not execute any actions at all The value can be predefined but later it only may be modified during a reset pby
125. linear drive is defined with the name Drive E i Steuerungskonfiguration 4 Businterface VAR In the Task configuration the program Ipo is called which will create a movement on the given axis In the following it will be described how to create this program In the Object Organizer insert a program in Structured Text ST and fill it as follows Before we program a movement of the drive we want to make sure that the driver has found and initialized the drive As soon as this has happened we should unblock the controller and release the brakes if applicable This is done by the module MC_Power SoftMotion in CoDeSys 2 3 Chapter 11 Programming Examples PROGRAM Ipo VAR Init BOOL FALSE Power MC Power END VAR IF NOT Init THEN Power Enable TRUE bRegulatorOn TRUE DriveStart TRUE Axis Drive Init Power Status ELSE END_IF Now the drive can be controlled by the ELSE part of the first IF instruction For our current example we want to do that via the Positioning Module MC_MoveAbsolute For this purpose we define an instance of this module and a target position p which will be initialized with 100 We call this instance in each cycle with the required parameters As soon as the programmed position has been reached the Done output of the module will be set to TRUE and the Execute input must be set to FALSE if we want to start anew movement because the module need
126. lize profiles which get designed online by the IEC program e SMC_NCDecoder Decoding of the path which has been programmed in the CNC Editor in order to get structure objects e SMC_ToolCorr Path preprocessing tool radius correction e SMC_AvoidLoop Path preprocessing avoids loops in the path e SMC_SmoothPath Path preprocessing slurs the path by splines e SMC_RoundPath Path preprocessing ounds the path by circular arcs e SMC_CheckVelocities Check of the end velocities of the segments e SMC_Interpolator Conversion of the decoded eventually preprocessed path objects to discrete points e Auxiliary functions for moving and rotating a path e Global variables Setting some internal parameters e Structures SMC_POSINFO SMC_GEOINFO SMC_VECTOR3D and SMC_VECTOR6D Save of positions path segments and vectors e Structure SMC_OUTQUEUE Managing Geolnfo objects in a list of defined size The modules and structures will be described in the following chapters Also have a look at the programming examples in Chapter 11 Note Regard that the CNC Editor can compile a CNC program in two different ways as program variable SMC_CNC_REF which must run through Decoder and if applicable path preprocessing modules or as OUTQUEUE which can be directly passed on to the Interpolator 6 2 Modules SMC_NCDecoder The function block SMC_NCDecoder is used to convert a CNC program which has been created in the CNC Editor to a list of SoftMotion
127. lnnerOuter LREAL Ration of the radius of the inner ring to that of the outer ring for visualization adnxi adnyi adnxo adnyo ARRAY 0 5 OF LREAL Standardized start and end position of the bars for visualization 8 12 SoftMotion in CoDeSys 2 3 Chapter 9 The Library SM_Error lib 9 The Library SM_Error lib This library must be available in each project because it contains all error definitions It is used to display each error produced by a SoftMotion module as a string Basically the application programmer should regard that two types of error might occur in his program On the one hand there might be Drive errors that are errors in the drive e g lag errors missing power supply etc On the other hand there are Module errors which are errors reported by modules via the outputs Error und ErrorlD and which often are caused by an incorrect parameterizing Drive errors must be read via MC_ReadAxisError resp MC_ReadParameter and where appropriate deleted via MC_Reset Drive errors are drive specific and not standardized Module errors can be converted via the functions of the SM_Error lib to strings As these errors can occur at all SoftMotion modules and would have to be gathered by the application an additional functionality has been implemented in the AXIS _REF data structure always saving the last error which has occurred at a module with an AXIS REF input Via output FBErrorOccured of MC_ReadStatus or via funct
128. luded in the CoDeSys project In the CNC resp CAM Editor multi axis movements resp CAMs for the controlling of the drives can be programmed graphically and in character based format out of this programs CoDeSys then will automatically create the corresponding data structures CNC Data CAM Data which can be accessed by the IEC program See the following programming examples Drive Interface Create PLC Configuration chapter 2 1 Single Axis Motion Control chapter 11 3 Single Axis Motion Control in CFC with Visualization Template chapter 11 4 Drive Control via CAM and a Virtual Time Axis chapter 11 5 Changing CAMs chapter 11 6 Drive Control via the CNC Editor chapter 11 7 1 Direct Creation of the Queue chapter 11 7 1 2 Online Decoding Use of Variables chapter 11 7 2 3 Path Preprocessing online chapter 11 7 3 Dynamic SoftMotion Programming chapter 11 8 11 2 Example Drive Interface Create PLC Configuration for Drives See the corresponding sample project coming with SoftMotion Drivelnterface pro basing on the configuration file softmotion cfg This example describes how to map a given physical drive structure to the IEC program in the CoDeSys programming system By doing this configuration the IEC program will get access to data structures which can be used by the SoftMotion modules to create the desired movements First open the PLC Configuration Resources tab and select Extras Standa
129. lue of the input x for period m The return value always is within the interval 0 m The function SMC_atan2 calculates and returns the angle which solves the following equations sin alpha f Sinus und cos alpha f Cosinus In contrast to the common ATAN function the value range in this case covers the complete interval 0 2pi Axis group modules SMC_IsAxisGroupReady This function by a boolean variable returns whether the startup which implicitly is done for each axis group during the start or the program has been terminated and thus the group with its axes is operable TRUE or whether the startup is still going on or an error has occurred FALSE SMC_GetAxisGroupState This function block tells about the status of an axis group Inputs VAR_INPUT of the function block bEnable BOOL If this entry is TRUE the module provides information on the status of an axis group In Outputs VAR_IN OUT of the function block AxisGroup SMC_AXISGROUP_REF Axis group for which information is needed SoftMotion in CoDeSys 2 3 2 5 SM_DriveBasic lib and automatic Code Generation Outputs VAR OUTPUT of the function block bDone BOOL TRUE as soon as there are valid data on the ouputs wState WORD Internal state variable of the axis bStartingUp BOOL Axis group startup i e the drives get configured 0 lt wState lt 99 bNormalOperation BOOL Axis group in normal operation wState 100 bRes
130. m independency is reached For a quick understanding of the SoftMotion components it is recommended to study the corresponding examples 1 2 SoftMotion in CoDeSys 2 3 Chapter 2 The SoftMotion Drive Interface The SoftMotion Drive Interface 2 1 The Softmotion Drive Interface is a standardized interface which allows to include the abstracted image of a drive hardware in the IEC program and to configure and address it there It takes care of update and transfer of the motion data which are necessary for controlling the drive hardware This not only allows easy changing of drives and reuse of IEC programs but also saves the difficulties and inconveniences of connecting the drives The Drive Interface uses the following components e The CoDeSys PLC Configuration Here basing on a corresponding configuration file the structure of the drives which should be controlled must be mapped by the programmer and the appropriate parameters have to be set This structure then will be made accessible for the application with the aid of the Drive Interface libraries by implicitly created and assigned system variables e The internal library Drive_Basic lib provides IEC data structures and global variables which will represent the drives axis groups and bus interfaces which have been configured in the PLC Configurator e The driver i e the hardware and bus system specific library lt BusInterfaceName gt Drive lib e g Serco
131. mic SoftMotion Programming See the corresponding sample project coming with SoftMotion CNCDynamicPath pro basing on the configuration file softmotion cfg One of the advantages of SoftMotion is that the programmer and the user not only can influence the processing of a path but also can create and modulate this path while the program is running In order to reach this the programmer just has to replace the Decoder module by an self designed path generator Nevertheless the path preprocessing and especially the Interpolator can be used further on as usual In order to replace the Decoder module the OUTQUEUE structure object must be created in another way It must also be filled with GEOINFO objects which represent the desired path and it must be passed on to the appropriate subsequent module e g Interpolator Preparing steps e In the declaration part an OUTQUEUVE a GEOINFO structure object and a buffer of desired size must be defined QUEUE SMC_OUTQUEUE nSize 10000 BUF ARRAY 0 9999 OF BYTE GEO SMC_GEOINFO dT1 0 dT2 1 dToolRadius 0 dVel 100 dVel_End 100 Accel 200 dDecel 500 iObj_Nr 0 e In an Init Step in the implementation part of the program the OUTQUEUE structure must get initialized QUEUE nSize 10000 QUEUE pbyBuffer ADR BUF 1 Dynamc Path Programming In the program body there where you want to create the path implement the following steps for each GEOINFO object e Set
132. mm vorzunehmen 2 Create OutQueue file on compile This option corresponds to variant b see chapter 3 1 The CNC program is stored in a structure SMC _OUTQUEUE which is defined in the library SM_CNC lib This structure variable can be passed on directly to the Interpolator module So no variables can be used in the path but the advantage of this method is the minimized demand of online ressources 3 Don t compile This option corresponds with option b described in chapter 3 1 You have stored the program as an ASCII or as an OutQueue file in the file system of the controller and you want to read it at run time by one of the modules described in 10 2 CNC function blocks For this reason it should not be added to the IEC data SoftMotion in CoDeSys 2 3 3 11 Automatic structure filling in the CNC Editor 3 12 SoftMotion in CoDeSys 2 3 4 4 1 Chapter 4 The CAM Editor The CAM Editor Overview 4 2 The SoftMotion CAM disc CAM Editor is integrated in the CoDeSys programming interface Here you can graphically and tabularly create programs of electronic CAM discs and CAM switches for which CoDeSys automatically will create global data structures CAM Data during the compilation of the project This structures can be accessed by the IEC program For the preprocessing of the CAMs in the IEC program the functions and function blocks defined by PLCopen are used Library SM_PLCOpen lib Hint Have a look at
133. ms sion ii ennas a a a N aeneis 8 7 8 3 4 3 Jointed Scara SystemS eseeeeeeseeeeeeeeeeeeeeerrrittttetettittnttttesssrrrnnnnnsssssrrte ennt 8 9 8 3 5 Parallel Kinematics cccecc cece ceecceecceeeceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeseeeeeeeeeeereees 8 11 9 The Library SM Error lib 9 1 9 1 PUMCHONDIOCKS a a a a e a aa a a i a a E aake 9 1 o Ba aa RE Y E KOTRA ELOS EAEE EAT E TA T 9 1 9 2 The enumeration SMC_Error ccccccccccccceccceeccecceeeeceecceeceeeceeeeeaeceeeseneeeaeeaeas 9 1 10 The library SM _FileFBs lib 10 1 10 1 OVEIVICW csvenustreuttensa ctavesith a a Maver A A 10 1 10 2 CNG function DIOCKS ienna nea ea a a icaita aA 10 1 10 3 CAM Function BIOCkKS ereenn aa aae a a A aa a 10 3 10 4 Diagnosis function DICKS ides cssensscenccaveyeiees isd Sena wee eaneg eccnteceneentey ace oeenesd a ase 10 3 11 Programming Examples 11 1 11 1 OVE IVIC Weiss sic ctsn cessed coeagacatemeatarstneaetncmadat ads lacdsutatgenceeangnecataastagectedsdecanateneatotetaezs sees 11 1 11 2 Example Drive Interface Create PLC Configuration for Drives ee 11 1 11 3 Example Single Axis Motion Control c ccceeceeeeeseeecceeeeeeeeeeeeeaaaeeeeeeeeeeeeees 11 4 11 4 Example Single Axis Motion Control in CFC with Visualization Template 11 5 11 5 Drive Control via CAM and a Virtual Time AXIS 11 7 11 6 Example Changing CAMS icsveien scccecsnpavasebceetiecethedanvadact prektnensanecnbhereepetetaatornse 11 8 11
134. n a polynomial dependency on this path length thus resulting in a sigmoid profile for the axis position which has a velocity and acceleration of 0 at the beginning and at the end of a path segment 6 12 SoftMotion in CoDeSys 2 3 Chapter 6 The Library SM_CNC lib dwlpoTime DWORD This variable which must be set for each call contains the cycle time in usec dLastWayPos LREAL This input allows the user to measure the stretch of the path which is racked out by the Interpolator Output dWayPos is the sum of dLastWayPos and the distance covered within the current cycle If dLastWayPos 0 dWayPos shows the length of the current path segment If dLastWayPos is set equal to output dWayPos dWayPos always will be incremented by the current path segment and you get the total length of the already covered path In doing so dLastWayPos at any time can be re set to 0 or a different value bAbort BOOL This input aborts the processing of a outline Outputs of the function block bDone BOOL This variable will be set to TRUE as soon as the input data poqDataln have been processed completely Hereafter the function block will not perform any further actions until a reset will be done If input bExecute is FALSE bDone will be reset to FALSE bError BOOL In case of an error this input gets TRUE wErrorlID SMC_ERROR INT This enumeration variable may describe an error which has occurred during the interpolation run After an err
135. n block which is part of the SM_PLCopen lib causes a non stop motion of the axis with a predefined velocity AXIS REF In order to reach this velocity MC _MoveVelocity uses the programmed acceleration and deceleration values The target velocity always is positive The input variable nDirection defines the direction MC_MOVEVELOCITY In elocity BOOL CommandAborted BOOL Acceleration LREAL Deceleration LREAL Direction MC_Direction Axis AXIS_LREF VAR_IN_OUT Axis AXIS_REF VAR_IN_OUT In Output VAR_IN OUT of the function block Axis AXIS_REF This variable passes the structure which has been feded with the axis data by the Drive Interface Drive_Basic lib Inputs of the function block Execute BOOL Default FALSE At a rising edge at this variable the module will start the motion Velocity REAL Value of the maximum velocity difference to the ongoing motion not necessarily reached u s SoftMotion in CoDeSys 2 3 Chapter 5 The Library SM_PLCopen lib Acceleration REAL Desired acceleration increasing energy of the motor u s 2 Deceleration REAL Desired deceleration decreasing energy of the motor u s 2 Direction MC_Direction Default shortest This enumeration provides the desired direction only relevant for rotating axes modulo axis see Drive_Basic lib Permissible values current positive negative Outputs of the function block InVelocity BOOL Default FALSE
136. nd the last path position the subsequent path position point If the first GEOINFO object has been processed it will be removed from the poqDataln SMC_OUTQUEUE structure Please regard At the end of a path run the variable SMC_OUTQUEUE is empty If you want to process the same outline once more either you have to transform the CNC program via Decoder and Path Preprocessing Modules to a SMC_OUTQUEUE structure or you have to use the function SMC_RESTOREQUEUE also part of SM_CNC lib The latter is only possible if the OUTQUEUE buffer is so big that it can catch the complete path 6 14 SoftMotion in CoDeSys 2 3 Chapter 6 The Library SM_CNC lib 6 3 Auxiliary Modules for Path Rotations Translations and Scalings The function blocks SMC_RotateQueue2D and SMC_TranslateQueue3D rotate resp translate the path which is stored in the SMC_OUTQUEUE The input variable poqDaftaln is the pointer to the structure SMC_OUTQUEUE which describes the path to get rotated resp translated The input variable bEnable initialized with FALSE will avoid the rotation resp translation of the path until it is set to TRUE Then all GEOINFO objects found in poqDatal n will be processed As soon as bEnable gets FALSE the modules will not execute any further modifications The input variable bReset also initialized with FALSE effects that the GEOINFO objects which are currently found in the poqDatain will not get rotated resp translated but
137. ng to DIN66025 In the lower right part the program will be displayed graphically and finally you can modify the program it in the text or in the graphic part In each case it will be updated automatically in the other part In the menu bar the item Insert will be replaced by CNC program as long as the CNC Editor is active Insert a new CNC program Set the cursor to the CNC program list and choose command New CNC program in the menu CNC program or in the context menu A dialog will open where the name for the new program will be defined By default the CNC programs get the name _CNC lt n gt where n is a running number starting with 1 You can edit the default name in the dialog but you cannot use an already existing name After having closed the dialog with OK the new program name will appear shaded in the list In the text editor the first program line is displayed comment the graphic editor still is empty The currently selected program can be edited in the Text editor as well as in the Graphic Editor 3 4 SoftMotion in CoDeSys 2 3 Chapter 3 The CNC Editor in CoDeSys Rie 1 example 2 ne NO10 G01 X100 Y100 E100 F100 E 200 NO20 G01 Z40 F20 NO30 G03 X 100 R200 F100 NO040 G01 Z20 F20 F20 Delete CNC program Select the program in the CNC program list and choose the command Delete CNC program in the menu CNC program or in the context menu The program will be removed from the list and
138. nical units in increments Denominator 1051 dwRatioTechUnitsDenom DWORD 1 conversion from technical units to increments denominator 1052 iRatioTechUnits INT 1 conversion from technical units to Num increments numerator 1053 nDirection MC_Direct positive 1 negative fSetVelocity lt 0 ion 1 positive 1054 fScalefactor REAL 1 Conversion from bus unit to technical unit in techn units per unit received on bus 1055 fFactorVel REAL 1 Conversion from bus unit to techn unit s 1056 fFactorAcc REAL 1 Conversion from bus unit to techn units unit s 1057 fFactorTor REAL 1 Conversion from bus unit to Nm or N 1058 fFactorJerk REAL 1 Conversion from bus unit to techn units s 1060 iMovementType INT 1 0 Rotary modulo 1 Linear 1061 fPositionPeriod REAL 1000 Length of Period for rotational systems in techn units 1091 byControllerMode BYTE wControlType 1 Torque Control 2 Velocity Control 3 Position Control 1092 byRealControllerMode BYTE 0 actual controller mode 1100 1 fSetPosition REAL 0 Commanded position in technical units 1101 fActPosition REAL 0 Actual position in technical units 1105 fAimPosition REAL 0 Position of destination for some MC_FBs 1106 fMarkPosition REAL 0 internal position mark 1107 fSavePosition REAL 0 internal position at begin of cycle 2 14 SoftMotion in CoDeSys 2 3 Chapter 2 The SoftMotion Drive Interface No Name Data type Initi value comments 1110 11 f
139. nter to hardware specific TO BYTE structure lt BuslInterface gt _AXIS_ REF Each AXIS_REF structure variable behaves according to the PLCopen Specification Function blocks for motion control Version 1 0 SoftMotion in CoDeSys 2 3 2 17 Variables of the AXIS_REF structure SoftMotion in CoDeSys 2 3 Chapter 3 The CNC Editor in CoDeSys 3 The CNC Editor in CoDeSys 3 1 Overview The CNC Editor in CoDeSys allows to program multi dimensional motions graphically and textually in parallel following the CNC language DIN66025 For the CNC language see chapter 3 2 concerning the text editor see chapter 0 programming examples you find in chapter 11 Basically up to 9 dimensional motions can be realized whereby only two dimensions are not interpolated linearly Thus in two dimensions lines circles circular arcs parables and splines can be programmed the other directions merely get interpolated linearly For each programmed path CoDeSys automatically creates a global data structure CNC Data which can be used by the IEC program This can be done in different ways a The CNC program is stored as an array of G Code Words and will be decoded during runtime of the PLC program with the aid of a decoder module Thus for the particular path objects GEOINFO structure objects will be available path preprocessing modules see SM_CNC lib e g Tool Radius Correction afterwards interpolated transformed and returned to th
140. ol radius correction 3 10 6 3 Trafo lib 8 1 Transformation function blocks 8 2 Translation of a path 6 15 V Virtual time axis 2 8 Visualization templates 2 11 W word identifier 3 2 Write CAM to file 4 7 Write outqueue to file 3 7 SoftMotion in CoDeSys 2 3
141. on is solely initiated by the Drive Interface As soon as the drive signals that it has been finished the output Done will be set to TRUE MC_HOME Execute BOOL Done BOOL Position LREAL CommandAborted BOOL Deceleration LREAL Error BOOL Axis AXIS_REF VAR_IN_OUT ErrorlD INT Axis AXIS_REF VAR_IN_OUT Inputs of the function block Execute BOOL Default FALSE At a rising edge at this variable the motion of the drive will be started Position REAL Absolute position of the drive when the reference signal is detected Outputs of the function block Done BOOL Default FALSE If TRUE the reference move has been terminated and the drive is in standstill state CommandAborted BOOL Default FALSE This variable gets TRUE if the command gets aborted by another Error BOOL Default FALSE This variable gets TRUE when an error has occurred in the function block ErrorlD INT Error number MC_Stop This function block which is part of the SM _PLCopen lib decelerates the axis to velocity 0 No interrupt is possible and the axis will be blocked as long as the input Execute is TRUE and the axis not yet has been stopped completely SoftMotion in CoDeSys 2 3 5 5 Modules for Controlling Single Axis Motions MC_STOP Execute BOOL Deceleration LREAL Error BOOL Axis AXIS_REF VAR_IN_OUT ErrorlD INT Axis AXIS_REF VAR_IN_OUT In Output VAR_IN_ OUT of the fun
142. on visualization We use the visualization templates which are available in the libraries and we connect them via the placeholder concept with the function block instances f ISU MC_Power MC_MoveVelocity sane SFB AE Instanz F BS ErrorlD d Decel f amp Direction s Now we can compile the project without errors we log in to the controller and start By pressing the Execute input of MoveVelocity the drive should start rotating Press Execute of MoveAbsolute to position the drive to the set position whereby it will be rotated in positive direction according to the setting Direction positive SoftMotion in CoDeSys 2 3 Chapter 11 Programming Examples This will cause an interrupt of Module MoveVelocity Play with the modules and test various velocities and accelerations and also test the direction modes positive negative current shortest fastest of MoveAbsolute 11 5 Drive Control via CAM and a Virtual Time Axis See the corresponding sample project coming with SoftMotion PLCopenMulti pro basing on the configuration file softmotion cfg Preconditions The libraries DriveBasic lib and SM_PLCopen lib are included The following example demonstrates how a periodic CAM can be realized on a linear drive Additionally it shows the tappets function 1 First create any periodic CAM in the CoDeSys CAM Editor Resources tab CAMs which refers to a master axis covering a range between 0 and 10
143. only those which additionally come in as from now e SMC_ROTATEQUEUE2D The path stored in poqDataln will be rotated around the Z axis by the angle given by dPhi A positive angle effects a positive rotation in mathematical sense counterclockwise e SMC_TRANSLATEQUEUE3D The path stored in poqDataln will be translated according to the vector given by vec which is of structure type SMC_VECTOR3D see SMC_VECTOR3D e SMC_SCALEQUEUE3D The path contained in poqDataln will be stretched by factor fScaleFaktor As a sudden modification of the characteristic parameters of the rotation translation dPhi vec during the processing might cause a break in the path any changes of the corresponding inputs will not be regarded until the SMC_OUTQUEUE is empty at poqDataln or a Reset bReset will be done In order to effect a rotation in the XY plane around another point than 00 this means in order to reach the point XpYp use a sequence of a translation per the vector Xp Yp 0 the rotation per the desired angle dPhi and a further translation per the vector XpYp 0 6 4 Settings via global variables In SoftMotion_CNC_Globals there are defined several internal variables and constants Some of them can be modified Examination for zero see 3 6 Set epsilon values o g fSMC_CNC_EPS Epsilon value for accurate examination for zero o g fSMC_CNC_EPS RELUCTANT Epsilon value for tolerant examination for zero 6 5
144. oop cannot get detected Inputs of the module bExecute BOOL The function block will do a reset and start the path correction avoiding loops as soon as a rising edge is detected at this input bAppend BOOL As long as this input is FALSE at each reset the DataOutQueue will be cleared As long as it is TRUE newly incoming data will be written to the end of the DataOutQueue poqDataln POINTER TO SMC_OUTQUEUE This variable points to the SMC_OUTQUEUE structure object which contains the SMC_GEOINFO objects of the path typically it points on the output DataOut of the preceeding module e g the SMC_NCDecoder It should be dimensioned appropriately see above nSizeOutQueue UDINT This variable contains the size of the data buffer to which the list of GEOINFO structure objects will be written This buffer must be at least five times as big as a GEOINFO structure this means about 2KB If this is not the case SMC_NCDecoder will not execute any actions at all The value can be predefined but later it only may be modified during a reset pbyBufferOutQueue POINTER TO BYTE This input must point to the first byte of the memory area which is allocated for the 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 a byte array e g BUF ARRAY 1 10000 OF BYTE for a 10000 byte memory area The
145. or has occurred the processing gets stopped until a Reset will be done Per each call the SMC_Interpolator considering the predefined parameters the velocity history and the last position will calculate and put out the next point As soon as the processing of currently first GEOINFO object has been finished it will be removed from the poqDataln SMC_OUTQUEUE structure piSetPosition SMC_POSINFO This variable contains the target position which has been calculated according to the predefines Set_Position is a SMC_POSINFO structure and not only contains the cartesian coordinates of the target point on the path but also the position of the additional axes iStatus INT_STATUS INT This enumeration variable shows the current status of the function block Possible states IPO_UNKNOWN 0 Internal state This state may not occur after a complete pass of the SMC_lInterpolator IPO_INIT 1 Module is in initialization state Dataln currently is not full and also not yet has been full IPO_ACCEL 2 Module currently is accelerating SoftMotion in CoDeSys 2 3 6 13 Modules IPO_CONSTANT 3 Module currently is moving with constant velocity IPO_DECEL 4 Module currently is decelerating IPO_FINISHED 5 Processing of the GEOINFO list is terminated Any further GEOINFO objects which arrive subsequently in Data n will not be processed IPO_WAIT 6 Module is waiting because one of the following situations has occurred Emergency_Stop TRUE
146. ovements of several axes would be possible and the central controller did not have any influence on the drives during executing an instruction SoftMotion in CoDeSys 2 3 1 1 PLC Configuration for SoftMotion e CNC Editor The CNC Editor in CoDeSys allows to program multidimensional motions which can be transferred and controlled via the drive interface which does the communication with the drive hardware The editor works abutted to the CNC language DIN66025 synchronously in a graphical and a text editor Basically up to 9 dimensioned motions can be realized whereby only two dimensions will be interpolated not linearly Thus in two dimensions lines circles parables ellipses and splines can be programmed the other directions are interpolated just linearly For each path which has been designed CoDeSys automatically creates a data structure which is available in the IEC program e CAM Editor The CAM editor which is integrated in the programming interface of CoDeSys and which is usable graphically serves to program CAMs for the controlling of multi axes drives CoDeSys implicitly creates a global data structure for each programmed CAM This structures then can be used by the IEC program e CNC Libraries The library SM_CNC lib SM_CNCDiagnostic lib and SM_Trafo lib provide modules which can be used to realize display and execute the motions which have been programmed in the CNC Editor resp which are created during runtime
147. owing All SMC_GEOINFO objects which are found in the Input OUTQUEUE structure get checked one after the other If in one of the objects Bit1 Bit2 of the variable Intern_Mark is set then starting from there in direction of motion the path will be shifted to the left right by the currently set tool radius In order to get a continuous path a positioning object MoveType 100 is inserted resp if such a positioning object is already preceding the object it will be shifted directly to the start point of the shifted path Each further object then will be shifted also until BitO of Intern _Mark gets set This will stop the tool radius correction But also here a continuous prosecution of the path will be guaranteed by using a positioning object A shift in the opposite direction only can be started if the currently started tool correction has been terminated before by setting BitO The SMC_NCDecoder will set these bits thereby reacting on the instructions G41 G42 G40 In other words The tool radius correction will be done for all objects which are placed between the instructions G41 and G40 resp G42 and G40 Inputs of the function block bExecute BOOL The function block will do a reset and start the tool correction as soon as a rising edge is detected at this input bAppend BOOL As long as this input is FALSE at each reset the DataOutQueue will be cleared As long as it is TRUE newly incoming data will be written to the end of t
148. quidistant base point table of type SMC_CAMTable_ lt Datatype gt _ lt Element number gt _2 is created The table which is contained describes pairs of master and attached slave positions The partition is done in a way that elements with constant velocity lines each only get one base point at start and end The remaining base points are arranged as evenly as possible on the residual CAM 4 don t compile No global variables are created for the CAM This option mainly is used if the CAM should be loaded from the file system at run time see 10 3 CAM function blocks e g because it must be changed without making necessary a change of the running CoDeSys project The Master and Slave scaling only is of interest for the base point tables You can define the scaling of the master and the slave axis either via start and end value or via start value and unit Extras Write CAM to file This command opens a file selection dialog where a CAM file can be defined to which the currently edited CAM can be written This file can be read at run time by the function block SMC_ReadCAM see 10 3 CAM function blocks and can be converted to a standard data structure Depending on the currently set compile option the CAM will be stored in polynomial equidistant or element optimized format Extras Read CAM from file This command can be used to import a CAM description to the CoDeSys CAM editor by reading it from a CAM file After t
149. r specific library fitting to the used hardware This library must have the name lt BuslInterface_name gt Drive lib It supports the hardware specific Drive Interface functionality The Buslnterface_name results from the setting which has been made in the PLC Configuration in the module parameters of the bus interface see entry Interface Type From that string the left part before the first space is used Example CAN Peak gt CAN gt the manufacturer specific library will be named CANDrive lib During start of the application the implicit call of the functions lt BuslnterfaceBezeichn ung gt DriveExecute_Start and lt BuslInterfaceBezeichnung gt Drivelnit at the begin of the task and lt BusInterfaceBezeichnung gt DriveExecute_End at the end of the task will cause the transmission and maintaining of the AXIS_REF structure variables In case of errors during initialization of the drives the global variable g_strBootupError contains a error description which is created by the library lt BuslInterfaceBezeichnung gt drive lib Additionally to its main function the representation of the drives in the IEC program the library SM_DriveBasic lib also contains some auxiliary modules Mathematic auxiliary modules of SM_DriveBasic lib 2 2 2 The function SMC_sgn returns the value of the sign of the input thus 1 if the input is negative 1 if it is positive and 0 if it is zero The function SMC_fmod calculates the modulo va
150. rd configuration SoftMotion in CoDeSys 2 3 11 1 Example Drive Interface Create PLC Configuration for Drives For this example it is assumed that a Sercos field bus is used and e g an ISA Bus Card from Automata Hence use the command Append Businterface in the context menu right mouse button For this bus interface now the appropriate module parameters Modulparameter have to be set First define the InterfaceType In our example no hardware is available and we set a kind of simulation mode by selecting Dummy fff PLC Configuration 1 InterfaceType 2 wParam1 0 3 wParam2 D 4 dwParam1 0 5 dwParam2 0 Depending on the chosen InterfaceType the further parameters have to be defined E g for Sercos Automata you have to set the interrupt number in wParam1 the hardware type in wParam2 and the base address of the card in dwParam1 It is assumed that the card has to serve a ring of four drives Thus the entry Buslnterface in the configuration tree must be selected dotted frame click in the configuration tree window with the right mouse button and select command Append AxisGroup fff PLC Configuration E G Testkonfiguration 5 4 Businterface VAR Module parameters sTask 2 dwCycle 0 0 3 wParam1 0 0 4 wParam2 0 0 5 wParam3 0 0 6 wParam4 0 0 7 dwParam1 0 For the AxisGroup now define the Modulparameters First enter the name of the Task sTask which will control the drives
151. rder to modify the settings which you have made before when creating the CAM in the dialog CAM Properties see Chapter 4 3 use the command Settings in the Extras menu Display of the CAM For this the command Show complete CAM in the Extras menu Display mode of the lower part of the editor window Choose one of the following types by the corresponding command from the Extras menu or by the button in the tool bar Show velocity acceleration In the lower window the first blue and second green derivation of the CAM will be visualized CAM as table The lower window shows the CAM elements points lines and their properties in an editable table Tappets as table The lower window shows the CAM switches tappets and their properties in an editable table 4 4 2 Editing the properties of a particular CAM element The attributes of a single path object can be modified in the CAM Element Properties dialog or by selecting and moving the element in the editor window 1 Inthe CAM Element Properties dialog Point Line By a double click on the element in the CAM editor window the dialog CAM Element Properties can be opened to edit the following properties by numeric inputs Properties CAM Element Ea Element type Master start 72 632 Slave start 28 571 Ay Cancel Master end fi 44 211 Slave end A 429 tena Velocity Acceleration 0 000 Element type Line resp Point if a line is
152. reted as comments and do not have any effect on the programmed path Nested comments are not supported The line number N lt number gt currently has no meaning but is expected for conformity reasons All numbers except for that of the running order G lt number gt and the switch number H lt number gt can be floating values The Switch functionality enables the programmer to operate binary path dependent switches Basically always first the number of the switch must be specified H lt number gt then the switch position must be defined either absolutely by using the word L lt position gt or relatively by using the word O lt position gt In the following example switch2 is turned off at position X 40 Y 25 after a fourth of the object N90 G1 X20 Y20 N100 G1 X100 Y40 H 2 00 25 Regard that a the number of possible switches within one path object is limited MAX_SWITCHES Regard For each path object only a limited number of switch point switch actions MAX_SWITCHES can be processed A switch point position only can be inserted in the CNC text editor It will be displayed in the graphic editor as a green point on the path 3 2 SoftMotion in CoDeSys 2 3 Chapter 3 The CNC Editor in CoDeSys Additionally there is the possibility to use global variables instead of variables These must be embraced by two signs e g R g_fVar Word identifiers D zr Qj 71 M m o DO U O N lt xg lt c Tool
153. rogram but now we use two global variables g_x and g_y E g VAR_GLOBAL g_x REAL 100 g_ REAL 50 END_VAR We choose compilation mode Create program variable on compile because we are using variables in our CNC program CNC Programmiliste comment NO G01 X gq_x YO F50 E30 E 30 N10 G01 X0 Y q_y N20 G01 X0 YO 2 Drive Interface PLC configuration The drive structure is the same as described in Example 1 3 Creating the IEC program Due to the fact that we have chosen a different compile mode for the current example we have to do the decoding and path preprocessing in the IEC program This time consuming process must not be done in time with the Interpolator reason at each call of the Decoder a path object is created which typically can be used for many Interpolator calls thus the Interpolator often is swapped out to a task of lower priority which is called more rarely SoftMotion in CoDeSys 2 3 11 11 Example Drive Control via the CNC Editor Task configuration of x E Task configuration a g System events Taskattributes l Name FPathT ask Priority 0 15 fi 0 Type cyclic C freewheeling C triggered by event figgered by evtemallevent Interval e g t 200ms T 30ms fins 7 Properties ali oil The underlying mechanism In the slow task initially about one GEOINFO object will be created per cycle which is stored in the OUTQUE
154. ructure 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 a byte array e g BUF ARRAY 1 10000 OF BYTE for a 10000 byte memory area The value can be predefined but later it may only be modified during a reset Outputs of the module bDone BOOL This variable will be set to TRUE as soon as the input data from Dataln are processed completely Thereafter the module will not perform any further actions until it gets reset If input bExecute is FALSE bDone will be reset to FALSE 6 8 SoftMotion in CoDeSys 2 3 Chapter 6 The Library SM_CNC lib bError BOOL In case of an error this input gets TRUE wErrorlID SMC_ERROR INT In case of an error this input shows the error number poqDataOut POINTER TO SMC_OUTQUEUE This output variable points on a SMC _OUTQUEUE structure which manages the rounded SMC_GEOINFO objects SMC_CheckVelocities This module checks the velocities of the particular path segments If the OutQueue has not been created by the editor but by the IEC program e g by SMC_NCDecoder this module must be called immediately before the Interpolator The main task of this function is to check the path for sharp bends and to reduce the velocity to zero at those Inputs of the module bExecute BOOL Bei steigender Flanke wird die Uberpriifung begonnen poqDataln POINTER TO SMC_OU
155. rve real drives it works according to the same principle SoftMotion in CoDeSys 2 3 2 11 2 3 1 Variables of the AXIS_REF structure SercosDrive lib 2 3 2 With this library which in turn uses the external library SercosBase lib as an interface to the hardware all Sercos conforming drives can be controlled Similar to CAN there are function blocks for reading and writing of parameters SMC_ReadSercosParameter SMC_WriteSercosParameter SMC_ReadSercosList SMC_WriteSercosList SMC_ReadSercosString The precise range of functions is described in document SercosDrive pdf SM_CAN lib e For each connected CAN drive contrary to Sercos a separate driver is needed e However if this is specified accordingly in the cfg file commonly for all CAN drives in the PLC Configuration the baudrate and the number of the CAN Controller starting with 0 can be defined in the axis group dialog In order to keep the bus deterministically in a CAN channel either I Os or drives but never both in time is used If the 3S CANopen library should be used that automatically will take the first CAN controllers and so for the axis group another one can be reserved e All CAN libraries created by 3S base on library SM_CAN lib It contains two modules which have practical meaning for the user because they can be used to simply parameters of the drive SMC_ReadCANParameter and SMC_WriteCANParameter The functionality is similar to t
156. s a rising edge to start working Continuation of the above shown program ELSE oveAbsolute Execute TRUE Position p Velocity 100 Acceleration 100 Deceleration 100 Axis Drive IF MoveAbsolute Done THEN MoveAbsolute Execute FALSE Axis Drive END IF END IF Now the program can be compiled error free you can switch to online mode and start the program Monitoring the current position Drive fActPosition in a watch list or in the Sampling Trace will show how the drive is moving towards this position If you force the value of p the axis will move towards the new target position as soon as the last one has been reached For a graphical monitoring of the movement visualization templates for drives are available in library SM_DriveBasic lib To use those templates first go offline create a new visualization and insert a visualization element From the list which will show the available visualizations select LinDrive Then perform a double click on the newly created element and in the dialog Visualization in Placeholder insert the name of the drive structure here Drive as a replacement for AXISREF The visualization configured in this way will display the position of the drive ix Example Single Axis Motion Control in CFC with Visualization Template 11 4 Example Single Axis Motion Control in CFC with Visualization Template See the corresponding
157. sDrive lib which has to be provided by the drive manufacturer offers special functions for the data exchange between the structures and the hardware see 2 4 implicit code generation cyclic call PLC Configuration for SoftMotion Have a look to the programming examples in Chapter 11 The CoDeSys PLC Configuration usually provides the following elements which can be used to map the structure of the drive hardware Businterface Card with a field bus which can address drives Q Axisgroup a physically linked group of drives SoftMotion in CoDeSys 2 3 2 1 PLC Configuration for SoftMotion P Drive Drive Encoder Encoder Depending on the used configuration file and on the driver some parameters may left out resp additional ones can be there which in this case will start with MS The bus interfaces axis groups and drives can get any desired but unique IEC 61131 3 identifiers i P Top Drive AR oa AxisGroup VAR i gP Upper Drive VAR Drive VAR nia For each element module parameters can be defined in tab Module parameters For BusInterface wParam1 card specific parameter of type WORD wParam2 dwParam1 card specific parameter of type DWORD dwParam2 For AxisGroup sTask String complying with the name of the task which will handle the data transfer of this axis group dwCycle Cycle time in microseconds of the task which is
158. sample project coming with SoftMotion PLCopenSingle2 pro basing on the configuration file softmotion cfg Like the following example shows instead of ST you can use any other IEC language for programming This example should help to understand the start and interrupt mechanism of the function blocks in the example project Additionally the various start modes for module MC_MoveAbsolute for rotatory drives can be tested Create a PLC configuration and task configuration like described for the previous example but this time use a rotatory drive with period 360 Program Ipo is written in CFC it only contains three calls of instances of the function blocks MC_Power needed for activation of the axis MC_MoveAbsolute and MC_MoveVelocity SoftMotion in CoDeSys 2 3 11 5 Example Single Axis Motion Control in CFC with Visualization Template Ipo PRG CFC 0001 PROGRAM ipo mep MC_Power Enable TRUE bRegulatorOn TRUE bDriveStart TRUE memy MC_MoveVelocity Velocity 100 Acceleration 100 Deceleration 100 Direction positive mema MC_MoveAbsolute Position 180 Velocity 100 Acceleration 100 Deceleration 100 Direction positive MC_MoveAbsolute memy MC_MoveVelocity Execute InVelocity CommandAborted It is recommended to initialize the inputs of the modules because then we will not need to re insert these values each time when we start this test application Additionally we create a operati
159. soon as the commanded position has been reached CommandAborted BOOL Default FALSE This variable gets TRUE as soon as the commanded motion was interrupted by any motion function block acting on the same axis except MoveSuperlmposed Error BOOL Default FALSE This variable gets TRUE when an error has occurred in the function block ErrorlD INT Error number MC_MoveSuperlmposed This function block which is part of the SM _PLCopen lib causes where appropriate additionally to the currently active motion another one which makes the axis passing a defined distance The given values for velocity acceleration and deceleration must be regarded as relative values this means that they are independent of the underlying motion The originally active module will not be interrupted by MC_MoveSuperlmposed If the originally active module gets interrupted by another module while MC_MoveSuperlmposed still is active MC_MoveSuperlmposed nevertheless will continue the started motion additionally to activity of the new module The basically active module will not be interrupted by MC_MoveSuperlmposed If the basically active module gets interrupted by another one while MC_MoveSuperlmposed is active then the movement of MC_MoveSuperlmposed will be aborted Please regard that MC_MoveSuperlmposed may not be called before the module which creates the underlying motion MC_MOVESUPERIMPOSED Done BOOL Busy BOOL CommandAborted BO
160. start position first object GEO piStartPos dX 0 __fesp copy from the preceeding object GEO piStartPos GEO piDestPos e Define move type e g GEO iMoveType CCWL or GEO iMoveType LIN e Set the parameters required by the chosen move type If you have defined a circular arc e g CCWL do not forget to set the following parameters see structure SMC_GEOINFO GEO dP1 200 GEO dP2 100 GEO dP3 50 GEO dT1 0 GEO dT2 90 e if applicable set the start or end bit in InternMark for the path preprocessing see structure SMC_GEOINFO SoftMotion in CoDeSys 2 3 11 15 Dynamic SoftMotion Programming e Calculate the end position SMC_CalcEndPnt ADR GEO e Calculate the length of the object SMC_CalcLengthGeo ADR GEO e Store the object to OUTQUEUE SMC_AppendObj POQ ADR QUEUE PGI ADR GEO e As soon as the path has been created completely the OUTQUEUE list must be closed QUEUE bEndOfList TRUE Regard that if the OUTQUEUE is full i e if QUEUE bFULL TRUE the program will not try any longer to add further objects In this case the creation of the path must be interrupted until the first object of the OUTQUEUE has been processed Then a further object can get appended If you want to avoid this case you must define the size of OUTQUEUE sufficiently high so that all GEOINFO objects of the desired path
161. t be modified in the text editor Extras Extras Spline Insert Mode al If this option is activated a mouse click within the editor panel will insert a Spline That will be placed behind the currently marked red colored element The mouse position defines the second end point of the spline Extras Extras Fit to Screen al If this option is activated the visible part of the window will show the complete NC program Extras Renumber program 10 2 This command automatically renumbers the program assigning new line numbers N lt number gt in decimal steps Extras Show grid If this option is activated in menu Extras a visible grid will be added to the graphic editor SoftMotion in CoDeSys 2 3 3 9 Commands and Options in the CNC Editor Extras Convert splines ellipses to lines Splines and ellipses need a lot of computing time for interpolation In order to reduce this time use this command to approach all splines and ellipses of the NC program by a number of lines Thus for designing the path splines and ellipses can be used but those must not be computed during run time The command opens a dialog providing two options for the conversion a length dependent i e per x length units number x can be inserted in the dialog of the spline ellipse a line will be created or b angle dependent i e the original object will be partitioned in a way that the arising lines will incl
162. tVelocity and determines the acceleration or deceleration value which according to amount is the highest SMC_GETMASSETACCDEC bEnable BOOL fMaxAcceleration LREAL bResethlax gt BOOL dwTimeathiax WORD dwTimestamp DWOR Axis AXIS_REF VAR_IM_OUT Axis AXIS_REF VAR_INM_ OUT SMC_GetTrackingError This function block measures the actual and maximal lag error again the dead time which can arise from the communication via a field bus and which is given in number of cycles byDeadTimeCycles Like with SMC_GetMaxSetVelocity a time stamp dwTimeStamp can be used to measure the time at the maximum 2 10 SoftMotion in CoDeSys 2 3 2 2 8 Chapter 2 The SoftMotion Drive Interface SMC_GETTRACKINGERROR bEnable BOOL bValueValid BOOL bResethax BOOL factTrackingErroar LREAL byDeadTimecycles BYTE fMaxTrackingError LREAL dwTimeStamp DWORD dwTimestMWas DWORD Axis AXIS_REF VAR_IM_OUT Axis AXIS_REF VAR_IM_ OUT Encoder 2 2 9 Using the PLC Configuration you can add encoders to an axis group and cofigure them The data structures if type SMC_ENCODER_REF must be processed by an instance of the SMC_Encoder module This instance will provide as an output an AXIS_REF data structure which as soon as the output bValid has confirmed the validity of the data will serve as an input for all other function blocks e g MC_CamIn MC_Gearln MC_TouchProbe Via the boolean input bSet the current value of
163. tangents of two path objects which will cause a stop SoftMotion in CoDeSys 2 3 3 5 Start Inserting and Managing of CNC Programs Winkeltoleranz f r Stops X o o49 OK 0 180 Abbruch di Example Maximum tolerance angle 45 Move program This command will open the dialog translation vector where you can define a vector by which the CNC program will be shifted You can insert values for the following axes X Y Z P Q U V W Rotate program Use this command if you want to rotate the current program In the dialog Rotation angle insert the desired angle The program will be rotated accordingly counterclockwise around the zero point Stretch program This command opens the dialog Stretch coefficient Insert here the factor by which the NC program should be stretched Invert direction If you choose this command the path will be inverted in order to get processed in the reverse direction The switch positions will stay as they were before Split object This command opens a dialog where you can define for the currently selected path object a Split position Enter any value between 0 start position of the current object and 1 end position to mark the desired position where the object should be split to two objects Example Object N10 will be divided at position 0 5 NO G01 X123 000000 73 550000 N10 G01 X40 0 Y50 0 Result new object additonal position at X 20 NO G01 X20 000000 Y40 000000 N10 G0
164. tend the previous example by a path preprocessing function The corners of the program should be smoothed by splines This is done by the SMC_SmoothPath module The CNC program must be embraced by the words G51 G50 CNC program list mife Xx comment NO G51 D10 N10 G01 X g_x YO F50 E30 E 30 N20 GO1 X0 Y q_y N30 GO1 X0 YO N40 G50 If we did not use variables we could compile the program as it is as a Queue and could directly pass it on to the Interpolator But using variables we must do the decoding and rounding off in the program For this purpose we define a new POU of type SMC_SmoothPath and call it after the Decoder SoftMotion in CoDeSys 2 3 11 13 Example Drive Control via the CNC Editor ncDecoder SMC_NCDecoder ADR bufop a pbyBuflerOulQueue iLineNumberDecoded __ Example ncprog gt gt ncprog SmoothPath SMC_SmoothPath neDecoder bExecute gt bExecule ncDecoder bAppend bAppend poqDatain dEGgeDistance poqDataOul dAngleTol nSieOutQueue ADRibufs000 pbyBuferOutQueve The data input of the Interpolator module as always must be connected to the output poqDataOut of the CheckVelocities module This program can get compiled without errors and will not stop contrary to the previous one in the corners of the NC program because the corners now have been smoothed by the path preprocessing module 11 14 SoftMotion in CoDeSys 2 3 Chapter 11 Programming Examples 11 8 Dyna
165. ter confirming with Apply the green arrow above the tappet symbol will point to the right and to the left Action One of the following options can be set to define which effect the activation of the tappet should have on the action which is assigned in the project on The action will be started the tappet bit will be set tot TRUE The tappet symbol will be filled green off The action will be stopped the tappet bit will be set tot TRUE The tappet symbol will be filled red invert If the action is currently active it will be stopped if it is currently inactive it will be started the tappet bit gets inverted The tappet symbol will be filled yellow timed in The action will be started with the values which are given in the fields Delay and Duration The tappet symbol will be filled cyan colored Group ID Identification number INT of the tappet which serves to reference the tappet in the project several tappets can get the same GroupID and thus get grouped for the purpose that the assigned action would serve the same digital switch Delay ys Period of time which should be waited before the action assigned to a tappet gets started after the tapped was passed after which the tappet bit should be set tot TRUE only if action timed in Duration ps Define here how long the action which is assigned to the tappet should stay active how long the tappet bit should stay TRUE only if action timed in Mast
166. th an intersection is detected the path will be cut at this point the loop will be removed and the path will be continued with the rest of the curve Thus a loopless continuous path results See for a typical application in the description of the SMC_ToolCorr module The SMC _AvoidLoop function block is working as described in the following The module passes all SMC_GEOINFO objects which are found in the input SMC_OUTQUEUE structure If in one of these objects Bit7 of the variable Intern Mark is set then the avoid loop functionality will be activated It will start to check whether there is any intersection point of the current object with the subsequent SMC_GEOINFO objects which come before a SMC_GEOINFO Object in which Bit6 of the variable Intern_Mark is set This bit will terminate the avoid loop functionality If no intersections are found the object will be copied unchanged to the Output SMC_OUTQUEUE Otherwise the first of the intersecting objects will be cut at the intersection point the SMC_GEOINFO objects positioned between the intersecting objects will be removed and the new path will be continued with the second of the two intersecting objects The SMC_NCDecoder will set the Bits 6 and 7 of Intern_Mark as an reaction on the instructions G61 G60 Regard It depends on the size Input SMC_OUTQUEUE whether the SMC_AvoidLoop module can work correctly If a loop contains more objects than can be stored in the SMC_OUTQUEUE then the l
167. th preprocessing module CNC Example 1 Direct Creation of the OutQueue See the corresponding sample project coming with SoftMotion CNCdirect pro basing on the configuration file softmotion cfg 1 Creation of the NC program in the CNC Editor We create an example program which is running between x out of 0 100 and y out of 0 100 Additionally we define the velocities and accelerations for the path and set two witch points on the path E g SoftMotion in CoDeSys 2 3 Chapter 11 Programming Examples CNC program list comment NO G01 X82 9 Y 8 9 F50 E30 E 30 N10 G02 X84 9 Y84 6 R100 H12 L10 N20 G01 X 6 6 Y25 7 H 1 00 8 N30 G03 X54 6 Y49 7 R100 As compile mode we choose create OutQueue on compile 2 Drive Interface PLC configuration Define a drive structure with 2 linear drives the maximum velocity etc is to be set E nas LC Configuration a _Drive VAR ee P Y_Drive VAR 3 Creation of the IEC program First we have to activate the drives via the MC_Power module mepi mep2 MC_Power MC_Power hier eo eee TRUE B TRUE E Axis e Axis e A further important element is the SMC_Interpolator module As input poqDataln it gets the address of the CNC program Besides that the IEC task cycle time must be written to dwilpoTime SoftMotion in CoDeSys 2 3 11 9 Example Drive Control via the CNC Editor smci SMC_Interpolator ADR Example iActObjectSourceNo 3000 dvel
168. the encoder can be set on the input fSetValue Visualization templates For each of the two drive types linear rotatory the library contains a visualization template which can be linked to the axis structure AXIS_REF in order to visualize the current position of the drive LinDrive For a linear drive this picture will be displayed The slide will be positioned according to its current position relating to the lower and upper position limit and gets blue as soon as it is in regulation It is a precondition for the use of the template that the parameters fSWLimitPositive and fSWLimitNegative are set The template LinDrive_V will picture the drive in vertical shape RotDrive 2 3 For a rotatory drive this picture will be displayed The current position is shown by the position of the arrow and gets blue as soon as the drive is in regulation It is a precondition for the use of the template that parameter fPositionPeriod is set Drive Driver lt BusInterfaceName gt Drive lib e Drive driver are responsible for the communication between IEC programs especially the AX IS_REF structures and the drives They are CoDeSys libraries and contain at least the three functions mentioned in 2 2 Those libraries typically are provided by the manufacturer and must be included in the project e DummyDrive lib is an example for drive driver libraries and is provided with the SoftMotion libraries Even if this library does not se
169. the first byte of the memory area which is allocated for the 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 a byte array e g BUF ARRAY 1 10000 OF BYTE for a 10000 byte memory area This value can be predefined but later it only can be modified during a reset Outputs of the function block b_Done BOOL This variable will be set to TRUE as soon as the input data of Dataln have been processed completely Thereafter the module will not perform any further actions until it gets a reset bError BOOL In case of an error this input gets TRUE wErrorID SMC_ERROR INT In case of an error this input shows the error number poqDataOut POINTER TO SMC_OUTQUEUE This variable points to a SMC_OUTQUEUE structure which manages the decoded SMC_GEOINFO objects iStatus SMC_TC_STATUS INT This enum variable shows the current status of the module Possible states TC_ORIG 0 No tool radius correction at the object TC_RIGHT 1 Shift objects to the right TC_LEFT 2 Shift objects to the left TC_END 4 Processing of the objects has been terminated SoftMotion in CoDeSys 2 3 Chapter 6 The Library SM_CNC lib SMC_AvoidLoop The SMC_AvoidLoop function block can be used for path preprocessing It creates a loopless path copy of a defined path If in the original pa
170. the focus will be set to the subsequent one Rename CNC Program Select the program in the CNC program list and choose command Rename CNC program in the menu CNC program or in the context menu The dialog Program name will open where you can edit the program name CNC Program Info Select a program in the CNC program list and choose command Info in the menu CNC program or in the context menu The window CNC program information will open and provide information on the program Define queue size This command opens the dialog Size of queue data buffer where you can define the buffer size of the OutQueue This is of main interest when only limited memory space is available for the NC function blocks in the IEC program so that not all Geolnfo objects can be stored there and the ring buffer functionality must be used Thus special effects can occur e g slowing down at points without deviation which you can simulate and reproduce by using this function Possible values 5000 100 000 Bytes With OK the settings are applied Define start position In the dialog Define start position you can set the coordinate values for the start position default 0 of the path for simulation purposes For the following axes you can enter a start position X Y Z P Q U V W Set angle leeway for stop In the dialog Set angle leeway for stop the sensitivity for a sharp bend of the path can be set Insert the angle 0 180 between the
171. the user to modify that CAM also during run time SoftMotion in CoDeSys 2 3 5 19 Additional Elements of the SM_PLCopen lib Master 0 000000 Slave 180 000000 Vel 2 812500 Acc 0 000000 inc inc inc inc 1 000000 1 000000 0 200000 0 100000 360 00 0 00 i The red circle marks the current CAM point That can be changed via the arrows in the lower left corner The buttons in the lower right can be used to select whether position velocity or acceleration should be displayed The arrows in the upper bar can be used to move the master slave position slave velocity and acceleration by the specifiec increment In Outputs VAR_IN OUT of the module SMC_CAMEditor CAM MC_CAM_REF CAM to be visualized and modified Inputs of module SMC_CAMEditor Enable BOOL Default FALSE Getting TRUE activates the module dYPeriod LREAL Slave period for periodc CAMs bPeriodic BOOL Default TRUE TRUE for periodc CAM otherwise FALSE In Outputs VAR_IN_ OUT of module SMC_CAMEditor ce SMC_CAMEditor SMC_CAMEditor Instance No of Elements 2 SMC_CAMRegister This function block represents a tappet control unit It works like MC_Camln on a MC_CAM_REF structure negating the original path information and only reading the tappet information In Outputs VAR_IN_ OUT of the function block Master AXIS_R
172. theron the module limits the path acceleration on circles on value dMaxAcc by appropriately reducing the path velocity of the circle Inputs of the module bExecute BOOL SoftMotion in CoDeSys 2 3 6 9 Modules The module will perform a reset and will start tool radius correction as soon as this input gets a rising edge bAppend BOOL If FALSE at each reset the output data queue DataOut will be cleared If TRUE the new data will be written to the end of the DataOut queue poqDataln POINTER TO SMC_OUTQUEUE This input points on the SMC_OUTQUEUE structure object which contains the SMC_GEOINFO objects of the path to be modified typically it points on output DataOut of the preceding module e g SMC_NCDecoder dMaxAcc LREAL This input variable gives the maximum acceleration value permissible for circular arcs A value equal 0 will cause that no check will be done dMaxAccJump LREAL This input variable gives the maximum acceleration jump a for a transition of two objects A value equal 0 will cause that no check will be done dVmaxPerRadiusUnit LREAL This input variable contains the value Acc4t1 see above i e the maximum velocity of the arc ata radius of 1 nSizeOutQueue UDINT This variable tells about the size of the data buffer to which the list of rounded GEOINFO structure objects is written This must be five times as big as a SMC_GEOINFO structure thus must have a size of ca 2KB If this is not the c
173. tio dnOtfsett Drive AXIS_ REF VAR_IN_ OUT dnotfsety Drive AXIS_ REF VARIN OUT Drives AXIS REF WAR_IN_ OUT Drives AXIS REF VARIN OUT Driver AXIS_REF WAR_IN_OUT Drives AXIS REF MWAR_IN_ OUT dOffsetX dOffsetY dOffsetZ LREAL Offset for x y and z axis Same values as described for SMC_TRAFO_Gantry3 minX maxX minY maxY LREAL Move range for visualization DriveX DriveY DriveZ AXIS_REF X y Z axis dx dy dz LREAL X y Z position in GEO coordinates dnx dny dnOffsetX dnOffsetY LREAL Standardized x and y position 0 1 and offset for visualization ratio LREAL Ratio of x interval and y interval for visualization 8 4 SoftMotion in CoDeSys 2 3 Chapter 8 The Library SM_Trafo lib GantryCutter The modules SMC_TRAFO lt n gt _Gantry lt n gt also exist as SMC_TRAFO lt n gt _GantryCutter lt n gt These function blocks do transformations for portal systems with one rotation axis which is controlled in a way that it points along the current path tangent As additional inputs they get the rotation axis DriveR which must be defined as rotatory axis with period 360 an offset dOffsetX and the direction of rotation iDirectionR The module for inverse transformation additionally needs the vector of the current path tangent v which is an output of the Interpolator SMC_TRAFOV_Gantry Some of the above described reverse transformations are available in a version in
174. tion 8 10 SoftMotion in CoDeSys 2 3 Chapter 8 The Library SM_Trafo lib 8 3 5 Parallel Kinematics pi SMC_Posinfo dinnerRadius LREAL dOuterRadius LREAL pi SMC_PosInfo Target position vector Position of the center of the inner ring Output of the Interpolator dinnerRadius LREAL Radius of the inner ring dOuterRadius LREAL Radius of the outer ring dLength LREAL Strut lengths dDistance LREAL Distance between two connected struts at the outer and inner ring dRotationOffset LREAL Position of axis A in angular degrees mathematical sense in relating to the origin 0 0 dOffsetA dOffsetB dOffsetC LREAL Offset of the particular axes bError BOOL Offset of the particular axes dA dB dC LREAL Axis position A B C axis SoftMotion in CoDeSys 2 3 Transformation function blocks SMC_TRAFO_Tripod SMC_TRAF O_TRIPOD pi SMC_Posinfo dinnerRadius LREAL dOuterRadius LREAL dLength LREAL dDistance LREAL dRotationOffset LREAL dOffsetA LREAL dOffsetB LREAL dOffsetC LREAL dinnerRadius dOuterRadius dLength dDistance dRotationOffset dOffsetA dOffsetB dOffsetC LREAL see SMC_TRAFO_TRIPOD DriveA DriveB DriveC AXIS_REF A B and C axis bError BOOL TRUE Invalid values dx dy dz LREAL x y Z Position of the centre of the inner ring in geo coordinates dnx dny LREAL Standardized position of the manipulator for visualization dRatio
175. ts of the SM_PLCopen lib 2 eee eeeceeeeeee eset eeeeennteeeeeeeeeeeeee 5 19 6 The Library SM CNC lib 6 1 6 1 OVEIVICWS TE E AEE ATE AAT EAT eceabedtasateaceeaateces 6 1 6 2 MOGUICSixs fr a a a a aaa e e 6 1 6 3 Auxiliary Modules for Path Rotations Translations and Scalings 05 6 15 6 4 Settings Via global Vara S ao s5 aise sass tiesy cadienen dates denecaeyiadaed ddan teed ranean voarey bene deaieaies 6 15 6 5 Structures in the SM _CNCLIID 2 2 ccec cece cceccceeeeeeeceeeeceeeeeeeeeeseeeeeeeeeaeenaeenas 6 15 7 The library SM _CNCDiagnostic lib 7 1 7 1 Function blocks for the analysis of SMC_CNC_REF data 7 1 7 1 1 The function block SMC_ShOwWCNCREF 0 cceeccee cece ceeeeeeeeeeeeeeeeeeteeeeeeeeeeees 7 1 7 2 Function blocks for analysis of SMC_OutQueue data eect eeeeeeeeeee 7 1 7 2 1 The function block SMC_ShowQueue c eceeeeeeesseeceeeecseeeeeeesestenceneeeenee 7 1 8 The Library SM Trafo lib 8 1 8 1 OVE IVICW oneee aaa e a Heth iting ele ean where Aaaa 8 1 8 2 ControlAxis function blocks secceicesisicessicrspinvivdan ts cans ceda ans aiaceb cas epdua vad yedhaerehenaeee 8 1 8 3 Transformation function blocks cece eee teeter ee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaaaes 8 2 8 31 Porta Syste MS ones a hahaa dets land Ae cared A a a E aE aiita 8 3 8 3 2 H Portal System with stationary drives eeeeeeeeeeeeeeeeereerresssrrrrirrnssssrrrrrrrnee 8 5 8 3 3 2 Jointed Scara SysSie
176. tter which should be written between two values of same date sRecordSeparatorString STRING 3 Default R N String which should be written at the end of a date Axis AXIS_REF Axis which should be controlled Outputs of the module bDone BOOL TRUE Logging terminated file closed bError BOOL TRUE Error occurred ErrorlD SMC_ERROR Error number bRecording BOOL TRUE Module is recording SoftMotion in CoDeSys 2 3 Chapter 11 Programming Examples 11 Programming Examples 11 1 Overview For controlling a drive hardware with a CoDeSys project and via SoftMotion the following items have to be regarded The SoftMotion functionality must be activated in the target settings tab General The libraries Drive_Basic lib and the manufacturer specific lt BuslnterfaceBezeichnung gt Drive lib must be included in the CoDeSys project so that the Drive Interface can be used for the communication with the drives In the Drive Interface PLC Configuration the structure of the drive hardware must be mapped and parameterized after a compilation of the project then automatically the appropriate global variables will be created A Task configuration must be created An IEC program has to be created in a CoDeSys editor which processes the desired movements by calling the appropriate modules In order to have available the appropriate SoftMotion functions the libraries SM_CNC lib resp SM_PLCopen lib must be inc
177. tyProfile This function block which is part of the SM PLCopen lib is an analog to the module MC_PositionProfile But here in the input variable of type structure MC_TV_REF the position points are defined by their velocities MC_TV_REF contains the following variables Variable Typ Init value Description Number_of_pairs INT 0 Number of profile position points IsAbsolute BOOL TRUE Positions absolute or relative MC_TV_REF ARRAY 1 100 OF Position points MC_TV SoftMotion in CoDeSys 2 3 Chapter 5 The Library SM_PLCopen lib SMC_TV_REF contains the following variables Variable Type Init value Description delta_time TIME t 0s Period of time between reaching the last and the current position point velocity REAL 0 Absolute relative velocity of the position point The module creates a path through the given position points which is a continuously differentiable curve consisting of parables The position of the axis results from the start position and the integrated velocity MC_MOVEVELOCITY Execute BOOL In elocity BOOL Velocity LREAL CommandAborted BOOL Acceleration LREAL Deceleration LREAL Direction MC_Direction Axis AXIS_REF VAR_IN_OUT Axis AXIS_REF VAR_IN_OUT MC_AccelerationProfile This function block which is part of the SM_PLCopen lib is an analog to the MC_PositionProfile module But here in the input variable of type stru
178. ude angles lower then x angle x degrees can be inserted in the dialog Hint Using the default settings will effect that at the interpolation of the line contrary to spline ellipse after each part of line there will be a deceleration to velocity 0 You can avoid this by increasing the angle tolerance correspondingly Extras Extras Tool radius correction im If this option is activated and if in the CNC program the start G41 G42 and the end G40 of the of the path segment where the correction should be done are defined as well as a tool radius D lt angle gt then the accordingly corrected path will be displayed This menu item corresponds to the SMC_ToolCorr module which is part of the library SM_CNC lib The original path will be colored light grey Positionings of the corrected path are blind positions and therefore are colored dark yellow Extras Slur path E If this option is activated the programmed path will be displayed showing the effect the function block SMC_SmoothPath SM_CNC lib has on the originally programmed path That creates a slured path through the cubic polynom spline Preconditions In the CNC program the start G51 the end G50 of the path segment where the correction should be done as well as the rounding radius D lt angle gt must be set The original path will be displayed as a reference colored light grey Extras Round off path 5l If this option is a
179. using SMC_ReadNCFile from a file there are two variables g_fTestX REAL and g_byCommand BYTE NO G g_byCommand X g_fTestX So you have to define the following variables asv ARRAY 0 1 OF SMC_SingleVar strVarName G BYCOMMAND diValue 1 fValue 1 0 strVarName G FTESTX diValue 0 fValue 1000 0 vl SMC VarList wNumberVars 2 Before calling module SMC_ReadNCFile whose pvl inputs then will be fed with ADR vl you can change the values of the variables e g in order to modify g_fTestx asv 1 fValue 1050 and you must define the assignment between SMC_VarList and AMC_SingleVar vl psvVarList ADR asv 0 If a variable cannot be replaced an error will be dumped and the module will abort 10 3 CAM Function Blocks SMC_ReadCAM This module is used to load a CAM which has been created in the CAM editor and has been saved in a CAM file see chapter 4 4 3 at runtime and to make it available for the modules MC_CamTableSelect and MC_CamIn Shic_READCAM bhExecute BOOL bDone BOOL FileName STRING S0 bError BOOL ErrorlD SMC_ERROR CAM MC_CAM_REF The size of a loadable CAM is limited by the global constants gc_SMC_FILE_MAXCAMEL number of elements and gc_SMC_FILE_MAXCAMTAP number of CAM switch actions 10 4 Diagnosis function blocks SMC_AxisDiagnosticLog This module can be used to write cyclically a selection of values of an axis to a file A file created in this way
180. value can be predefined but later may be modified only during a reset Outputs of the module This variable will be set to TRUE as soon as the input data of Dataln have been processed completely Thereafter the module will not perform any further actions until it gets a reset If input bExecute is FALSE bDone will be reset to FALSE bError BOOL SoftMotion in CoDeSys 2 3 6 5 Modules In case of an error this input gets TRUE wErrorlID SMC_ERROR INT In case of an error this input shows the error number poqDataOut POINTER TO SMC_OUTQUEUE This variable points to a SMC_OUTQUEUE structure which manages the SMC_GEOINFO objects of the loopless path iStatus AL_STATUS INT This enum variable shows the current state of the module Possible states AL_OFF 0 Avoid Loop functionality switched off AL_ON 1 Avoid Loop functionality switched on AL_END 2 Processing of the objects terminated SMC_SmoothPath The SMC_SmoothPath function block can be used for path preprocessing It smoothes path angles thus creating a smooth path slur path This is needed for applications where the exactness of the path course is not as important as the velocity and therefore angles forcing to reduce the velocity to 0 must be avoided For this purpose the path will be cut in a defined distance to the angle and a spline will be inserted The distance is given on the one hand by the SMC_GEOINFO structure of the
181. which also the path velocity and path direction are used as a control variable for the axes Those start with oOMC_TRAFOV_ instead of SMC_TRAFO_ As additional inputs they need the path tangent v and path velocity dVel from the Interpolator Besides the set positions they also show the set velocities dvx dvy dvz The advantages of this method is that the lag error in the drive can be minimized by doing an anticipatory control of the velocity provided the drive is supporting this mode For this reason each axis should be controlled by the SMC_ControlAxisByPosVel module 8 3 2 H Portal System with stationary drives This kinematic system is similar to those described above but the drives are mounted stationary and move the sledge and the y axis over a multi turned round belt displayed pink colored in the picture The transformation fits fort he following drive configurations other configurations can be reached by interchanging x and y Oy L L AO OY SoftMotion in CoDeSys 2 3 8 5 Transformation function blocks Please regard that for this transformation a special reference move is necessary If you want a move in y direction the drives A and B must be moved in parallel for a pure x move they have to be counterrotated If the reference position has been found the x and y values calculated by the forward transformation FB are used as offset dOffsetX and dOffsetY SMC_TRAFO_GantryH2 SMC_TRAFO_GANTR
182. xis group 90 SMC_ChangeGearingRati SMC_CGR_ZERO_VALUES invalid values o 91 SMC_ChangeGearingRati SMC_CGR_DRIVE_POWERED Gearing parameters may not be 0 changed as long as the drive is under control 110 MC_Power SMC_P_FTASKCYCLE_EMPTY The axis does not contain any information on the cycle time fTaskCycle 0 120 MC_Reset SMC_R_NO_ERROR_TO_RESET Axis without error 121 MC_Reset SMC_R_DRIVE_DOESNT_ANSWER Axis does not perform error reset 122 MC_Reset SMC_R_ERROR_NOT_RESETTABLE Error could not be reset 123 MC_Reset SMC_R_DRIVE_DOESNT_ANSWER_IN_TI Communication with the axis did ME not work 130 MC_ReadParameter SMC_RP_PARAM_UNKNOWN Parameter number unknown MC_ReadBoolParameter 131 MC_ReadParameter SMC_RP_REQUESTING_ ERROR Error during transmission to the MC_ReadBoolParameter drives see error number in FB instance ReadDriveParameter SM_DriveBasic lib 140 MC_WriteParameter SMC_WP_PARAM_INVALID Parameter number unknown or MC_WriteBoolParameter writing not allowed 141 MC_WriteParameter SMC_WP_SENDING_ERROR See error number in module MC_WriteBoolParameter instance WriteDriveParameter Drive_Basic lib 170 MC_Home SMC_H_AXIS_WASNT_STANDSTILL Axis has not been in standstill state 171 MC_Home SMC_H_AXIS_DIDNT_START_HOMING Error at start of Homing action 172 MC_Home SMC_H_AXIS_DIDNT_ANSWER Communication error 173 MC_Home SMC_H_ERROR_WHEN_STOPPING Error at stop after Homing Deceleration set 180 MC_Stop SMC_MS_UNKNOWN_STOPPING_ ERROR Unknown

Download Pdf Manuals

image

Related Search

Related Contents

diagnosis using bayesian networks to enable value  OPERATING INSTRUCTIONS INSTRUCCIONES DE OPERACION  BOXPC-70-B-C1G User Manual 20080422 4413KB Oct 20 2009  NOTICE D`INSTALLATION ET D`EMPLOI  2.7. Société, bien-être et vie des mutualités  Firebird Phantom Manual  Nouveau dictionnaire de la langue verte  Nintendo Gamecube - Occasions A. Audy  USER MANUAL - Keene Electronics  

Copyright © All rights reserved.
Failed to retrieve file