Switching curve description on the fly

INFORMATION

The user is responsible to ensure that no abrupt setpoint changes occur when another curve description is applied. In the example, position, speed, and acceleration are all "0" at the time of changeover.

Some situations require that the curve profile of an axis be changed during ongoing operation. In this case, an instance of the class CamDescriptionScheduler must be used. Automatic code generation generates an instance of this class in the global variable list SEW_GVL for each axis that uses MOVIKIT® MultiMotion Camming.

The CamDescriptionScheduler contains two curve descriptions of the type CamDescription. It calculates the curve descriptions in such a way that one is active during ongoing operation and the other one is free for generating a new curve profile. The currently active curve description is displayed in the uiCamDescriptionActive variable:

When reading a curve file, its curve description is stored in CamDescription[1] as long as Camming operating mode is not active. The curve description is marked as active as soon as the Camming operating mode is activated. If another curve file is read, its curve description will be stored in the CamDescription[2] structure.

For changeover on the fly, some parameters have to be set in the configuration. Changeover usually does not take place in the middle of a cycle but at the beginning of the next cycle. The following settings have to be made for this purpose:

This setting configures that the curve change is to take place with reference position 0 (which means at the beginning of the next cycle) and in positive direction of movement of the master. Changeover is triggered by setting the xGetNewCamDescription signal. xGetNewCamDescriptionDone returns the value "TRUE" as feedback.

The following trace recording diagram illustrates this configuration. Once xGetNewCamDescription is set to "TRUE", the curve profile is changed when the next cycle begins, and xGetNewCamDescriptionDone returns the value "TRUE".

[1]

SEW_GVL_Internal.Axis1._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrPosition

[2]

SEW_GVL_Internal.Axis1._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrVelocity

[3]

SEW_GVL_Internal.Axis1._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrAcceleration

[4]

SEW_GVL.Interface_Axis2.ProfileGeneration.Camming.IN.xGetNewCamDescription

[5]

SEW_GVL.Interface_Axis2.ProfileGeneration.Camming.OUT. xGetNewCamDescriptionDone

[6]

SEW_GVL_Internal.Axis2._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrPosition

[7]

SEW_GVL_Internal.Axis2._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrVelocity

[8]

SEW_GVL_Internal.Axis2._fbProfileGenerationControl._stOUTInterpolation. stSetpointsUserUnits.lrAcceleration