Overview of Capture
Position-based Capture | Time-based Capture
Capture is the object in the MPI that enables high accuracy position latching based on an external electrical input. Typical sources of external electrical inputs are home switches and encoder index pulses. Capture will return the position and sample counter (time in servo samples) for each capture position latch. There is usually one capture object per motor. Refer to the Node FPGA Images: Features Table to see how many capture objects exist on your node and node image. There are two types of capture: position and time-based capture.
For Position-based Capture, the motor number for the input sources and the feedback motor number must be the same.
Quadrature Feedback with Position Capture
- Low 10s of nanoseconds capture latency.
- Most accurate type of position capture.
Drive Feedback with Position Capture
- This type of setup leads to very large position capture errors.
- MEI strongly discourages using position capture with drive feedback.
- Position-based capture is very accurate for systems that have continuous position information. (i.e. Digital quadrature encoders, in most cases.) Any encoder that is sampled less frequently than the 10s of nanoseconds accuracy that is inherent to time-based capture will suffer poor accuracy with position-based capture. Any encoder using drive mode will be sampled at the drive update rate (usually 16 kHz (62.5 microseconds).
- Sin/cos encoders are used in Drive Feedback mode.
- Position-based capture with encoders in drive feedback mode results in WORSE capture accuracy than drive feedback mode with time-based capture.
For Time-based Capture, 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.
- Position is linearly interpolated.
- Calculated postion is truncated to an integer.
- It only works correctly if the speed of an axis is less than 344 million counts per second.
- Calculation is very accurate even in high acceleration systems.
- Time-based capture can be used across SynqNet nodes.
(Trigger on one node, feedback position on a different node.)
- Time-based capture is ideal for encoders in drive mode.
- Time-based capture is accurate to ~40 nanoseconds in time. Latched positions are interpolated between adjacent position samples using this highly accurate time stamp. The position latch is subject to how well the encoder approximates a constant velocity trajectory between two adjacent samples.
Time-based Capture Accuracy
Because the time-based capture uses linear interpolation between two successive controller sample periods, there can be capture inaccuracies during very high acceleration or deceleration trajectories. The maximum capture position error can be calculated from:
Max Capture Position Error = 1 / 8 * Accel * (1 / Sample Rate)²
For example, suppose the axis is accelerating at 10,000,000 counts/sec² and the controller sample rate = 2kHz (default).
Max Capture Position Error = 1 / 8 * 10,000,000 * (1 / 2000)²
Max Capture Position Error = 0.31 counts
Position-based Capture vs. Time-based Capture
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.
||Position counters are latched in the FPGA and are read directly by the controller.
||Works well for incremental quadrature encoders.
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.