MC_MoveSuperimp

PLCopen motion icon

 Function Block - Performs a single-axis move superimposed upon the currently executing move.

  • Commands a controlled motion of a specified relative distance additional to an existing motion.
  • The existing Motion is not interrupted, but is superimposed by the additional motion.
  • See Function Blocks - General Rules about how inputs and outputs work.
  • See Main about how this function is used in the Hole punch project.

    • This function block starts a motion-related action and stores data for calculations and error checking.
    • If using a dual-core controller, see Program a Multi-Core Controller.

Usage

This function block:

  • Provides a way to smoothly apply a shift in axis position while it is executing a move.
  • Is commonly used with MC_TouchProbe for performing position corrections on the slave axis in a Mark-to-Machine registration application.


  • MC_MoveSuperimp performs a similar function to the SlaveOffset input in the MC_CamIn function block.

    It has the additional features of setting the velocity, acceleration, deceleration, and jerk motion parameters.
  • A superimposed move is executed similar to a MC_MoveRelative move using the specified Distance, Velocity, Acceleration, Deceleration, and Jerk values.
    • The interpolated command generated by a superimposed move is added to the command of the currently executing move.
    • Subsequent calls to MC_MoveSuperimp can abort or blend to an executing MC_MoveSuperimp move.

Inputs

Input

Data Type

See Data Types.

Range

Unit

Default

Description

Execute

BOOL

FALSE, TRUE

N/A

No default

On the rising edge, request to queue the move.

Axis

AXIS_REF

1 to 256

N/A

No default

Name of a declared instance of the AXIS_REF library function.

Distance

LREAL

No range

User units

No default

Distance.

VelocityDiff

LREAL

No range

User units / sec

No default

Velocity rate.

Acceleration

LREAL

No range

User units / sec2

No default

Deceleration

LREAL

No range

User units / sec2

No default

Jerk

LREAL

No range

User units / sec3

No default

BufferMode

SINT

Enumerated

N/A

No default

The specified buffer mode.

  • BM_ABORTING
  • BM_BUFFERED
  • BM_BLENDING_PREVIOUS
  • BM_BLENDING_NEXT
  • BM_BLENDING_LOW
  • BM_BLENDING_HIGH
  • See Buffer Modes.

Outputs

Output

Data Type

See Data Types.

Range

Unit

Description

Done

BOOL

FALSE, TRUE

N/A

Indicates the move completed successfully.
The Command Position has reached the endpoint.

Busy

BOOL

FALSE, TRUE

N/A

High from the moment the Execute input goes high until the time the move is ended.

Active

BOOL

FALSE, TRUE

N/A

Indicates this move is the Active move.

CommandAborted

BOOL

FALSE, TRUE

N/A

If TRUE, the command was aborted by another function block.

Error

BOOL

FALSE, TRUE

N/A

Indicates either:

  • An invalid input was specified.
  • The move was terminated due to an error.

ErrorID

INT

No range

N/A

Time Diagram

Figure 1: Time Diagrams: First and Second FBs

Figure 2: Time Diagram


    • The CommandAborted is not visible here because the new command works on the same instance.
    • See Pipe Network - General Rules.
    • The end position is between 7000 and 8000, depending on the timing of the aborting of the second command set for the MC_MoveSuperimposed.

FBD Language Example

Not available.

FFLD Language Example

IL Language Example

Not available.

ST Language Example

(* MC_MoveSuperimp ST example *)
Inst_MC_MoveSuperimp( MovSupReq, Axis1, 123.555, 10.0, 100.0, 100.0, 0, 0 );
MovSupDone := Inst_MC_MoveSuperimp.Done; //store Done output into user defined variable

See Also