15.4.19 功能指令
15.4.19.1 CRobT
说明: 用于获取机器人位姿。使用该函数时,需要给定工具名称和工件名称,返回指定工具坐标系的 pose,当前的轴配置信息以及外部轴位置。
|
使用 CRobT 时,机器人应处于停止状态,即 CRobT 之前的运动语句转弯区设置应为 fine。 |
定义:
CRobT(Tool,Wobj);
-
Tool,数据类型:tool,计算位置时使用的工具。 -
Wobj,数据类型:wobj,计算位置时使用的工件。 -
返回值,数据类型:robtarget,返回当前机器人的位置、姿态、轴配置数据以及外部轴信息。
示例:
p2=CRobT(tool1,wobj2);
15.4.19.2 CJointT
说明: CJointT 用于读取机器人轴和外部轴当前角度。
|
定义:
CJointT();
-
返回值:数据类型:jointtarget,旋转轴单位:度,线性轴单位:mm,返回机器人轴和外部轴的当前角度值。
示例:
VARjointtarget j2;
j2=CJointT()
15.4.19.3 CalcJointT
说明: 根据指定的 robtarget 变量计算对应的关节角度。
定义:
CalcJointT(Rob_Target,Tool,Wobj);
-
Rob_Target:数据类型:robtarget,指定的笛卡尔空间目标点,请注意该点定义时使用的工具和工件应和 CalcJointT 指令中使用的工具/工件保持一致,否则可能会导致错误的结果。 -
Tool:数据类型:tool,计算关节角度时使用的工具,注意需要与定义所用的 robtarget 时使用的工具一致。 -
Wobj:数据类型:wobj,计算关节角度时使用的工件,注意需要与定义所用的 robtarget 时使用的工件一致。 -
返回值:数据类型:jointtarget,返回输入位置对应的关节角度和外部轴位置。关节角度的单位是度(°),直线外部轴的单位是毫米(mm),旋转外部轴的单位是度(Degree)。
示例:
jpos2=CalcJointT(pt1, tool1,wobj2);
// 计算 tool1 到达 pt1 点时对应的关节角度,并赋值给 jpos2,pt1 点是在工件 wobj2 下定义的。
15.4.19.4 CalcRobT
说明: 根据指定的关节角度计算对应的笛卡尔空间位姿。
定义:
CalcRobt(Joint_Target,Tool,Wobj);
-
Joint_Target:数据类型:jointtarget,给定的用来计算笛卡尔空间位姿的关节角度。 -
Tool:数据类型:tool,计算笛卡尔空间位姿时使用的工具。 -
Wobj:数据类型:wobj,计算笛卡尔空间位姿时使用的工件。 -
返回值:数据类型:robtarget,返回给定关节角对应的笛卡尔空间位姿。
示例:
pt1=CalcRobT( jpos1, tool2,wobj);
// 根据关节角度 jpos1 来计算笛卡尔位姿,并赋值给 pt1。pt1 是工具坐标系 tool2 在工件坐标系 wobj1 下描述的位姿。
15.4.19.5 Print
说明: 将用户定义的内容打印输出到示教器,用户可以使用该函数对程序进行调试。
Print 函数的输入参数比较特殊,输入参数的个数不限,但至少要有一个,且每个参数必须为一个定义过的变量或者常量。
系统将这些变量转换为字符串并串接在一起,最后输出到程序编辑器的调试窗口。(调试窗口关闭时,print的信息仍然被记录,记录数量上限为 500 条)
定义:
Print(var1,var2,……);
示例:
counter=0;
while(true)
counter++;
Print(“counter=”,counter);
endwhile
该程序段执行后,HMI 的程序调试窗口将打印出如下信息:
counter=1
counter=2
counter=3
counter=4
……
|
15.4.19.6 Print_f
说明: Print_f 函数的用法类似 Print 指令,但是将参数内容输出到特定的日志文件,用户可以使用该函数记录程序的关键数据、关键事件。通过备份功能可以导出查看。
Print_f 函数的输入参数的个数不限,但至少要有一个,且每个参数必须为一个定义过的变量或者
常量。
系统将这些变量转换为字符串并串接在一起,最后输出到日志文件中。
定义:
Print_f(var1,var2,……);
示例:
counter=0;
while(true)
counter++;
Print_f(“counter=”,counter);
//其他功能
endwhile
该程序段执行后,用户日志文件会记录counter的变化情况,可以在导出的rl_log中看到
15.4.19.7 PoseMult
说明: PoseMult用于计算两个位姿变换的乘积。
定义:
pose3=PoseMult(pose1,pose2);
-
pose1:数据类型,pose,位姿 1。 -
pose2:数据类型,pose,位姿 2。 -
pose3:返回值,数据类型:pose,表示位姿乘积结果。
示例:
pose1 代表坐标系 1 相对坐标系 0 的位姿,pose2 代表坐标系 2 相对坐标系 1 的位姿,坐标系 2 相对坐标系 0 的位姿 pose3 可以通过以下方式计算:
VARposepose1;
VARposepose2;
VARposepose3;
...
pose3=PoseMult(pose1,pose2);
15.4.19.8 PoseInv
说明: PoseMult 用于计算两个位姿变换的乘积 PoseInv 用于计算一个位姿变换的逆。
定义:
pose2=PoseInv(pose1);
-
pose1:数据类型:pose,输入位姿; -
pose2:数据类型:pose,返回值。
示例:
// pose1 代表坐标系 1 相对坐标系 0 的位姿,pose2 代表坐标系 0 相对坐标系 1 的位姿。
// 如果已知 pose1,pose2 可以通过以下方式计算:
VARposepose1;
VARposepose2;
...
pose2=PoseInv(pose1);
15.4.19.9 GetRobABC
说明: 获取笛卡尔空间点 P 的欧拉角姿态 ABC;旋转顺序定义为,初始坐标系(运动指令中选定的工件坐标系)首先绕自身 X 轴旋转后,再绕初始坐标系的 Y 轴旋转,最后绕初始坐标系的 Z 轴旋转
定义:
doubledb_arr[3]=GetRobABC(Point[,A,B,C]);
-
Point:数据类型:robtarget,计算位置时使用的笛卡尔点位。 -
A,B,C:数据类型:double,笛卡尔点位欧拉角姿态的返回值。 -
返回值:数据类型:double 三维数组,笛卡尔点位欧拉角姿态的返回值。
示例:
例1
//point0 是一个笛卡尔点位变量,将变量的欧拉角姿态转换成 RL 的 Double 变量,可以使用下面的 RL 指令。
VARdoubleRob_A;
VARdoubleRob_B;
VARdoubleRob_C;
//将point0的欧拉角赋值到Rob_A|B|C
GetRobABC(point0,Rob_A,Rob_B,Rob_C);
例2
// point0 是一个笛卡尔点位变量,生成一个临时变量数组来存储笛卡尔点位的欧拉角信息,可以使用下面的 RL 指令
doubledb_arr[3]=GetRobAbc(point0);
15.4.19.10 SetRobABC
说明: 根据输入的欧拉角 ABC,设置笛卡尔空间点P的姿态;旋转顺序定义为,初始坐标系(运动指令中选定的工件坐标系)首先绕自身 X 轴旋转后,再绕初始坐标系的 Y 轴旋转,最后绕初始坐标系的 Z 轴旋转。
定义:
SetRobABC(Point ,A,B,C);
-
Point,数据类型:笛卡尔点位,将要被修改姿态的笛卡尔点位。 -
A,B,C,数据类型:double,设置笛卡尔点位的欧拉角姿态,单位°(度)。
示例:
// point0 是一个笛卡尔点位变量,点位绕定轴 X,Y,Z 轴依次旋转 30°,60°,90°。
SetRobABC(point0,30,60,90);
15.4.19.11 RotRobABC
说明: 根据输入的欧拉角 ABC,在笛卡尔空间 P 的已有的姿态前提下,再进行欧拉角的旋转;旋转顺序定义为,初始坐标系(P 自身的姿态)首先绕自身 X 轴旋转后,再绕初始坐标系的 Y 轴旋转,最后绕初始坐标系的 Z 轴旋转。表现为已有的欧拉角跟输入的 ABC 相加。
定义:
RotRobABC(Point ,A,B,C);
-
Point:数据类型:笛卡尔点位,将要被修改姿态的笛卡尔点位。 -
A,B,C:数据类型:double,设置笛卡尔点位旋转的欧拉角姿态,单位°(度)。
示例:
// point0 是一个笛卡尔点位变量,将点位绕 X,Y,Z 再旋为 30°,60°,90°
RotRobABC(point0,30,60,90);