###本宏程序分为计算部分O9001,执行部分O9002两部分,如果需要使用坐标跟随还有坐标跟随部分O9003 .适用于广数系统,理论上fanuc系统也相同。执行的时候使用G65P9001F90,需要坐标跟随后面再跟上G65P9003(定位角度,F必须是介于-360到+360之间能被90整除的角度,液压转台每一次旋转只能转90°)
#O9001内容如下:
O09001;
#4=FIX[#9/90]; (输入角度/90,下取整整数)
#5=#9-#4*90; (输入角度/90后的余数)
IF[#5NE0]GOTO91; (余数不等于零跳转报错)
IF[#9GT360]GOTO92; (输入值大于360跳转报错)
IF[#9LT-360]GOTO93; (输入值小于-360跳转报错)
IF[#9GT180]GOTO1; (输入值大于180转换为±180)
IF[#9LT-180]GOTO2; (输入值小于-180转换为±180)
GOTO3; (输入值在±180内直接跳过)
N1#9=#9-360;
GOTO3;
N2#9=#9+360;
N3#3=#9-#801; (计算需转角度=目标角度-当前角度)
IF[#3EQ0]GOTO10; (需转角度等于0跳出循环)
IF[#3EQ360]GOTO10; (需转角度等于360跳出循环)
IF[#3EQ-360]GOTO10; (需转角度等于-360跳出循环)
IF[#3GT180]GOTO4; (需转角度大于180转换为±180)
IF[#3LT-180]GOTO5; (需转角度小于180转换为±180)
GOTO6;
N4#3=#3-360;
GOTO6;
N5#3=#3+360;
N6IF[#3GE0]GOTO7; (需转角度大于0设方向变量#10=1)
#10=-1; (需转角度小于0设方向变量#10=-1)
GOTO8;
N7#10=1;
N8#11=ABS[#3/90]; (需转角度执行次数#11计算)
G65P09002L#11A#10; (调用O9002传递次数#11,方向#10)
N10;
M99; (运行结束返回主程序)
N91#3000=21(SHU_RU_JIAO_DU_BI_XU_BEI_90_ZHENG_CHU); (报错信息1)
N92#3000=22(SHU_RU_JIAO_DU_BU_NENG_DA_YU_360); (报错信息2)
N93#3000=23(SHU_RU_JIAO_DU_BU_NENG_XIAO_YU_360); (报错信息3)
M30

#O9002内容如下:
O09002;
IF[#1EQ-1]GOTO1; (如果旋转方向#1=-1,跳转N1)
#25=67; (旋转方向1,面对Y+盘面顺时针旋转)
#26=66;
GOTO2;
N1#25=66; (旋转方向-1,面对Y+盘面逆时针旋转)
#26=67;
N2M10; (夹紧)
G04X0.5; (暂停0.5秒)
M#25; (执行旋转动作)
G04X0.5; (暂停0.5秒)
M11; (松开)
G04X0.5; (暂停0.5秒)
M#26; (排间隙)
G04X0.5; (暂停0.5秒)
M10; (夹紧)
M#25; (锁紧)
G04X0.5; (暂停0.5秒)
#801=#801+#1*90; (更新当前角度到#801)
#17=FIX[#801/360]; (计算当前角度需减次数下取整)
#801=#801-#17*360; (更新当前角度到±360)
M99; (返回上级程序)
旭本液压转台宏程序.zip

#9003内容如下:
O9003
(ROT_CENTER_X_G54P1X_#7246) (B轴旋转中心设置在G54P50的坐标系中X)
(ROT_CENTER_Z_G54P1Z_#7248) (B轴旋转中心设置在G54P50的坐标系中Z)
(B0_OFFSET_G55X_#5211) (B0时的坐标系设置在G55中X)
(B0_OFFSET_G55Z_#5213) (B0时的坐标系设置在G55中Y)
(WORK_OFFSET_G54X_#5206) (B轴任意角度的坐标系自动更新到G54的X)
(WORK_OFFSET_G54Z_#5208) (B轴任意角度的坐标系自动更新到G54的Z)
(G65 P9001 F90) (液压四轴角度定位到90°)
(G65 P9003) (启用坐标跟随,B旋转后的坐标更新到G54)
#5208=[#5213-#7248]*COS[#801]-[#5211-#7246]*SIN[#801]+#7248;
#5206=[#5213-#7248]*SIN[#801]+[#5211-#7246]*COS[#801]+#7246;
#5207=#5212; (由于绕Y轴旋转,Y坐标直接从G55赋值到G54)
M99;
O9003.txt