Probe Objects

Introduction

Probe works the same as the Capture Object, with one difference: the Probe can trigger more than once in one sample, whereas the Capture Object can only trigger once per sample. Not all SynqNet nodes support the Probe Object, please check the support documentation before implementing. The Probe object should be used in cases where the Recorder object is too slow because information is required at a higher resolution than the sample rate.

A Probe object manages a hardware logic block. The Probe hardware can latch and store up to 16 motor positions or node clock values within one controller sample period. The latches can be triggered by one of the configurable input sources (home, index, +/- limits, or one of the first 16 general purpose motor I/O).

The Probe is used in applications that need multiple data captures within one controller sample period. For applications that do not need multiple latches per sample, the Capture object is a much better solution. For example, a homing routine should use Capture (not Probe). Homing usually requires one or two precise position latches triggered by a home sensor and/or encoder index input to calibrate the position feedback to a physical location. The Probe is useful in high speed scanning applications, where the input can trigger at rates higher than the controller's sample rate. In this case, the Probe can be used with the Data Recorder to collect bursts of scan data. Later, the application can process the data.

Data Collections Method

There are two Probe data collection Methods: Position and Time.

Position: For the position data type, the lower 16 bits of the position counters are latched in the FPGA. This methodology works well for incremental quadrature encoders. For the position data type, the trigger source input and the feedback must be on the same motor.

Time: For the time data type, the FPGA latches the clock value. The application must read the position from the controller's previous sample and the present sample, to interpolate the probe position. This methodology works well for cyclic feedback data that is digitally transmitted from the drive to the FPGA. Many drives have proprietary serial encoders that decode the encoder position and send the position information to the FPGA once per sample. In these cases, time-based probing is more accurate than position based probing.

For the time data type, the trigger source input and the clock must be on the same node. But, since SynqNet nodes are synchronized to the controller's clock, the position values can be interpolated across multiple nodes. Thus, a single probe input used with the Data Recorder can be used to collect/interpolate positions for several axes, across several nodes.

Analyzing Collected Data

Position: Probe data is in returned as raw position feedback counts. Since the Probe latch memory register is only 16bits, this returns only the lower 16bits of the axis position.

In higher resolution drives, Time capture is more accurate. Time capture uses interpolation to determine the motor’s position at the time of the Probe latch.

Time: Probe Data is returned in Probe node clock ticks. The Probe runs on its own clock independently of the SynqNet Controller sample timer. The Probe clock runs at 25MHz, each tick representing 40 nanoseconds of time. When the Probe is triggered, the probe will save 16 bits from the Probe clock.

NOTE: The Probe latches Bits 2 through 17 of the Probe Clock, not Bits 0 through 15 . This is extremely important when doing time interpolation. You can then compare the time saved in the Probe latch with the Probe Clock that occurred on the samples before and after the Probe latch to interpolate the position of the motor between the samples.

Example Time Interpolation

SampleA				96AF A5C0
Probe Timestamp		25AB EF8A
SampleB			   96AF D694


SampleA Shifted 2 bits		25AB E970
SampleB Shifted 2 bits		25AB F5A5


Lower 16 Bits of Each Timestamp
Sample A:		E970
Probe:			EF8A
Sample B:		F5A5


Now the Probe Timestamp lines up in between Sample A and Sample B

The example above shows a one sample period (at 2kHz) where the Probe was triggered exactly in the middle. Since the controller is at 2kHz, there will be 12500 Probe ticks during one controller cycle (500us/40ns = 12500). The timestamps of the sample are the full 32bit values of the Probe clock in Hex.

The value of the Probe latch is a 16bit number, however is bits 2 through 17, which is why at first glance, it appears the stamp is outside the range of the adjacent sample Timestamps.

To determine the time delta from Sample A to the Probe Latch you must do the following:

short SampleATimestamp;
short TimeDiff;
SampleATimestamp = (short)((TimeStampA) >> 2);
TimeDiff = LatchTimeStamp - SampleATimeStamp;

Take care in making sure the Sample Timestamps are bitshifted by two. See Probe1.c in the Sample Applications for a full example of how to do time based interpolation on an axis.

Typically, the high-speed Probe data and the sampled position data are collected with the Data Recorder. Later, the data is processed and the probed positions are calculated or interpolated from the time values.

| Error Messages |

Methods

  mpiProbeConfigGet  
  mpiProbeConfigSet  
  mpiProbeControl  
  mpiProbeCreate  
  mpiProbeDelete  
  meiProbeInfo  
  mpiProbeParams  
  mpiProbeStatus  
  mpiProbeValidate  

 

Data Types

  MEIProbeAddress  
  MPIProbeConfig  
  MPIProbeData  
  MPIProbeInfo  
  MPIProbeMessage / MEIProbeMessage  
  MPIProbeNumber  
  MPIProbeParams  
  MPIProbeSource  
  MPIProbeStatus  
  MEIProbeTrace  
  MPIProbeType  

 

Constants

  MPIProbeMaxProbeRegisters