maslick Posted June 29, 2012 Share Posted June 29, 2012 Hello! I would like to control the hexapod platform using PVT mode. We have already implemented a system using LINEAR mode. Now, I have added into the inverse kinematics routine the computation of the motors' velocities. Here is a piece of a motion program I have written so far: close #include "macro_constants_def.pmc" open prog 1 ; open buffer for program entry clear ; erase existing contents of buffer &1 PVT200 ;Move absolute ABS ;Transform from uRad to deg. UCSPoseA=UCSPoseAuRad/TouRad UCSPoseB=UCSPoseBuRad/TouRad UCSPoseC=UCSPoseCuRad/TouRad X(UCSPoseX):(XVel)Y(UCSPoseY):(YVel)Z(UCSPoseZ):(ZVel)A(UCSPoseA):(AVel)B(UCSPoseB):(BVel)C(UCSPoseC):(CVel) The only thing is that I use only one "X:(Vx)Y:(Vy):Z:..." statement. When I have to slice my entire move (contour) into pieces, so like the move will consist of 50 little jogs. How can I implement this? By putting it in a loop? Or is there a better way? Thanks in advance! -- Best regards, Pavel Maslov, MS Controls Engineer at Pulsed power Lab Efremov Institute for Electro-Physical Apparatus St. Petersburg, Russia Mobile: +7 (951) 672 22 19 Landline: +7 (812) 461 01 01 Link to comment Share on other sites More sharing options...
Richard Naddaf Posted July 2, 2012 Share Posted July 2, 2012 If you put them in a while loop, you have to make sure that the position and velocity updates are synchronized properly. In other words, and for each move, the new positions and velocities have to be sent before the end of the previous move. This allows PMAC to blend them together, otherwise it will stop the axes. An axis can not be stationary in one location while trying to achieve a constant (non-zero) velocity. I suggest programming the entire contour explicitly in-line, i.e. 50 lines. Link to comment Share on other sites More sharing options...
maslick Posted July 6, 2012 Author Share Posted July 6, 2012 If you put them in a while loop, you have to make sure that the position and velocity updates are synchronized properly. In other words, and for each move, the new positions and velocities have to be sent before the end of the previous move. This allows PMAC to blend them together, otherwise it will stop the axes. An axis can not be stationary in one location while trying to achieve a constant (non-zero) velocity. I suggest programming the entire contour explicitly in-line, i.e. 50 lines. Hey Richard! The axes velocities (X,Y,Z,A,B,C) have to be constant in my case and are set by the user. Do you mean something like (using abstract syntax notation): while(1) { (Xcurrent+dX):Xvel (Ycurrent+dY):Yvel (Zcurrent+dZ):Zvel (Acurrent+dA):Avel (Bcurrent+dB):Bvel (Ccurrent+dC):Cvel if (CurrentPos==(CommandedPos-deltaPos)) { X:0 Y:0 Z:0 break } } Link to comment Share on other sites More sharing options...
Recommended Posts