IF_MovePureSmg - TakeJob (Method)

Overview

Type:

Method

Available as of:

V1.0.0.0

Task

Carrier movement with a motion job assigned to the SoMotionGenerator (SMG).

For more information on the SoMotionGenerator, refer to the PD_SoMotion Generator library.

Description

With the method IF_MovePureSmg - TakeJob, motion jobs are assigned to the SoMotionGenerator. The carrier is moved to a given target with the velocity, the acceleration and the jerk that are defined in the corresponding motion job of the SoMotionGenerator. The parameters set with the method SetMotionParameter are not considered.

NOTE: This move command does not automatically override on-going move commands. For information on verifying that no other move command is active, see the Call Examples below.
NOTE: In a Lexium™ MC multi carrier track, you can use a combination of move commands like MovePureSmg and MoveGapControl for different carriers at the same time. Keep in mind that the MovePureSmg commands on channel B and C for the selected carrier are not taken into account by the carrier in front or behind that uses, for example, the move command MoveGapControl.

The move command MovePureSmg allows programmers that are experienced in the use of the SoMotionGenerator library to execute special movements.

In comparison to the standard SoMotionGenerator functions, the move command MovePureSmg provides the following features:
  • Use of the carrier object.

  • From the setpos modes for defining reference positions (iq_stMotionJob.etSetposMode), only the setpos mode Relative can be used. (For more information on the enumeration ET_SetposMode, refer to the PD_SoMotionGenerator library.)

  • The possible values for the setpos (iq_stMotionJob.IrSetposValue) are limited to the length of the track. (For more information on the track length, refer to lrTrackLength.)

With the move command MovePureSmg, the carrier uses the positioning or the cam commands of the SoMotionGenerator without considering the other carriers. Take this into account during path planning.

 CAUTION
CARRIER Collision
Define the master movement and the carrier path in a way that avoids collisions with other carriers.
Failure to follow these instructions can result in injury or equipment damage.
NOTE: You can use the function block FB_CrashPrevention as an additional protection measure to help avoid collisions.

With an open track, the carriers could leave the track at the ends. Therefore, mechanical hard stops must be mounted at both ends of an open track.

 WARNING
EQUIPMENT OPERATION HAZARD
Mount mechanical hard stops at both ends of an open track.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Do not use the MovePureSmg command in combination with other Move commands for the carrier and ensure that no other move command is active for the carrier before calling the method IF_MovePureSmg - TakeJob. For more details, refer to the Call Examples.

Feedback

Feedbacks are available in the interface IF_FeedbackMovePureSmg.

Inputs

Input

Data type

Description

i_etChannel

SMG.ET_Channel

SMG channel to which the positioning job is to be assigned.

Inputs/Outputs

Input/Output

Data type

Description

iq_stMotionJob

SMG.ST_MotionJob

SMG job structure containing the positioning job data.

Outputs

Output

Data type

Description

q_xError

BOOL

Indicates TRUE if an error has been detected. For details, refer to q_etResult and q_sResultMsg.

q_etResult

ET_Result

Provides diagnostic and status information as a numeric value.
If q_xError = FALSE, q_etResult provides status information.
If q_xError = TRUE, q_etResult provides diagnostic/error information.

q_sResultMsg

STRING [255]

Provides additional diagnostic and status information as a text message.

Call Examples

To ensure that no other Move command is active, the following parameters must be TRUE before calling the method IF_MovePureSmg - TakeJob:
stMotionJob.xClearBufferedJobs = TRUE
stMotionJob.xTerminateCurrentJob = TRUE
Example 1:
...ifMovePureSmg.TakeJob(…)
Example 2:
...ifMovePureSmg.TakeJob(…)
...ifMovePureSmg.TakeJob(…)