03-04-2016, 08:15 AM

Hi,

Just started using the PPMAC and encountered some errors when running the forward/inverse kinematic subroutines.

The forward routine seems to be working, but when I add the file inverse.kin in the project I encounter buffer related errors (closed, in use, etc). The same error shows up as early as the compiler finds open inverse (1).

I want to know where exactly this error comes from in my project. Is it something I did not define in the forward kinematics routine?

Below is my code for the forward kinematics routine. Am I setting KinAxisUsed correctly? My machine has 5 axes. Thanks!

csglobal CtsperMm1;

csglobal CtsperMm2;

csglobal CtsperMm3;

csglobal CtsperDegB;

csglobal CtsperDegC;

csglobal Dy; //Y offset//C_B_Dist;

csglobal Dz; //B_to_Tip_TCP;

csglobal FwdKinErr;

CtsperMm1 = 1001.16074600000002;

CtsperMm2 = 1045.03245700000002;

CtsperMm3 = 1039.48072200000001;

CtsperDegB = 2912.71111000000019;

CtsperDegC = 2912.71111000000019;

Dy = 200; //Y offset//C_B_Dist;

Dz = 266 ; //B_to_Tip_TCP;

&1 // Address coordinate system 1

open forward // Open forward kinematics buffer

if (KinVelEna >0) callsub 100; // Check if double-pass needed, otherwise go to line 100

KinAxisUsed = $1C6 // Specify X and Y Z B C axes used in inverse kinematics

n100: // Line label

if (Coord[1].HomeComplete) // Home complete OK?

{

KinPosAxisX = equation;

KinPosAxisY = equation;

KinPosAxisZ = equation;

}

else // Not valid; halt operation

{

if (Ldata.Status & 40) // Called from motion program?

{

Coord[1].ErrorStatus = 255; // User-set aborting error

}

else // Called from axis query

{

KinPosAxisX = sqrt(-1); // Return "not-a-number“ for X axis

KinPosAxisY = sqrt(-1); // Return "not-a-number“ for Y axis

KinPosAxisZ = sqrt(-1); // Return "not-a-number“ for Z axis

}

}

return;

close // Close forward kinematics buffer

Just started using the PPMAC and encountered some errors when running the forward/inverse kinematic subroutines.

The forward routine seems to be working, but when I add the file inverse.kin in the project I encounter buffer related errors (closed, in use, etc). The same error shows up as early as the compiler finds open inverse (1).

I want to know where exactly this error comes from in my project. Is it something I did not define in the forward kinematics routine?

Below is my code for the forward kinematics routine. Am I setting KinAxisUsed correctly? My machine has 5 axes. Thanks!

csglobal CtsperMm1;

csglobal CtsperMm2;

csglobal CtsperMm3;

csglobal CtsperDegB;

csglobal CtsperDegC;

csglobal Dy; //Y offset//C_B_Dist;

csglobal Dz; //B_to_Tip_TCP;

csglobal FwdKinErr;

CtsperMm1 = 1001.16074600000002;

CtsperMm2 = 1045.03245700000002;

CtsperMm3 = 1039.48072200000001;

CtsperDegB = 2912.71111000000019;

CtsperDegC = 2912.71111000000019;

Dy = 200; //Y offset//C_B_Dist;

Dz = 266 ; //B_to_Tip_TCP;

&1 // Address coordinate system 1

open forward // Open forward kinematics buffer

if (KinVelEna >0) callsub 100; // Check if double-pass needed, otherwise go to line 100

KinAxisUsed = $1C6 // Specify X and Y Z B C axes used in inverse kinematics

n100: // Line label

if (Coord[1].HomeComplete) // Home complete OK?

{

KinPosAxisX = equation;

KinPosAxisY = equation;

KinPosAxisZ = equation;

}

else // Not valid; halt operation

{

if (Ldata.Status & 40) // Called from motion program?

{

Coord[1].ErrorStatus = 255; // User-set aborting error

}

else // Called from axis query

{

KinPosAxisX = sqrt(-1); // Return "not-a-number“ for X axis

KinPosAxisY = sqrt(-1); // Return "not-a-number“ for Y axis

KinPosAxisZ = sqrt(-1); // Return "not-a-number“ for Z axis

}

}

return;

close // Close forward kinematics buffer