Presentation is loading. Please wait.

Presentation is loading. Please wait.

DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Encoder Conversion Table January.

Similar presentations


Presentation on theme: "DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Encoder Conversion Table January."— Presentation transcript:

1 DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Encoder Conversion Table January 2014

2 DELTA TAU Data Systems, Inc. 2 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Why the Encoder Conversion Table? Servo algorithms expect a single numerical value for a position input Hardware does not necessarily provide this – e.g.: –Counter and two timers for 1/T-interpolated quadrature encoders –Counter and sine, cosine ADCs for arctangent-interpolated sine encoders –Multiple registers for serial, parallel read ECT can mathematically combine into single (enhanced) value Received data can have problems that require pre-processing: –Analog (measurement) noise → Low-pass/tracking filter –Digital (bit error) noise → “Maximum change” filter –Rollover → Shift, scale, difference, and clip Mathematical processing may be required –Single or double integration –Differentiation –Addition and subtraction Source data is fixed-point; servo expects floating-point

3 DELTA TAU Data Systems, Inc. 3 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Encoder Conversion Table Overview Pre-processes feedback and master (position) data for use by servo algorithms Executes at the beginning of each servo cycle Comprised of a series of entries – each entry processes one set of registers and provides one (primary) result Converts fixed-point source data to floating-point result Usually configured with IDE setup window Multiple conversion methods (types): –Single-word (32-bit) register read –Two-word (24 + 8-bit) register read –Four-byte (4x 8-bit) register read –Software 1/T extension of quadrature encoder –Software arctangent extension of sinusoidal encoder –Resolver software arctangent conversion –Addition and subtraction –Floating-point read

4 DELTA TAU Data Systems, Inc. 4 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Default Table on Re-Initialization On re-initialization ($$$*** command), Power PMAC checks for common position feedback sources Establishes ECT entry of appropriate type for each feedback source found, e.g.: –ACC-24E2x:Software 1/T extension for each channel –ACC-51E:Software arctangent extension for each channel –ACC-58E:Resolver arctangent conversion for each channel –ACC-24E3:Single-register read (of ServoCapt) for each channel Starts at low index for each type of IC found Uses basic standard settings for each entry Entry 0 (EncTable[0]) set as a “dummy” entry Entry 1 (EncTable[1]) starts entries expected to be used for real motors

5 DELTA TAU Data Systems, Inc. 5 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data ECT Data Structure Setup Elements EncTable[n].Structure name, “n” is entry index (= 0 to Sys.MaxEncoders-1) –.typeWhole number representing conversion method –.pEncAddress of primary data source –.pEnc1Address of secondary data source (if any) –.index11 st conversion factor (function method dependent) –.index22 nd conversion factor (function method dependent) –.index33 rd conversion factor (function method dependent) –.index44 th conversion factor (function method dependent) –.index55 th conversion factor (function method dependent) –.MaxDeltaMaximum permitted change (some methods) –.SinBias,.CosBiasOffset compensation for sinusoidal input –.CoverSerrorMagnitude compensation for sinusoidal input –.TanHalfPhiPhase compensation for sinusoidal input –.ScaleFactorFinal output scaling (floating-point) (Note: 16-bit.SinBias and.CosBias terms share word with 32-bit.MaxDelta term)

6 DELTA TAU Data Systems, Inc. 6 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data ECT Setup Window for IDE From IDE “Delta Tau” menu, select “Configure”, then “Conversion Table” Permits specification with meaningful values Presents “pick lists” of possible options Automatically converts to underlying units, factors, and addresses Displays present table configuration for confirmation

7 DELTA TAU Data Systems, Inc. 7 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Register-Read Source Formats.type = 1: single read of 32-bit register, e.g. PMAC3 IC encoder register.type = 2: double read (24 + 8-bit), e.g. ACC-84E serial encoder register

8 DELTA TAU Data Systems, Inc. 8 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Register-Read Source Formats (cont.).type = 5: four-byte read (4 x 8-bit), e.g. ACC-14E board.type = 2 and 5 are processed to look like.type = 1 before further processing

9 DELTA TAU Data Systems, Inc. 9 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Common Register-Read Data Sources DSPGATE3 extended incremental encoder register (e.g. ACC-24E3) –EncTable[n].pEnc = Gate3[i].Chan[j].ServoCapt.a Serial encoder shift register (e.g. ACC-24E3, -84E) –EncTable[n].pEnc = Gate3[i].Chan[j].SerialEncDataA.a –EncTable[n].pEnc = Acc84E[i].Chan[j].SerialEncDataA.a IOGATE latched parallel data register (e.g. ACC-14E) –EncTable[n].pEnc = GateIo[i].DataReg[j].a Timer register for MLDTs (e.g. ACC-24E2A, -24E3) –EncTable[n].pEnc = Gate1[i].Chan[j].TimeBetweenCts.a –EncTable[n].pEnc = Gate3[i].Chan[j].TimerA.a ADC register for LVDTs, pots, etc. (e.g. ACC-28E, -36E, -59E3) –EncTable[n].pEnc = Acc28E[i].Udata[j].a –EncTable[n].pEnc = AdcDemux.ResultLow[i].a –EncTable[n].pEnc = Gate3[i].Chan[j].AdcEnc[k].a DSPGATE3 processed resolver register (e.g. ACC-24E3) –EncTable[n].pEnc = Gate3[i].Chan[j].Atan.a

10 DELTA TAU Data Systems, Inc. 10 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Register-Read Intermediate Processing Done after single 32-bit source-register read (.type = 1), or multiple sources combined into 32-bit value (.type = 2 or 5) Purposes: –To eliminate “garbage data” from parts of word with no real data –To permit proper handling of rollover of source data Example: 20 bits of real data, starting at bit 8 Step 1: Shift right by “.index2” bits to put source LSB in bit 0 –.index2 should be set to starting bit # of source data LSB Step 2: Shift left by “.index1” bits to put source MSB in bit 31 –.index1 should be set to (32 - # of bits)

11 DELTA TAU Data Systems, Inc. 11 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Register-Read Change Limiting Problem: Noise and other anomalies can lead to huge numeric errors in data Strategy: Look for limit violations of first or second derivative of input data, “ride through” momentary errors Setup variables: –.index3 = 0: Limit to last change on 1 st -derivative (velocity), for single cycle After this, slews to new position at.MaxDelta rate –.index3 > 0: Limit to last change on 2 nd -derivative (accel), for this # of cycles After this, no limit; jumps to new position –.MaxDelta = 0: No limiting of either derivative –.MaxDelta > 0: Specifies magnitude limit of selected derivative LSBs* per servo cycle for velocity LSBs* per servo cycle per servo cycle for acceleration * Assumes LSB is in bit (32 -.index1) If limit is violated, last valid value for derivative is used instead (but only for specified number of consecutive cycles)

12 DELTA TAU Data Systems, Inc. 12 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Register-Read Numerical Integration Option Permits use of velocity or acceleration sensors in position loop Permits simulated servo loops (velocity or torque command).index4 parameter controls this functionality –.index4 = 0: No integration (default) –.index4 = 1: Single integration (e.g. velocity into position) –.index4 = 2: Double integration (e.g. acceleration into position) If integrating (.index4 > 0),.MaxDelta is velocity limit (even if double integrating), no limit on number of cycles clamped If integrating (.index4 > 0),.PrevDelta is used as input bias term (and saved as setup); it is added to source data each cycle before integration

13 DELTA TAU Data Systems, Inc. 13 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Software 1/T Extension of Incremental Encoder For use with PMAC2-style ASICs with quadrature encoders Uses ASIC timers to calculate fractional count estimate –9 bits of fraction computed (1/512 of a hardware count) On re-initialization, Power PMAC automatically creates one of these entries for each PMAC2 IC channel it finds To set up with IDE menu, just specify ASIC index number and channel index number To set up manually: –.type = 3// To specify 1/T extension –.pEnc = Gate1[i].Chan[j].ServoCapt.a// Quad counter –.pEnc1 = Gate1[i].Chan[j].TimeBetweenCts.a// Timer register –.ScaleFactor = 1/512// So output is in hardware count units Note that PMAC3-style ASIC computes 1/T extension in hardware (so a simple 32-bit single-register read can be used in ECT)

14 DELTA TAU Data Systems, Inc. 14 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Sinusoidal Encoder Arctangent Extension For use with PMAC2-style ICs with sinusoidal encoders (e.g. ACC-51E) For use with PMAC3-style ICs with sinusoidal encoders (e.g. ACC- 24E3) when phase and magnitude correction required Uses ADCs and arctangent to compute interpolated position –PMAC2: 12-bit interpolation (1/1024 quad count, 1/4096 encoder line) –PMAC3: 14-bit interpolation (1/16,384 quad count, 1/65,536 encoder line) To set up with IDE menu, just specify ASIC index number and channel index number To set up manually: –.type = 4// To specify arctangent interpolation –.index5 = 0// For PMAC2 IC.pEnc = Gate1[i].Chan[j].Status.a// ASIC channel status register.pEnc1 = Gate1[i].Chan[j].Adc[0].a// 1 st A/D converter register –.index5 = 1// For PMAC3 IC.pEnc = Gate3[i].Chan[j].Status.a// ASIC channel status register.pEnc1 = Gate3[i].Chan[j].AdcEnc[0].a// 1 st A/D converter register

15 DELTA TAU Data Systems, Inc. 15 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Sinusoidal Encoder Arctangent Extension (cont.) Direction initialization term –.index3 = 0// Then is automatically set to Chan[j].EncCtrl decode value Correction terms –.SinBias = {-Sin reading at zero input}// Offset compensation –.CosBias = {-Cos reading at zero input}// Offset compensation –.TanHalfPhi = {tangent(φ/2)}// Phase error compensation –.CoverSerror = {SineMag/CosMag}// Magnitude mismatch comp Output scaling term –.ScaleFactor = 1// So output is in interpolator LSBs –.ScaleFactor = 1/1024// So output is in quad counts (PMAC2) –.ScaleFactor = 1/16384// So output is in quad counts (PMAC3) Note that PMAC3-style ASIC can compute sine interpolation in hardware (so a simple 32-bit single-register read is used in ECT) –Can perform voltage offset corrections in IC with AdcOffset[k] terms –Cannot perform phase offset or magnitude mismatch corrections in IC

16 DELTA TAU Data Systems, Inc. 16 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Extended Hardware Arctangent Interpolation Mainly for use with Auto-Correcting Interpolator on sinusoidal encoders –Interpolator algorithms provide result where full resolution can be used –Standard hardware interpolator may not give this meaningful resolution Requires hardware interpolation in DSPGATE3 IC Provides 16-bit (65,536x) interpolation per encoder line To set up manually: –.type = 7// To specify extended interpolation –.pEnc = Gate3[i].Chan[j].ServoCapt.a// Has 14 bits of interpolation –.pEnc1 = Gate3[i].Chan[j].Atan.a// Has full 16 bits of interpolation Output scaling term –.ScaleFactor = 1// So output is in interpolator LSBs –.ScaleFactor = 1/16384// So output is in quadrature counts –.ScaleFactor = 1/65536// So output is in encoder lines

17 DELTA TAU Data Systems, Inc. 17 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Resolver Arctangent Conversion For use with direct-read resolver accessories (e.g. ACC-58E) Computes to 16-bit resolution (ADCs may not support full resolution) To set up with IDE menu, just specify ASIC index number and channel index number To set up manually: –.type = 6// To specify resolver conversion –.pEnc = Acc58E[i].PartData[0].a// Excitation out value register –.pEnc1 = Gate1[i].Chan[j].Adc[0].a// 1 st A/D converter register –.SinBias = {-Sin reading at zero input}// Offset compensation –.CosBias = {-Cos reading at zero input}// Offset compensation –.index3 = 0 or 1// Direction control –.index2 > 31// Enable tracking filter –.ScaleFactor = 1/2 (32-resolution) // So output is in LSBs at desired resolution Note that PMAC3-style ASIC computes resolver conversion in hardware (so a simple 32-bit single-register read is used in ECT)

18 DELTA TAU Data Systems, Inc. 18 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Addition and Subtraction Entries Provide sum and difference, respectively, of two source values –Sources must be fixed-point (integer) data Usually use intermediate results of previous (lower-numbered) entries –Using later entry results causes 1 servo-cycle delay To set up with IDE menu, just specify source entry numbers To set up manually: –.type = 8 or 9// Addition or subtraction, respectively –.pEnc = EncTable[i].PrevEnc.a// Address of 1st source –.pEnc1 = EncTable[j].PrevEnc.a// Address of 2 nd source, added // to or subtracted from 1 st source –.indexn values can be set as with parallel-read entries; usually all 0 because processing was done in source entries –.ScaleFactor = 1.0// If no re-scaling desired

19 DELTA TAU Data Systems, Inc. 19 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Floating-Point Read Entry Uses a motor’s servo command value as input Can be used to create a simulated servo loop –For virtual motor calculations (e.g. cascaded outer loop command) –For open-loop direct microstepping No need to find holding register for servo command –Motor[x].pDac can be used to specify commutation output address To set up manually: –.type = 11// To specify floating-point read –.pEnc = Motor[x].IqCmd.a// Internal servo command register –.index4 = 1// Single integration (typical) –.index5, ScaleFactor// Pre- and post-scaling

20 DELTA TAU Data Systems, Inc. 20 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Tracking Filter Option Provides low-pass (exponential) filter with (optional) integrator Mimics action of hardware tracking filters in R/D converters and sine encoder interpolators Can be used with any conversion type Strongly recommended for resolver conversion Can be useful for sinusoidal encoders and other analog feedback Enabled if.index2 > 31 (even for parallel-read types).index2 acts as low-pass filter gain term –Time constant T f = [256 / (256 -.index2)] - 1 in servo cycles if no integration.index1 acts as integral gain term (with.index4 as “exponent”) For parallel-read, addition & subtraction types, uses all 32 bits of source (no shifts)

21 DELTA TAU Data Systems, Inc. 21 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Manually Designing a Tracking Filter Procedure: –Select cutoff frequency f c (Hz) = 1 / (2 π τ f ) Typically 100 – 200 Hz for resolver, 500 Hz – 1 kHz for sine encoder –Select damping ratio ς (typically = 0.7) –Compute natural frequency ω n = 2 π f c –Compute sample time T s = Sys.ServoPeriod / 1000 –Compute K p term.index2 = 256 - 512 * ς * ω n * T s –Compute K i term.index1 = 256 * ω n 2 * T s 2 Example: –Select f c = 200 Hz, ς = 0.7, Sys.ServoTime = 0.442 –Compute natural frequency ω n = 2 π 200 = 1257 s -1 –Compute T s = 0.442 / 1000 = 4.42 x 10 -4 s –Compute.index2 = 256 – (512 * 0.7 * 1257 * 4.42 x 10 -4 ) = 57 –Compute.index1 = 256 * 1257 2 * (4.42 x 10 -4 ) 2 = 79

22 DELTA TAU Data Systems, Inc. 22 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data ECT Output Scaling Intermediate processing often leaves result in different units from those desired for output –Parallel-read processing typically leaves source LSB in bit (32 - # of bits) of integer register –1/T extension from PMAC2 IC leaves quadrature count in bit 9 –Sine encoder interpolation from PMAC2 IC leaves quadrature count in bit 10 Most users want output to be in units of LSBs or counts of source Floating-point.ScaleFactor element multiplies (integer) intermediate result and converts to floating-point output –For register read, set to 1/2 (32 - # of bits) for output in LSBs –For 1/T, set to 1/2 9 (1/512) for output in quadrature counts –For sine interp., set to 1/2 10 (1/1024) for output in quadrature counts Since output is floating-point value, fractional resolution (if any) is kept Often best to set as expression (e.g. = 1/1024), let Power PMAC calculate exact value For values used in feedback loop.ScaleFactor is a gain term; changing it changes loop gain

23 DELTA TAU Data Systems, Inc. 23 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Using Results of Conversion Table Entries Results primarily used for motor feedback and master positions Motor addressing elements just use address of entry, not particular element in entry, e.g.: Motor[1].pEnc = EncTable[1].a// Outer (position) loop source address Motor[1].pEnc2 = EncTable[2].a// Inner (velocity) loop source address Motor[1].pMasterEnc = EncTable[0].a// Master position source address These functions actually use value of DeltaPos element –Motor numerically integrates these to net position value –Do not point directly to EncTable[i].DeltaPos.a Other uses can point directly to desired element For “external time base”, C.S. time-base pointer should use DeltaPos register directly, e.g.: Coord[1].pDesTimeBase = EncTable[3].DeltaPos.a

24 DELTA TAU Data Systems, Inc. 24 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Triggered Time Base Conversion Temporarily modified form of incremental encoder entry –.type = 3 software1/T extension from Gate1[i].Chan[j].ServoCapt –.type = 1 single-register read from Gate3[i].Chan[j].ServoCapt Has 3-part state machine: frozen, armed, and running Setting.type = 10 “freezes” the time base (zero output) Setting.pEnc1 = Gaten[i].Chan[j].Status.a specifies where to look for trigger Setting.index1 = 2 (for PMAC2-style IC) or 3 (for PMAC3-style IC) “arms” the entry, so it looks for trigger every servo cycle IC channel hardware must be configured to trigger on selected edge(s) of flag and/or index On servo cycle where trigger is detected: –Entry returned to standard form (.type = 3 or 1) –Output based on servo-captured minus trigger-captured position On subsequent cycles, output based on difference in servo-captured position for cycle


Download ppt "DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Encoder Conversion Table January."

Similar presentations


Ads by Google