dholden Posted October 30, 2017 Share Posted October 30, 2017 I have had good success with "Tracking a Moving Object" in the Turbo PMAC and I wanted to know if this document was for the Power PMAC. If not where I would find the Power PMAC version of the example. I notice there are no PMATCH commands as you change following modes. in the Turbo PMAC you typically needed something like this: KinematicsMode=FollowingBelt DWELL 10 cmd"PMATCH" DWELL 10 Is PMATCH not needed in the PowerPMAC for this application? Even when i do find a few sparse examples of PMATCH in the Users Manual it is not preceded and followed by DWELL commands in the motion program, is this correct? ThanksTracking a Moving Object.pdf Link to comment Share on other sites More sharing options...
dholden Posted October 30, 2017 Author Share Posted October 30, 2017 Also in the Turbo PMAC you have to set a bit to enable kinematics, is this true on the Power PMAC as well and if so which bit is it? Link to comment Share on other sites More sharing options...
Jay Lee Posted October 30, 2017 Share Posted October 30, 2017 PMATCH is needed in Power PMAC as well. the logic of PMATCH is the same between Turbo and Power PMAC. We don't have a bit in Power PMAC to turn on and off kinematics. it's only controlled by motor axis defintion i.e. like #1->I Link to comment Share on other sites More sharing options...
dholden Posted October 30, 2017 Author Share Posted October 30, 2017 With forward an inverse kinematics setup using only X-Axis for simplicity I should see C6 and L1 update when watching online right? they both stay at Zero and i am getting the classic Kinematics 'jump' when moving from 'Line Following Mode' to 'Normal Mode' suggestions? Below is my setup Motor 1 is my X-Axis Motor 3 is my belt tracking encoder (line encoder) // Global Definitions global KinematicsMode; global NormalMode = 1,LineFollowingMode = 2; global EncoderPosCaptured, TrackingOffset; #define KinPosMotor1 L1 // Motor Position in Counts #define KinPosAxisX C6 // Coordinate System Position in Inches #define KinAxisUsed D0 // See table below for examples or page 472 of the Users Manual // Coordinate system definition &1 // Select C.S. #1 #1 -> I // Use Kinematics for Motor 1 Coord[1].SegMoveTime = 2 // 2 mSec segmentation period (required to be > 0 for kinematics) // Forward kinematics &1 // Address Coordinate System 1 open forward // Open Forward Kinematics Buffer KinAxisUsed = $40 // Specify X axis used in inverse kinematics if(Coord[1].HomeComplete){ // Have all axes in this coordinate system Completed Home? KinPosAxisX = KinPosMotor1 / 20320; // X-Axis Tool Tip Position Calculation } else { // Not valid; halt operation KinPosAxisX = sqrt(-1); // Return "not-a-number“ for X axis } close // Close Forward kinematics buffer // Inverse kinematics &1 // Address coordinate system 1 open inverse // Open buffer, clear contents if(KinematicsMode == NormalMode){ //Check if we are in 'Normal Mode' KinPosAxisX = KinPosAxisX; // Inverse kinematic equations for NO Tracking } if(KinematicsMode == LineFollowingMode){ //Check if we are in 'Line Following Mode' and Apply the Tracking Offset //Get the Current Line Encoder Position, Subtract from the Captured Position, and Convert to Inches TrackingOffset = (Motor[3].ActPos - EncoderPosCaptured) / 53333; KinPosAxisX = KinPosAxisX + TrackingOffset; // Apply TrackingOffset to the X-Axis of the Coordinate System } KinPosMotor1 = KinPosAxisX * 20320; // Scale Position to Counts close Link to comment Share on other sites More sharing options...
dholden Posted October 31, 2017 Author Share Posted October 31, 2017 Below is the motion program for the above kinematics. When we want to enable tracking we simply set EnableHwJogBit and run the program (&1b3r) The line encoder runs slowly but constantly Since I see no change in L1 or C6 I assume PMATCH is actually doing nothing, causing the jumps. If I should see change in L1 and C6 what should I look to change? If I should not see change in L1 and C6 what should I be looking for from here? Thanks //Motion Program open prog 3 Linear Abs F 1 // Set Feed Rate to 1inch/sec Ta 0.250 // Set accel time to 0.250 sec X 2.0 // Move to position 1 DWELL 0 EncoderPosCaptured = Motor[3].ActPos // Get Current Line Encoder Position KinematicsMode = LineFollowingMode // Enable Part Belt Tracking Mode DWELL 10 cmd"&1PMATCH" DWELL 10 // Do ths every time you change kinematics modes while(EnableHwJogBit == 1){ // Track with Line Encoder X 2.0 // ******SMALL JUMP HERE****************************************************************** } KinematicsMode = NormalMode // Disable Line Encoder Tracking Mode DWELL 10 cmd"&1PMATCH" DWELL 10 // Do ths every time you change kinematics modes // ******LARGE JUMP HERE****************************************************************** X 0 // Move back to home DWELL 0 close Link to comment Share on other sites More sharing options...
dholden Posted November 2, 2017 Author Share Posted November 2, 2017 I may have answered my own question, it looks like my error was correctly setting up Lookahead, which limits the max speed and acceleration of a move. Basically this controls how aggressively you 'jump' to the PMATCH position after changing following modes. If anyone feels there is something more I am missing on this please let me know. Thanks Link to comment Share on other sites More sharing options...
lahm_wh Posted August 26, 2019 Share Posted August 26, 2019 can i get a new application about "using vision to track a moving object".i am using pmatch with dwell 10 ,but i find servo is not stable. Link to comment Share on other sites More sharing options...
Recommended Posts