DMD0516

Help File Version: 2.10.0.636

CTDYNPOS - CTRIO Run Dynamic Position Mode


The CTRIO Run Dynamic Position Mode (CTDYNPOS) instruction is used to select and load a one of the preconfigured Dynamic Position or Dynamic Position Plus Profiles in the System Configuration for the CTRIO, and put the Pulse Output Device into Dynamic Position Mode, allowing successive moves to be easily commanded. Once in Dynamic Position Mode, moves are commanded by changing the Target Position value and setting (one-shot) the .GotoPosition bit for the Pulse Output Device. The moves will execute using the parameters defined in the specified profile. The CTDYNPOS instruction can be used with both the CTRIO and CTRIO2 modules.

 

 


Parameters:

Note: Use the F9 key or click the 'three dot box' at the right edge of the parameter field to open the Default Element Selection Tool (the Element Picker or the Element Browser) or use the Down-Arrow key (Auto-Complete) on any parameter field to see a complete list of the memory locations that are valid for that parameter of the instruction.

 

Pulse Output Device selects which preconfigured CTRIO Pulse Output device to use. Before this instruction can select a Pulse Output device, a CTRIO Device must be configured with at least one of its output channels setup for Pulse / Direction or CW / CCW pulse output mode.

no devices available indicates that there are no CTRIO Pulse Output devices that have been configured that can perform this instruction.

 

create module will open the Create New Module Configuration dialog where a CTRIO Module can be created and then a CTRIO Pulse Output device can then be configured.

Pulse Output Structure displays the name of the Pulse Output Structure that will be used by this instruction. This structure was created when the CTRIO module was configured during the Module Configuration phase.

 


Dynamic Position File Number selects which Dynamic Position Profile to run. The profile can be specified in one of the following three ways:

 

  • Fixed File displays a list of the Dynamic Position Profiles that were read from the CTRIO module during the Module Configuration phase. Select the desired profile from the list. Available Profiles:

    PROFILE

    (Silver text indicates the profile cannot be used with CTDYNPOS)

    CTRIO CTRIO2

    Trapezoid

       

    S-Curve

       

    Symmetrical S-Curve

       

    Dynamic Positioning

    YES YES

    Dynamic Velocity

       

    Home Search

       

    Free Form

       

    Dynamic Positioning Plus (CTRIO2)

    NO YES

    Trapezoid Plus (CTRIO2)

       

    Trapezoid w/Limits (CTRIO2)

       

 

  • Variable File Number specifies a memory location where the Pulse Profile number resides. This can be any readable numeric location.
     

  • Constant File Number specify the Dynamic Position Profile number as a constant number from 1 to 255.

 


Target Position specifies the next target position value for the Dynamic Position Profile. The direction (clockwise or counter-clockwise) is inferred from the difference between the Target Position and the current position (.OutputPosition), that is, if the Target Position is greater than the current position, pulses for a clockwise move are emitted; if the Target Position is less than the current position, pulses for a counter-clockwise move are emitted. his can be any positive or negative constant value or any readable numeric location.

 


The On Success and On Error parameters specify what action to perform when this instruction completes. You do not have to use the same type of selection for both On Success and On Error.

 

If the Set Bit selection is used for either On Success or On Error, the specified BIT location will be SET OFF when the instruction is first enabled and will remain OFF until the instruction completes. Once complete, the appropriate Success or Error bit location ON. The specified Bit location is enabled with a SET (Latch) operation meaning that it will remain ON even if the input logic for the instruction goes OFF.

 

If the JMP to Stage selection is used for either On Success or On Error the target Stage must be in the same Program code-block as this instruction, you cannot specify a target Stage that exists in a different Program code-block. When the operation finishes, the target Stage will be enabled the same way as a standalone Jump to Stage (JMP) instruction would do it. The JMP to Stage option will only be available if this instruction is placed in a Program code-block.

 

On Success selects which of the following actions to perform if the operation is successful:

  • Enable SET Bit then specify any writable bit location.
  • Enable JMP to Stage then specify any Stage number from S0 to S127 in the current Program code-block.

 

On Error selects which of the following actions to perform if the operation is unsuccessful:
 

  • Enable SET Bit then specify writable bit location.
  • Enable JMP to Stage then specify any Stage number from S0 to S127 in the current Program code-block.

 

If either the On Success or On Error selections are set to JMP to Stage, Automatically create the SG box for any NEW stage number will be enabled which will automatically create any target stage that does not already exist.

  • Below this rung will create the new target stage on a new rung following this instruction.
  • At end of code-block will create the new target stage as the last rung of this Program.

 

Note: any time the On Error condition occurs, the CTRIO generates an Error Code that can be read in the <Module Name>.ErrorCode (Module Name is the name assigned to the CTRIO in the Module Configuration). The List of Error Code values (in decimal) follows:

 

Error Code

Description

000

No Error

100

Specified command code is unknown or unsupported

101

File number not found in the file system

102

File type is incorrect for specified output function

103

Profile type is unknown

104

Specified input is not configured as a limit on this output

105

Specified limit input edge is out of range

106

Specified input function is unconfigured or invalid

107

Specified input function number is out of range

108

Specified preset function is invalid

109

Preset table is full

110

Specified Table entry is out of range

111

Specified register number is out of range

112

Specified register is an unconfigured input or output

113

Specified output is not configured as a limit on this output

114

Specified preset function invalid in PLS table

115

Specified PLS function invalid in preset table

116

PLS table entries overlap

117

Attempted to use axis function when pulse output is not in Axis Mode

118

Specified output isn't a pulse output

 


Instruction Inputs:

 

The first input (E/R) is the Enable / Reset input. When this input logic comes ON the Pulse Output Device is placed in the "Dynamic Positioning Mode", the specified Dynamic Position File Number will be loaded, the current position value will be set to 0 (e.g. .OutputPosition = 0) and the Output will be enabled (.OutputEnabled = ON). It must remain ON until all desired positions have been reached. When this input logic goes OFF the Pulse Output Device is removed from "Dynamic Positioning Mode", the Output will be disabled (.OutputEnabled = OFF) and the On Success or On Error bit is set.

 

The second input (SUS) is the Suspend input. This input has different effects on the CTRIO output depending on the pulse profile specified by the Dynamic Position File Number parameter:

 

DEVICE PULSE PROFILE

EFFECT

 

CTRIO2 Dynamic Positioning

When SUS input comes ON the CTRIO2 will abruptly stop emitting output pulses.

 

When SUS input returns to OFF the CTRIO2 will abruptly start emitting the remaining output pulses.

(Refer to Abrupt Suspend picture below)

 

Dynamic Positioning Plus

When SUS input comes ON, the CTRIO2 will ramp down to zero using the Decel Rate specified in the Dynamic Positioning Plus (CTRIO2) profile.

 

When SUS input returns to OFF the CTRIO2 will ramp up to the Maximum Freq using the Accel Rate both which are specified in the Dynamic Positioning Pulse (CTRIO2) profile.

(Refer to Deceleration Suspend picture below)

 

CTRIO Dynamic Positioning

When SUS input comes ON the CTRIO will abruptly stop emitting output pulses.

 

When SUS input returns to OFF the CTRIO will abruptly start emitting the remaining output pulses.

(Refer to Abrupt Suspend picture below)

 

Dynamic Positioning Plus

Note: Attempting to use this pulse profile with the CTRIO will result in an Error 103 (see chart below).

 

Abrupt Suspend

Deceleration Suspend

 


Status Display:

The Status display of the instruction shows Values: .OutputPosition, Target Position, and Dynamic Position File Number, and Highlights: .OutputEnabled, .OutputActive, .AtPosition, .OutputSuspended, .OutputStalled, and .GotoPosition bits.

 

The red triangle in the upper left corner of the status display indicates this is a Fully Asynchronous instruction.

 

 


CTRIO Structure Field Care-Abouts:

The following is a list of the"dot" fields of the CTRIO structure that are programmatically used with the CTRIO Run Dynamic Position Mode (CTDYNPOS) instruction. To see a complete listing of all CTRIO structures and members, go to the Project Browser --> Configuration --> Memory --> I/O --> Specialty.

 

COLOR KEY

Blue: CTRIO Input

Maroon: CTRIO Output

Black: CTRIO Module

Silver: Not used for this instruction

 

Note: The red "x" is the digit 0, 1, 2, or 3.

 

CTRIO_000

 

 

CTDYNPOS

Structure Member

R/W

TYPE

DESCRIPTION

_CxFx.AtResetValue

RO

Bit

ON if CxFx count is at reset value

_CxFx.CaptureComplete

 

 

 

_CxFx.CapturedStart

 

 

 

_CxFx.CountCaptured

 

 

 

_CxFx.EnableCapture

 

 

 

_CxFx.fReg1

RO

Dword

If floating-point scaling is configured for CxFx in CTRIO2: Floating-point scaled value; otherwise, number has no meaning

_CxFx.fReg2

 

 

 

_CxFx.iReg1

RO

Dword

If integer or BCD scaling is configured for CxFx in CTRIO2: Signed-integer or BCD scaled value; otherwise, signed-integer raw count

_CxFx.iReg2

RO

Dword

If any scaling is configured for CxFx in CTRIO2: Signed-integer raw count; otherwise, number has no meaning

_CxFx.Output

 

 

 

_CxFx.Reset

R/W

Bit

ON to reset CxFx count

_CxFx.Timeout

 

 

 

_Outx.AtPosition

RO

Bit

ON when CTRIO has reached Target Position

_Outx.AtVelocity

 

 

 

_Outx.Direction

RO

Bit

If using CTRIO2: ON when motor is moving counter-clockwise

_Outx.EnableOutput

 

 

 

_Outx.GotoPosition

R/W

Bit

Set ON to initiate a move; CTRIO resets OFF when moving

_Outx.Output

 

 

 

_Outx.OutputActive

RO

Bit

ON when CTRIO output is generating pulses

_Outx.OutputEnabled

RO

Bit

ON when E/R input comes ON which enables CTRIO output

_Outx.OutputPosition

RO

Dword

Output raw position (or encoder feedback position if using a Dynamic Position Plus (CTRIO2) profile and "Use Encoder for Position" is selected)

_Outx.OutputStalled

RO

Bit

ON if CTRIO output cannot generate pulses because its scan time is too high

_Outx.OutputSuspended

RO

Bit

ON when the SUS input comes ON which suspends the CTRIO output

_Outx.OutputVelocity

RO

Dword

If using CTRIO2: Current pulses per second rate being output by the CTRIO2

_Outx.TableComplete

 

 

 

.ErrorCode

RO

Word

Last CTRIO error code

.Mode

RO

Word

Indicates CTRIO mode: 2 = RUN; 1 = PROGRAM

.ScanTime

RO

Word

CTRIO scan time in microseconds

.MaxScanTime

RO

Word

Maximum CTRIO scan time in microseconds

.InputState

RO

Word

Upper byte is not used. Lower byte's nibbles indicate CTRIO's channel's input's state in order: .ChxD, .ChxC, .ChxB, .ChxA. It is a composite of these members

.OutputState

RO

Word

Each nibble indicates a CTRIO output configuration and state: .OutxType, .OutxDiscOn, .OutxDiscEnabled, .OutxPulseActive. It is a composite of these members

.ChxA

RO

Bit

ON when CTRIO Channel x Input A is ON

.ChxB

RO

Bit

ON when CTRIO Channel x Input B is ON

.ChxC

RO

Bit

ON when CTRIO Channel x Input C is ON

.ChxD

RO

Bit

ON when CTRIO Channel x Input D is ON

.OutxType

RO

Bit

Configuration: ON if CTRIO output x is configured for pulse output

.OutxDiscOn

RO

Bit

Status: ON if CTRIO output x logic is ON (if output x is enabled then the physical output will also be ON)

.OutxDiscEnabled

RO

Bit

Configuration: ON if CTRIO output x is configured for discrete output

.OutxPulseActive

RO

Bit

Status: ON if CTRIO output x is generating pulses

 

NOTES:

(1)This structure member only available for CTRIO2 (not CTRIO). For CTRIO this remains zero.

 


See Also:

CTDYNPOS - CTRIO Run Dynamic Position Mode

 

CTDYNVEL - CTRIO Run Dynamic Velocity Mode

 

CTUPDLVL - CTRIO Update Level

 

CTPLSADD - CTRIO2 Add Entry to PLS

 

CTPLSEDT - CTRIO2 Edit PLS Entry

 

CTREGRD - CTRIO Read Register

 

CTREGWR - CTRIO Write Register

 

CTRUNPOS - CTRIO Run Position Mode

 

CTRUNVEL - CTRIO Run Velocity Mode

 

CTTBLADD - CTRIO Add Entry to Preset Table

 

CTTBLCLR - CTRIO Clear Table

 

CTTBLEDT - CTRIO Edit Preset Table Entry

 

CTTBLLD - CTRIO Load Table

 


Example 1 of 2:

Description of a Typical CTRIO Run Dynamic Position Mode (CTDYNPOS) Stage Diagram:

This is a stage diagram of a simple sequence control that would move a motor to any number of positions and stop.

 

Initially the Position stage waits for the CTDYNPOS to put the CTRIO pulse output in the Dynamic Position mode. Once this is complete (Enabled = ON) then the Move stage is enabled (not transitioned to). The reason for this is because the Position stage must be left enabled to keep the CTRIO pulse output in the Dynamic Position mode until the last move is complete.

 

The Move stage sets the CTRIO's GotoPosition bit and waits for the AtPosition bit to come on indicating the pulse output has reached its position (Positioned = ON). Then the stage transitions to the InPos stage.

 

The InPos stage waits for either the NextMove or the Done bits. If this was the last move, then the Done bit converges both the Position and InPos stage and transitions to the Stop stage. If this was not the last move, then another position is given and the NextMove bit transitions back to the Move stage.

 

The Stop stage simply exits this Program code block.

 


Description of a Typical CTRIO Run Dynamic Position Mode (CTDYNPOS) Stage Ladder:

 

This is the ladder equivalent of the above stage diagram that uses the CTDYNPOS instruction which will move a stepper motor attached to the CTRIO's pulse output to any number of subsequent positions utilizing a preconfigured pulse profile, and then stop.

 

This example presupposes the existence of the following System Configuration for the CTRIO (PLC --> System Configuration --> Module Configuration(s) --> CTRIO_000 -->):

  • Configure I/O --> Outputs --> Out0 --> Pulse (Step/Dir) or Pulse (CW/CCW).

  • Pulse Profiles --> Add --> Name: DynaPos, Profile Type: Dynamic Positioning, with values for Minimum Freq, Maximum Freq and Accel Rate.

  • A stepper motor is wired to CTRIO2's Output 0 and Output 1.

 

 

 

Position is the main CTDYNPOS instruction stage. This stage remains enabled during all moves. Instead of transitioning to the next stage (Move), the next stage will merely be enabled. PositionEnable is turned ON and this will enable the CTDYNPOS instruction. Then the following things occur:

  1. The CTRIO's pulse output will be placed in the Dynamic Position Mode.

  2. The CTRIO's pulse output is enabled ($CTRIO_000_Out0.OutputEnabled = ON).

 

The PositionEnable bit will remain ON for all moves. It will be cleared OFF at the completion of the last move.

 

The CTDYNPOS's SUS (Suspend) input is controlled by the Suspend bit. This bit must remain OFF for any given move to complete. Turning this bit ON will cause the CTRIO's output to immediately stop. Turning it back OFF will cause the CTRIO's output to abruptly start again and complete a move.

 

The On Success parameter jumps to the Stop stage. This will occur when PositionEnable is cleared OFF and everything was successful.

 

The On Error parameter jumps to the ErrorStage stage. In this stage should exist logic (not shown here) that would properly handle the error (e.g. to process the $CTRIO_000.ErrorCode value).

 

Once the CTDYNPOS is enabled, the $CTRIO_000_Out0.OutputEnabled bit will be set ON(this could take a couple of scans). When this occurs the next stage (Move) is enabled.

 

Move stage accomplishes all moves. In order to do this the newest position value is assumed to be already written to the Target and the $CTRIO_000_Out0.GotoPosition bit is set ON. The CTRIO will clear this bit when the move begins. Once the bit is cleared, then the $CTRIO_000_Out0.AtPosition bit is monitored for completion of the move. Once that bit is set ON by the CTRIO, this move is complete and the Move stage transitions to the InPos stage.

 

The InPos stage waits for either the NextMove or Done bit. If this was not the last move, then a new position value is written to the Target variable and the NextMove bit is toggled. This causes a transition back to the Move stage. If this was the last move, then the Done bit is toggled. This disables the InPos stage and resets the PositionEnable bit.

 

The PositionEnable bit resets the CTDYNPOS instruction in the Position stage above. This causes the following to happen:

  1. The CTRIO pulse output is disabled ($CTRIO_000_Out0.OutputEnabled = OFF).

  2. The On Success transitions to the Stop stage.

 

The Stop stage merely exits this Program code block.

 


Example 2 of 2: