Capture Objects

Introduction

A Capture object manages a single position capture logic block. It represents the physical hardware capture logic and data. When configured and armed, the capture logic block can latch a motor's position based on one or more source input triggers.

The Capture object's number, motor input trigger sources, edge, type, feedback source, and capture index are all configurable. There are two capture types: Position-based and Time-based. The capture methodologies for these types differ and can affect performance. The table below summarizes Position-based and Time-based methodolgies and their best use.
Capture Type Methodology Best Use
Position-based Position counters are latched in the FPGA and are read directly by the controller. Works well for incremental quadrature encoders.
Time-based FPGA latches the clock and the controller reads the clock value and position value for that sample period.

The position value is interpolated by the controller from the sample's present and previous position, and the clock data.
Works very well for any node with Drive Feedback
(cyclic feedback data that is digitally transmitted from the drive to the FPGA).

Note: Many drives have a proprietary serial encoder that decodes the encoder position and sends the position information to the FPGA once per sample. In these cases, time-based capture is more accurate than position-based capture.

For the Position type, the motor number for the input sources and the feedback motor number must be the same.

For the Time type, the motor number and feedback motor number can be different. This makes it possible to use inputs from one node to capture positions on another node.

When using captures, the controller must have enough enabled captures to process the specified capture number. The controller will process the enabled captures (captureCount) every sample period. Since each capture object is configurable, use the minimum number of captures possible for best controller performance. For example, if you want to use 2 captures for motor 0 and motor 3, set the capture count to 2 and use capture number 0 and 1.

Note: Time-based capture will only work correctly if the speed of an axis is less than 344 million counts per second.

See Also: Overview of Capture

| Error Messages |

Methods

Create, Delete, Validate Methods
mpiCaptureCreate Create Capture object
mpiCaptureDelete Delete Capture object
mpiCaptureValidate Validate Capture object

Configuration and Information Methods
mpiCaptureConfigGet Get Capture configuration
mpiCaptureConfigSet Set Capture configuration
mpiCaptureStatus Get status of Capture
mpiCaptureConfigReset
mpiCaptureTriggerSourceInfo

Action Methods
mpiCaptureArm Arm capture object

Event Methods
mpiCaptureEventNotifyGet  
mpiCaptureEventNotifySet  

Memory Methods
mpiCaptureMemory Set address to Capture memory
mpiCaptureMemoryGet Copy Capture memory to application memory
mpiCaptureMemorySet Copy application memory to Capture memory

Relational Methods
mpiCaptureControl
mpiCaptureNumber Get index of Capture (for Control list)

Data Types

MPICaptureConfig
MPICaptureDirect
MPICaptureEdge
MPICaptureIOType
MPICaptureInputFilter
MPICaptureMode
MPICaptureMotor
MPICaptureSqNode
MPICaptureState
MPICaptureStatus
MPICaptureTriggerDirect
MPICaptureTriggerLogic
MPICaptureTriggerMotor
MPICaptureTriggerSourceInfo
MPICaptureTriggerSqNode
MPICaptureTriggerType
MPICaptureType

Constants

MPICaptureNOT_MAPPED
MPICapturesPerSampleMAX