姜列佳
(一汽解放汽車有限公司無錫柴油機廠,江蘇無錫 214000)
現代機械加工已經逐步向數控技術化轉變,尤其是大批量加工,在大批量生產時,對數控程序的穩定性和安全性都提出了更高的要求。
在筆者所在單位,近期某加工中心在正常生產加工中發生了一起面銑刀撞向工件的碰撞事故,導致面銑刀損壞、工件報廢、設備精度損傷。該事故發生時執行的是當天日班新調試成功的刀具試驗程序,距首件調試成功該程序已重復執行約150次。
而早在2005年某工序加工中心在同樣正常加工時,由于同樣原因導致刀具直接撞斷在被加工孔里,工件被撞移動16 mm 左右,造成刀具報廢、工件報廢、夾具定位銷被撞斷、精度重校的設備事故。而當時該事故發生時執行的是早在2004年就編制調試成功的程序,距首件調試成功該程序已重復執行了非常多次。
事后分析,兩起事故原因都是由于程序編制時缺少了一個刀長補正(D1),而且發生事故時程序都經過了首件調試、并驗證加工了較長時間,這種設備碰撞的潛在隱患必須引起重視。要找出辦法控制在任何條件下,編制程序失補正都不會引起碰撞。
以近期的這起事故為例,對其原因分析,是由于新編制的主程序輸入時,在加工的第一把刀具(T2001)執行動作的第一行(N250)中缺少D01刀具補償指令(圖1)。當運行程序至N250~295 任意行時,機床出現報警,而操作人員消除報警并執行了“TO HOM_POS”操作,“TO HOM_POS”程序會將主軸當前的刀具補償D1 置為D0;此時再啟動加工程序時,由于程序結構原因,會直接跳轉至N235開始運行,此時主軸上的刀具刀補是D0,程序也沒有再次輸入D1 刀補指令,造成機床運動后,主軸上刀具沒有了刀長補正,就會發生主軸與工件碰撞。

圖1 背景程序
再通過程序分析,看出D1 在程序中處于N250 段中,該段較長且D1 所占字符少,在編制和復查中的確不容易發現;測試主程序中缺少D1情況下的首件調試加工,的確無法在調試中直接發現問題,該隱患只有在上述的特定情況下才會發生碰撞。
通過分析,決定側重于利用編程手段來解決這個問題,在經過了前期的討論和準備后,逐一調試方案試驗。
(1)每次刀具移動前能不能進行D1判斷,分析當前刀具的刀長補正有沒有調用,能不能避免事故。經過查詢系統參數列表,發現系統參數$P_TOOL,可以調用讀取當前刀長補正值;$P_TOOLNO讀取當前刀具編號,如圖2所示。

圖2 系統參數含義
進行程序編制,如圖3:在N250 執行機床運動前判斷當前調用的刀補是不是D0,如果是D0,執行M0停止。

圖3 方案一程序段
經實際調試,發現問題:該判斷語句只能判斷N250 前有沒有輸入過D1,并不能分析出下一行(N250)D1有沒有輸入,也就是說即使N250編制時輸入D1 了,在上述特定情況下也會運行M0 導致程序中斷。如果放置在N250段后,在上述特定情況上,運行程序會先撞機床,后執行判斷,失去了監控意義。
(2)結論:方案一可實現部分監控,實用性較差。
(1)對Z 軸機械坐標進行判斷,計算理論值和實際值進行判斷,如圖4。

圖4 系統參數含義
進行程序編制,在N250 行后添加判斷語句,如圖5,其中329.8 為G55 坐標系Z 向原點設定值,R252 為測頭補正值,R41 為刀長理論值。當Z 軸機械坐標值大于設定值,判斷生效,即執行M0停止。

圖5 方案二程序段
實際調試,發現問題:由于實際刀長和刀長理論值(R41)存有偏差,而且G55坐標系Z向原點設定值(329.8)由于調整需要也會進行改動,測頭補償值(R252)頻繁刷新,均會導致判斷條件生效,誤報警。
(2)結論:方案二無法實現監控。
(1)采用機床坐標系和基本坐標系對比的方式監控,如圖6。

圖6 系統參數含義
進行程序編制,在N250行后添加判斷語句如圖7,其中R41為刀長理論值?;咀鴺讼岛蜋C床坐標系理論差值為當前刀具實際長度,當刀具實際長度和理論長度差值大于1 時,判斷生效,即執行M0停止。

圖7 方案三程序段
實際調試,發現問題:測試N250 沒有輸入D1,在上述特定情況下,運行程序會先撞機床,后執行判斷。失去了監控意義。
(2)結論:方案三無法實現監控。
(1)尋找實現實時監控的辦法,也就是說當機床實際運動時進行監控。在西門子說明書發現這個功能,在程序編制上同樣能夠實現,即利用同步動作。同步動作可以啟動來自目前零件加工程序各種不同的動作,并同步地執行它們。可以用實時(在插補循環中)評估的條件來定義這些動作的啟動點。故動作是反應實時事件,程序段界限并不能限制它們的執行。
一個同步動作也包含關于動作有效性和編程的實時變量被掃描的頻率,以及動作被啟動的頻率數據。以此方式,可以就一次或在插補循環中循環地觸發一個動作。動作是指:運行時間為重的應用使之最適化(如刀具更換)、快速響應一個外部事件、編程AC控制、設定安全性功能等。
在西門子的說明書中,對于同步動作指令的解釋(圖8)。
進行程序編制,在N245 段后添加同步動作,如圖9,其中329.8 為G55 坐標系Z 向原點設定值,R252為測頭補正值,R41為刀長理論值,500為N250運行后Z向值。當機床運行N250過程中Z軸機械坐標值大于設定值,執行$AC_OVR=0(所有進給軸停止)、DBO_CYCALARM=0(NC向PLC系統發出報警),實現機床停止。

圖8 同步運動含義

圖9 方案四程序段
實際調試:如果N250 沒有輸入D1,在上述特定情況下,機床能及時停止并報警,但長期運行該段發現問題:實際刀長和刀長理論值存有偏差,而且G55 坐標系Z 向原點設定值由于調整需要也會進行改動,導致機床運行N250過程中Z軸機械坐標值經常大于設定值,導致誤報警。
(2)結論:方案四可實現監控,但具體數值仍需調整。
(1)通過系統參數代替固定值,如圖10,$P_UIFR[2,Z,TR]讀取G55 坐標系設定的Z 向值,$P_TOOLL($P_TOOLNO)讀取當前主軸上刀具輸入的刀長實際值,500 為N250 運行后Z 向值。當機床運行N250過程中Z軸機械坐標值大于設定值,執行$AC_OVR=0 (所有進給軸停止)、DBO_CYCALARM=0(NC 向PLC 系統發出報警),實現機床停止。

圖10 方案五程序段
實際調試:實現了有效監控,能在上述特定情況下停止運行,但跟綜發現利用該段僅能對下一行(N250)生效。
(2)結論:方案五可行性較高,但存在一種可能性,在N250運行后并沒有發生問題,但在執行下一次移動時(比如N260)發生問題。
(1)利用ID開啟模態運行,如圖11。

圖11 ID含義
編程調試,如圖12,在N250 執行后,直到CANCEL(11)行之間的整段中,只要Z 軸機械坐標值大于設定值,就執行$AC_OVR=0(所有進給軸停止)、DBO_CYCALARM=0(NC向PLC系統發出報警),實現機床停止。
實際調試:實現了有效監控,能在上述特定情況下停止運行,持續跟蹤并多次測試均情況穩定,能及時發現異常。
(2)結論:方案六實現了有效監控,并且是整段監控,跟蹤有效,推廣至全線加工中心程序編制,并固態實施。

圖12 方案五程序段
實施效果跟蹤有效,同步運動的實際改善運用成功,給今后的程序編制添加了很多方便之處。更多操作人員可以利用同步動作,實現很多原來依靠程序無法實現、需要PLC 完成、或者根本沒有手段完成的功能。
同步運動的實際意義在于數控機床在加工過程中,可以并行處理幾個程序,當條件滿足時觸發動作,這就需要同步動作功能來實現。同步動作是指當前的零件程序執行時觸發幾個不同的動作并使它們同步執行。它可以在零件程序中定義,也可以在上電之后直接從一個由PLC 啟動的異子程序中定義。在每個同步動作中可以編程一個或多個動作。所有在一個程序段中編程的動作以相同的插補節拍啟動。同步動作的特點是可以不受運動方式的影響,在手動、自動方式下,一直循環掃描啟動條件一旦成立即執行。
同步運動可應用范圍廣泛。比如當Z 軸機械坐標大于1 051時,執行換刀門開啟動作,節省換刀時間,可以降低單臺設備節拍,如圖13;當主軸功率達到某一定值時,自動降低進給率,提升的刀具耐用度;當更換新刀后,自動該刀具加工完停止,實現在線及時檢測;當夾具在指定位置完成指定動作(夾緊、松開等),實現夾具的自動避讓功能等等。這些應用部分已經應用到目前的設備上,實施效果良好。

圖13 同步運動的其他應用
同步動作語句“ID(S)=n WHEN 條件DO 動作”由多達5 個具有不同任務的指令單元組成,結構如下。
(1)識別號(ID、IDS)一個同步動作的有效性范圍通過識別號確定。
1)無識別號:為非模態同步動作,在自動方式運行時生效且僅適用于下一個程序段。
2)ID=n(n=1~255):同步動作在自動方式下模態激活后續程序段。
通過CANCEL(n)或者通過編程一個新的具有相同ID號的另一個同步動作取消。
3)IDS=n(n=1~255):靜態同步動作在所有運行方式模態有效。它可以在零件程序中定義,也可以在上電之后直接從一個由PLC 啟動的異步子程序中定義。靜態同步動作與NC中所選擇的運行方式無關,直接運行。
模態和靜態有效的同步動作以其ID(S)代碼的順序進行加工,ID(S)編制時一定注意n 編號不要同時執行。
程序段方式有效的同步動作(無ID 號)在加工模態有效的同步動作結束之后,按照編程的順序進行處理。
(2)關鍵字:用來確定查詢條件和執行相應動作的次數。可以使用的條件有:沒有關鍵字、WHEN、WHENEVER、FROM、EVERY。
1)沒有關鍵字:如果沒有關鍵字,則該條件一直被看作滿足,同步動作在每個插補周期循環執行,動作執行不受條件制約。
2)WHEN:在每個插補節拍中對條件進行查詢,直到該條件被滿足時為止,然后將相應的動作準確執行一次。一旦動作執行一次,條件不再檢查。
3)WHENEVER:條件滿足的每個插補周期循環執行。即在每個插補節拍中對條件進行查詢,循環檢查;只要條件被滿足,就在每個插補節拍中執行相應的動作。
4)FROM:在每個插補節拍中對條件進行檢查,直到條件滿足時為止。如果條件滿足一次,只要同步動作有效,該動作在每個插補周期循環執行,也就是說在該條件不再滿足后也如此。
5)EVERY:條件滿足一次,動作執行一次。是脈沖沿控制即條件從狀態FALSE 轉換到TRUE,則執行一次動作。
(3)條件:實時變量的邏輯量,在插補節拍中檢查該條件。比如比較實時變量、兩個比較結果之間的布爾邏輯聯系、計算實時表達式、時間(距離程序段開始/距離程序段結束)、測量值,測量結果等,確定是否應該執行一個動作。
(4)DO:當滿足條件時,執行動作。
(5)動作:當滿足條件時給已開始的動作或者變量賦值,或將某個程序當作動作調用等。
總結全文,可以發現應用同步動作功能可以靈活完成PLC 難以控制的動作。同步動作還具有如下突出優點:實時監控、實時處理、響應速度快、調整簡單方便、簡化了PLC程序。
當然,要實現防撞監控不僅僅是可以利用同步運動,也可以使用設定加工區域、設定極限等方法實現。本文只是從一個方面來解決這個問題,主要目的是用于剖析在日新月異的數控技術變化面前,作為數控操作人員,不能僅僅局限于利用已知的技術手段進行技術革新,更要利用現有的資料和能挖掘的手段,積極嘗試,大膽探索,實現改善創新。
[1]SINUMERIK.840D/840Di/810D 工作準備部分[Z].2010.