DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Compensation Tables November.

Slides:



Advertisements
Similar presentations
Pointers.
Advertisements

Chapter 7 Introduction to Procedures. So far, all programs written in such way that all subtasks are integrated in one single large program. There is.
ITCS 3181 Logic and Computer Systems 2015 B. Wilkinson slides3.ppt Modification date: March 16, Addressing Modes The methods used in machine instructions.
Manufacturing Automation
© Janice Regan, CMPT 102, Sept CMPT 102 Introduction to Scientific Computer Programming Introduction to Arrays.
Chapter 9. 2 Objectives You should be able to describe: Addresses and Pointers Array Names as Pointers Pointer Arithmetic Passing Addresses Common Programming.
Chapter 8. 2 Objectives You should be able to describe: One-Dimensional Arrays Array Initialization Arrays as Arguments Two-Dimensional Arrays Common.
 2006 Pearson Education, Inc. All rights reserved Arrays.
Chapter 6 C Arrays Acknowledgment The notes are adapted from those provided by Deitel & Associates, Inc. and Pearson Education Inc. Arrays are data structures.
1 RISC Machines l RISC system »instruction –standard, fixed instruction format –single-cycle execution of most instructions –memory access is available.
C++ for Engineers and Scientists Third Edition
Arrays. Objectives Learn about arrays Explore how to declare and manipulate data into arrays Learn about “array index out of bounds” Become familiar with.
Programming Logic and Design Fourth Edition, Comprehensive
 Pearson Education, Inc. All rights reserved Arrays.
DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC as a Linux Computer January.
ISAT 252 Introduction to Arrays. Should have read 2 Chapter 8 –pp , and pp
 2003 Prentice Hall, Inc. All rights reserved. 1 Introduction to C++ Programming Outline Introduction to C++ Programming A Simple Program: Printing a.
User C Programs in Power PMAC December 2013
Chapter 7: Arrays. In this chapter, you will learn about: One-dimensional arrays Array initialization Declaring and processing two-dimensional arrays.
DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Project Management November.
Power PMAC Electronic Cam Tables April 2014
 2004 Prentice Hall, Inc. All rights reserved. 1 Chapter 11 - JavaScript: Arrays Outline 11.1 Introduction 11.2 Arrays 11.3 Declaring and Allocating Arrays.
DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Data Structures January 2012.
 2006 Pearson Education, Inc. All rights reserved Arrays.
Video Mosaics AllisonW. Klein Tyler Grant Adam Finkelstein Michael F. Cohen.
A First Book of ANSI C Fourth Edition
CHAPTER 07 Arrays and Vectors (part I). OBJECTIVES 2 In this part you will learn:  To use the array data structure to represent a set of related data.
CH2 – Using Data. Constant Something which cannot be changed Data Type Format and size of a data item Intrinsic Data Types Pg. 47 – Table 2-1 Basic ones.
DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Encoder Conversion Table January.
 2008 Pearson Education, Inc. All rights reserved JavaScript: Arrays.
Introduction to Arrays in Java Corresponds with Chapter 6 of textbook.
Programming with Java © 2002 The McGraw-Hill Companies, Inc. All rights reserved. 1 McGraw-Hill/Irwin Chapter 9 Arrays.
 2005 Pearson Education, Inc. All rights reserved. 1 Arrays.
Chapter 8: Arrays.
Java Script: Arrays (Chapter 11 in [2]). 2 Outline Introduction Introduction Arrays Arrays Declaring and Allocating Arrays Declaring and Allocating Arrays.
Arrays 1 Multiple values per variable. Why arrays? Can you collect one value from the user? How about two? Twenty? Two hundred? How about… I need to collect.
DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Operational Summary November.
An Object-Oriented Approach to Programming Logic and Design Fourth Edition Chapter 5 Arrays.
Chapter 7 File I/O 1. File, Record & Field 2 The file is just a chunk of disk space set aside for data and given a name. The computer has no idea what.
27/05/ Iteration Loops Nested Loops & The Step Parameter.
Computer Programming 12 Mr. Jean April 24, The plan: Video clip of the day Upcoming Quiz Sample arrays Using arrays More about arrays.
Computer Organization and Assembly Language Bitwise Operators.
C++ for Engineers and Scientists Second Edition Chapter 11 Arrays.
Pointers: Basics. 2 What is a pointer? First of all, it is a variable, just like other variables you studied  So it has type, storage etc. Difference:
Arrays Arrays in C++ An array is a data structure which allows a collective name to be given to a group of elements which all have.
COMPUTER ORGANIZATION AND ASSEMBLY LANGUAGE Lecture 19 & 20 Instruction Formats PDP-8,PDP-10,PDP-11 & VAX Course Instructor: Engr. Aisha Danish.
A First Book of C++: From Here To There, Third Edition2 Objectives You should be able to describe: One-Dimensional Arrays Array Initialization Arrays.
 2007 Pearson Education, Inc. All rights reserved C Arrays.
 2008 Pearson Education, Inc. All rights reserved. 1 Arrays and Vectors.
INTRODUCTION TO MATLAB DAVID COOPER SUMMER Course Layout SundayMondayTuesdayWednesdayThursdayFridaySaturday 67 Intro 89 Scripts 1011 Work
T U T O R I A L  2009 Pearson Education, Inc. All rights reserved Student Grades Application Introducing Two-Dimensional Arrays and RadioButton.
Arrays in MIPS Assembly Computer Organization and Assembly Language: Module 6.
DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Shared Memory December 2013.
ECE 103 Engineering Programming Chapter 23 Multi-Dimensional Arrays Herbert G. Mayer, PSU CS Status 6/24/2014 Initial content copied verbatim from ECE.
Programming Logic and Design Fifth Edition, Comprehensive Chapter 6 Arrays.
A FIRST BOOK OF C++ CHAPTER 8 ARRAYS AND POINTERS.
1 ENERGY 211 / CME 211 Lecture 4 September 29, 2008.
VISUAL C++ PROGRAMMING: CONCEPTS AND PROJECTS Chapter 7A Arrays (Concepts)
Software Troubleshooting Eliminate possible programming and timing errors by stopping all programs ( and ). Use the Executive program terminal and send.
Arrays An array is a sequence of objects all of which have the same type. The objects are called the elements of the array and are numbered consecutively.
Windows Programming Lecture 03. Pointers and Arrays.
LESSON 8: INTRODUCTION TO ARRAYS. Lesson 8: Introduction To Arrays Objectives: Write programs that handle collections of similar items. Declare array.
A FIRST BOOK OF C++ CHAPTER 7 ARRAYS. OBJECTIVES In this chapter, you will learn about: One-Dimensional Arrays Array Initialization Arrays as Arguments.
SPiiPlus Training Class
Chapter 10 © 2011, The McGraw-Hill Companies, Inc.
7 Arrays.
Java Programming Arrays
Introduction To Programming Information Technology , 1’st Semester
7 Arrays.
Presentation transcript:

DELTA TAU Data Systems, Inc. 1 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Compensation Tables November 2013 EM xx xx xx xx xx

DELTA TAU Data Systems, Inc. 2 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Compensation Tables Table-based corrections for machine/sensor imperfections Up to 256 total compensation tables 1D (linear), 2D (planar), or 3D (volumetric) tables Each table can be selected to roll over or not in each dimension 1 st -order or 3 rd -order interpolation between table points –1 st -order: correction values always continuous –3 rd -order: rate of change of correction also continuous Corrections computed every servo cycle (not just at move endpoints) Correction values are floating-point, scalable units Tables do not have to start at zero position of source motor Direct software array access to table points –Easy to automate entry of table values –Easy to change table values dynamically Can select how many tables to enable –Sys.CompEnable = {# of enabled tables} (Tables 0 to n-1 enabled)

DELTA TAU Data Systems, Inc. 3 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Power PMAC Compensation Tables Corrections are function of source motor desired position(s) –Do not interact with servo loop dynamics Flexible specification of where correction is applied (“target”) –Actual position offset for position and/or velocity loops (Note that corrections do not affect feedforward) –Servo torque command offset (to compensate for cogging, etc.) –Backlash compensation offset register (for bi-directional comp) –Desired position offset (for electronic cam function*) Can be multiple targets (up to 8) for a single table –Multiple registers for single motor (e.g. position and velocity loops) –Multiple motors (e.g. gantry pair) Multiple tables can have same target register –Corrections should be additive in this case (first table overwrites previous cycle’s correction, subsequent tables add – as set by.OutCtrl bit) –Example: Coarse and (cyclic) fine corrections for a motor * V1.6 has separate cam table functionality

DELTA TAU Data Systems, Inc. 4 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Compensation Table Data Structure Overview Data structure elements about source(s) –CompTable[m].Source[n]// Source motor index num for this dimension –CompTable[m].Nx[n]// Number of data zones in this dimension –CompTable[m].X0[n]// Starting (min) position of source in this dim –CompTable[m].Dx[n]// Span of source in this dimension Data structure elements about target(s) –CompTable[m].Target[q]// Address of this target register –CompTable[m].Sf[q]// Output scale factor for this target Data structure elements for mode control –CompTable[m].Ctrl// Mode control byte (interp order & end control) –CompTable[m].OutCtrl.q// Overwrite target q (=0) or add to existing (=1) Data structure elements for table entries –CompTable[m].Data[i] // Individual table entry value (1D) –CompTable[m].Data[j] [i] // Individual table entry value (2D) –CompTable[m].Data[k] [j] [i]// Individual table entry value (3D)

DELTA TAU Data Systems, Inc. 5 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Memory for Compensation Tables Comp tables can require significant memory (RAM and flash) Each table entry is single-precision floating-point (4 bytes) Table entries require 4 * (Nx[0] + 1) * (Nx[1] + 1) * (Nx[2] + 1) bytes Table header information requires about 100 bytes Tables are stored in a reserved area of memory Default memory allocation of 1 MByte (1,048,576 bytes) –Part of overall 768 MByte (0.75 GByte) user RAM for standard memory –Part of overall 1.75 GByte user RAM for extended memory Allocation can be changed in IDE Project Manager –Use “Properties” Control window –Set “Table Buffer” size in Mbytes –Resulting size stored in ppproj.ini project configuration file

DELTA TAU Data Systems, Inc. 6 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Specifying Compensation Table Sources Set CompTable[m].Source[n] to number of motor whose position will be used as source data for table in this dimension –Source[0] must be specified for 1D, 2D, and 3D tables –Source[1] must be specified for 2D and 3D tables –Source[2] must be specified for 3D tables Set CompTable[m].Nx[n] to number of data zones from matching source –For a 1D table, Nx[0] must be > 0, Nx[1] and Nx[2] must be = 0 –For a 2D table, Nx[0] and Nx[1] must be > 0, Nx[2] must be = 0 –For a 3D table, Nx[0], Nx[1], and Nx[2] must be > 0 –For no rollover from dimension n, specify points 0 thru Nx[n] –For rollover from dimension n, specify points 0 thru Nx[n]-1 Set CompTable[m].X0[n] to minimum position of Source[n] motor used in its units –Data[0] in this dimension is correction at this position Set CompTable[m].Dx[n] to (max – min) distance of Source[n] motor in its units –Spacing of table points in this dimension is Dx[n] / Nx[n] Set CompTable[m].SourceCtrl bit n to 0 to use desired pos, 1 to use actual pos, from Source[n] (new in V1.6)

DELTA TAU Data Systems, Inc. 7 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data 2D Compensation Table Example zz zz  z=f(x,y)

DELTA TAU Data Systems, Inc. 8 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Specifying Compensation Table Targets Set CompTable[m].Target[q] (q = 0 to 7) to address of register where correction is to be written Only selected classes of registers are permitted Type of register used as target determines what type of table is Position (“leadscrew”) compensation table (for measurement errors) = Motor[x].CompPos.a// Outer-loop actual position (for accuracy) = Motor[x].CompPos2.a// Inner-loop actual position (for smoothness) –If target motor # “x” != source motor #, have “cross-axis” compensation Torque compensation table = Motor[x].CompDac.a// Servo output correction (16-bit output units) Backlash compensation table = Motor[x].BlCompSize.a// Backlash table correction Electronic cam table (for commanded motion, usually cross-axis) = Motor[x].CompDesPos.a// Part of net desired position Setting Target[q] = 0 disables target

DELTA TAU Data Systems, Inc. 9 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Compensation Table Target Locations

DELTA TAU Data Systems, Inc. 10 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Cross-Axis Comp Table Example  y M E  y  y  y  y  y Δy=f(x) Target motor # ≠ Source motor #

DELTA TAU Data Systems, Inc. 11 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Comp Table Control Byte (.Ctrl) CompTable[m].Ctrl determines how corrections are calculated 8-bit value organized into 4 2-bit fields Bits 0 & 1 determine order of interpolation from each source = 0: 1 st -order interpolation from all sources = 1: 3 rd -order interpolation from 1 st source = 2: 3 rd -order interpolation from 1 st and 2 nd sources = 3: 3 rd -order interpolation from all 3 sources Bits 2 & 3 determine boundary mode for 1 st source Bits 4 & 5 determine boundary mode for 2 nd source Bits 6 & 7 determine boundary mode for 3 rd source = 0: Rollover at table boundary of this source = 1: Maintain last correction past boundary of this source = 2: Mirror table at boundary of this source If source not used, settings for it are “don’t care” Example:.Ctrl=$57 means no rollover, cubic interpolation, all sources

DELTA TAU Data Systems, Inc. 12 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Using Multiple Tables on Same Target Useful to be able to add corrections from multiple tables into single target register Most common use is coarse and fine position compensation tables –Fine table is for repetitive errors over small interval of travel, e.g. Sensor eccentricity over one mechanical revolution of motor Harmonic distortion of sine/cosine sensor over one sensor period –Fine table must be set up to “roll over” –Coarse table is for non-repetitive errors over full range of travel e.g. screw errors over full length of screw –Coarse table entries must each be at same point in fine table Each table has same target address First (lowest-numbered) table must be set up to overwrite target (bit q of CompTable[m].OutCtrl = 0 for Target[q]) Subsequent (higher-numbered) table(s) must be set to to add to target value (bit q of CompTable[m].OutCtrl = 1 for Target[q])

DELTA TAU Data Systems, Inc. 13 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Effective Disabling of Enabled Table Sys.CompEnable = n enables tables 0 to n-1 Some users want more flexibility in enabling/disabling tables –Disable all compensation to a motor (e.g. during homing) –Switch between compensation tables for a motor Disabling method 1: Set CompTable[m].Sf[q] to 0.0 –Forces correction to zero –Can ramp down gradually to remove correction smoothly –Can ramp up gradually to re-introduce correction smoothly Disabling method 2: Set CompTable[m].Target[q] to 0 –Leaves last correction in place –Can manually overwrite last target value if desired

DELTA TAU Data Systems, Inc. 14 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Comp Table Data Elements Data[ ] elements (table entries) are corrections at given (raw) positions of source motor(s) Values are single-precision floating-point, scaled to units of the target register Table entries are evenly spaced in each dimension (spacing can differ between dimensions) Location index in square brackets for dimension n can range from 0 to Nx[n] –Index value can be constant or local variable (no expressions) –If table rolls over, only points with indices from 0 to Nx[n]-1 are used For multi-dimensional tables, first source uses last location index –For CompTable[m].Data[k][j][i], location index i is for Source[0] position, j is for Source[1] position, k is for Source[2] position Can enter multiple points with consecutive final location indices in single command –e.g. CompTable.Data[4][3][0]=0, 4.2, -1.9, 2.6, -0.7

DELTA TAU Data Systems, Inc. 15 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Compensation Table Interpolation

DELTA TAU Data Systems, Inc. 16 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Comp Table Data Element Indices Data element indices can be specified with integer constants or local variables For 1D tables, elements CompTable[m].Data[i], index i can be: –Integer constant from 0 to 16,777,215 –Any local variable L0 – L8191 For 2D tables, elements CompTable[m].Data[j][i], indices can be: –i: Integer constant from 0 – 65,534, local variable L0 –j: Integer constant from 0 – 65,533, local variables L0 and L1 For 3D tables, elements CompTable[m].Data[k][j][i], indices can be: –i: Integer constant from 0 – 65,534, local variable L0 –j: Integer constant from 0 – 253, local variables L0 and L1 –k: Integer constant from 0 – 252, local variables L0, L1, and L2 Value of index (either constant or variable) must be within declared range for that dimension

DELTA TAU Data Systems, Inc. 17 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Calculating Comp Table Corrections New correction computed for each table every servo cycle Corrections calculated after new desired positions computed for all motors –Using new cycle’s desired positions avoids a cycle of delay Corrections calculated before servo loop closure of motor specified by Sys.CompMotor –At default value of 0, all tables calculated before any motor’s servo loop –Can be set greater than 0; useful for “0D” table for cascading servo loops 1 st -order interpolation calculates weighted average using one table entry on each side of source position for each active dimension –2, 4, or 8 entries for 1D, 2D, or 3D, respectively 3 rd -order interpolation calculates weighted average using two table entries on each side of source position for each active dimension –4, 16, or 64 entries for 1D, 2D, or 3D, respectively Resulting correction multiplied by Sf[q] before writing to Target[q]

DELTA TAU Data Systems, Inc. 18 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Simple 1D Comp Table Example Setup for standard “leadscrew comp” 1D table on Motor 1 CompTable[0].Source[0]=1// Use Motor 1 as (1 st ) source CompTable[0].Nx[0]=11// 11 data zones from 1 st source CompTable[0].Nx[1]=0// No second dimension CompTable[0].Nx[2]=0// No third dimension CompTable[0].X0[0]=-10000// Start table at -10,000 counts of 1 st source CompTable[0].Dx[0]=110000// Span of 110,000 counts (to +100,000) CompTable[0].Target[0]=Motor[1].CompPos.a// Motor 1 position loop CompTable[0].Target[1]=Motor[1].CompPos2.a// Motor 1 velocity loop CompTable[0].Sf[0]=1.0// Unity scale factor for #1 position loop CompTable[0].Sf[1]=1.0// Unity scale factor for #1 velocity loop CompTable[0].Ctrl=7// Disable rollover, cubic interpolation CompTable[0].OutCtrl=0// Overwrite target registers each cycle CompTable[0].Data[0]=0,25.2,12.1,-7.3,8.1,-1.9// Points 0 to 5 (Motor 1 units) CompTable[0].Data[6]=6.5,13.4,-3.6,2.9,-11.8,4.7// Points 6 to 11 (Motor 1 units) Sys.CompEnable=1// Enable this table [0] only

DELTA TAU Data Systems, Inc. 19 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Small 2D Comp Table Example CompTable[1].Source[0]=1// Use Motor 1 as 1 st source CompTable[1].Source[1]=2// Use Motor 2 as 2nd source CompTable[1].Nx[0]=4// 4 data zones from 1 st source CompTable[1].Nx[1]=3// 3 data zones from 2 nd source CompTable[1].Nx[2]=0// No third dimension CompTable[1].X0[0]=0// Start table at 0 counts of 1 st source CompTable[1].X0[1]=0// Start table at 0 counts of 2 nd source CompTable[1].Dx[0]=40000// Span of 40,000 counts across 1 st source CompTable[1].Dx[1]=30000// Span of 30,000 counts across 2 nd source CompTable[1].Target[0]=Motor[3].CompPos.a// Motor 3 position loop CompTable[1].Target[1]=Motor[3].CompPos2.a// Motor 3 velocity loop CompTable[1].Sf[0]=1.0// Unity scale factor for #3 position loop CompTable[1].Sf[1]=1.0// Unity scale factor for #3 velocity loop CompTable[1].Ctrl=$17// Disable rollover both dims, cubic interp CompTable[1].OutCtrl=0// Overwrite target registers each cycle CompTable[1].Data[0] [0]=0,10,20,30,40// 1 st -row data points (#3 units) CompTable[1].Data[1] [0]=11,21,31,41,51// 2 nd -row data points (#3 units) CompTable[1].Data[2] [0]=22,32,42,52,62// 3 rd -row data points (#3 units) CompTable[1].Data[3] [0]=33,43,53,63,73// 4 th -row data points (#3 units) Sys.CompEnable=2 // Enable tables 0 & 1

DELTA TAU Data Systems, Inc. 20 UMAC TurboTurbo PMAC PCIGeo Drive Single Source Machine Control motion logic data Special Use of “0D” Comp Table If CompTable[i].Nx[0], Nx[1], Nx[2] all = 0, the table still has a single entry (Data[0]) This value of this entry is scaled and written to target register(s) Can be useful way of injecting calculated offsets/corrections –Into position, torque, or backlash compensation registers –Program statement simply writes value to CompTable[m].Data[0] Can affect multiple motors simultaneously with multiple targets Useful for cascaded servo loops –If Ctrl bits 0 & 1 > 0 for 0D table, uses Source[0] motor’s servo command –Can integrate outer-loop output by setting OutCtrl to 1 –Target[q] is CompDesPos.a for inner-loop motor –Sys.CompMotor specifies when to compute table corrections Before specified motor’s servo loop is closed (default is 0) Setting between outer and inner-loop motors eliminates servo-cycle delay