我们原有的铣头自动转程序不能限制转头区域限制,在小于650,大于3450的区域头在原地转,导致头的角度乱了。
我在想要能过读取Y的当前位置加到子程序才行,可是我知道地址,咨询SIEMENS知道是$AA_IM【Y】
我就测试读到R参数内试试


确实是当前坐标位置
开始改子程序
N10 DEF INT AFF_STADUS
N11 DEF REAL ROT2
N12 DEF REAL ROT0
N13 DEF REAL ROT5
N14 DEF REAL ROT6
N15 DEF REAL ROT1
N16 DEF REAL ROT3
N20 AFF_STADUS=$A_DBB[1]
M80
G4F1
IF $AA_IM[Y]<650 GOTOF _END
IF $AA_IM[Y]>3450 GOTOF _END
G4F1
N30 CASE AFF_STADUS OF 2 GOTOF LA1 DEFAULT GOTOF LABBLE_6
N40 LA1:M80
;N50 G0G53Y2100Z0
N60 G4F1
ROT2=DEG
ROT0=DEG_ACTUAL
ROT1=DEG_ACTUAL
N70 M09
N80 M40
N90 M41
N100 G4F1
N110 M98
N120 G4F1
N130 STOPRE
N140 M05
N150 G4F1
N160 IF ROT2==ROT0 GOTOF LABBLE_6
N170 ROT5=(ROT2/2.5)
N180 STOPRE
N190 ROT6=ROUND(ROT5)
N200 STOPRE
N210 IF ROT5<>ROT6 GOTOF LABBLE_5
N220 SPOS=ACP(ROT1);SPINDLE OFFSET
N230 G4F1
N240 M80
N250 M95
N260 MSG("齿牙盘松开")
N270 M75
N280 STOPRE
N290 G4F5
N300 IF (ROT2-ROT0+ROT1)>360 GOTOF LABBLE_1
N310 IF (ROT2-ROT0+ROT1)<0 GOTOF LABBLE_2
N320 IF 0<(ROT2-ROT0+ROT1)<360 GOTOF LABBLE_3
N330 LABBLE_1:ROT3=ROT2-ROT0+ROT1-360
N340 GOTOF LABBLE_4
N350 LABBLE_2:ROT3=ROT2-ROT0+ROT1+360
N360 GOTOF LABBLE_4
N370 LABBLE_3:ROT3=ROT2-ROT0+ROT1
N380 GOTOF LABBLE_4
N390 LABBLE_4:FA[S1]=DEG_FEED
N400 SPOS=ACP(ROT3);DISTANCE TO GO
N410 STOPRE
N420 ROT0=ROT2;CURRENT POSITION
N430 DEG_ACTUAL=ROT3
N440 G4F1
N450 M96
N460 MSG("齿牙盘油缸夹紧")
N470 G4F1
;N480 M76
N490 STOPRE
N500 FA[S1]=0
N510 M98
N520 G4F1
N530 M40
N540 GOTOF _END
N1060 LABBLE_6:MSG("附件头信号错误")
N1070 M99
N1080 LABBLE_5:STOPRE
N1090 MSG("设定的旋转度数不对")
N1100 GOTOF _END
N1110 LABBLE_6:STOPRE
N1120 MSG("目标旋转度数与当前度数重合")
N1130 GOTOF _END
N1140 _END:
N1150 MSG( )
N1160 RET
红色部份是我加的, 经过测试完美,转头角度也不乱了。