|
|
; 转台B轴旋转+分中备份一体化宏程序(马扎克专用)
; 核心逻辑:
; 1. B=0°:将当前G54主坐标系的分中值自动备份到G54 P1(首次分中/回零恢复)
; 2. B≠0°:读取G54 P1备份值+G54 P4旋转中心,补偿G54主坐标系(加工用)
; 3. G54=加工坐标系,G54 P1=分中备份,G54 P4=旋转中心(固定)
; 调用方式:
; - 分中/回零:G65 Pxxxx B0.0
; - 旋转补偿:G65 Pxxxx B[角度] (如G65 P9000 B45.0)
; ====================== 第一步:读取并处理B轴角度 ======================
#130=#102 ; 读取传入的B轴角度(G65 Bxxx → #102)
#130=FUP[#130*1000]/1000 ; 角度四舍五入到千分位,避免0°误判
; ====================== 第二步:读取固定参数 ======================
#5321=#5281 ; 读取G54 P4的X轴旋转中心(固定,无需修改)
#5322=#5282 ; 读取G54 P4的Y轴旋转中心(固定)
#5323=#5283 ; 读取G54 P4的Z轴旋转中心(固定)
; ====================== 第三步:B=0°逻辑(分中备份+恢复原始坐标系) ======================
IF[#130 EQ 0.0] THEN
; 1. 读取当前G54主坐标系的分中值(你手动分中后的G54值)
#200=#5201 ; #5201=G54主坐标系(无P)X值(马扎克专用变量)
#201=#5202 ; #5202=G54主坐标系Y值
#202=#5203 ; #5203=G54主坐标系Z值
; 2. 将分中值备份到G54 P1(永久保存,作为补偿基准)
G90G10L2P1X#200Y#201Z#202
; 3. 强制将G54主坐标系恢复为分中原始值(确保0°时无补偿)
G90G10L2P0X#200Y#201Z#202 ; P0=G54主坐标系
; 4. 激活G54主坐标系,结束程序
G54
M99
ENDIF
; ====================== 第四步:B≠0°逻辑(旋转补偿G54主坐标系) ======================
; 1. 读取G54 P1的分中备份值(不再读取实时G54,避免覆盖)
#200=#5241 ; #5241=G54 P1 X值
#201=#5242 ; #5242=G54 P1 Y值
#202=#5243 ; #5243=G54 P1 Z值
; 2. 计算旋转前偏移基准(旋转中心 - 分中备份值)
#206=#5321-#200 ; X轴偏移基准
#207=#201 ; Y轴无补偿
#208=#5323-#202 ; Z轴偏移基准
; 3. 旋转坐标核心计算(绕Y轴旋转)
#211=#206*COS[#130]-#208*SIN[#130] ; 旋转后X理论偏移值
#212=#207 ; Y轴无偏移
#213=#206*SIN[#130]+#208*COS[#130] ; 旋转后Z理论偏移值
; 4. 计算补偿差值
#214=#211-#206 ; X轴补偿差值
#215=#207 ; Y轴无补偿
#216=-#213+#208 ; Z轴补偿差值
; 5. 更新G54主坐标系(加工用,不修改P1)
G90G10L2P0X[-#214+#200]Y#215Z[#216+#202]
; 6. 强制激活G54主坐标系(确保加工用)
G54
; ====================== 第五步:程序结束 ======================
M99 ; 宏程序结束
我对宏程序不是很了解。没有太多经验。还劳烦大家帮忙提提意见
|
|