### FRAME_ROTATE2 -- 坐标系变换计算

类型 | 机械手计算指令
描述 | 手动计算坐标系旋转后的坐标值。 使用时需控制器当前存在机械链接。 base 轴，可以是虚拟轴与关节轴中的任意一个；base 轴无机械手链接，会报 1025 的错误。 多种机械手叠加的情况，根据 base 轴来识别是哪个机械手模式。如果 base（axis_1,axis_2）中的 axis_1 是模式 1 的机械手轴，axis_2 是模式 2 的机械手轴，那么结果是模式 1 的机械手进行坐标计算，即以 base 轴的顺序来计算。
语法 | FRAME_ROTATE2(tablein, tableout, dir[, x,y,z[, rx,ry,rz]]) ret = FRAME_ROTATE2(tablein, tableout, dir[, x,y,z[, rx,ry,rz]]) tablein：转换前，填写的坐标存储 table 位置 tableout：转换后，输出的坐标存储 table 位置 dir：方向选择
值 | 描述
0 | DPOS 到 WORLD_DPOS
1 | WORLD_DPOS 到 DPOS
X：坐标系 B 沿 X^的平移距离 Y：坐标系 B 沿 Y^的平移距离 Z：坐标系 B 沿 Z^的平移距离 RX：坐标系 B 沿 X^的旋转的角度 RY：坐标系 B 沿 Y^的旋转的角度 RZ：坐标系 B 沿 Z^的旋转的角度 [, x,y,z[, rx,ry,rz]]：不填时使用当前的缺省 rotate 参数 Ret：返回成功与否；-1-成功，0-未成功
适用控制器 | 通用
例程 | 例一 以 FRAME=2，DETLA 为例；对其绕 X 轴旋转 90 度。 BASE(0,1,2) RAPIDSTOP ATYPE = 1,1,1 UNITS=3600/360,3600/360,3600/360 DPOS=0,0,0 BASE(6,7,8) ATYPE = 0,0,0 TABLE(0,40,10,32,85,3600,3600,3600, 0, 0, 0 ) UNITS = 100,100,100 BASE(0,1,2) CONNFRAME(2,0,6,7,8) WAIT LOADED FOR i=0 TO 2 TABLE(100+i)=DPOS(i+6) NEXT BASE(6,7,8) FRAME_ROTATE(0,0,0,PI/2,0,0) BASE(6,7,8) FRAME_ROTATE(0,0,0,PI/2,0,0) WAIT LOADED ret=FRAME_ROTATE2(100,200,1,0,0,0,PI/2,0,0) IF ret=-1 THEN ?"计算值" ?"DPOS(6)=",TABLE(200) ?"DPOS(7)=",TABLE(201) ?"DPOS(8)=",TABLE(202) ?"比较值" ?"DPOS(6)比较",TABLE(200)-DPOS(6) ?"DPOS(7)比较",TABLE(201)-DPOS(7) ?"DPOS(8)比较",TABLE(202)-DPOS(8) ENDIF 输出行输出结果： 计算值 DPOS(6)=0 DPOS(7)=-58.1400 DPOS(8)=0.0000 比较值 DPOS(6)比较 0 DPOS(7)比较 0 DPOS(8)比较 0.0000 例二 以 FRAME=1，SCARA 为例，对其相对于 Z 轴旋转 90 度。 BASE(0,1,2,3) RAPIDSTOP ATYPE = 1,1,1,1 UNITS=3600/360,3600/360,3600/360,1000 DPOS=0,0,0,0 BASE(6,7,8,9) ATYPE = 0,0,0,0 TABLE(0,100,100,3600,3600,3600) UNITS = 100,100,3600/360,1000 BASE(0,1,2,3) CONNFRAME(1,0,6,7,8,9) WAIT LOADED FOR i=0 TO 3 TABLE(100+i)=DPOS(i+6) NEXT BASE(6,7,8,9) FRAME_ROTATE(0,0,0,0,0,PI/2) WAIT LOADED RET=FRAME_ROTATE2(100,200,1,0,0,0,0,0,PI/2) IF RET=-1 THEN ?"计算值" ?"DPOS(6)=",TABLE(200) ?"DPOS(7)=",TABLE(201) ?"DPOS(8)=",TABLE(202) ?"DPOS(9)=",TABLE(203) ?"比较值" ?"DPOS(6)比较",TABLE(200)-DPOS(6) ?"DPOS(7)比较",TABLE(201)-DPOS(7) ?"DPOS(8)比较",TABLE(202)-DPOS(8) ?"DPOS(9)比较",TABLE(203)-DPOS(9) ENDIF 输出行输出结果： 计算值 DPOS(6)=-0.0000 DPOS(7)=-200 DPOS(8)=0 DPOS(9)=0 比较值 DPOS(6)比较 -0.0000 DPOS(7)比较 0 DPOS(8)比较 0
相关指令 | FRAME_ROTATE