本例中用一個主軸電機通過機械結構分別與 AC 軸嚙合來驅動 AC 軸旋轉的情況,本質上是要分別記憶 AC 軸定位后的位置值并保存到參數(shù)中,因為當 AC 軸轉動完成后,機床開始加工的時候主軸是要旋轉起來的,而主軸旋轉結束停止的位置是隨機的,那么當再次要進行 AC 軸定位的時候,就要繼續(xù)上次定位的位置進行累加。
同時 A 軸(下頭座)的嚙合與脫開必須滿足主軸在固定的角度,主軸端面的刻線與主軸外圈端面刻線重合,下頭座才能脫開進行旋轉。當 C 軸,A 軸都在 0°初始位置時,這個刻線重合處的定位角度 SPOS=17°。并且設計如下 A 軸刻線對齊位置記憶參數(shù) R5 及相關程序,如下:
R1=ROUND($A_DBR[12])
R7=ROUND($A_DBR[16])
R13=R1+R7
IF (R13<=17)
R5=R13+17
ENDIF
IF (R13>17)
R5=R13+17+360
ENDIF
最初 A 軸旋轉的時候,定位到 17°的位置,端面刻線對齊后,再通過液壓機構脫開,A 軸才可以轉動。后面如果有 C 軸的轉動,以及 A 軸的轉動,都會讓實際主軸端面不旋轉的情況下系統(tǒng)界面 SP 軸坐標值數(shù)字累加,但是只要是 A 軸轉動就需要主軸端面對齊刻線,所以這個時候就要找到之前 A、C 軸的轉動導致的主軸坐標值變化了多少,即 R13 的值,這個值加上最初的 17°等于 R5,再執(zhí)行 SPOS=R5 定位,就是保證了執(zhí)行這個指令的時候主軸端面刻線是對齊的,包括中間執(zhí)行加工任務主軸旋轉自由停車后,執(zhí)行 SPOS=R5 都會精確找到這個刻線對齊的定位度數(shù),因為 AC 兩個編碼器相當于記錄了 AC 定位導致的主軸坐標值累計變化值。
C 軸的旋轉不需要固定刻線位置,所以 C 軸的宏程序設計不需要設計上面 A 軸的 R5 類型的參數(shù)。只需要在定位完成后將編程位置賦值給當前位置參數(shù)即可。
3.3.2 通過讀取實際坐標值補償運動誤差
R12=R0- $A_DBR[12]
IF (R12> $MN_USER_DATA_FLOAT [10]) OR (R12<-$MN_USER_DATA_FLOAT[10])
SPOS=IC(R12)
ENDIF
G4F0.5
STOPRE
R1=ROUND($A_DBR[12])
4、宏程序示例
例:A 軸定位宏程序 L280
;R0: A 軸編程位置
;R1: A 軸當前位置
;R2: 編程位置與當前位置的位置差
;R3: R0 除以 5 的值
;R4:R1 除以 5 的值
;R5: A 軸初始定位中間變量
;R7: C 軸當前位置
;R12: A 軸編程位置與實際位置的差值
;R13: A 軸當前位置與 C 軸當前位置之和
;$A_DBD[12]:A 軸實際坐標值保存在 DB4900.DBD12 中
;$A_DBD[16]:C 軸實際坐標值保存在 DB4900.DBD16 中
;MD14514[10]=0.5,A 軸反向間隙設定誤差補償范圍
R1=ROUND($A_DBR[12])
R2=R0- R1
R3=R0/5
R4=R1/5
R7=ROUND($A_DBR[16])
R13=R1+R7
IF R3<>ROUNDUP(R3) GOTOF INFO2
IF R4<>ROUNDUP(R4) GOTOF INFO2
IF R2==0 GOTOF INFO1
IF (R13<=17)
R5=R13+17
ENDIF
IF (R13>17)
R5=R13+17+360
ENDIF
M05
M41
M80
M03S0
G4F0.2
M05
SPOS=R5
M52
G4F2
STOPRE
SPOS=IC(R2)
R12=R0- $A_DBR[12]
IF (R12> $MN_USER_DATA_FLOAT [10]) OR (R12<-$MN_USER_DATA_FLOAT[10])
SPOS=IC(R12)
ENDIF
R1=ROUND($A_DBR[12])
M53
G4F2
STOPRE
M81
M17
INFO1:MSG("**** A 軸無旋轉動作 原因:編程位置 =當前位置 ****")
G04F3
MSG("")
M17
INFO2:MSG("**** A 軸無旋轉動作 原因:編程位置不是5 的整數(shù)倍 ****")