产品delta tau pmac运动控制器10-power coordinate systems2011_第1页
产品delta tau pmac运动控制器10-power coordinate systems2011_第2页
产品delta tau pmac运动控制器10-power coordinate systems2011_第3页
产品delta tau pmac运动控制器10-power coordinate systems2011_第4页
产品delta tau pmac运动控制器10-power coordinate systems2011_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Power PMAC Coordinate SystemsMay 2011X(in)Motor#1 (10,000 ) ctsinMotor#2 (10,000 ) ctsinY(in)#1-10000.00X-2.91Y#2-10000.00Y1 arc min(exaggerated)Power PMAC Coordinate SystemsMain structure for providing multi-axis coordinationSame scheme as Turbo PMAC, but enhanced capabilitiesAxes to start, stop, a

2、nd change speed at same time should be in the same coordinate systemAxes to act independently should be in separate coordinate systemsKey concept: mapping of motors (actuators) to axes (programming coordinates)Two methods of defining coordinate systems:Axis definition statementsFor mathematically li

3、near mappings of motors to axesForward and inverse kinematic subroutinesTypically for mathematically non-linear mappings of motors to axesUseful for non-Cartesian machine geometriesCoordinate System NumberingCoordinate system numbers start at zero (&0)User sets maximum number of coordinate systems s

4、upported with Sys.MaxCoordsDefault value is 16, maximum value is 128Highest usable C.S. number is (Sys.MaxCoords 1)Setting larger than necessary adds to backup file size, some to CPU loadIt is expected that most users will not employ CS 0 (&0) as a “real” CSMotors not explicitly assigned to a CS use

5、 CS 0s time base&0 addressed by default at power-on/reset&x data structure elements use Coordx.element name“Legacy” I-variable support for existing functions in CS 0 15I5000 5099 for CS 0 (not for data gathering variables)I5100 5199 for CS 1I6500 6599 for CS 15Power PMAC Axis AttributesUp to 32 inde

6、pendent axes in a single coordinate systemExisting axis names A, B, C, U, V, W, X, Y, ZAdditional axis names AA, BB, , ZZ (excluding II, JJ, KK)II, JJ, KK are vector names for XX/YY/ZZ 3D-spaceReal-time scaling and offset for all axesSpecial properties for X/Y/Z and XX/YY/ZZ spacesCircular interpola

7、tion on any plane in the 3D spaceTool radius compensation on any plane in the X/Y/Z spaceSpecial properties for X/Y/Z, XX/YY/ZZ, U/V/W, UU/VV/WW spacesReal-time 3x3 matrix transformations of the space Special properties for A, B, C, AA, BB, CC axesProgrammed rollover as rotary axesMultiple motors ca

8、n be assigned to the same axis (e.g. gantry)Virtual axes can be used (not assigned to any motor)Power PMAC Axis Definition StatementsEasiest way of assigning motors to axesSuitable for most simple machine geometriesMap motor to axis (or axes) in a coordinate system with (optional) scaling and offset

9、 scaling defines axis unitsUsually one-to-one mapping of motors to axese.g. &1 #1-1000X, #2-1000YEach motor can be defined as a linear combination of up to 32 axese.g.: #4-1000A+250V-33.333333GG+0.00005Note that combinations are not just limited to XYZ and UVW “triplets”, as in PMAC and Turbo PMACMu

10、ltiple identical definitions are permitted, as for gantries e.g. &1 #1-X, #2-XOne motor cannot be assigned to two separate axese.g. &1 #1-X, #1-Y is not valide.g. &1 #1-X, &2 #1-X is not validThe “Null” Axis Definition&m #n-0 “null” definition means that Motor n will not (directly) use any axis comm

11、and trajectoryThis motor will use C.S. m time base valueThis motor can be “killed” on fault (F.E. or amp) of other motor in C.S.By default, all motors have the null definition in C.S. 0 (&0 #n-0)Motors whose definition is never changed will use C.S. 0s time baseThe undefine all command gives all mot

12、ors this null definition in C.S. 0A motor with a null definition in one C.S. may be redefined as an axis in another C.S.A motor with a real axis definition in one C.S. must first get null definition in that C.S. before redefinition to another C.S.The null definition is useful for “gantry follower” m

13、otorsThis mode enabled by Motorx.ServoCtrl = 8 (not 1 as for most motors)Motors in this mode use trajectory from other motor as specified by Motorx.CmdMotor this should be number of “gantry leader” motorRotary Axis Position RolloverPermits ease of programming of continuously rotatable axesSupported

14、for A, B, C, AA, BB, CC axes in each C.S. onlyUsed for abs mode moves onlyCan be used with kinematic-routine axis definitionsImplemented with saved elements Coordx.PosRollOverii = 0 . 5 for A, B, C, AA, BB, CC axes, respectivelyNote that these are axis variables (in axis user units), not motor varia

15、bles as they were in PMAC/Turbo PMAC= 0 (default) disables rollover 0, specifying cycle size (usually = 360) enables “short path” rollover No abs move distance cycle 1 cycleResulting axis (and motor) position does not roll overMust use “modulo” (remainder) math to report position within one cyclePow

16、er PMAC Axis Definition Matrix StructurePower PMAC “Position Match”Technically, the set of axis definition statements for a coordinate system constitute a matrix to convert from axis to motor coordinatesThis matrix must be inverted to convert from motor to axis positionsRequired to start programmed

17、moves from arbitrary position, or when matrix is changedDesirable for reporting of position, etc. in axis coordinatesPower PMAC automatically performs this matrix inversion for axis reporting functions and when starting motion programsInside motion program, starting axis positions for a move are end

18、ing axis positions of previous moveNot automatically done when commanding axis moves from PLC program, or when definitions, transformations changed within programChanging position-following mode (Motorx.MasterCtrl bit 1) requires position match before next moveCan be commanded explicitly with pmatch

19、 command (on-line or buffered)Power PMAC “Position Match” (cont.)Generally, axis-definition matrix inversion is straightforward (and invisible to user)Some special cases must be (and are!) handledMore motors than axes (e.g. gantry) require decisionIn case of identical definitions, lower-numbered mot

20、or usedIn case of cross-coupling with more motors than axes, most “orthogonal” (mathematically) motors usedUser can override default decision as to which motors to use (by changing Motorx.Csolve bits); this is very rareNon-invertible cases cause errorMore axes than motors (e.g. #1-X+Y only)Identical

21、 definitions reduce effective number of motors (e.g. #1-X+Y, #2-X+Y)Cannot start motion program or report axis position in these cases (status bit Coordx.Csolve = 0)Power PMAC Kinematic RoutinesAlternative, algorithmic method for mapping motors and axes in coordinate systemPermits mathematically non

22、-linear motor/axis mappingsCommonly used for non-Cartesian mechanismsAllows user programming of tool-tip position and pathScheme similar to that in Turbo PMACForward-kinematic (FK) routine converts motor (“joint”) positions to axis (“tool-tip”) positionsExecuted whenever pmatch is required (automati

23、c or explicit)Inverse-kinematic (IK) routine converts axis to motor positionsExecuted each programmed move, or each segment for pathIf forward-kinematic routine exists, it will be used, even if axis-definition statements determine inverse kinematicsIf any motor in CS is defined as inverse-kinematic

24、axis, all forward kinematics must be done in routinePower PMAC Kinematic Routines (cont.)Each coordinate system can have a forward-kinematic and an inverse-kinematic subroutineFK routine must compute all axis positions in CS given motor positionsIK routine must compute motor positions for all CS mot

25、ors defined as IK axes (e.g. #1-I); other motor positions can use axis-definition equations (not mended)Users responsibility to ensure that FK and IK routines are proper inverses of each other over entire workspaceIf they dont agree, will get a sudden jump at the start of a program!FK and IK subrout

26、ines written in Power PMAC script languageSubroutines use local variables, so can be reusedSame FK routine is used for starting-position calculation and axis position/velocity/following-error reportingIterative routines permitted Ldata.GoBack (default = 10) limits loops before errorForward Kinematic

27、 Routine Variable PassingUses CS or command-processor local (L & C) variablesInput value of Ln (n = 0 to Sys.MaxMotors-1) is position of Motor nInput value of D0 0 specifies request for double calculationPower PMAC sets these automatically on entryReturned value of Cn (n = 0 to 31) is scaled positio

28、n of axisUser must calculate and assign these values before exitC0 to C8 for A,B,C,U,V,W,X,Y,Z respectivelyC9 to C16 for AA,BB,HH respectivelyC17 to C31 for LL, MM, , ZZ respectivelyC0 is same as L(Sys.MaxMotors), C1 as L(Sys.MaxMotors+1)Returned D0 value is mask specifying which axes have been calc

29、ulatedUser must set each time executed (usually constant for an application)Bit n of D0 corresponds to Cn calculatede.g. D0=$1C0 (bits 6, 7, & 8 = 1) for X, Y, and Z calculatedPower PMAC automatically uses mask-specified Cn values as axis positionsForward Kinematic “Double Pass” OptionNeeded for axi

30、s velocity (&nv) and following error (&nf) reportingIf input value of D0 (automatically set by Power PMAC) 0, Power PMAC wants 2 passes through FK calculations2nd pass must “push” stack of local variables use callsub to invokeBest handled as follows:open forwardif (D0 0) callsub 100;D0 = axes-calcul

31、ated mask/ Note different use of D0 for returnN100:single pass of FK calculationsreturn;closeInverse Kinematic Routine Variable PassingUses CS local (L & C) variables Input value of Cn (n = 0 to 31) is scaled position of axisPower PMAC sets these automatically on entryC0 to C8 for A,B,C,U,V,W,X,Y,Z

32、respectivelyC9 to C16 for AA,BB,HH respectivelyC17 to C31 for LL, MM, , ZZ respectivelyC0 is same as L(Sys.MaxMotors), C1 as L(Sys.MaxMotors+1)Returned value Ln (n = 0 to Sys.MaxMotors-1) is position of Motor nUser must calculate and assign these values for all #n-I motorsIf input value of D0 != 0,

33、then should process velocities alsoPower PMAC sets D0 to 1 for PVT mode (non-segmented)Input axis velocities in C32 C63 (32 greater than C-var # for axis position)Return motor velocities in “matching” Rn variables (same # as L-var)Power PMAC automatically uses Ln values for IK motors as position (an

34、d Rn values as velocity if specified)Example Simple Kinematic Routines(No variable substitutions)To implement equivalent of &1 #1-1000X, #2-1000YForward-kinematic routine:&1 open forwardif (D0 0) callsub 100;/ Double pass for velocity or error calcsD0=$C0;/ X and Y positions setN100: C6=L1/1000;/ Xp

35、os=M1pos/1000C7=L2/1000;/ Ypos=M2pos/1000closeInverse-kinematic routine (used with axis definitions &1 #1-I, #2-I):&1 open inverseL1=C6*1000;/ M1pos=Xpos*1000L2=C7*1000;/ M2pos=Ypos*1000if (D0 0) / R1=C38*1000;/ M1vel=Xvel*1000 R2=C39*1000;/ M2vel=Yvel*1000closeKinematic Routine IDE Variable NamesUs

36、eful for making easily understandable codePredefined set of text substitutionsSubstitutions automatically performed during download by IDEKinPosMotorn for LnMotor n kinematic positionKinVelMotorn for RnMotor n kinematic velocityKinPosAxis for CnAxis kinematic positionn = 0 for A, 1 for B, 2 for C, 3

37、 for U, etc.KinVelAxis for C(n+32)Axis kinematic velocityKinAxisUsed for D0Bit mask output for axes used in FKKinVelEna for D0Boolean input for IK and FKTwo-Link Robot Arm Kinematics Exampleopen forwardif(Coord1 plete)/ All motors referenced? if (KinVelEna) callsub 100;/ Double pass for vel calcs? K

38、inAxisUsed=$C0; / X&Y returned N100:/ Start of calculations KinPosAxisX=Len1*cosd(KinPosMotor1) +Len2*cosd(KinPosMotor1+KinPosMotor2-90); KinPosAxisY=Len1*sind(KinPosMotor1) +Len2*sind(KinPosMotor1+KinPosMotor2-90); / pute terms for inv kin SumLenSqrd=Len1*Len1+Len2*Len2; ProdofLens=2*Len1*Len2; Dif

39、LenSqrd=Len1*Len1-Len2*Len2;else abort1;/ Not referenced; stopcloseTwo-Link Robot Arm Kinematics Exampleopen inverseX2Y2=pow(KinPosAxisX,2)+pow(KinPosAxisY,2);/ X2 + Y2Bcos=(X2Y2-SumLenSqrd)/ProdofLens;/ cos(B)if (abs(Bcos) 0)Coordx.SegMoveTime tells the software the true time between coarse interpo

40、lation segments, in millisecondsCoordx.SegOverride value (default = 1.0) multiplies SegMoveTime to determine how far to advance trajectory for each segmentExample:Coordx.SegMoveTime = 5.0 msecCoordx. SegOverride = 0.8Trajectory advance per segment = 5.0 * 0.8 = 4.0 msecResulting trajectory executed

41、at 80% of programmed rateAdvantages of Segmentation Override“Time-base override” at servo update stage modifies accelerationAt 50% override, acceleration rate is 25% of programmed valueAt 150% override, acceleration rate is 225% of programmed value“Segmentation override” occurs before lookahead acce

42、leration controlLookahead algorithm can be used to control acceleration rateAcceleration rate can be constant regardless of override valueBoth methods maintain the commanded path very wellNote: Traditional methods of CNC acceleration control maintain acceleration time (not rate) at different overrid

43、e values, but do so at the cost of leaving the commanded path significantly (as the rear wheels of a truck do not follow the path of the front wheels).Segmentation override is not appropriate for tracking a master (as in threading applications) use external time-base override for thisSegmentation ov

44、erride technique protected by U.S. Patent #7,348,748Post-Interpolation Acceleration ControlStandard CNC acceleration control methodSimple computationsUsually IIR low-pass filterEasy to spread acceleration over multiple programmed movesMust be “causal” filter (no future info)Typically produces expone

45、ntial accel profileUsually fixed time constant (Tf); not necessarily minimum-time solutionCan be implemented on PMAC with trajectory pre-filterPre-Interpolation Acceleration ControlStandard PMAC method for providing accel controlEmbedded in equations of commanded motion from trajectory planning“Non-

46、causal” filter uses “future” informationUsually provides constant or “S-curve” acceleration profilesFaster moves for same constraints than post-interpolation controlMore difficult, time-intensive calculationsHarder to spread acceleration over multiple programmed movesPath Implications of Post-Interp

47、olation Acceleration ControlPlot shows command path traversed twiceOnce without accel control; no path errors, not realizableNext with accel control; path affectedFiltered curved paths fail to insideCorners rounded significantly and non-symmetricallyErrors are significant under normal conditionsSame

48、 effect if filtering done in drivePath Implications of Pre-Interpolation Acceleration ControlPlot shows path with and without accel controlAccel control can be applied to affect only move boundariesStart/stop controlCorner blending controlCurved paths do not “fail” to insideBlended corners smaller than for post-interp accel control, for same peak accelBlended corners are symmetricalMuch greater path fidelity overallAcceleration Control Applied After Interp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论