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 |