指令原型:
GT_API GTN_SetGroupCoordinateTransformPrm(short core,short group,
short coordSystem,short enable, TCoordinateTransform *pPrm,short count,
TListInfo *pListInfo)
指令类型:
group指令。
指令说明:
设置group的笛卡尔坐标系变换参数。
指令参数说明:
| core |
核号,正整数,取值范围请参照核号参数范围一栏。
|
| group |
group号,正整数,取值范围请参照group号参数范围一栏。
|
| coordSystem |
需要进行变换的笛卡尔坐标系类型。
```
COORD_SYSTEM_PCS(0):工件坐标系,描述PCS相对MCS的关系。
COORD_SYSTEM_TCS(3):刀具坐标系,对于机器人,描述TCS相对FCS的关系,对于三轴或者五轴模型,描述TCS相对MCS的关系。
COORD_SYSTEM_PCS_USER_DEFINE(30):用户定义工件坐标系或者特征坐标系,描述了该坐标系相对PCS的关系。
COORD_SYSTEM_TCS_USER_DEFINE(20):用户定义工具坐标系,描述了该坐标系相对MCS的关系,应用于五轴模型中的刀具方向进退刀功能。
|
| enable |
是否使能变换,0;不使能,1:使能。
|
| pPrm |
坐标系变换参数结构体指针。详情说明请参照TCoordinateTransform
TCoordinateTransform
typedef struct CoordinateTransform
{
short mode;
short reserve[3];
TCoordinateTransformUnion data;
}TCoordinateTransform;
mode:坐标系变换参数描述模式。
COORD_TRANS_TYPE_ACS_POS(5):通过ACS的位置描述坐标系变换。
COORD_TRANS_TYPE_EULER(1):欧拉角描述,每次都是绕旋转后的坐标系轴旋转。
COORD_TRANS_TYPE_EULER_FIX(11):固定角描述,每次都是绕固定坐标系的坐标轴旋转。
COORD_TRANS_TYPE_TOOL_DIR(20):刀具方向描述。
COORD_TRANS_TYPE_OFFSET(30):偏移值描述。
COORD_TRANS_TYPE_POINTS(40):三点模式。
COORD_TRANS_TYPE_TWO_VECTORS(50):两个矢量模式。
COORD_TRANS_TYPE_PROJECT_ANGLE(60):投影角模式。
reserve:保留参数,必须为0。
当mode为COORD_TRANS_TYPE_EULER(1),reserve[0]描述欧拉角或者固定角的模式,也就是描述旋转次序:
EULER_MODE_ZYX(0)
EULER_MODE_ZXZ(3)
当mode为COORD_TRANS_TYPE_EULER(11),reserve[0]描述欧拉角或者固定角的模式,也就是描述旋转次序:
EULER_MODE_ZXZ(3)
EULER_MODE_XYZ(4)
data:坐标系变换参数。详情说明请参照TCoordinateTransformUnion
TCoordinateTransformUnion
typedef union CoordinateTransformUnion
{
TCoordinateTransformAcsPos acsPos;
TCartesianParameter euler;
TCoordinateTransformToolDir toolDir;
TCoordinateTransformOffset offset;
TCoordinateTransformPoints points;
TCoordinateTransformTwoVectors twoVectors;
TCoordinateTransformProjectAngle projectAngle;
double value[20];
} TCoordinateTransformUnion;
acsPos:通过ACS的位置描述坐标系变换。详情说明请参照TCoordinateTransformAcsPos
TCoordinateTransformAcsPos
typedef struct CoordinateTransformAcsPos
{
double prm[8];
double reserve[12];
}TCoordinateTransformAcsPos;
mode:各个轴的ACS位置值,以设置的位置和姿态作为变换后坐标系的零点。单位:直线轴为mm,旋转轴为度。
reserve:保留参数,必须为0。
euler::欧拉角描述坐标系变换。详情说明请参照TCartesianParameter
TCartesianParameter
typedef struct CartesianParameter
{
double transX;
double transY;
double transZ;
double rotAngle1;
double rotAngle2;
double rotAngle3;
}TCartesianParameter;
transX:X轴偏移量。单位:mm。
transY:Y轴偏移量。单位:mm。
transZ:Z轴偏移量。单位:mm。
rotAngle1:旋转角度1。单位:度。
rotAngle2:旋转角度2。单位:度。
rotAngle3:旋转角度3。单位:度。
toolDir:刀具方向描述坐标系变换。通过刀具方向描述的坐标系定义为:将MCS和刀具侧旋转轴一起旋转得到新的坐标,再在旋转后的坐标系上绕Z轴旋转alpha角度。该模式只允许在五轴模型下设置,且只能设置在COORD_SYSTEM_PCS(0)或者COORD_SYSTEM_PCS_USER_DEFINE(30)下。详情说明请参照TCoordinateTransformToolDir
TCoordinateTransformToolDir
typedef struct CoordinateTransformToolDir
{
double transX; // 相对PCS原点的X轴平移量
double transY; // 相对PCS原点的Y轴平移量
double transZ; // 相对PCS原点的Z轴平移量
double rotAngle1; // 刀具侧第一个旋转轴的旋转角
double rotAngle2; // 刀具侧第二个旋转轴的旋转角
double alpha; // 绕Z轴旋转的角度
double reserve[14];
}TCoordinateTransformToolDir;
transX:X轴偏移量,相对PCS的坐标。单位:mm。
transY:Y轴偏移量,相对PCS的坐标。单位:mm。
transZ:Z轴偏移量,相对PCS的坐标。单位:mm。
rotAngle1:第一个刀具侧旋转轴的旋转角度。单位:度。
rotAngle2:第二个刀具侧旋转轴的旋转角度。单位:度。
alpha:根据rotAngle1和rotAngle2确定的坐标系,再绕其Z轴旋转alpha度。单位:度。
reserve:保留参数,必须为0。
offset:偏移值描述坐标系变换,通过描述各个轴的零点偏移量来描述坐标系偏移。该模式只允许在五轴模型下设置,且只能设置在COORD_SYSTEM_PCS(0)下。详情说明请参照TCoordinateTransformOffset
TCoordinateTransformOffset
typedef struct CoordinateTransformOffset
{
double prm[8];
double reserve[12];
}TCoordinateTransformOffset;
prm:分别描述各个轴的零点偏移量,单位:直线轴为mm,旋转轴为度。。
reserve:保留参数,必须为0。
points:三点模式描述坐标系变换,根据平面内的三个点指定初始特征坐标系,再在初始特征坐标系上进行平移和旋转得到最终的特征坐标系。该模式只允许在五轴模型下设置,且只能设置在COORD_SYSTEM_PCS_USER_DEFINE(30)下。详情说明请参照TCoordinateTransformPoints
TCoordinateTransformPoints
typedef struct CoordinateTransformPoints
{
double point1[3];
double point2[3];
double point3[3];
double offset[3];
double gama;
double reserve[7];
}TCoordinateTransformPoints;
point1:第1点,初始特征坐标系的零点,坐标值为相对原始PCS的位置。单位:mm。
point2:第2点,初始特征坐标系X轴正方向上的点,坐标值为相对原始PCS的位置。单位:mm。
point3:第3点,坐标值为相对原始PCS的位置。单位:mm。
offset:最终特征坐标系的原点相对第1点的偏移量,偏移值为相对初始特征坐标系的位置。单位:mm。
gama:绕特征坐标系Z轴旋转的角度。单位:度。范围:(-360,360)。
reserve:保留参数,必须为0。
当三点中存在相同点,或者三点中的1点与其他两点相连的直线距离小于0.1mm,或者三点共线时,不允许设置坐标系。
twoVectors:,根据两个矢量指定坐标系,通过Z矢量方向和X矢量方向的矢量积得到Y轴方向,再根据XY的右手法则得到Z方向。:该模式只允许在五轴模型下设置,且只能设置在COORD_SYSTEM_PCS_USER_DEFINE(30)下。详情说明请参照TCoordinateTransformTwoVectors
TCoordinateTransformTwoVectors
typedef struct CoordinateTransformTwoVectors
{
double offset[3]; // 特征坐标系的原点相对原始PCS的位置
double vector1[3]; // 特征坐标系X轴正向的矢量方向,单位为量纲1
double vector2[3]; // 特征坐标系Z轴正向的矢量方向,单位为量纲1
double reserve[11];
}TCoordinateTransformTwoVectors;
offset:特征坐标系的原点相对原始PCS的位置。单位:mm。
vector1:特征坐标系X轴正向的矢量方向,单位为量纲1。
vector2:特征坐标系Z轴正向的矢量方向,单位为量纲1。
reserve:保留参数,必须为0。
当vector1或vector2不满足单位矢量的条件,或者vector1和vector2为同一方向,即夹角小于1度或者大于179度时,不允许设置坐标系。
projectAngle:投影角模式坐标系变换。该模式只允许在五轴模型下设置,且只能设置在COORD_SYSTEM_PCS_USER_DEFINE(30)下。详情说明请参照TCoordinateTransformProjectAngle
TCoordinateTransformProjectAngle
typedef struct CoordinateTransformProjectAngle
{
double offset[3];
double alpha;
double beta;
double gama;
double reserve[14];
}TCoordinateTransformProjectAngle;
offset:特征坐标系的原点相对原始PCS的位置。单位:mm。
alpha:X轴绕原始坐标系的Y轴旋转的角度。单位:度。范围:(-360,360)。
beta:Y轴绕原始坐标系的X轴旋转的角度。单位:度。范围:(-360,360)。
gama:绕特征坐标系Z轴旋转的角度。单位:度。范围:(-360,360)。
reserve:保留参数,必须为0。
当围绕Y轴旋转角度–alpha后的X轴与围绕X轴旋转角度beta后的Y轴所构成的角度小于1度或者大于179度,不允许设置坐标系。
reserve:保留参数,必须为0。
|
| count |
坐标系变换组数。取值范围:用户PCS为[1,4],其他坐标系只允许设置为1。
|
| pListInfo |
指令流信息结构体指针。详情说明请参照TListInfo
TListInfo
typedef struct
{
short list;
short reserve1[2];
short modal;
long segNum;
long reserve2[3];
double reserve3[4];
} TListInfo;
list:指令压入的指令流号,取值范围:[0, 4]。
当pListInfo为空或者list=0时,指令为立即指令,调用后立即生效。
当list>0时,指令为list指令,调用后被发送到指令流中,在启动指令流后顺序执行到该指令才生效。
modal:为1时表示阻塞指令流,等待当前指令完成。本指令不需要设置此参数。
segNum:指令段号,取值范围:[-2147483648, 2147483647]。
reserve1:保留参数,必须为0。
reserve2:保留参数,必须为0。
reserve3:保留参数,必须为0。
|
指令返回值:
请参照通用返回值说明。